Author Archives: Makarand Kapoor

About Makarand Kapoor

My Detail 1

Bringup of ESP32 Gateway Board

Arduino

Introduction

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.

Additional read:

  1. ESP32 Gateway Board Design using Circuit Tree
  2. Custom board development with Arduino.

Bringup of ESP32 Click Board

Introduction

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

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

Additional read:

  1. ESP32 Rapid Development Kit Design using Circuit Tree
  2. Custom board development with Arduino.

Custom ESP32 Board bringup with Ardunio

Challenges:

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.

 

ESP32 Gateway board


Introduction: 

ESP32 Gateway board is the second board designed using circuit tree application having following feature set:

  1. ESP32D-WROOM Module used.
  2. Mikro click connectivity on board. More details at https://www.mikroe.com/mikrobus
  3. 12V Power input for connecting DC jack.
  4. 10/100 Base T Ethernet port
  5. USB to UART cable connector for connecting FTDI USB to UART cable.
  6. Onboard regulators of 3.3v/5V along with control logic
  7. Switch and LED’s to provide status.
  8.  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

 

esp32_gateway2

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.

Additional read:

Thanks


 

ESP32 rapid development click board

Board objective:

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:

  1. ESP32D-WROOM Module used.
  2. USB/Battery powered board
  3. On-Board UART to USB function for debugging and programming.
  4. Onboard regulators of 3.3v/5V along with control logic
  5. 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

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.

I hope you are also able to share our joy.

Additional read:


 

STM32 Micro-python 1.1 board

Introduction:

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.

pyboard1.1 (Link:Sparkfun)

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:

  1. Interconnected the components specified in the requirement.
  2. Selected power, clock, reset components
  3. Selected discrete values needed by different components as per the electrical requirement.
  4. Generated the clean and error free schematic
  5. Accepted the board boundary which was the micro python form factor.
  6. Completed board placement. This placement had to be modified as some some components were placed far off. So human intervention was done here.
  7. 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.
  8. 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. 


New Developments

New features and updates added in Circuit tree:

  1. Updated requirement editor which allows generation of variety of design using variety of components and blocks.
  2. UI/UX improvements.
  3. 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.
  4. 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.
  5. 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.

More details of these boards in upcoming posts.

Boards designed with circuit tree

Beautiful presentations with Prezi

There are some applications available on the net which are fun to use. A Pdf /Powerpoint presentations can be fun but often we look for something different/creative. Here is one of my recent finds where a presentation can be made to be a movie. While trying to create a creative presentation i happen to create a roller coaster circuit tree movie. Well watch the Prezi presentation below to find out. The story covers a daily grind of a hardware engineer.

Write back with your  comments at info@circuit-tree.com

Tip: Through setting bar change the auto movement to 10 second for best view.

Different types of IOT hardware

IOT Introduction

IOT stands for Internet of things. IOT is network which connects small devices such as door bell , parking sensor and many more to the internet.  This enables easy transfer and control of data between devices. There are certain factors which helped in the growth of IOT

  1. Availability of low power and cost microcontroller/processor devices.
  2. Development of low power radio’s
  3. Availability of development boards having microcontroller/processors with components such as radio’s, sensors which are sold with industry specific application program.
  4. Growth of big data and cloud computing.

Let us consider a interesting IOT use case of NEST. It is a intelligent thermostat found in Homes and connected to the cloud. NEST IOT device

NEST IOT device [Link]

 

Here is how the NEST device typically operates:

IOT architectureBoard HardwareBoard softwareConnectivityCloudGUI
HardwareSensor DataMicrocontroller/ProcessorRadioIOT GatewayMobile/PC/Server
Task1
Monitor TemperatureRead sensor Data from temperature sensorTransfer data to the cloud using RF protocols to communicate with gatewayStore dataDisplay data
Send data to the cloud through the radioCheck data across the AI engine to understand the optimal temperature settings to keep. Generate custom reports
Display temperature data on the Display. Check data across the AI engine to understand the optimal temperature settings to keep. Generate custom reports
Task2
Temperature controlChange the room temperature of the AC/heater
Task3
ShutdownGenerate shutdown alerts. Send alerts on the GUI.

Type of IOT Hardware

