Week 6

Electronics Design

Contents

Summary of Schedule/Weekly Plan

Week 6 Schedule
Week 6 Schedule (size: 0 Kb -click to enlarge-).

Visit the Evolution page to compare the hours spent each week.

Week questions/tasks

Group assignment Linked to the group assignment page Documented what you have learned in electronics design
Done
Individual assignment: Checked your board can be fabricated. Explained problems and how you fixed them. Included original design files (Eagle, KiCad, etc.) Included a ‘hero shot’
Done

Starting Point

This week was, honestly, a pretty big leap for me.

Up to now, my contact with electricity and electronics had been very superficial. I was familiar with concepts like DC and AC, voltages, polarities, and circuits… but more as “words I’ve heard” than something I truly understood in depth.

My previous experience was basically limited to using a multimeter: checking continuity in a cable, or measuring whether there was voltage present (12V, 240V…) to confirm if there was power or not. Not much beyond that.

I understood that electricity flows through a circuit, but I didn’t really know what role each component plays. An LED was just an LED. A resistor was something that “reduces” something. A capacitor… that’s where the fog really started.

So this week became a personal challenge. It wasn’t only about designing a PCB, but about starting to understand—at least at a very basic level—what each component does, why it is there, and what I should be measuring if everything is working correctly.

More than a design week, for me it felt like a week of building foundations.

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)

Multimeter

As part of this process of starting to understand electronics from the ground up, I decided to upgrade one essential tool: the multimeter.

The one I had was quite old (a friend had given it to me years ago), and the cables were already close to breaking. It still worked… but it didn’t inspire much confidence.

So I bought a new one on Amazon. It’s not a professional lab-grade device, but for learning and performing basic measurements, it’s more than enough.

My new multimeter
My new multimeter (image size: 0 Kb)

Basic specifications

Function Specification
Auto-range Manual range selection
AC Voltage 20V / 200V / 600V
DC Voltage 200mV / 2V / 20V / 200V / 600V
DC/AC Current 20m / 200m / 10A
Frequency
Resistance 200Ω / 2kΩ / 20kΩ / 200kΩ / 2MΩ / 20MΩ
Capacitance
NCV

It’s not the most advanced multimeter in the world, but it covers the essentials: voltage, continuity, and resistance — exactly what I needed this week.

To make sure I was actually understanding what I was doing (and not just placing the probes and waiting for numbers to appear), I followed a YouTube tutorial by Adrián Torres about how to use a multimeter. It helped me better understand what each mode measures and how to position the probes correctly.

Measurements performed

With the new multimeter, I started running different tests to get familiar not only with the tool itself, but with what the measurements actually mean.

Voltage measurement (AC and DC)

First, I measured voltage in both alternating current (AC) and direct current (DC).

Beyond just reading the number on the screen, the interesting part was understanding the practical difference between AC and DC measurements, and how the selector on the multimeter changes depending on what I want to test.

Multimeter AC test
Multimeter AC test (size: 0Kb -click to enlarge-)
Multimeter CC test (video size: 1.3Mb).

Continuity measurement

Next, I tested continuity.

I used the QPAD-Xiao board to check different points in the circuit. First, I verified continuity on GND, and then on several of the touchpad traces.

Here the learning was very clear: it’s not only about seeing a value on the screen, but also about hearing the well-known “beep” that indicates continuity between the two measured points.

That small sound gives a lot of reassurance when checking whether a trace is properly connected or if there is a break somewhere.

Continuity measurement (video size: 2,7 Mb).

High quality video available on my YouTube channel ↗️.

Current measurement

Still working with the QPAD-Xiao, I then measured the current consumption of the display.

To do this, I disconnected the display and created bridges on the four pins (GND, VCC, SCL, and SDA), leaving VCC open so I could insert the multimeter in series and measure the current properly, always respecting the direction of flow.

This helped me understand something important: measuring current is not the same as measuring voltage. You can’t simply touch two points — you have to break the circuit and place the multimeter as part of the current path.

Resistor measure
Intensity/Current measurement (image size: Kb -click to enlarge-).

Resistance measurement

Using a resistor from the FabLab, I performed a simple check to measure its actual value.

In this case, the resistor was 47kΩ, and the measured value matched the expected one. It’s a basic test, but it really helps connect the color bands on the component with the numerical value shown on the screen.

Diode / LED polarity test

