Week 6 — Electronics design

This week’s topic: Electronics design. For the individual assignment I compared EDA tools, chose KiCad, and worked through a full schematic → PCB flow for a carrier around Seeed XIAO RP2040: FPC and pin-header breakouts toward a display, a tactile switch and pull-up, an indicator LED with series resistor, plus decoupling and routing on the board. Below is written as a step-by-step walkthrough so someone else could reproduce the same workflow; screenshots cover the schematic and the PCB editor. After the first fab order I iterated a second PCB revision (smaller FPC, 1×6 header, ESP32-S3 for Nanostat programming/UART)—see Revision 2 below.

Individual assignment — KiCad dev board

How I approached the week

I compared a few EDA options and stayed on KiCad because I want to own Gerbers and keep the project in Git without a paid seat. The long section below is intentionally instructional—ERC, net labels, and “update PCB from schematic” were the places I personally got stuck until I treated the schematic as logic only and the board as the only physical truth. If anything in your build differs (panel connector pinout, pull-up value), swap the numbers but keep the same discipline: verify pins against the datasheet before you order.

This section is written tutorial-style: each step states the goal, what to click or check in KiCad, and why it matters for a board that actually powers up. I used KiCad 7 (your minor version may differ; menus are similar in 8.x). If you replicate the circuit, verify pin numbers, voltage, and your display’s flex pinout against the datasheet—labels like WE/RE/CE here are placeholders for a memory-style interface and must match your panel.

How this board meets the assignment

Quick map from Fab “electronics design” expectations to what is on the sheet and the PCB:

Requirement This design
Controller Seeed XIAO RP2040 with a DIP-style symbol/footprint for hand-soldering and breadboard-friendly bring-up.
Input Tactile switch (SW1) on GPIO with a pull-up (R1): released = logic high, pressed = tied to GND. You can reuse the same pattern for BOOTSEL or reset-style lines if you route them on a variant board—always define idle state with a resistor so the pin never floats.
Output FPC (J1) toward a flex display, plus an on-sheet LED (D1 + R2) for a simple “firmware alive” indicator while bring-up debugging.
Connectivity No on-board wireless; USB through the XIAO module for power and serial. Optional 2×8 header (J2) parallels the same display-related nets for probes, jumpers, or a breakout.
Fab stock / Fab library Prefer passives and connectors that match lab inventory and footprints in the Fab / course KiCad libraries (0603/0805, headers, FPC land patterns). Match package, pitch, and voltage rating to the BOM before you order or stuff the board.

Step 1 — Choose EDA and create a KiCad project

I compared three common options: KiCad (free, open-source, cross-platform), Eagle (Autodesk / Fusion ecosystem), and Altium Designer (commercial, common in industry). For Fab Academy style work—small runs, owning your own Gerbers, sharing projects on Git—KiCad is the most straightforward default.

Mental model (read this once; it saves hours later):

  • The schematic is the logical design: symbols, nets, and rules (ERC). It is not the physical copper.
  • Each symbol needs a matching footprint (physical land pattern) before manufacturing means anything.
  • The PCB editor places those footprints and routes copper; DRC checks clearances and geometry against the fab process.
  • Whenever you change the schematic, use Update PCB from Schematic so netlist and footprints stay in sync.

Actions in KiCad:

  1. File → New Project… Create an empty folder; KiCad writes .kicad_pro (project), and you will add .kicad_sch (schematic) and .kicad_pcb (board).
  2. Preferences → Manage Symbol Libraries… and Manage Footprint Libraries… Confirm the official KiCad libs are on, then add any XIAO / Fab tables your lab ships.
  3. Open the Schematic Editor from the project manager. Save the sheet early (Ctrl+S / Cmd+S).

Step 2 — Draw the schematic (symbols, nets, power)

On the schematic I placed the XIAO RP2040 as the core (U1), a momentary switch with pull-up, an LED branch, and two connectors that expose the same display bus: an 8-pin FPC (J1) and a 2×8 header (J2). Net labels tie everything named the same net together without drawing long wires across the sheet.

Component-by-component (what to wire and why):

  1. Power rails. Place global power symbols for +3V3 (or VCC_3V3 as labeled on your sheet) and GND. Connect them to every IC supply pin that needs them—in this case the XIAO’s 3V3 and GND pins. Every complete circuit needs a return path; “only drawing +3V3” without a deliberate GND net is the most common student ERC failure.
  2. Pushbutton SW1 + pull-up R1 (example 1 kΩ on the screenshot). One side of the switch goes to GND; the other side goes to a net labeled L1 (here tied to MCU pin names such as P26_A0_D0 on the XIAO symbol). R1 pulls L1 toward 3V3 when the button is open, so the input is not floating. When you press the switch, L1 is shorted to GND → logic low (active-low style input). Swap the resistor to the value your lab standard uses (often 10 kΩ for lighter load); re-run ERC after any value change.
  3. LED D1 + resistor R2 (220 Ω in the capture). GPIO drives L2 into the LED anode; cathode through R2 to GND. Physics check: at ~3.3 V forward drop, 220 Ω gives a few mA— plenty for indicator brightness without stressing a typical MCU pin (still confirm against your LED’s forward voltage and desired current).
  4. FPC J1 (8-pin, 1.0 mm pitch symbol) and header J2. The sheet fans out control/data signals (WE, RE, CE, FPC_IO6FPC_IO8), plus GND and display supply. Routing these on the MCU side must match how you bit-bang SPI/parallel/other modes in firmware and match the cable orientation (pin 1 on the flex, connector keying). If J1 and J2 are truly in parallel as drawn, treat them as “two ways to probe the same bus”—avoid driving conflicting sources into the same panel net.

