PROJECT FOUNDRY
Sign up free — track your progress, earn mastery, get the project files
Build guide

Card03 / 08PhaseSCHEMATICProjectL1.01 WROOM breakoutBuild

PHASE 03SCHEMATIC

Your parts are already chosen and sourced — so the schematic isn't where you make decisions, it's where you write them down. Walk the board one small sub-circuit at a time: name the problem, meet the parts that solve it, then capture it in KiCad. Every refdes below is already on your BOM.

Think of the schematic as six small problems standing between a bare ESP32 module and a board you can plug in and flash. The board needs the right voltage, a steady supply, a defined way to boot, a USB port that negotiates power, something you can see, and a shield from the outside world. Each section below takes one of those problems and shows you the exact parts that solve it. Read them in order — they follow the power as it comes in at the USB connector and works its way to the chip. Every part has a — U1, C5, R3 — the short label that ties its symbol, its BOM line, and its spot on the board together. You'll meet them in the tables under each section, and you can spin the 3D model of the headline parts as you go.

Power-flow block diagram: USB-C J1 to polyfuse F1 to RT9080 LDO U2 to 3.3 V for the ESP32-S3 U1; USB data via the D1 ESD array; with C1 bulk, C2/C3/C7 decoupling, and R3/R4 CC resistors to ground.
How it all connects — power flows left to right; the six sections below follow this path.
Loading 3D model…
U1 — ESP32-S3-WROOM-1 module (drag to rotate)
01 · The 3.3 V rail — your regulator

Your ESP32-S3 wants a clean 3.3 V supply, but USB gives you 5 V. Something has to step it down.

That something is **U2**, the RT9080. It's an — short for low-dropout — which is just a voltage regulator that holds its output steady even when the input is only a little above it. Why not a simple voltage divider (two resistors)? Because a divider sags the moment the chip pulls current — and the ESP32's draw jumps every time its radio transmits. A regulator actively holds 3.3 V no matter the load. That's the whole point of a regulator. One thing to remember: the RT9080 needs a capacitor on its input and another on its output to stay stable — that's **C5** and **C6**, 1 µF each. The datasheet promises stability with 1 µF ceramic in and out, which is exactly what we gave it.

RefPartRole
U2RT9080-33GJ55 V → 3.3 V LDO, 600 mA
C5 C61 µF X7RLDO input / output stability caps
Gotcha

Don't treat C5/C6 as optional. An LDO without its output capacitor can oscillate — turning your clean rail into noise.

Check yourself

In plain terms, why use a regulator (U2) instead of just resistors to drop the voltage? Because a regulator holds 3.3 V steady no matter how much the chip draws — a plain resistor divider would sag the moment the chip gets busy.

Deep dive· Why a low-dropout (LDO) part?

Even when USB sags to about 4.6 V under load, the RT9080 only needs about 0.53 V of headroom to keep regulating: 4.6 − 0.53 = 4.07 V, still comfortably above 3.3 V. A cheaper regulator that needs 1–2 V of headroom would drop out right here, and the 3.3 V rail would collapse. That margin is the whole reason we chose a (LDO) part.

02 · Decoupling — a reservoir at the pins

A steady rail at the regulator is not the same as a steady rail at the chip a few centimetres away.

When the ESP32 switches its transistors millions of times a second, it grabs tiny gulps of current faster than the regulator across the board can possibly respond. Left unfed, the 3.3 V right at the chip's pins would dip on every gulp — and a microcontroller fed a dipping rail glitches or resets. The fix is a small parked right at each power pin: **C2, C3, and C7** (0.1 µF each). They hold a little reserve of charge and hand it over instantly when the chip asks, then refill between demands. **C1** (10 µF) plays the same game one size up — a for the whole rail, smoothing the larger swings the little caps don't cover. Together they're called bulk plus bypass.

RefPartRole
C2 C3 C70.1 µF X7RBypass — one at each module 3V3 pin
C110 µF X5RBulk reservoir for the rail
Gotcha