Finally, I tested the diode function (the “->|” mode).

I placed the probes respecting polarity:

When running the test, a value appeared on the display, indicating the forward voltage drop of the LED.

In this case, the LED did not visibly light up, probably because the multimeter does not supply enough current to make it glow. Still, it was interesting to see how the device allows you to verify whether the diode is working and correctly oriented.

Resistor measure
Resistor measure (image size: Kb -click to enlarge-).
Led/diode measure
Led/diode measure (image size: Kb -click to enlarge-).

Logic analizer

Besides the multimeter, this week was also my first real contact with a logic analyzer.

At the FabLab we have a Binghe 8-channel Logic Analyzer, so I decided to take the opportunity to better understand what digital communication actually looks like “from the inside”, instead of just knowing that it exists.

To use it, I first downloaded the Saleae Logic software, which allows you to visualize and analyze the signals captured by the analyzer.

Binghe 8-channel Logic Analyzer
Binghe 8-channel Logic Analyzer (image size: 0 Kb)

Analyzing I2C communication

My goal was to observe the I2C communication between the QPAD-Xiao and its display.

To do this, I removed the screen and connected the pins GND, SCL, and SDA to the logic analyzer. The idea was to capture the signal directly from the bus and visualize how data is actually transmitted.

Once connected via USB, the software automatically recognized the analyzer. Inside the application, I selected the I2C protocol and configured the channels as follows:

With everything ready, I pressed PLAY to start capturing.

The timeline immediately showed the digital signals moving in real time. At first, it looks a bit chaotic if you’re not exactly sure what you’re looking at, but little by little you start recognizing patterns.

After stopping the capture, I checked the analyzed time span and began zooming into the signal. When zooming in, I could clearly see that not all transmissions had the same duration: there were differences in packet lengths and in the timing between signals.

That moment was particularly interesting, because I2C communication stopped being something abstract. It was no longer just “two wires sending data” — it became a real sequence of pulses that I could see, measure, and analyze.

Resistor measure
Saleae logic analyzer (image size: Kb -click to enlarge-).
Led/diode measure
I2C logic analyzer (image size: Kb -click to enlarge-).
I2C logic analyzer (video size: 0,6 Mb).

High quality video available on my YouTube channel ↗️.

Document your work on the group work page and reflect what you learned on your individual page

This week, group work has been important for me, as I've benefited from my classmates' knowledge and explanations to understand electricity and circuits (at a basic or lower level). We've conducted tests and measurements, which we've then individually documented in our reports.

FabLab León 2026 Group 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

For this week (Electronic Design), my goal for the individual assignment was to design a small development board using an embedded microcontroller and parts from the Fab Academy inventory, and to bring the design to a point where it is ready to be fabricated (or at least properly checked and documented). In my case, I completed the full workflow with KiCad.

Installation and setup

First, I downloaded KiCad from the official website. I went to the download page and chose the macOS version, selecting the Europe / CERN build. Once installed, KiCad was running smoothly.

Then, to work directly with Fab Academy–compatible parts, I added the Fab library by following Krisjanis Rijnieks tutorial. This saved me a lot of time because the symbols and footprints are already prepared for the kind of boards and components we use in the lab.

As an extra, I also installed the “Interactive HTML BOM” plugin, which later helped me generate a very convenient interactive BOM (and it’s great for documentation too).

To get comfortable with the tool, I relied on the official KiCad documentation—mainly to learn the basics of each editor and where the key options are. With that, I was ready to start.

Creating a new KiCad project

Next, I created a new project. KiCad automatically generates the main files:

Plugin and content manager
Plugin and content manager (size _Kb -click to enlarge-)
KiCad FabLib install
KiCad FabLib install (size _Kb -click to enlarge-)
Plugin Interactive Html Bom
Plugin Interactive Html Bom (size _Kb -click to enlarge-)
KiCad new project
KiCad new project (size _Kb -click to enlarge-)

Schematic design (Schematic Editor)

I opened the Schematic Editor file and started adding components from the Fab Academy inventory using “Place Symbols”. This opens a window with all available libraries. The key trick here was simple: in the search field I typed “fab” to filter the results and show only the Fab Academy inventory.

For example, to add the XIAO-RP2040, I used a filter like “fab xiao”, selected it from the results, and KiCad immediately provided both the symbol and the footprint, which is exactly what I wanted (no manual matching needed).

