convert esp32 into a plug-able mini-module.

Similar projects worth following
The design aims to be as small as possible while still possible to solder by hand. All pin pitches are 1.27mm or larger.
It offers also on-target debugging capability, esp-prog port for firmware upload and serial output and an LED.
The size of the PCB is 29.4 x 20.5 mm.

Why would I need this module?

  1. I want to be able to upgrade/downgrade or use another MCU later in my project.
  2. I want to be able to recover the MCU when my motherboard is no longer useful.
  3. I want to be able to debug and program, but I don't want to sacrifice board space for it.
  4. I don't want to design the same ESP32-peripheral circuitry over and over again.
  5. I want to get rid of the Chinese development boards with all their flaws. (unreadable/lacking pin numbers, doesn't fit in breadboard, no capacitor on reset pin, large sleep currents, etc...).
  6. I like the concept of modularity.  Others can easily reuse my design.
  7. I want to build this in a housing an add my own proper (dipole) wifi antenna (e.g. LSR 001-0012).

ESP32 mini module

  1. Designed for the ESP32-WROOM-32UE (4MB) (only €2.21 on Digikey)
  2. on 2x 2x15p 1.27mm straight SMD headers : AliExpress (€0.22/pce). 
    1. The ESP32-WROOM only has 28 usable non-GND pins. 
    2. That's a total of 60pins for the mini module.  Half of them will be used as GND pins. 
    3. Not opting for THR-headers because of PCB-fabrication limitations: minimum annular ring and clearance of 1.27mm spaced holes. 
    4. Opting for dual row because that's more popular on AliExpress.
  3. minimal features :
    1. ✓power supply decoupling
    2. ✓RC-connection on EN-pin (=RST pin) (to avoid the firmware uploading problem of the NodeMCU-32s)
  4. Nice to have :
    1. ✓JTAG-smd connector on bottom (to connect to ESP-PROG) : 2x5P SMD 1.27mm pitch
    2. ✓UART SMD connector on bottom (to connect to ESP-PROG) : DC3-6P-1P27 (€0.46/pce incl. shipping).
    3. ❌ RST button 90° (as on Nucleo32), or else use the reset button on the esp32 debugger.

Breakout board

  1. Has 2x 2x15p 1.27mm straight SMD sockets on top: AliExpress (€0.50/pce)
  2. Has the necessary pin labels for all ESP32 mini module pins.
  3. Has a right angled header, so that it can be connected to breadboard using Adafruit's IDC BREAKOUT HELPER.  The board would then be at a 90° angle to the breadboard, which also makes the bottom side accessible for measuring.  No breadboard pin rows will be covered (and be rendered useless).
    1. Another option is to solder a 90° 40pins socket on experimenter board.  This will put the ESP32 parallel to the experimenter board, which requires less build height.
  4. The shrouded header allows for easier identification of pin 1.


Schematic of R1.0 of the ESP32-mini-module

Adobe Portable Document Format - 72.20 kB - 06/06/2021 at 18:43


  • Testing Revision R1

    Christoph Tack06/01/2021 at 19:37 0 comments


    I use the ESP-Prog development board as ordered on AliExpress (was €10.22).

    using a serial connection

    Connect the ESP32-mini module with ESP-Prog using the 6pin IDC-cable.


    platform = espressif32
    board = nodemcu-32s
    framework = arduino
    monitor_port = /dev/ttyUSB1
    monitor_speed = 115200
    ;Serial firmware upload
    upload_port = /dev/ttyUSB1

    This is the usual way of programming your ESP32.  Make sure to put the jumper on IO0_ON/OFF on the ESP-Prog. 

    Programming works flawlessly.

    using a JTAG connection

    Uploading code using JTAG is many times slower than through the serial connection.

    1. Connect the ESP32-mini module with ESP-Prog using the 10pin IDC-cable.
    2. Power cycle the ESP32.

    Don't use the "PlatformIO:Build" ✓-button on the bottom of VSCode screen, but use Run→Start Debugging (F5) to debug your project.


    platform = espressif32
    board = nodemcu-32s
    framework = arduino
    monitor_port = /dev/ttyUSB1
    monitor_speed = 115200
    ;JTAG firmware upload and debug
    upload_protocol = esp-prog
    debug_tool = esp-prog
    debug_init_break = tbreak setup

     Uploading code and debugging works as well.  If you want a serial port, you'll have to connect the 6pin IDC-cable in addition to the 10pin IDC-cable.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates