Designing the ESP32 Dev Board I always wanted

Recently I was asked: “What do you need a development board for?” For me the answer is very clear. I love short development cycles. It’s much faster to verify an idea on a bread board before you sit down and design a PCB.

Designing a PCB means that you will have a much longer round trip before you can test your hardware. But many development boards I tested (and there were many) were disappointing in one way or another. Read here why I wanted to design my own board and how the resulting board looks like.

There are literally dozens of different development board types for ESP8266 and ESP32 on the market. But what makes a development board a good one? And maybe even before that: what exactly is a development board?

In my opinion a development board for a micro controller should make the controllers features accessible as easy as possible early in the development process. And it should be very versatile to allow the maker to create many different projects with it.

Note: This post is about the ESP32 ePulse board. It is available for order at ThingPulse. Order Now! Thank you, you are supporting this blog.


One thing I’m looking for in a good development board is how easy it is to program. For instance the early ESP8266 ESP-01 boards were not easy to program. But they were not made for programming . They were meant to be used as a WiFi transceiver. Controlled over serial lines with AT commands from another micro controller like an Arduino.

ESP8266 ESP-01 Board

To program the ESP-01 you had to hook it up to power supply and a serial-to-usb-programmer. But that was not enough. In order to flash a new program you had to connect some of the pins while the device is restarting. Not very convenient!

Later ESP8266 boards like the NodeMCU made this much easier by having additional components on board. All you had to do was press the upload button in the IDE. Then the flasher script together with the board would set the micro controller into the flash mode.

Form Factor

Another important aspect of a development board is the form factor. For a long time development boards with the Arduino form factor were most popular on the market. A relatively big board with many pins led out to female header pins. You could then either use jumper wires to connect the GPIO pins to a bread board. Alternatively you could plug a matching shield into the main board. The standardized shape of the board allowed third party providers to develop and sell additional features as shields.

Other types of development boards had male header pins and you could plugged them directly into bread boards. A good development module intended for bread board has to comply with certain specialties of a bread board. For instance, if a development board is too wide it covers all pins on a bread board.

If the module’s pins are too close together they will mechanically fit the bread board. But the pins will create a short circuit. The ESP-01 as a development module is not bread board friendly. The two pin rows are next to each other.

Ideally a development module leaves at least one row of pins free on each side. This way you can access all pins with a jumper wire.

Power Consumption

Many of my electronics projects are related to Internet-of-Things (IoT) in one way or the other. For instance I built many applications for home automation which I use everyday at home.

IoT devices should be ubiquitous. This means they should work also in places where you don’t have mains power. And you don’t want to change or recharge batteries every couple of days.

Thus for developing IoT hardware it’s very important that already the bread board prototype is efficient. Ideally you can just hook AA battery pack or a LiPo to it and you are ready to go.

But convenience is not everything, the board also should be efficient when running from batteries. Most development boards are really bad in this aspect. They have status LEDs which consume energy.

And often the UART chip is turned on and consumes energy when connected to battery power. The UART is used to program the micro controller. And to send debugging output over the serial line back to the PC. But when the dev board is powered by battery power there is no need for programming or debugging output. So a good board do

The ESP32 ePulse Dev Board

With all these requirements in mind I set out to design the perfect development board for me. And I’m really happy with the result. The most outstanding feature of the ePulse is it’s low power consumption. The deep sleep power consumption of the module can be as low as 25uA! I measured this value in battery mode with an input voltage of 4.5V. By using 12V the deep sleep consumption can rise to around 35uA.

Many popular development boards have a deep sleep consumption of ardound 100uA or more. To achieve this value I ditched all LEDs. And the UART doesn’t have power when the module is in battery mode. I tested the board with VIN voltages between 3.3-12V and it works reliably in this range.

More than 30 GPIO pins are lead out. And most of them can be used in various ways. There are 16 ADC , 2 DAC and more than 24 GPIO pins available for your projects

The form factor has two aspects worth mentioning. It fits into a bread board with one pin row free on each side. And the module PCB has a gap where the ESP32 antenna is. This will improve signal quality compared to designs without the gap.

ePulse Form Factor allows access to all pins in a bread board

To avoid certification we are using the Espressif ESP32-WROVER-B module with 8MB of PSRAM and 8MB of flash. This should give you ample resources for your design. The additional PSRAM can be very useful for devices with a display. If your graphics driver uses a frame buffer this allows you to support more colors. And using machine learning with TensorFlow Lite is also quite memory hungry.

I believe documenting your creations is very important. That’s why from the beginning you will have a Fritzing part of the dev board available. You can download it here.

Fritzing Part of the ESP32 ePulse Dev Board

Could I raise your interest in this exciting new board? It is available for order at ThingPulse. I’m really proud of this baby!

Posted by Daniel Eichhorn

Daniel Eichhorn is a software engineer and an enthusiastic maker. He loves working on projects related to the Internet of Things, electronics, and embedded software. He owns two 3D printers: a Creality Ender 3 V2 and an Elegoo Mars 3. In 2018, he co-founded ThingPulse along with Marcel Stör. Together, they develop IoT hardware and distribute it to various locations around the world.


      • Not really. There’s many out there that can do it. TPS6205x series for example. 5uA standby current and 12uA quiescent , which is better than that TS9013..
        This opens up powering from Lithium batteries… If the battery goes down to 3.3 volt these devices become a simple ‘on-switch’ passing the battery voltage.

  1. Interesting board. Many thanks.
    Do you have any recommendations about powering the board with a battery:
    – which battery type, which pins
    – how to measure battery voltage, to send this information to a central device monitoring application

    • Hi Urs!
      I think 3 AA or AAA type cells would be a good fit. The VIN pin should be used for this. I plan to also do a LiPo version with a charger. The ESP32 has 16 ADC channels and with the proper settings they can accept voltages of up to 3V. That being said you’ll have to use a voltage divider to measure the voltage.

  2. Hi Daniel,

    Why the GPIO 16 and 17 are missing? Are not available from the Wroom or it is a design intend? I need the board to connect to other devices GPS and NB-IoT over serial interfaces. Do you have any suggestion?

    • Hi Dan-Catalin
      Yes, that’s correct. We led out all pins available on the Wrover module, actually rather too many. In hindsight leading out the pins used by the flash chip (GPIO6-11) was rather useless… Do you have any special interest in those pins? How would your perfect board look like?

      KR, Dani

Leave a Reply