Electrical Rules Check: in the schematic editor run Inspect → Electrical Rules Checker. Fix every error (floating inputs, mismatched pin types where KiCad warns) before syncing to PCB. Warnings are often informative for power pins and no-connects—read them; do not blanket dismiss.

KiCad schematic: XIAO RP2040 with switch, LED, FPC and header for display bus
Figure 1: Schematic capture in KiCad. XIAO RP2040 (U1), switch with pull-up on L1, LED path on L2, FPC J1 and 2×8 header J2 sharing labeled nets to the display interface. Full-sheet export from the schematic editor as a finalized PNG record before syncing to PCB.

Step 3 — Footprints and “Update PCB from Schematic”

For each symbol, assign a footprint that matches the part you will solder: passives as 0603/0805/etc., SW_Push to the exact switch from the drawer, J1 to the FPC’s vendor land pattern (or a verified KiCad footprint with the same pitch and stagger). Then:

  1. Tools → Assign Footprints… Work left-to-right: filter library, pick footprint, apply. Missing footprints mean DRC cannot be trusted yet.
  2. Open the PCB Editor. Run Tools → Update PCB from Schematic… Accept initial placement (everything may stack in a pile—that is normal).
  3. Set File → Board Setup…: board thickness if known, minimum track/space compatible with Fab milling or your PCB vendor’s 6/6 or 8/8 mil class rules, via sizes, and netclass widths for power if you widen 3V3.

Step 4 — Placement: outline, connectors, bypass caps

Drag footprints out of the pile into a sane mechanical arrangement before you spend time routing:

  • XIAO outline and USB egress: place the module so the USB edge lines up with the board edge you intend to expose; leave keepout for the connector shell.
  • FPC along the edge that mates your flex cable’s bend radius; lock orientation so pin 1 on the footprint matches silkscreen pin 1.
  • Switch at an edge you can reach with a finger on the assembled product.
  • Decoupling capacitors (small ceramics on 3V3/ GND at the module) short and fat to the pins they serve—picture “as close as assembly allows,” not halfway across the board.
KiCad PCB editor: XIAO RP2040 carrier with FPC, switch, and passives placed
Figure 2: Placement pass. Footprints positioned for USB access, FPC along the flex side, reachable switch, and bypass parts hugging the module before any serious routing.

Step 5 — Route copper, pours, and run DRC

Route in an order that reduces pain: critical high-speed or bus signals and switch/reset-style lines first, then fill GND zones (copper pours) on relevant layers, then clean up escapes and vias.

  • Keep the FPC breakout lanes organized—equal length is only needed when your interface doc says so; skew is often dominated by connector choice. Do avoid crossing broken ground under sensitive returns if your process is 2-layer.
  • The switch net should not meander near noisy edges without a reason; short path to GND at the button reduces noise pickup.
  • Re-run DRC until clearance and drill errors are resolved; silence “acceptable” exclusions with explicit reasons in your notes if you must waive something.
KiCad PCB: routed XIAO RP2040 carrier with FPC fanout
Figure 3: Completed routing. Tracks and pours after a full pass; ready for fabrication outputs (Gerbers, drill, optional position files) once DRC is clean.

This layout is the direction I want for my final project carrier: RP2040 XIAO for software support, flat flex to the display, and a switch pattern I can reuse for configuration lines in firmware.

Revision 2 — connectors, Nanostat flashing, ESP32-S3

After I had already paid for and received the first PCB batch (on the order of CNY 100), laying the real board next to the rest of my system made a few mismatches obvious, so I went back into KiCad for a second spin rather than hacking the old outline with jumper wires everywhere.

In revision 2 I replaced the original display FPC with a smaller FPC footprint that matches the flex connector I actually want on the mechanical stack, and I added a 1×6 pin header right beside that area so those signals are easy to break out—useful for probing, dongles, or short harnesses during bring-up without only relying on the flex.

For the final project I plan to dock a Nanostat board that brings out six pads dedicated to flashing / field updates; among them, two pads are UART (serial) and must reach the main MCU. Earlier iterations were drawn around XIAO RP2040; this revision moves the design to Seeed XIAO ESP32-S3 so those two UART lines from the Nanostat interface can tie straight into the ESP32-S3 for download and serial logging, while the six-pad footprint still carries the wider programming pattern the Nanostat expects. The schematic screenshot at Figure 1 still reflects the RP2040 sheet I practiced on before the layout spin; mentally swap the MCU block for ESP32-S3 when you map GPIO names and USB/UART straps to this board revision.

