Skip to main content
Tutorials

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

RefPartDescriptionJLCPCB#
U1ESP32-WROOM-32WiFi+BT module, 38-pinC95209
U2CH340CUSB-UART bridge, SOP-16C84681
U3AMS1117-3.33.3V LDO, SOT-223C6186
J1USB-C 2.0Power + data connectorC165948
SW13x4x2mm tactileEN (reset) buttonC318884
SW23x4x2mm tactileIO0 (boot) buttonC318884
C1–C4100nF 0402Decoupling capsC307331
C510µF 0805Bulk cap, USB inputC15850
C610µF 0805Bulk cap, 3.3V railC15850
R110kΩ 0402EN pull-upC25744
R210kΩ 0402IO0 pull-upC25744

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:

  1. Pulling IO0 (GPIO0) LOW before reset
  2. 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:

  1. Hold SW2 (IO0) to pull GPIO0 low
  2. Press and release SW1 (EN) to reset the chip
  3. 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:

PinFunction
ENActive-high chip enable / reset (pull HIGH, button to GND)
IO0 (GPIO0)Boot mode select; LOW during reset enters bootloader
TXD0 / RXD0UART0 — primary serial console and firmware download port
3V33.3V power input
GNDGround (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# and RTS# to automate bootloader entry from esptool

Resources