These only work if they sit right against the module's power pins. A decoupling cap routed the long way round is just decoration — the trace inductance chokes off the fast current it's supposed to deliver. (Carry this into LAYOUT.)

Check yourself

In one line, what do C2/C3/C7 do? They sit right at the chip's power pins and keep its 3.3 V steady when it suddenly pulls current.

Deep dive· Why three small caps, not one big one?

A capacitor only helps if it's close — the longer the trace between it and the pin, the more its help fades (trace inductance gets in the way). Three 0.1 µF caps, one hard against each power pin, beat a single 0.3 µF cap sitting a few millimetres away: being close matters more than raw capacitance. The 10 µF (C1) then handles the slower, larger swings the little ones can't.

03 · Boot & reset — pull-ups that set a default

A digital input wired to nothing doesn't read 0. It floats — it picks up noise and reads randomly.

The ESP32 checks two the instant it wakes up: EN (chip-enable / reset) and GPIO0 (boot select). Both have to be at a definite level at that moment, so each gets a — **R1** and **R2**, 10 kΩ — gently tying it to 3.3 V (logic high). EN high means the chip runs; GPIO0 high at reset means boot normally from flash. The two buttons override that resting level while you hold them. **SW1** pulls EN to ground to reset the chip; holding **SW2** (GPIO0 to ground) through a reset drops the chip into USB download mode so you can flash new firmware. The resistor sets the default; the button wins while it's pressed.

RefPartRole
R1 R210 kΩPull-ups on EN / GPIO0
SW1 SW2B3F-1000EN (reset) / BOOT (download)
Check yourself

If R1 weren't there and you pressed nothing, what would the EN pin read? It would float — pick up electrical noise and read randomly, so the chip might reset or never start. The pull-up gives it a steady, known level.

Deep dive· Why 10 kΩ, and why 'weak'?

A pull-up only has to set the resting level, not power anything — so it should be 'weak,' meaning a high value. At 3.3 V, a 10 kΩ pull-up leaks just 0.33 mA (3.3 V ÷ 10 kΩ), which is negligible, yet it still firmly holds the pin high. A 100 Ω pull-up would burn 33 mA doing the same job and would fight the button when you press it. Weaker is better here.

04 · USB-C — advertising as a sink

A USB-C source won't push 5 V onto VBUS until it's sure something on the other end actually wants power.

Your board announces itself as a consumer — a — by tying each to ground through a 5.1 kΩ resistor, called . The host sees that exact resistance and only then switches on. There are two of them, **R3** and **R4**, because Type-C is reversible: whichever way the plug goes in, one of CC1/CC2 is the live one, so both need their own Rd. These are (to ground) — the mirror image of the boot pull-ups you just met. And 5.1 kΩ isn't arbitrary; it's the value the USB-C spec assigns to a basic sink.

Loading 3D model…
J1 — USB-C receptacle (drag to rotate)
RefPartRole
R3 R45.1 kΩCC1 / CC2 sink resistors (Rd) to GND
Check yourself

What is R3/R4's message to a charger, in plain words? 'I'm a device that wants power.' That's what makes a USB-C charger turn its 5 V on.

Deep dive· Why exactly 5.1 kΩ, and why two?

A device advertises itself as a power 'sink' by tying each to ground through a 5.1 kΩ resistor (called ) — that exact value is what the USB-C spec assigns to a basic sink. There are two (R3, R4) because Type-C is reversible: whichever way the plug goes in, one CC pin is the live one, so both need their own Rd. The sneaky failure: with an old USB-A-to-C cable the board would still work (A ports always have 5 V), so it can seem fine on an old cable yet look dead on a new charger.

05 · Indicator LEDs — a resistor sets the current

An LED is a diode, and a diode is a poor judge of its own appetite.