From the table above we can observe that two type of hardware boards are needed:

  1. IOT modules/sensorBoards: These boards typically have sensors, low power consuming micro controllers , radio’s , actuators, displays etc. They are typically powered through battery or make be connected to supply outlet. One of the most innovative IOT modules i admire is available at link with a video of its use case
  2. IOT gateways: A gateway acts as a bridge between the IOT modules/sensor boards and the cloud. Typical gateway boards would need to connect to multiple IOT sensor boards while parsing the information and passing it to the cloud. Security of the data and the gateway is must to prevent misuse. The hardware typically contains:
    1. Processor core running above 600Mhz core frequency. Having security engines to encrypt the data is a must. Must support the following interfaces
      1. DDR3/DDr4 Memories
      2. Ethernet connectivity ports such as RGMII/SGMII
      3. Radio modules
      4. Memories for firmware storage.
      5. Other peripherals as per the use case.

Challenges and Questions

To start creating different type of IOT hardware a designer should explore the following:

  1. Are there any inexpensive starter kits available which contains all the devices and controller that he needs for the IOT sensor/gateway ?
  2. What is the board power consumption, radio ranges, software stacks available?
  3. Is the final board form factor the same as required in your application?
  4. Can i reduce the cost of these starter kits if used in production?

and many more. More the number of questions you ask at the initial stage more it would define the product maturity.

Using the starter kits for testing may or may not work based on his needs being met with these boards. For instance look at the variety of IOT sensors available in the market and a quick survey would show that none of the starter kits can have plugin boards/shields with these sensor parts mounted on it.  Production with these starter kits is not recommended due to cost and large form factor even through the hardware churn may be less.

How can circuit tree help?

There are numerous articles which states that designing hardware is hard. Not at Circuit Tree it is very easy for us and it is a couple of minutes job for us.

Typically in a board design cycle a engineer would iterate through the long human controlled steps to generate designs in months. At circuit tree we do things differently wherein a AI engine designs the hardware for you based on your bespoke requirements.

We have thousands of low power micro controllers, processors along with peripherals all in the perfect mix to help you generate a quick IOT hardware of any type.

Some of the sensor components and radio components in circuit tree library are listed below:

Device namemanufacturerType
lis2hh12ST Microelectronicsaccelerometer
mma8451qNXP semiconductoraccelerometer
mpu9250TDK InvenSenseaccelerometer
adt7461Analog Devicestemperature
hdc1080Texas Instrumentshumidity+temperature
l3g4200dST microelectronicsgryoscope+temperature
mpl3115a2NXP semiconductorpressure+temperature
si7006Silicon Labshumidity+temperature
si7034Silicon Labshumidity+temperature
si7051Silicon Labstemperature
tmp75bNXP semiconductortemperature
bmc150Bosch Sensorteccompass
mag3110NXP semiconductorcompass
bmc280Bosch Sensortecpressure
bmc250Bosch Sensortecgryoscope
tmd27711AMSambient_light
m41t65ST Microelectronicsrtc
pcf85063tpNXP semiconductorrtc
tsc2046Texas Instrumentstouch_controller
a2200Maestro Wireless SolutionsGPS
M10382AntenovaGPS
Circuit Tree identifierOrdering Part numberManufacturerType
cc3200CC3200MODR1M2AMOBTTexas Instrumentwifi module
esp8266ESP8266-12EAi Thinkerwifi module
sn800088-00153-02Muratawifi module
mbh7blz02MBH7BLZ02-109004FujitsuBluetooth
mr110caATBTLC1000-MR110CAAtmel/MicrochipBluetooth
spbtle_rfSPBTLE-RFST MicroelectronicsBluetooth
pn7120_moduleOM5577NXP semiconductorNFC
a2500r24aA2500R24A00GMAnaren2.4 Ghz radio
rfm75RFM75-SHopeRF2.4 Ghz radio
etrx3587ETRX3587TelegesisZigbee
xbee_s2cXB24CZ7UIS-004Digi InternationalZigbee

 

In the world of endless possibilities and number of hardware combinations circuit tree makes hardware development easy.

IOT Hardware

IOT Hardware

Using the circuit tree requirements editor a IOT sensor/gateway board can be easily created.

To get started on your hardware idea design implementation head to the app. If you have come across innovative implementation of IOT hardware or need any custom development write to us at info@circuit-tree.com.

 

Evaluation of circuit tree with a stm32f407 microcontroller board -Part2

Design Goal

Time for another test of capability. These tests help us check the hardware compiler performance to a actual built commercial board. Some of the items for us to check are:

  1. How closer are we able to design the board with respect to requirements?
  2. Is there any possibility of optimization among circuit tree outputs?
  3. What is the board cost compared to the comparison board?
  4. Circuit Tree designs would be different than the designed board. How do we verify the design?

Olimex board

This time we compare the capability of circuit tree with another commercial board in the market available from olimex. It is a great open source hardware board available at a competitive price with great support from olimex.

