Week 4 — Minimal ESP32-S3 Circuit (KiCad)

Objective

Create a minimal PCB for an ESP32-S3 module with power, reset, boot, and a UART header for programming.

Parts (BOM)

QtyPartValue / Notes
1ESP32-S3 moduleMatch exact module/footprint
13.3V regulator≥ 500 mA, SOT-223
1Cap10 μF, 6.3V (bulk)
3Cap0.1 μF, ceramic
2Resistor10 kΩ pull-ups
2PushbuttonReset and Boot
1Header1×4 (GND, 3V3, TX, RX)

Schematic (important nets)

REG_VOUT -> 3V3
3V3 -> C_bulk (10uF) -> GND
3V3 -> C_decouple (100nF) -> GND
EN -> 10k -> 3V3
EN -> pushbutton -> GND
IO0 -> 10k -> 3V3
IO0 -> pushbutton -> GND
U0TXD -> header TX0
U0RXD -> header RX0
  

KiCad Steps (summary)

  1. New Project → add schematic (Eeschema)
  2. Place parts (module, regulator, caps, resistors, buttons, header)
  3. Wire nets and add net labels: 3V3, GND, EN, IO0, TX0, RX0
  4. Run ERC → annotate → assign footprints
  5. Update PCB from schematic → layout in Pcbnew
  6. Run DRC, generate Gerbers, order PCB

Testing

Connect USB-UART: cross TX/RX. Enter bootloader by holding BOOT and pressing RESET. Flash with:

esptool.py --chip esp32s3 --port /dev/ttyUSB0 write_flash -z 0x1000 firmware.bin

Screenshots

Include screenshots here at a later date:

Reflection / Lessons Learned

As has been true this entire class so far, learning new software is hard! I am still working on getting the actual kicad to work, although the theory makes sense to me.