Give an LED more voltage than it wants and it pulls more and more current until it cooks itself. So you never connect one straight across a supply — you put a with it to set the current. The math is just Ohm's law on the leftover voltage. The supply is 3.3 V; the red LED drops about 1.8 V across itself (its ), leaving 1.5 V across **R5**. With 470 Ω that's I = 1.5 V ÷ 470 Ω ≈ 3.2 mA — bright enough to see, easy on the driving it. **R5** and **R6** do this for LED1 (red, power) and LED2 (yellow, user).

RefPartRole
LED1Red, Vf ≈ 1.8 VPower indicator
LED2Yellow, Vf ≈ 2.0 VUser / blink LED
R5 R6470 ΩLED series current-limit
Gotcha

An LED without its series resistor is a short circuit with extra steps — it flashes once and dies. R5/R6 are not optional.

Check yourself

Why can't you wire an LED straight to 3.3 V with no resistor? An LED doesn't limit its own current — without a resistor it pulls far too much and burns out almost instantly.

Deep dive· Sizing the resistor (Ohm's law)

The resistor sets the current from the leftover voltage: I = (Vsupply − Vf) ÷ R. The red LED drops about 1.8 V across itself (its ), so on 3.3 V through 470 Ω: (3.3 − 1.8) ÷ 470 ≈ 3.2 mA — bright enough to see, easy on the GPIO. The yellow LED's Vf is higher (~2.0 V), so the same 470 Ω gives a bit less: (3.3 − 2.0) ÷ 470 ≈ 2.8 mA. That's why swapping LED colours at a fixed resistor quietly changes the brightness.

06 · Protecting the port — two guardians

The USB connector is the one part of your board that touches the outside world, so it's where trouble comes in.

It gets two guardians. **F1** is a (a PTC polyfuse) on : if something downstream pulls too much current, it heats up, its resistance shoots up, and it throttles the current down to a trickle — then, once it cools off, it returns to normal all by itself. **D1** is an -protection array (the USBLC6-2) on the two data lines and VBUS. When a static spike arrives — thousands of volts off a fingertip — it clamps that spike to ground in a nanosecond with a , before it can punch through the ESP32's delicate USB pins. It's deliberately a low-capacitance part, because USB data is fast and a bulky protector would smear the signal.

RefPartRole
F11206L050YRResettable PTC — 0.5 A hold / 1 A trip on VBUS
D1USBLC6-2SC6ESD clamp on D+ / D− and VBUS
Check yourself

What two things does the USB port need protecting from? Too much current (a short or a greedy device) and static-electricity zaps on the data lines.

Deep dive· How F1 and D1 actually protect the port

F1 is a (a 'polyfuse'): on overcurrent it heats up, its resistance shoots up to throttle the current, then it heals once it cools — unlike a glass fuse you'd have to desolder and replace. D1 is an array on the data lines; when a static spike arrives — thousands of volts off a fingertip — it clamps that spike to ground in a nanosecond. It's deliberately a low-capacitance part, because USB data is fast and a bulky protector would smear the signal.

You've now reasoned out every part — so now you draw it. Start from the KiCad starter below: it's a ready-made project, with the symbol library plus every BOM part already dropped onto the sheet, spaced out but not yet wired. Your job isn't to find parts, it's to arrange them into a readable layout and wire them into the real circuit. A good schematic isn't just correct, it's readable: someone (including future-you) should be able to follow it at a glance. A few habits and one rules-check get you there.

Draw it · place by convention

Arrange the parts the export gave you so the drawing reads the way the circuit works — power in at the top, signal flowing left to right.

Drag each part so the sheet reads left → right: inputs on the left, outputs on the right. Put (3V3, VBUS) at the top pointing up, and grounds at the bottom pointing down. Group parts by sub-circuit, the same way you just learned them — the USB-C front end together, the regulator together, the ESP32 and its caps together. And keep each right next to the pin it feeds, so the schematic mirrors how the part has to sit on the real board.

An IC with signal flowing in from the left and out to the right, a 3V3 supply symbol pointing up, a GND symbol pointing down, and a decoupling capacitor drawn right at the power pin.
The four habits that make a schematic readable.
Draw it · wire it cleanly

Connect with names, not a maze of lines. Two wires with the same label are the same connection.

For anything that crosses the sheet — a power rail, a reset line — give the wire a instead of dragging a line all the way across: two wires that share a label are connected, and the drawing stays clean. Use for 3V3 and GND so every part taps the rail by name. And remember that wires which merely cross aren't joined unless there's a junction dot — let KiCad drop those at real T-connections.

Deep dive· Why named labels beat long wires

A net is defined by connection, not by a drawn line — so a called 3V3 in one corner of the sheet is the same wire as a 3V3 label in the other corner, with nothing drawn between them. That isn't a shortcut, it's the readable way: a schematic with twenty rails crossing it hides mistakes, while one built from named and short local wires shows each sub-circuit as a tidy island. The electrical meaning is identical; the human meaning is night and day.

Draw it · KiCad 10 shortcuts

A handful of keys do most of the work — hover over a part and press the key. (Live list: Preferences → Hotkeys, or press ? in the editor.)

KeyWhat it does
AAdd a symbol (place a part)
PAdd a power port — 3V3, GND, VBUS
WDraw a wire
LPlace a net label
R / M / GRotate / move / drag (G keeps wires attached)
X / YMirror across the X / Y axis
E / V / UEdit properties / value / reference
QNo-connect flag — mark a pin you leave open
Draw it · run ERC

Before you trust the schematic, let KiCad check it: Inspect → Electrical Rules Checker.

reads your whole schematic and flags what's electrically wrong — a pin connected to nothing, two outputs fighting each other, a power rail that nothing drives. Run it, then work the list down to zero. The bar is the same one you'll meet again at DRC: clean, or every remaining flag is an exception you've marked and understood — not one you scrolled past.

ERC says……you do
Input power pin not drivenAdd a PWR_FLAG to rails that arrive from outside (VBUS from USB) or leave a regulator — it tells ERC the rail really is powered. Fix it, don't ignore it.
Pin not connectedMeant to leave it open? Drop a no-connect flag (Q) on it — now it reads as intentional, not an oversight.
Unconnected wire / netA real mistake — join it, or delete the stray end. Don't scroll past this one.
Deep dive· Why a powered rail still trips ERC (and PWR_FLAG fixes it)

ERC checks by pin type: it wants every power-input pin (like the ESP32's 3V3) fed by a power-output pin somewhere. But your 3.3 V comes out of the , whose output KiCad may not mark as a power-output, and your 5 V arrives from a connector that has no 'output' pin at all — so ERC sees a rail nothing officially drives and warns you. A is a tiny symbol whose single pin IS a power-output: drop it on VBUS and on 3V3 and you've told ERC, truthfully, that the rail is driven and you checked. That's the honest way to clear the warning, not a mute button.

Draw it · export & upload

A clean, readable schematic is the artifact this stage wants.

  1. Run ERC until it's clean — or every remaining flag is marked and understood.
  2. Plot the schematic to PDF (File → Plot) for a readable copy, and keep the .kicad_sch source.
  3. Attach the schematic as this stage's artifact — that's what the gate below checks.
KiCad 10 — Schematic Editor manual

Quick check — schematic

1. USB gives the board 5 V, but the ESP32 needs 3.3 V. Which part lowers the voltage to 3.3 V?
2. What do the little capacitors right next to the ESP32 (C2, C3, C7) do?
3. Why does each LED have a small resistor next to it?
4. The two small resistors on the USB-C port (R3, R4) are left off. You plug into a modern USB-C charger. What happens?
5. What are the two buttons (EN and BOOT) for?
6. In KiCad, you give two far-apart wires the same label, '3V3'. What happens?
7. Your schematic is right, but ERC says 'input power pin not driven' on the 3.3 V rail. Best move?
Exit this stage

You've now read every part on the board and why it's there, and captured it as a schematic. Attach the schematic file (the gate below tracks it). Carry one thing forward: U1 has a PCB antenna, so when you reach LAYOUT the keep-out underneath it is a hard constraint, not a suggestion.