Week 06: Electronics Design
Group assignment:
Use the test equipment in your lab to observe the operation of a microcontroller circuit board (as a minimum, you should demonstrate the use of a logic analyzer) Document your work on the group work page and reflect what you learned on your individual page
Individual assignment:
Use an EDA tool to design a development board that uses parts from the inventory to interact and communicate with an embedded microcontroller
Groupwork
In our group work, we used three different pieces of test equipment to understand what's happening inside a circuit.
Multimeter:
We built a simple blinking LED circuit and used the multimeter to check that our LED was working, measure the voltage, and measure the current flowing through it. We then did the math using Ohm's Law to see if our measurements made sense — and they matched perfectly at 3.8mA. We also learned that the resistor we pulled from the bin wasn't exactly the value on the label, but when we checked it with the meter and read the color bands, it was still within an acceptable range.
Oscilloscope:
We connected our circuit to an oscilloscope, which shows electrical signals on a screen in real time. When the LED was blinking on and off, we could see a blocky wave pattern. We played with the timing in our code and watched the wave change right along with it. The biggest thing I took away was that if you know what the signal is supposed to look like, you can compare it to what's on screen and start narrowing down whether the problem is in your code, your wiring, or your parts.
Logic Analyzer:
This one took the most troubleshooting and thankfully we had Angela's dad to assist. We had to figure out which probe wire to use, get the time scale right so we could actually see the signal, and even discovered that touching the wires picked up electrical noise from our bodies. Once we got it working, we added a capacitor to the circuit and watched the sharp on/off pattern smooth out into a gentle charge-and-discharge curve. Again, big shout out to Angela's dad. He was very patient with us.
Overall, we learned that these tools let us see what our circuit is actually doing instead of just guessing — which makes finding and fixing problems a whole lot easier.
Individual Work
Overview
For this week's individual assignment, I needed to simulate a circuit and use an EDA tool to design an embedded microcontroller system, checking its design rules for fabrication. I chose to design a simple PCB in KiCad featuring a Seeed Studio XIAO RP2040 development board with an LED and current-limiting resistor. My goal was to keep the design intentionally simple so I could focus on learning the KiCad workflow from schematic through PCB layout.
Starting from the Fundamentals
I started the KiCad tutorials and then started getting confused. I needed to have a refresher on how circuits actually work. While I'd been going through tutorials and examples, but I wasn't fully grasping what was happening. So I took a step back and worked through the fundamentals from scratch.
The most important concept I needed to understand was that a circuit is a complete loop. Electricity flows from the power source, through components, and back to the power source. If the loop is broken anywhere, nothing works.
Understanding GPIO Pins
I spent time understanding how GPIO (General Purpose Input/Output) pins work on a microcontroller. GPIO pins are signal switches. When code sets a pin to HIGH, it outputs 3.3V; when it sets it to LOW, it outputs 0V. They can only supply about 12mA of current, which is enough for an LED but not for anything that draws serious power like a motor.
From Claude, a helpful analogy: the 3V3 power pin is like a water main that's always on with lots of capacity, while a GPIO pin is like a garden hose with a faucet that your code turns on and off, delivering only a small stream.
Tracing Real Circuits
I studied an Arduino Uno example with two LEDs connected to different GPIO pins. Tracing the current flow through each circuit helped me see the pattern that repeats across all microcontroller designs: a GPIO pin connects to a component (through a resistor to limit the current), and the circuit completes through a path back to ground. Each GPIO pin gets its own independent circuit — one pin, one job.
This also clarified the difference between parallel circuits and independent circuits. My LED and button circuits share the same power (3V3) and ground, but they're not parallel — they're independent branches controlled by separate GPIO pins. Claude AI explained, it's like how the lamp and microwave in your house both use the same electrical system but operate independently.
Physical Wiring to Schematics
It helped to understand how physical wiring translates to a schematic. Every physical component has a schematic equivalent: colored wires become lines drawn with the W key, a resistor body becomes a zigzag symbol, an LED becomes a triangle-and-bar symbol, and the wire going back to a GND pin becomes a GND power symbol. The schematic is just a cleaner, more organized way to represent the same connections.
One thing that confused me initially was why you need multiple +3V3 and GND symbols in a schematic. Per Claude, they are global labels — every +3V3 symbol is automatically connected to every other +3V3 symbol, and the same for GND. You put copies of the symbols to keep the schematic readable instead of running long wires everywhere.
Reviewing these concepts was necessary. I felt like I had to take a moment and reflect what I had learned and concepts that I had missed before going forward.
Learning KiCad
DigiKey Tutorial
I started by following a DigiKey KiCad tutorial to learn the basics of the software.
The tutorial walked through creating a water alarm sensor circuit, which didn't include a microcontroller but taught me the fundamental KiCad workflow: placing symbols, wiring connections, assigning footprints, running ERC, and generating a PCB layout. This gave me a pretty good foundation that I needed to tackle my own design, but boy, there are a lot of steps to this process.
Choosing Components
Since I installed the PCM_fab KiCad library, it included a SeeedStudio_XIAO_RP2040 symbol and matching footprint. Having a pre-built library component for the XIAO saved a lot time compared to creating a custom symbol from scratch. The library includes all 20 pins with labeling and a footprint that matches the module's physical dimensions.
For my simplified design, I used:
- Seeed Studio XIAO RP2040 (from PCM_fab library)
- 330Ω resistor (R1) for LED current limiting
- LED (D1)
Schematic Design
Initial Attempt
My first attempt at the schematic was a bit ambitious — I planned to include the XIAO, a push button with a pull-up resistor, an LED with a current-limiting resistor, and a capacitor.
I also initially placed separate 1x7 pin headers to represent the XIAO's connections, but I learned that the XIAO symbol from the PCM_fab library already represents the complete module with all its pins, so the separate headers were unnecessary.

