pcb-design
Group Assignment: Exploring Electronic Measurement Tools
This week's group assignment focused on getting hands-on with the measurement tools. Knowing how to use these properly is essential for debugging and validating circuits.
Multimeter

Multimeter helps me check simple but important things in a circuit, like voltage, current, and resistance. It could check the board power, or to check continuity after soldering.
Oscilloscope

An oscilloscope shows how a signal changes over time as a waveform. This is useful when the circuit “kind of works” but something is still wrong. For example, I can use it to check if a signal is stable, if it’s switching correctly, or if there’s noise. Compared to a multimeter, it’s less about checking values and more about understanding what’s actually happening in the circuit.
Multimeter vs Oscilloscope
| Tool | Main Use | Output | Good For |
|---|---|---|---|
| Multimeter | Measure voltage, current, resistance | Numbers | Basic testing and troubleshooting |
| Oscilloscope | Observe signals over time | Waveforms | Signal analysis and debugging |
Multimeter
- Check power supply
- Test continuity
- Measure resistance
- Find short circuits
Oscilloscope
- Observe signal shape
- Check PWM or clock signals
- Analyze timing
- Detect noise or unstable signals
Simple understanding
- Multimeter tells me what value is there.
- Oscilloscope helps me see how the signal behaves.
Learning Background
This week, I began designing my first custom PCB(Printed Circuit Board) for my final project, using KiCad as my primary EDA(Electronic Design Automation) tool. KiCad is a free, open-source suite for schematic capture and PCB layout.

Before diving into PCB design, I realized my fundamental knowledge of circuits was very poor, I had been mostly "copying schematics" without truly understanding the flow of current, voltage, and resistance. So I started with basic electronics fundamentals:
- I reviewed SparkFun's tutorial on Voltage, Current, Resistance, and Ohm's Law, which clarified why we need current-limiting resistors for LEDs and pull-up/pull-down resistors for switches.
- I also skimmed Getting Started in Electronics (available on Archive.org), which uses hand-drawn diagrams to explain component symbols,perfect for understanding schematics visually.
Next, I set up my KiCad environment:
- Downloaded the official Fab Academy KiCad libraries from GitLab.

Why Fab libraries? They ensure global compatibility across Fab Labs—ATtiny, ESP32, XIAO modules are pre-configured, eliminating custom library creation.
Then I get to learn about:
- .sym files: Schematic symbol libraries (e.g., resistor zigzag, LED arrow-bulb), used for drawing logical circuits.
- .pretty folders: Footprint libraries (e.g., 1206 resistor pad spacing), used for physical PCB layouts.
In KiCad, I configured:
- Preferences → Manage Symbol Libraries → Added fab.kicad_sym.

- Preferences → Manage Footprint Libraries → Added fab.pretty.

- Settings → Configure Paths → Linked Fab library path for proper 3D rendering.

First Attempt: Schematic Design
Inspired by alumni like Lei Feng and CHON KIT KUOK's Week 6 docs, I designed a simple "Hello World" board for my project:
- Core: Seeed XIAO ESP32C3
- Input: One switch (for pull-ring mechanism)
- Output: One LED (for testing)
- Expansion: Two 6-pin headers (for future Dupont connections to e-ink driver board)
In KiCad's Eeschema:
Create a project and import the library


1.Placed XIAO ESP32C3 symbol from Fab library.

2.Added components: 1206 LED, SPST switch, 6-pin sockets.




3.Referenced XIAO ESP32C3 Wiki for pins:
- One GPIO for switch input.
- One GPIO for LED output.
- Others routed to headers for modularity (e.g., SPI/I2C for e-ink).https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started/

4.Added two resistor to switch (prevents direct short-circuit, protects MCU).

5.Ran ERC (Electrical Rules Check) to fix power/ floating pin issues.
Wire all together, the schematic finished:

Draw PCB Layout
Click the Tools to Update the PCB, it shows one error of my resistor, and when I replace the second one, it looks well:

Then I got the first look of my PCB

Change the order to make it smooth to route:

Adjust the PCB design rules. Better before route,or we will do the step again.

Use Route tool to link the routes.

After finishing the trace layer, change to cut layer (Choose Cut Edge) and draw the boarder of the circuit board, use rectangle to draw the white frame. And I labelled my name on it:

3D viewer can be opened in PCB editor.

Design Revision (April Update)
After my first submission, my instructor flagged two issues: I was missing a ground wire, and my trace width was too thin for the milling machine to cut cleanly.
I went back and added the missing ground connection. For the trace width, I increased it from 5mm to 8mm—the thicker traces give the machine enough material to work with and produce a cleaner cut.


My earlier layout also had 12 DRC (Design Rule Check) errors flagged in KiCad. Interestingly, when I exported the files and sent them to JLC for fabrication, there were no actual manufacturing issues—the board came back fine. But for the version I was cutting in-house, I made sure to use the fully revised design.

Exporting and Converting the Gerber Files
Once the updated design was finalized, I exported the Gerber files from KiCad and followed a two-step conversion process to get them into a format the milling machine can use.
Step 1: Gerber to PNG
I used gerber2png to convert the Gerber files into PNG images. The tool outputs two files:
traces.png— the inner copper trace layeroutline.png— the board outline (edge cuts)
Step 2 : PNG to G-code
I then loaded both PNGs into Mods CE, which converts them into G-code for the PCB milling machine.