For this first circuit, I added:

Once the components were placed, I began drawing the connections using “Draw Wires”, moving the symbols around the workspace to keep everything readable. This helps a lot later when switching to PCB, because the layout is clearer and easier to follow.

Schematic Editor Place Symbols
Schematic Editor Place Symbols (size _Kb -click to enlarge-)
Schematic Editor without wires
Schematic Editor without wires (size _Kb -click to enlarge-)
Schematic Editor with wires
Schematic Editor with wires (size _Kb -click to enlarge-)

Switching to PCB and updating from the schematic

With the schematic finished, I moved to the PCB layout by clicking “Switch to PCB Editor”. Inside the PCB editor, I used “Update PCB from Schematic” to import all the components into the board.

Before routing, I defined track widths by opening “Edit predefined Sizes” and adding two values: 0.4 mm and 0.8 mm. In this design I didn’t really need 0.8 mm, but I preferred to have it ready in case I wanted a thicker track for power or critical areas.

Switch to PCB Editor
Switch to PCB Editor (size _Kb -click to enlarge-)
Update PCB from schematic
Update PCB from schematic (size _Kb -click to enlarge-)
Elements in PCB editor
Elements in PCB editor (size _Kb -click to enlarge-)
Track sizes
Track sizes (size _Kb -click to enlarge-)

Component placement and routing

This is where the “hands-on” part starts: I placed the parts on the PCB and began connecting them by drawing tracks with “Route single track”.

I routed all traces on the red layer “F.Cu” (front copper). A super helpful feature in KiCad is that, after importing the schematic, it shows thin blue lines (airwires) suggesting which pads should be connected based on the schematic. They are not real traces, but they guide you and help make sure you don’t forget any connection.

While routing, I followed a common rule: avoid 90° angles because they can become problematic points (and they’re generally bad practice). So I kept corners at 45°, which the routing tool supports easily.

With that in mind, I completed all the traces.

Route single track option
Route single track option (size _Kb -click to enlarge-)
Blue lines
Blue lines (size _Kb -click to enlarge-)
Track angles
Track angles (size _Kb -click to enlarge-)
My first PCB
My first PCB (size _Kb -click to enlarge-)

Avoiding trace crossings and cleaning up the layout

At one point, to connect everything without crossing traces, I had to use one of the resistors as a jumper (basically to “bridge” over a conflict). It worked as a quick solution to understand the bottleneck… but I wasn’t happy with that as a final result.

So I went back, repositioned the components, and rerouted the traces to avoid the crossing without relying on that workaround. This gave me a cleaner, more logical design that will also be easier to fabricate and review.

Once the layout was clean:

As a final visual check, I opened the 3D view via “View” → “3D Viewer” to confirm that the placement and overall result made sense.

My first PCB v1.1
My first PCB v1.1
My first PCB v1.1 3D view
My first PCB v1.1 3D view

Interactive BOM (HTML)

With the plugin installed from the start, I generated the interactive BOM by clicking “Generate Interactive HTML BOM”. This creates an HTML file where you can explore the parts list and highlight each component directly on the board—very handy both for assembly and for documentation.

Prueba_v1.1.html BOM

Design Rules Checker (DRC): errors and warnings

When I was happy with the routing (and with no crossings), I ran a design check: I went to “Inspect” → “Design Rules Checker” (or used the DRC button in the menu) and clicked “Run DRC”.

The result was:

Looking at the 2 errors, I saw they were caused by leaving two extra GND pins on the XIAO unconnected. In my case, this didn’t matter because I wasn’t using those pins, so I noted it and moved on.

Then I reviewed the 9 warnings. Most of them were related to the text/label size on the XIAO footprint, which didn’t affect functionality, so I didn’t treat them as critical.

The remaining warning was more interesting: it indicated that the top edge cut of the board wasn’t outside the XIAO’s USB connector area. In my case, that was intentional and actually helpful, because it improves access to the USB-C port on the XIAO, making it easier to plug and unplug.

Second PCB: XIAO socket version and pin breakout

After finishing the first PCB—and once I had the workflow clear in my head (schematic → update → placement → routing → checks)—I wanted to push it a bit further with a second, more complete version.

This time I decided to use the XIAO socket instead of soldering the module directly. The idea was to keep the microcontroller removable, so I can plug it in and out easily (much more practical if I want to reuse it or iterate on the board later).

