Here is one more blog where the ESP32 Gateway bring up is displayed along with a video.
The ESP32 Gateway Board described here would be tested and its bring-up would be shown. Here is the block diagram of the board:
Block diagram gateway
Bringup Steps
Here are some of the bring-up steps followed for testing:
1. Visual inspection: Quick check to ensure that all components are soldered as per the orientation and visual shorts exist.
2. Power and clock check: Quick power test on the PCB to check for open short test. Using the multimeter to quickly test the 3.3V and 5V supply. The clock output from the oscillator was tested at 50Mhz.
3. USB connection: USB cable was connected to the J10 port. 5V and 3.3V supply was good on the board and coming at test points. Checked on oscilloscope to measure voltage ripple which is under 5%.
4. Reset check: The reset was asserted and de-asserted by TPS3895 as expected.
5. USB to UART connections: An external board was used to connect the ESP32 UART port to USB Port on the board.
6. ESP32 detection: The factory programmed ESP32 comes with the Wifi stack and can be easily detected as the WIFI host with the name ESP32. If the ESP32 is out of reset it would show esp32 wifi LAN which can be connected to. It again indicates it is alive and functional.
7. LED programming: Ardunio was selected to test the board as it is easy to program and most of the drivers are easily available. Programmed the LED program to test the led and also testing the programming sequence of JP1.
8. Switch detection: Next quick program which detects switch press and led lighting up.
9. Mounting the Click board: Mounted the ADXL345 accelerometer from Mikro Electronica on the click connector. The LED on accel click switches on and the supply stays stable for 3.3v and 5v.
10. Testing of i2c interface: Detected the device at 0x1d and 0x51. Read through the register values and moved the boards to check the accelerometer output.
i2c_scanner_Gatway
11. Testing of spi interface: Changed the Mikroe Accell click board to spi mode and tested the spi operation on the board using ESP32 module.
12. Testing other examples with esp32: The board was tested with other software examples specified at the Sparkfun website to check for power, operation, and functionality.
13. Testing of LAN8710 device. The device was detected using the MDC/MDIO pins. Ethernet cord was connected to the port and the activity led blink was observed. More tests are underway on the board.
Here is the link to the video of the board displaying power-up status detecting i2c devices on board and on module. The next video would contain some additional tests with ethernet port. Arduino code used with the esp32 rapid development click board is available at link.
In this blog, we describe how are our boards are hardware tested after prototypes are available. This testing is done to ensure that the boards designed work and work as per requirements.
The ESP32 click Board described here would be tested and its bring-up would be shown. Here is the block diagram of the board:
ESP32 Block diagram
Bringup Steps
Here are some of the bring-up steps followed for testing:
1. Visual inspection: Quick check to ensure that all components are soldered as per the orientation and visual shorts exist.
2. Power check: Quick power test on the PCB to check for open short test. Using the multimeter to quickly test the 3.3V and 5V supply.
3. USB connection: USB cable was connected to the J10 port. 5V and 3.3V supply was good on the board and coming at test points. Checked on oscilloscope to measure voltage ripple which is under 5%.
4. Reset check: The reset was asserted and de-asserted by TPS3895 as expected.
5. FT232 Driver detection: The device was quickly found on the laptop and the driver was easily found on the web. This indicates that the USB to UART device ft232 is functioning correctly.
6. ESP32 detection: The factory programmed ESP32 comes with the Wifi stack and can be easily detected as the WIFI host with the name ESP32. If the ESP32 is out of reset it would show esp32 wifi LAN which can be connected to. It again indicates it is alive and functional.
7. LED programming: Ardunio was selected to test the board as it is easy to program and most of the drivers are easily available. Programmed the LED program to test the led and also testing the programming sequence of JP1.
8. Switch detection: Next quick program which detects switch press and led lighting up.
9. Mounting the Click board: Mounted the ADXL345 accelerometer from Mikro Electronica on the click connector. The LED on accel click switches on and the supply stays stable for 3.3v and 5v.
10. Testing of i2c interface: Detected the device at 0x1d. Read through the register values and moved the boards to check the accelerometer output.
i2c_device_detected
11. Testing of spi interface: Changed the Mikroe Accell click board to spi mode and tested the spi operation on the board using ESP32 module.
12. Testing other examples with esp32: The board was tested with other software examples specified at the Sparkfun website to check for power, operation, and functionality.
13. Testing of battery charging and functionality. The battery of 220mA was connected to the battery connector and charged. The voltage was measured on the port. Shortly afterward the battery-powered operation was tested.
Bring up and the testing of the board were fun and quite enriching as with each board it brings pleasure to see circuit tree platform getting mature.
Here is the link to the video of the board displaying power-up status reading accelerometer data from the module. Arduino code used with the esp32 rapid development click board is available at link
Ever wondered how you would support the Arduino platform bring up when your custom board is different than the ExpressIF devC board. If you have just started working on the platform here are the top three challenges you would come across:
1. Arduino pin numbers mapping with board pins.
Ardunio maps the pins based on the GPIO’s of the ESP32. Many a time young engineers get stuck when they create software and it does not work.
2. Program and reset the assertion sequence on the board.
ESP32 needs the GPIO0 set to low so that ESP32 can enter in the program state. This is done at power-up and after programming, the GPIO0 pins need to be driven high.
Failed_to_connect_to_ESP32
3. Pins numbers different than Ardunio standard pins.
Ever wondered if the i2c pins or other function pins are different than the Arduino defined pins on board. For instance, esp32 assumes that the i2c pins are set at 5, 6 by default always. Most of the young engineers do wonder how they would connect the pins which in case of esp32 click board was on 22 and 23. For i2c the code attached can be used to quickly scan the i2c bus.
USB to UART cable connector for connecting FTDI USB to UART cable.
Onboard regulators of 3.3v/5V along with control logic
Switch and LED’s to provide status.
4 layer design
The board has been designed autonomously by Circuit Tree application. This design has been added in Example 4 in app-circuit-tree.com and can be customized/modified with any changes desired.
Here are some of the screenshots of the top/bottom SVG renderings.
All_layers_gateway
esp32 gateway svg Top_Side
esp32 gateway svg Bot_layer
Fabricated Board
Assembled Board
Bring-up test is underway for the board. So far initial tests show no electrical failures. We did miss on the silkscreen but that is why we need to automate more so that errors are minimized.
Design files and Arduino test code is uploaded at the Github link.
Everybody likes rapid development kit. These boards should be easy to interconnect to a number of boards/shields and offer firmware to jump-start to start testing the idea.
What better to have click modules designed by Mikro-electronica which offers more than 500+ boards to connect any type of peripheral.
esp32 from express-if is another popular board that offers wifi/Bluetooth along with a number of peripherals bus to connect to a variety of devices.
Combining these two functions on the board boosts a number of different ideas that can be implemented with this board.
So introducing our new board named esp32 rapid development click board. The board has been designed using Circuit tree app autonomously except for some placement change and silkscreen updates which were done manually.
Here are some of the key features of the board:
ESP32D-WROOM Module used.
USB/Battery powered board
On-Board UART to USB function for debugging and programming.
Onboard regulators of 3.3v/5V along with control logic
Switch and LED’s to provide status.
Screenshots:
Here are some of the screenshots of the top/bottom SVG renderings.
esp32_click_module_all
esp32_click_module_Top_Side
esp32_click_module_back
esp32 rapid development board-PCB Fabrication -Top side
esp32_click_board_assembled
Design files Arduino test code are available at Github.
There is much more planned fun along with the board which would be shared in upcoming blogs.
This board is available on sale from our website.
Designing a board gives a lot of satisfaction and fills you with motivation to keep going. The happiness and motivation that we got from the project were boosted much more as it was not only the successful board bring up but it was the Circuit Tree application that was also tested.
We are big fan of Python as it is extensively been used on most of our development tasks. One of our colleagues mentioned to create a third board using circuit tree having micro-python running on it. That sounded like a cool idea.
We wanted to build the board having feature set similar to the micro python 1.1 board. The additional constraint was to even have the interfaces and the dimensions the same.
Using Circuit Tree the design was loaded using command line entry through schematic. The Circuit Tree application autonomously completed these different activities:
Interconnected the components specified in the requirement.
Selected power, clock, reset components
Selected discrete values needed by different components as per the electrical requirement.
Generated the clean and error free schematic
Accepted the board boundary which was the micro python form factor.
Completed board placement. This placement had to be modified as some some components were placed far off. So human intervention was done here.
Generated a two layer PCB design on it own. All the pcb routing, plane creation, Thick traces routing , length matching was autonomously. Here Human intervention was introduced to redo some traces. Human intervention was introduced to ensure that the design was correct.
Gerber files were generated by the app after the silk screen was updated by engineer working on the program.
Using BOM component links the components were ordered. So yes it was minimal human intervention and feels good looking at the task circuit tree application is now able to undertake.
It is a two layer design with pictures below displaying svg of all layers, bottom and top layers.
All_layers_pyboard1.1
Bottom side pyboard1.1
Top side pyboard1.1
And here is the PCB Fabricated using circuit tree application design:
Fabricated board
The board is now under pcb assembly. Waiting patiently to get the boards so that we can load the micro python the board.
The PCB has been in India and this is the third board from us. Lots of learnings along the way.
We dream for the day when we are able to design complex boards (6+ layers, 400+ components including BGA components) using Circuit Tree application under 3 hours of effort.
If board design is a pain point for you write back to us what you would like us to solve.
Updated requirement editor which allows generation of variety of design using variety of components and blocks.
UI/UX improvements.
Placement engine update. The new engine is more efficient optimiser and produces placements and board outlines similar to a engineer on the project would do.
Layout creation. The engine can now generate 2/4/6 layer designs depending on the complexity or requirement defined. BGA/small pitch components are easily routed.
Designed three new boards complete with assembly. These boards have been autonomously designed at circuit tree with some manual help. It has been very useful and productive exercise.
At Circuit Tree we have number of embedded board components and features which allow you to build a custom board quickly and reliably. Circuit Tree has 1000’s of controller/processor along with number of peripheral devices.
List of Peripheral Interfaces
Interfaces supported by the hardware compiler:
DDR3/DDR3L memory library
Supports 8 Bit/16 Bit memories for a bus size of 8 bit to 64 wide bit.
Added VTT termination support
Support for multiple memory manufacturers.
Additional features select options from the hardware compiler:
Memories selected based on datarate, cas latency, single/dual die option.
Hardware compiler is Intelligent to route DQS and Data group connection to various memory type based on the 8 Bit/16bit memories and the bus connection needed
Route the ddr3 Bus Connections to any connector to provide capability to add plug in card.
Parallel Memory library:
Asynchronous Nor [16 Bit] -Various memory sizes
Synchronous Nor [16 Bit] -Various memory sizes
Nand Flash 8 bit -Various memory sizes
Async Sram 16 Bit -Various memory sizes
Additional features select options from the hardware compiler:
Control memory selection based on the memory density and manufacturer
Bus connections can be routed to a connector to provide capability to add plug in card.
Serial Memory Library:
QSPI, SPI,I2c -Various memory sizes and manufacturers
Additional features the hardware compiler:
Select Based on memory density, manufacturer
Select addresses needed for each i2c device
Bus connections can be routed to a connector to provide capability to add plug in card.
Ethernet Library:
Wide number of transceivers supported for:
Sgmii,GMII, Rgmii,RMII and MII
Additional features select options from the hardware compiler:
Auto selection of transceivers and option to change the transceiver to
one of the transceivers from menu option. Auto routing for MDC/MDIO
signals for all the transceivers.
Ethernet transceivers connections are routed to the integrated magnetics.
Option to change management bus address, features and functions of the
selected transceivers.
Bus connections can be routed to a connector to provide capability to add plug in card.
USB Library:
ULPI Transceivers
USB2.0 and USB3.0 differential from processor/micro-controllers
Option to select USB Host, device, OTG mode.
ESD protection diodes are added by default.
Power fault protection circuitry
Multiple peripheral support.
Additional features select options from the hardware compiler:
Select USB Host, device, OTG mode (Connectors, USB power
switch, configurations and connections are done automatically by circuit-tree).
Select multiple ULPI transceivers.
Bus connections can be routed to a connector to provide capability to add plug in card.
Display library:
Graphics LCD
OLED LCD
TFT LCD
HDMI differential signals
LVDS connection using display Bus
HDMI output Using display bus
DVI output using display bus
Additional features select options from the hardware compiler:
Option to select Component configuration
Bus connections can be routed to a connector to provide capability to add plug in card.
Wireless Library:
WIFI modules
Bluetooth module
NFC module
Radio 2.4Ghz module
Zigbee module
GPS module
Additional features select options from the hardware compiler:
Component configuration
Sensor Library:
Temperature
Accelerometer
Humidity
Compass
Pressure
Gyroscope
RTC
Additional features select options from the hardware compiler:
Component selection from various vendors
UART library
RS232 transceivers of various vendors
Additional features select options from the hardware compiler:
Option to route the signals to DB9 or a 2×5 header
Option to route any custom connector.
Jtag Library:
ARM Jtag 2×10 header
ARM Jtag 2×5 header
ARM SWI 2×5 header
ARM SWI 2×10 header
Additional features select options from the hardware compiler:
Option to route the Jtag signals to any custom connector.
PCIe library:
Mini PCIe slot
PCie x1, x4 and x8
Additional features select options from the hardware compiler:
Option to route the PCIe signals to any custom connector.
SATA library:
Sata connector without power from the board.
Additional features select options from the hardware compiler:
Option to route the SATA signals to any custom connector.
SD library:
SDHC connector
or choose Emmc Memory
Additional features select options from the hardware compiler:
Option to route the sd signals to any custom connector.
Audio library:
Audio transceivers from various vendors
Additional features select options from the hardware compiler:
Option to select audio transceivers
Option to select part features such as number of Microphones ,speaker etc
Option to route the audio signals to any custom connector.
CAN library:
CAN transceivers
Additional features select options from the hardware compiler:
Option to select CAN transceiver
Option to select features for a transceiver
Select DB9 or a different connector to have the CAN signals routed to be connected to another CAN device.
Option to route the CAN signals to any custom connector.
Camera Library:
Library contains Camera PCB Module and sensor.
Additional features select options from the hardware compiler:
Option to select Camera part from different manufacturer
Option to select features for a camera pcb module.
Option to route the camera signals to any custom connector.
GPIO/ADC/DAC Library:
Get the number of GPIO’s, ADC’s DAC’s needed for an application. The hardware compiler would select pins from processor/micro-controller to be added to a header for connection.
Button/LED Library
various leds are added on the board as per function needs of the board.
There is a lot of other finer details which we support. If you have additional questions then visit faq section or feel free to write back with your questions at info@circuit.swapdevelopment.com
To start testing these features today visit our hardware compiler site.
Circuit Tree has number of followers in hackaday and in ST Microelectronics community.
We have chartered a new goal to create development boards of the designs created by circuit tree to showcase Circuit Tree Design capability. To keep the task fairly simple the development board requirements are listed below: 1. Create a drone board which can fly while being controlled from mobile bluetooth. The frame of the board would be a PCB where the Motors would mount. 2. The drone board should be powered by a battery and should have battery charging capability. 3. The Main elements of the drone board would be a small micro-controller, bluetooth radio, accelerometer, gyroscope, compass, jtag port for debug, 4 pwm’s, led and reset switch. 4. The battery of this board when in air should last for minimum 15 minutes. 5. As a first bringup goal the drone board should be able to fly till small altitude.
Next we start the electronic design. We chose circuit tree design to first look at the list of controllers which can be used for the drone design. Based on the component avaibility results we narrowed down to stm32l052k6t6 from st micro electronics. Quickly the components were selected as shown below and a block diagram generated.
Board requirement capture screen
Board block diagram of the components selected
We did wait for schematics to generate within 2.5 minutes and within that time did scan the Bill of material file generated from the tool. There are certain discrete components which circuit Tree could not select which is left to the designers to update.
Also in the schematic we have a dummy connector added for Timer pins. The connector is important as it helps in allocating the micro-controller pins for the Timer/PWM. The intent of using Timer is to allow mosfets to be added to these pins to eventually allow motors to be driven.
Next we click on the layout viewer to select a dxf file and check if the placement dxf outline is correct. Next we fire the background process to generate placement.
Board components prior to start of auto placement algorithm
Within next 3 minutes the placement of the board is generated and it looks as shown below:
Finished Board component placement
The algorithm shows that the components can be fit in the given board dxf file. It is time to define the board boundary restriction so that the algorithm can rerun and produce more symmetrical placement around 4 weeks.
We would keep updating the blog as we get the results.
Here is the Git hub link for design files for the drone design.
Update1: Sept 16th 2017
Muneeb started working on the eagle downloaded design to add motors pads and mosfets to the design. He is one of smart engineers we have on circuit tree who took the design and first started to review the design and compare the output of circuit tree with the stm-cube tool output. Once we was happy with the output it was time to change the connector page to add the motors pads and mosfets as shown below. The only change he had to do in the downloaded eagle schematic file was to change the grid to default.
Here is the copy of the page he edited:
Updating dummy connector page with motors pads and mosfet.
The next check for him was to check if the eagle ERC was displaying any errors. No errors were found but number of warnings were observed stating two similar named nets are connected to one another. After a check it was time to see if the the circuit tree board file can get newly added components(mosfets and motor pads) in the placement. He further customised the placement file to meet his requirement.
Board revised placement
Update2: Oct 10th 2017
We have released the board file for fabrication and assembly. Eagerly waiting for the first circuit tree design to come to life.
Stay tuned to know how we progress ahead with this design. We cannot control our excitement.
Update no 3: Oct 20th 2017:
We just got the pcb fabricated from china. There is a minor issue with respect to the via tenting which the pcb vendor did not make despite being in the requirement. Components have been ordered and now the pcb assembly starts.
Top Side of the drone PCB
Bottom Side of the PCB
Looking for a healthy board bringup without any wires.
Update no 4: Oct 30th 2017:
Here are the set of assembled boards designed through circuit tree. Board bringup’s are always interesting milestone for a hardware design engineer as we spark new life into a element.
Quick checks done so far:
Component placement checked
Power short check shows no issue so far.
Weight of the board.
Note there are no overlapping components.
So far so good. It is late in the evening will do the bringup tomorrow with a detailed test plan.
Assembled Drone Boards designed by circuit tree
Update no 5: Nov 2nd 2017
Picture of the board assembled with motors and power test. Board was first tested for open short test. The board was powered with usb cable and then the main board voltage was found to be 3.29v. Great work so far.
drone_with_motors
Update no 6: Nov 4th 2017
The moment we have been all waiting for is here. Here is a quick update on the board bringup:
Powered the board through the usb cable connected to a laptop. All voltages are good.
Connected the st micro to ST-LINK/V2 through a custom adapter cable as the connector on the board was incompatible with the pitch of the programmer.
Detected the stm32l052 device on the programmer console.
Programmed a code to drive the motors through the mosfet.
Next connected the battery on the board after switching on the board.
Result is as shown in the video. The right side of the drone had more lift compared to left side.
Really happy and satisfied with the result.
The next steps would be to connect the board through bluetooth to power on and off the board using laptop bluetooth control. Also we would interface with all the board sensors to get the real time data.
The good news is that the most of the hardware functionality is working as expected. Circuit tree application has designed a board which is reliable in short span of design time. In hardware design lots of items have to tick right and circuit tree has just shown the capability.
The next update would be in few weeks when we have created the software.
Update no 7: Dec 10th 2017
Here is another update to the drone testing. In the video below you will notice that Bluetooth and a application layer is running on the drone which allows turn on and off of the left side and right side motors. You will also notice that we had to connect a wire on the board to connect the stmicro with the bluetooth transceiver. This wire was added to allow the software to reset the transceiver as needed. This is the option which would integrate in the application.
This is a good learning we have had. In the next update we would share the application software used for the development which would be free to use.
Thank you for reading through the long post.
Update no 8: July 31st 2020
Circuit Diagram and design files for the drone project is available at the github link
Our Goal is to push the application capability to design and develop a complete end hardware product. I am pleased to announce that with each design created with circuit tree the design would bundle layout footprints along with the schematics. The footprints are currently in eagle format and porting to other EDA cad format is ongoing.
Pre Component Placement stage
In addition the application is able to provide intelligent placement of component based on the required board outline. Option is given for the User to select a dxf file from a menu option or can provide his/her dxf file. The component auto-placement algorithm looks at following parameters:
1. Board outline
2. Holes position
3. Placement restriction, top and bottom side
4. Components type and component footprints
5. Netlist relation of the component.
6. Plenty of other secret sauce.
The end results of auto-placement algorithm are interesting. Some of the interesting insights we see here
1. Most of the decoupling capacitors are placed close to the IC pins. [Check the present tool Limitation covered in the blog post]
2. The components such as crystal, clocks osscilator are placed close to the receiver.
3. Most of the Connectors are placed close to the edges with correct orientation for easy plug in of cables.
4. Unlike other EDA components placement power components are placed to allow planes or thick traces to connect the components from far off positions. Circuit Tree does not try to minimise the power distances. It would try to keep linear power regulators close the components which needs it and would keep switching regulator far off.
5. Ethernet transceivers and ethernet magnetics are placed close by as needed.
6. Irrespective of the shape of the board the component placement is correct for the all use cases tested.
7. Components were not placed in the holes or placement restricted areas.
8. Component placement is done on top and bottom layer and emphasis is to have sufficient separation so that components don’t overlap.
Circuit tree application results delight us as we are usually not prepared to see a machine able to achieve quite human like performance. Some of the auto-placement examples which we captured during our testing are shown below:
DXF Board example 2 auto placement of components
DXF Board example 4 auto placement of components
DXF Board example 3 auto placement of components
Ongoing further work in this area:
1.Currently DXF import is restricted to certain design formats. We would like to make it universal to allow all dxf files.
2. We would like to offer option to allow user to generate smallest size board placement. Here circuit Tree would suggest the board outline which can recommend smallest size board based on the component present.
3. Option for user to move components on the board as per his requirement and use the auto-placement algorithm to regenerate the board placement based. Other option would be to allow users to select placement on top/bottom or both sides, define placement boundaries etc.
The goal of this new feature is to offer component footprints and auto-placement of components such that auto router can be used to route the board. This will reduce the turnaround time of design and provide quick prototype testing with minimal effort.