ESP32 WiFi Module Reference Schematic
Overview
In this tutorial, we will design a schematic-only reference circuit for an ESP32-WROOM-32 based WiFi development board. This is the same class of circuit found on popular ESP32 devkits like the NodeMCU-ESP32 and ESP-WROVER-KIT.
The schematic includes:
- ESP32-WROOM-32 module (the core WiFi/BT SoC + antenna)
- CH340C USB-UART bridge for programming over USB
- USB Type-C connector for power and serial communication
- AMS1117-3.3 LDO regulator to drop USB 5V to 3.3V
- Reset (EN) and Boot (IO0) buttons for the standard Espressif programming sequence
- Decoupling capacitors on all power rails
All JLCPCB part numbers are chosen to use components readily available from their Basic/Extended parts library.
We use routingDisabled throughout so this tutorial stays focused on the
schematic logic — no PCB layout is required.
Bill of Materials
| Ref | Part | Description | JLCPCB# |
|---|---|---|---|
| U1 | ESP32-WROOM-32 | WiFi+BT module, 38-pin | C95209 |
| U2 | CH340C | USB-UART bridge, SOP-16 | C84681 |
| U3 | AMS1117-3.3 | 3.3V LDO, SOT-223 | C6186 |
| J1 | USB-C 2.0 | Power + data connector | C165948 |
| SW1 | 3x4x2mm tactile | EN (reset) button | C318884 |
| SW2 | 3x4x2mm tactile | IO0 (boot) button | C318884 |
| C1–C4 | 100nF 0402 | Decoupling caps | C307331 |
| C5 | 10µF 0805 | Bulk cap, USB input | C15850 |
| C6 | 10µF 0805 | Bulk cap, 3.3V rail | C15850 |
| R1 | 10kΩ 0402 | EN pull-up | C25744 |
| R2 | 10kΩ 0402 | IO0 pull-up | C25744 |
Schematic Design
How It Works
Power Supply Chain
USB-C (5V) ──► AMS1117-3.3 (LDO) ──► 3.3V rail ──► ESP32 + CH340C
The USB-C connector provides 5V from the host computer. The AMS1117-3.3 LDO regulator drops this to the 3.3V required by the ESP32 module and CH340C chip. Bulk capacitors (C5 on 5V, C6 on 3.3V) stabilize each rail; small 100nF decoupling caps (C1–C4) sit close to each IC power pin to suppress high-frequency noise.
USB-to-Serial Programming
The CH340C (U2) acts as a bridge between the USB 2.0 full-speed data lines
and the ESP32's UART0 (TXD0/RXD0). The cross-wired connection is intentional:
the CH340C's TXD (transmit) goes to the ESP32's RXD0 (receive), and vice versa.
Reset and Boot Sequence
Espressif modules enter bootloader mode by:
- Pulling
IO0(GPIO0) LOW before reset - Releasing the
EN(chip-enable / reset) line HIGH
This is normally automated via the CH340C's DTR# and RTS# signals and a pair
of NPN transistors (omitted here for schematic clarity — see
Espressif's auto-download circuit
for the full circuit).
The manual buttons SW1 (EN) and SW2 (IO0) let you trigger this sequence by
hand:
- Hold SW2 (IO0) to pull GPIO0 low
- Press and release SW1 (EN) to reset the chip
- Release SW2 — ESP32 starts in download mode
Pull-up resistors R1 and R2 (10kΩ each) ensure both lines default HIGH when the buttons are released.
ESP32-WROOM-32 Module
The WROOM-32 is a complete module — it integrates the bare ESP32 SoC, 4MB of SPI flash, a PCB antenna, RF matching network, and shielding can. You connect only the functional I/O pins you need; the module handles the RF side internally.
Key pins to be aware of:
| Pin | Function |
|---|---|
EN | Active-high chip enable / reset (pull HIGH, button to GND) |
IO0 (GPIO0) | Boot mode select; LOW during reset enters bootloader |
TXD0 / RXD0 | UART0 — primary serial console and firmware download port |
3V3 | 3.3V power input |
GND | Ground (multiple pins, all must be connected) |
Extending the Design
Once the basic schematic is working you can add:
- Status LED — a 3.3V-tolerant LED + series resistor on any GPIO (e.g. GPIO2, which is the onboard LED on most NodeMCU boards)
- Battery charger — a TP4056-based LiPo charger feeding the 3.7V battery into the 5V rail through a boost converter
- Sensor headers — I²C (GPIO21/22) or SPI (GPIO18/19/23) pin headers for adding external sensors without reflowing the board
- Auto-reset circuit — NPN transistors (BC817/MMBT3904) on
DTR#andRTS#to automate bootloader entry fromesptool