I ran into challenges with component placement and understanding how everything connected together. Rather than pushing through with a design I didn't fully understand, I decided to simplify and focus on getting a clean, working design through the entire workflow.
Simplified Design
I started a new schematic with just the essentials:
- XIAO RP2040 module (M1)
- 330Ω resistor (R1) connected to pin D0 (GPIO26)
- LED (D1) connected from R1 to GND
- No connect flags (X) on all unused pins (D1–D10, 5V, VIN, SWDIO, SWCLK, RESET)
- +5V power symbol connected to the XIAO's 5V pin
- GND symbols at the XIAO's ground pins and after the LED
The circuit is very simple. When the RP2040's code sets GPIO26 (D0) to HIGH, it outputs 3.3V. Current flows through the 330Ω resistor, through the LED, and back through GND to complete the loop.
Electrical Rules Check (ERC)
Power Pin Errors
When I first ran ERC, I had two errors: "Input Power pin not driven by any Output Power pins." This was confusing because the XIAO clearly provides power through its USB connection. The issue turned out to be a KiCad problem per Claude AI. The XIAO symbol's power pins are defined as "power inputs" in the library, so KiCad didn't see anything supplying power to them.

Per Claude AI, the fix was to add PWR_FLAG symbols. These are special KiCad symbols that tell the ERC "power is being supplied here" without representing any physical component. I placed one PWR_FLAG connected to the +5V net and another connected to the GND net. After adding both, the ERC errors cleared.
Claude AI mentioned this is a very common issue that trips up KiCad beginners. The tutorial I'd been following didn't encounter it because their microcontroller symbol had the power pins marked as "power outputs" rather than "power inputs." Okay. I'll have to ponder why that is at a later time.
PCB Layout
Importing to PCB Editor
After passing ERC, I switched to the PCB editor and used Tools → Update PCB from Schematic (F8) to import my components. The XIAO footprint from the PCM_fab library appeared with all its pads, along with the footprints for R1 and D1.
My initial attempt at importing components was interesting — the XIAO footprint appeared in the PCB editor, but I couldn't find my other components (the LED and resistor) anywhere on the board. After troubleshooting, I realized the issue was that I hadn't assigned footprints to the LED or the resistor in the schematic. Without footprints assigned, KiCad had no physical representation to place on the PCB.

