24 June 2024, 3-minute read

Designing the World's Smallest ESP32 Dev Board*

After the Loughborough Degree Show, I want to lift the curtain on how I created Imaginary Parts.

During my final year project, my tutor highlighted the impracticality of my design size, saying, “This looks great and all, but if a student wants to fit 4 or 5 of these into their product, how will that be possible if they’re 2 inch squares?” He had a point and it led me down the rabbit hole of miniaturisation. I set in search of the smallest feasible design for my final year project was; finding a size ‘floor’ as it were.

I needed an ESP32 (a common microcontroller for IoT and embedded use) with two pins for I2C bus communications. I settled on the ESP32-S3R8, a compact yet powerful microcontroller with on-board USB.

I researched reference designs on Espressif’s website, GitHub, and YouTube. Thanks to builderdev212, AnalogLamb, Robert Feranec, and Haase Industries for their materials. Using EasyEDA, I incorporated components based on Espressif’s designs and my knowledge. I added decoupling capacitors, current-limiting resistors, and a SiliconLabs CP2102 USB-to-UART bridge to ensure functionality. To fit the development board into a smaller footprint, I split it into two. This allowed transformation from large and flat to small and thick. Connections were routed through Hirose BM28 micro-connectors.

When it came time to route the PCB, I wired traces, considered trace widths and current demands, and used vias to route traces. It was challenging and at times, frustrating. Despite this, as one completes this process, they are regularly rewarded as traces successfully route (and re-route) one-by-one. It is somewhat akin to solving a fun, incredibly layered puzzle.

I spent hours replacing components with smaller equivalents, ensuring quick production by checking JLCPCB’s library. Lots of scrolling through datasheets comparing specs and re-wiring the circuit schematic was involved.

The top board’s mezzanine connectors were placed on separate daughterboards, allowing 1.6mm clearance for components under the top board. This fiddly process required precise hand-soldering of 2mm daughterboards with a tolerance of just ±0.15mm. This process was treacherous, but with a steady hand and some patience, it worked on the first try! A result, in all candour, I was not expecting.

Upon receiving the populated PCB, I separated the board halves and mezzanine connectors using a Stanley knife and hacksaw. After sanding, I soldered flying leads and daughterboards using a Pinecil and hot air station. This worked very well.

The board worked perfectly in Windows Device Manager and Arduino IDE, drawing 100-200mA. This was not the expected result, even if it was intended.

The final PCB is just 17mm × 17mm, making it the world's smallest ESP32 dev board by footprint. I got there by using several techniques:

• Split board with mezzanine connectors for a ‘sandwich’ layout
• Minimal I/O: two pins for I2C, two buttons, and one LED
• Double copper thickness for narrow traces
• Removed unnecessary features like WiFi and Bluetooth

Some improvements for a V2 became apparent, though:

• Removing the CP2102 UART bridge to save space and cost
• Using a 4- or 6-layer PCB instead of a 2-layer one for better signal trace wiring
• Better balancing of component distribution between top and bottom boards

Designing this PCB took three weeks, with two additional days for assembly and testing. The process was far from linear, with significant architectural changes requiring schematic adjustments and PCB layout updates. Overall, it was a highly satisfying process- if at times a bit stressful. As a lifelong electronics enthusiast, creating my first full electronic product was gratifying. This is the first time I designed a full electronic product from start to finish and produced a PCB so safe to say it was daunting, but having a working prototype on the first try made it all worth it!

If you’re looking for a designer who can also engineer the inner workings of your product, my DMs are open. 😉

- Yuvraj