Second revision PCB layout: smaller FPC, 1x6 header, XIAO ESP32-S3 carrier for Nanostat programming pads
Figure 4: Second PCB revision (layout export). Smaller FPC for the display flex, adjacent 1×6 header for convenient breakout, and core module retargeted to ESP32-S3 so Nanostat’s six-pad programming interface—including the two UART pads—can route cleanly for final integration.

Step 6 — Archive design files next to the site

Bundle the KiCad tree (.kicad_pro, .kicad_sch, .kicad_pcb, fp-lib-table / sym-lib-table if customized, and any project-local footprints) into a zip under something like design-files/week06/ so graders can open the exact project. Generated outputs deserve a tiny README or text file: board thickness, layer count, min trace/space, and ENIG vs HASL intent.

Figures on this page live under images/week06/…; open week06.html from the repo root or ship the whole static directory to your host.

Group assignment

Guangzhou (Chaihuo) — group documentation: using lab test equipment to observe an embedded microcontroller board.

Abstract

In the lab, the group used a digital multimeter and a digital storage oscilloscope to measure voltage and observe signals on a running embedded board (custom purple PCB with ESP32-WROOM, OLED, pushbuttons, and LEDs, USB-powered). Dial positions, wiring, and instrument readings were recorded to meet the Week 6 group assignment: use lab test equipment to observe the operation of an embedded microcontroller.

Location: Chaihuo Makerspace
Instruments: Digital multimeter DT-860B; digital storage oscilloscope OWON EDS102CV

1. Teamwork and lab setup

Before measurements, the group reviewed wiring and the measurement plan at the bench and checked steps against reference material on a tablet.

For me, this was a useful reminder that using test equipment is also a way of learning how to read a circuit calmly. I became more aware that measurement is not only about getting a number, but about connecting the reading back to the board behavior.

Team discussing the measurement plan at the bench with a tablet
Figure 1: Team discussion at the bench.

Breadboard / dev-board wiring was completed in the same space; the multimeter, jumper wires, and microcontroller board were visible on the table for shared work.

Team wiring and initial checks on the dev board
Figure 2: Wiring and on-site debugging.

At the Chaihuo Makerspace station, members soldered or probed the purple PCB using an iron or probes together with test gear; the multimeter, soldering station, and bench power equipment were arranged on the bench.

Testing the purple PCB at Chaihuo Makerspace
Figure 3: Workstation layout and instruments.

2. Device under test

Item Description
Main board Custom purple PCB with on-board ESP32-WROOM module
HMI Small OLED display, several tactile pushbuttons, multiple LED indicators
Power USB cable to the board edge (debug / power); a portable power module was also used on the bench (see oscilloscope setup photos)
Peripherals Small red sensor daughterboard on a multi-wire harness (red / black / white, etc.); on-board and peripheral LEDs could be lit during tests to confirm operation

All measurements below were taken with the board powered and firmware running.

3. Multimeter

3.1 Model and range

  • Model: DT-860B
  • Use: DC voltage; verify probe placement and range before measuring.

Probe connections

  • Black lead → COM
  • Red lead → VΩmA (μA) jack (voltage, resistance, and low current; do not use this jack for high current)
  • The 10 A jack was not used in this session.

3.2 DC voltage (parallel)

Set the dial to the DC voltage (DCV) range, 20 V scale (suitable for ~5 V logic / supply). Place the probes in parallel across the supply or load.

DT-860B on 20 V DC range reading 5.00
Figure 4: Multimeter on 20 V DC, display 5.00, consistent with a common 5 V supply level.

The reading was 5.00 V (interpreted per the selected voltage range), indicating a stable DC level at that node for comparison with oscilloscope high / low levels.

3.3 Probe short check (continuity / low-resistance)

Before measuring the circuit, touch the two probe tips together to confirm probes, leads, and meter inputs are OK; the display in the photo shows 001 (low-ohms / continuity-style indication per this meter and range).

Probe tip short check before measurements
Figure 5: Probe short check — display 001 as a routine pre-check.

Safety: For current, break the path and connect the meter in series with the correct jack and range. For voltage, use parallel placement; do not short high-current paths. When in doubt, start on a higher range.

4. Oscilloscope

4.1 Model

  • OWON EDS102CV (digital storage oscilloscope)

4.2 Probe wiring

Clip the probe ground (alligator clip) firmly to circuit GND; touch the probe tip to the pin or test point. Keep the ground lead short to reduce ringing.

Oscilloscope probe and ground on purple ESP32 PCB
Figure 6: Signal tip on the DUT, ground clip on GND.

Overall setup (oscilloscope, DUT, USB power, and probe):

OWON oscilloscope with USB-powered ESP32 board
Figure 7: Full setup — oscilloscope, purple board, USB power.

4.3 Waveform capture

Using the OWON EDS102CV, the group observed the signal on the selected pin, adjusted vertical and horizontal scales and trigger until the trace was stable, then captured the screen image below.

OWON EDS102CV screen capture
Figure 8: Oscilloscope display.

5. Bench supply and logic analyzer

The bench included a soldering station and DC power-related equipment. This report does not include separate bench supply panel readings. A logic analyzer was not used this week.