Once I went back to the schematic editor, assigned the correct footprints to R1 and D1, and then updated the PCB editor again (Tools -> Update PCB from Schematic), both components appeared and I could proceed with placement and routing.
Component Placement
I placed the XIAO module centrally on the board, with R1 (330Ω resistor) and D1 (LED) positioned near pin 1 (D0) on the left side. The board outline was drawn on the Edge.Cuts layer to fit tightly around the components.
Trace Routing
I routed copper traces connecting D0 to R1, R1 to the LED, and the LED back to GND. The ratsnest lines (thin lines showing required connections) guided where traces needed to go. I used the Route Tracks tool (X key) to draw the copper paths between pads.
Design Rules Check (DRC)
Running DRC produced 9 warnings but no errors. All warnings were related to the XIAO library footprint rather than my design:
- Footprint mismatch with library: The placed footprint was slightly different from the current library version. Per Claude, not a functional issue.
- Text height out of range (6 warnings): Pin labels on the XIAO footprint used 0.5mm text while board settings specified 0.8mm minimum. Per Claude, this is a cosmetic issue baked into the library footprint.
- Silkscreen clipped by solder mask (2 warnings): Some silkscreen labels on the XIAO footprint overlapped with solder pads. Again, per Claude AI, it is a library cosmetic issue.
The Unconnected Items count was 0, which confirmed that all electrical connections from my schematic were properly routed on the PCB. Per Claude AI, the warnings were all safe to ignore as they related to the pre-built library footprint, not to my design decisions.
3D Visualization
KiCad's 3D viewer gave me a realistic preview of the finished board, showing the XIAO module footprint with its through-hole pads, R1 and D1 positioned to the left, and the copper traces connecting everything. Seeing the design rendered in 3D helped confirm that the physical layout made sense and that components weren't overlapping.
Reflections and Lessons Learned
What I Learned
- Schematics are logical diagrams that represent electrical connections — they don't need to look like the physical layout.
- KiCad's schematic symbols and PCB footprints serve different purposes: symbols show what connects to what, footprints show where copper pads go on the physical board.
- PWR_FLAG symbols are needed when power pins in a library are defined as inputs rather than outputs — this is a common KiCad issue, not a design mistake.
- DRC warnings about library footprints (text size, silkscreen overlap) are cosmetic and don't affect functionality.
Design Decisions
- I chose to simplify my design to a single LED circuit to focus on learning the complete KiCad workflow rather than getting stuck on a more complex design I didn't fully understand.
- I used through-hole footprints for the pin headers, knowing I may need to switch to SMD pads when it comes time to actually fabricate the board on a milled PCB.
- I used the PCM_fab library's XIAO symbol and footprint rather than creating custom components, which saved significant time.
What I Would Do Differently
- Start with the circuit fundamentals before jumping into KiCad. Understanding what a circuit does electrically makes the schematic design much more intuitive.
- Begin with a simple design and add complexity incrementally, rather than trying to include everything at once.
- Investigate SMD footprints for all components from the start, since milled PCBs work best with surface mount components.
Files
- kicad files: kicad.zip
Circuit Simulation
My first impression of Wokwi was that it's a wonderful tool — I can design circuits quickly and test them without any physical components. One of the first things I discovered is that a resistor isn't required when wiring an LED. In reality, the LED would burn out without one, but the simulation allows it without consequence. Even with that limitation, I'm sure Wokwi will have a place in my toolbox going forward.

simple LED (no resistor)

simple LED with potentiometer
Other tutorials
I looked over some other tutorials and liked the one listed below, but it was 6 years old and a lot of changes have been made to the software since then.
- Intro to KiCad