Compared to the previous design, I also added a few extra elements:

The goal was simple: break out all XIAO pins to the outside and keep things easy to prototype by providing access to 3.3V, 5V and GND as well—so every pin is ready for sensors, modules or quick experiments without having to improvise wiring.

Once the schematic was complete, I followed the same process as before and moved to the PCB Editor to start the “real” work.

PCB v2 Schematic editor
PCB v2 Schematic editor
PCB v2 PCB editor
PCB v2 PCB editor

Placement… and the first routing roadblocks

I started by placing the components, trying to keep the layout compact and logical. At first it looked fine, but as soon as I began routing the traces, the problems showed up.

The toughest area was the 7-pin PinHeader on the right side of the XIAO. Crossings kept appearing no matter how I moved traces around. I rotated parts, rerouted, tried different paths… and I kept getting stuck in the same region.

After a few attempts at solving it “cleanly”, I switched to a very common single-layer PCB trick: using 0Ω resistors as jumpers.

Initially, I added:

At that moment it wasn’t the prettiest solution, but it was the fastest way to unblock the design and make real progress. I basically used them as small bridges to jump over conflicts without having to redesign the entire board.

PCB editor with 9 resistence as bridge v2.1
PCB editor with 9 resistence as bridge v2.1 (size _Kb -click to enlarge-)

Rethinking the layout and reducing jumpers

Once everything was connected, I took a step back and looked at the PCB… and it didn’t fully convince me. Functionally it worked, but visually it felt too busy, with more jumpers than I wanted.

So I paused and rethought the routing with a calmer approach. I slightly reorganized the placement and focused on how to route the power lines more intelligently. That’s when I realized I could run the 5V and GND traces under the PinHeaders, using the space much more efficiently and freeing up the crowded area.

That small change made a huge difference.

With the improved routing, I managed to remove 5 of the 0Ω resistors I originally added. The board immediately looked cleaner and more coherent, while still keeping all connections conflict-free.

PCB editor with 4 resistence as bridge v2.2
PCB editor with 4 resistence as bridge v2.2 (size _Kb -click to enlarge-)

Final adjustment and complete removal of jumpers

Just when I thought the design was basically finished, I decided to take one more careful look. By this point I had already learned something important: there is almost always a slightly better solution if you give yourself the time to find it.

While reviewing the traces, I focused on the 3V3 line coming from the switches and going to the corresponding XIAO pin. Up until that moment, I was routing it on the top side, which forced me to keep a few crossings — and therefore several 0Ω resistors acting as jumpers.

Then a simple idea came to mind: what if I route that 3V3 trace under the PinSockets on the right, just like I had already done with 5V and GND?

I tried rerouting that section underneath the connectors… and it worked.

By reorganizing that path, I managed to eliminate the remaining crossings and, as a direct consequence, I was able to remove the last 4 × 0Ω resistors that were still acting as bridges.

The board was finally free of jumpers.

Interactive HTML BOM: Prueba_v2.3.html BOM

Local instructor review

After the weekly review with the local instructors every Tuesday, they've pointed out a couple of errors/improvements:

So, let's get to it (V 2.4)

This is the result.

Interactive HTML BOM: Prueba_v2.4.html BOM

Final reflection

If there is something this second PCB taught me, it’s that board design is not a linear process.

By repeatedly doing and redoing parts of the layout every time I spotted a possible improvement, I realized that this is really about investing time, testing alternatives, and gradually understanding the real possibilities you have when simplifying a circuit.

In this case — and being honest about my current level — these circuits are quite basic. But even in something simple like this, I clearly experienced how many changes can happen between the initial idea and the final result.

Each iteration made me notice things that I simply couldn’t see in the first attempt.

Will this last version be the definitive one?

I DON'T THINK SO!.

And honestly, that’s probably the most interesting part of the whole process.

Carboard first model of Final Project

Although it has nothing to do with this week's theme (electronic design), this week I made a first cardboard model in order to start analyzing possible measurements, problems and solutions when carrying out my final project.

Final project development - Week06 section

Original code files for this documentation

Files for download

Credits

Thanks to local instructors Nuria, Pablo and Adrián for their explanations, and especially thanks to my colleague Oscar Cela for his master classes in basic electronics and for helping me understand some things.

All texts were written in Spanish and translated into English using Google Translate.