Let us again pick the requirement of the board from site :

  1. STM32F407ZGT6 microcontroller
  2. JTAG connector with ARM 2×10 pin layout for programming/debugging
  3. Ethernet 100Mbit
  4. UEXT connector (UEXT is a board to board connector which supports three serial communication interfaces – I2C, SPI and RS232. There is also 3.3V line and GND.)
  5. USB host
  6. USB OTG
  7. SD-card
  8. Input DC DC power supply which allows operation from 6-16VDC source
  9. Power and user LEDs
  10. Reset and user buttons
  11. 4 full 20-pin Ports with the external memory bus for add-on modules
  12. Arduino platform with unsoldered headers
  13. 4 rubber pads for the mount holes
  14. PCB: FR-4, 1.5 mm (0.062″), soldermask, silkscreen component print
  15. Dimensions: 101.6 x 86mm (4 x 3.4″)
  16. Boards costs 40USD in quantity of unit 1 as per olimex.

Requirement entry in Circuit Tree

Let us add this requirement on circuit tree requirement editor:

Step 1:

We add requirements in the tool by adding spi, i2c and other buses to a UEXT connector. Similarily for the Arduino connector the spi and uart bus signals are routed to the connectors. We additionally add the GPIO connector having close to 11 pins. Additional interfaces such as ethernet with lan8710, usb type AB port with esd protection, sd card and jtag ports are added as per the snapshots below.

Requirement_editor-1

Requirement_editor-1

 

 

 

 

 

 

 

Requirement_editor-2

Requirement_editor-2

 

Requirement_editor-3

Requirement_editor-3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Step 2:

Circuit Tree hardware compiler next finds the controller which can support these function. Circuit Tree returns close to 186 parts. We have option to select STM32F407ZGT6 or STM32F407ZET6 with several other parts. We choose STM32F407ZET6 as olimex schematic has this part designed into it.

processor_selection

processor_selection

 

 

 

 

 

 

 

 

Step3:

We next select power of 6V to 14V as required in the requirement and get the schematic design generated in a minutes time. You would notice that the BOM cost derived from Octopart comes to USD 51. The pdf, bom and eagle schematic design is available at link

schematic-final

schematic-final

 

 

 

 

 

 

 

 

 

Step4:

We select a board size of 130mm x64 mm.

placement_file

placement_file

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Step5:

Output placement file is shown below with the constraint that all components be placed on the top side of the board. The red color denotes the placement of the component on the top side of the board. We need to work more on the board by adding the constraints to the board footprints. The arduino connectors are misplaced in the picture below. Files are uploaded at link

placement_with_details

placement_with_details

 

 

 

 

 

 

 

Comparison between two designs:

  1. SDHC section visual check: Circuit tree auto creates processor symbol based on the bus sections and adds them to the connector page. All pins of the connector and the processor pins are the same for sections stated below:
micro sd check

micro sd interface check

 

 

 

 

 

 

 

 

 

  1. JTAG section visual check:
Jtag connection visual chec

Jtag connection visual check

 

 

 

 

 

 

 

  1. USB section visual check: Two usb otg ports are compared. The connector pinouts, vbus generators and esd connections can be checked in the schematic.
usb_otg_sch

usb_otg_sch

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Ethernet RMII section: Comparison of lan8710 and STM32F407ZET6 connections are done. All controllers pins are the same except for the PG11 which in case of circuit tree schematic is PB11 which is correct as per pin mux.
ethernet_schematic

lan8710 ethernet schematic

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. UEXT connector connections: The connections of the controller pins and the UEXT assignment is different than allocated. The connector pin definition is also different than the one desired.
UEXT_connector_connections

UEXT_connector_connections

 

 

 

 

 

 

 

 

 

 

Differences

  1. Other differences:
    1. Power, clock and reset generation is different in circuit tree. It shows that circuit tree can generates it own power supply connections based on what it calculates the extremes.
    2. Some of BOM parts selected by circuit tree are high is cost. One of the examples being integrated magnetics which cost close to usd 10. We would address this concern once we have sufficient parts in the library which would provide value range to the user.
    3. Arduino connectors are not compared as the pin assignment and gpio connections are not as per connector requirements even though the muxing from controller is correct. In the next release we would have new feature to change the connector pin outs.
    4. IFC pin connections failed as circuit tree does not generate a connection where it observes conflict of IO’s. The commercial schematic uses jumpers to isolate segments which we can also support at a later date.
    5. The placement of the design was not the same as the olimex board. We are in process of improving the constraint addition which would  help to create more custom designs.

It was a long post with visual comparison of the two boards. Write back to us at info@circuit-tree.com with your feature requests and suggestions.