Week 6: Electronics Design

Overview

This week's assignment required using an EDA tool to design a development board that uses parts from the lab’s inventory to interact and communicate with an embedded microcontroller. My work this week is directly connected to my final project: a wearable and handheld console system that guides users through design iterations based in entrepreneurship and innovation using informed journaling prompts. For this week I focused on learning Ki-CAD to design a board that will interact and communicate with a Seeed studio RP 2040 microcontroller.

Group Assignment

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

Research

I am currently completing Fabricademy and will continue interating during Fabacademy. My final project in Fabricademy focuses on increasing engagement and understanding of how Labs in university settings can utilize tools, machines, and softwares to create. My final project will require the understanding of coding, 2d and 3d design, 3d print manufacturing, molding and casting, bio engineering, mechatronics, soft robotics, and textile sustainability.

Update: I scrapped my initial Final project April 2026 for a variety of resons. From here I will discuss what was mentioned in this page's overview.

What is Interface and Application Programming?

Electronics design is the bridge between a theoretical idea and a physical, functional device. It is the process of defining how electricity will flow through various components. Components are pieces of the internal machine like microcontrollers, resistors, and LEDs. These pieces perform specific tasks based on the machine being utilized. This week, I am moving beyond just connecting parts utilizing a breadboard (breadboards aren’t a very permanent or reliable way to connect components to one another). I will be learning to build a permanent system by creating a custom Printed Circuit Board (PCB). This involves two main stages: schematic capture, where I will define the logical connections between parts, and PCB Layout, where I will physically route those connections onto copper traces that can be fabricated in the lab.

Software Comparison

    Before starting my design, I explored different Electronic Design Automation (EDA) tools to see which fit my workflow best.

  1. Kicad Vs Autodesk Fusuon360Design
    • Autodesk Fusion: While powerful and widely used in professional settings, it is a proprietary tool that can sometimes feel overly complex due to its integration with 3D CAD features. The licensing can also be a hurdle for open-source projects, as it is pretty expensive (in my opinion).
    • KiCad: I was attracted to KiCad mainly because it is a completely free, open-source software. It offers separate editors for schematics and PCB layout, which helps me focus on one task at a time. I was also attracted to its Electrical Rules Check (ERC) and Design Rule Check (DRC) because they can catch errors before I waste material I don't have on a bad etch, cut, or mill.
    • I’d also like to mention that I am trying to expand my personal design skills as much as possible and have already explored Fusion a bit, so I see this as a great opportunity to explore new software.

My Goals This Week

My Takeaways from the Group Assignment

  1. I found that python....

Connection to Final Project

My final project is a dual-device system: a handheld console and a wearable that work together to guide users through entrepreneurial and innovation-focused design journaling. The system uses prompts to encourage the user to examine assumptions, reframe problems, and build new cognitive habits through reflective writing.

This week's work builds the electrical design layer of that system:

This Week Final Project
Computer runs the journal app Handheld console runs the app
USB serial communicates with PCB Console communicates with wearable wirelessly (BLE)
Button on PCB advances prompts Physical buttons on console advance prompts
Entries saved to local .json file Entries saved to SD card on console
LED confirms save action NeoPixels + vibration confirm actions on wearable
Computer screen shows UI Console touchscreen shows UI

Hardware | Components Used

Component Quantity Purpose
Xiao RP2040 REMOVED FROM PROJECT (see 'why these components' section) Microcontroller
Tactile push button 3 Input (back, save, next SMD buttons)
LED 1 Output (confirms save action)
resistors 4 Current limiting (1 1kohm protects the LED, 3 10kohm resistors to ensure buttons have a clean LOW state)
12c Header (4-pin male header) 1 Connection for future screens
Xiao RP2350 Replaces the Xiao RP2040 | May 2026 (see 'why these components section) 1 Microcontroller

Why These Components

The component choices are intentionally minimal for this week's prototype. The buttons were chosen as the input because it maps directly to the final product interaction. The LED was chosen as the output because it provides immediate, unambiguous confirmation feedback, which is a core UX principle for the journaling flow: the user needs to know their entry was saved before moving on

The resistors limit current through the LED to a safe level. Without it, the LED would draw too much current from the Xiao's GPIO pin and could damage the board over time.

I prioritized adding the 4-pin pin-management to ensure the XIAO RP2040 could handle both my current UI and future expansion. I dedicated D4 and D5 specifically for an I2C communication bus via a 4-pin header, which will eventually drive an LCD. My three navigation buttons (Back, Save, and Next) are mapped to D0-D2 with 10kΩ pull-down resistors to ensure signal stability, while D3 handles the status LED. This layout leaves several pins free for the other sensors I plan to add later.

I was advised during a saturday open global session to consider using a power bank to safely power my device and will be utilizing a USB-C power bank to do so safely in my final project. Since the XIAO RP2040 features an integrated USB-C port with a voltage regulator, I will power the device directly via a portable power bank. This allows me to use the same port for both firmware updates on my Windows PC and standalone operation in the field. Also, because of this use case, I made sure the XIAO is placed at the very edge of my PCB design so that the USB-C cable's plastic housing doesn't hit the board when I try to plug it in!

UPDATE: During the Systems Integration weekly review I learned that the RP2040 was not the best choice due to energy considerations and chose to switch to the Xiao RP 2350. For more info on those energy considerations, see this link:

Useful links

PCB Design | KiCad Schematic

Fusuon360Design
KiCad Schematic RP2040 Version

Design Decisions

My PCB design for this week implements the minimum viable circuit to satisfy the Fab Academy requirement: one input device (button) and one output device (LED), connected to a microcontroller (Xiao RP2040).

The schematic was drawn in KiCad [Version 10.0].

Schematic Walkthrough

    The circuit consists of Seven main components:
  1. U1 — Xiao RP2040 The microcontroller. It receives power via USB-C and communicates with the computer over USB serial. Pin D0 is configured as a digital input (with internal pull-up) for the button. Pin D1 is configured as a digital output for the LED.
  2. SW1 (SW2/SW3) — Tactile push buttons One leg connects to pin D0 on the Xiao. The other leg connects to GND. When pressed, D0 (D1/D2) is pulled LOW, which the firmware detects as a button press event. The internal pull-up resistor on the Xiao keeps the pin HIGH when the button is not pressed, preventing false triggers.
  3. R1 (R2/R3) — 100KΩ resistors In series with the tactile push buttons.
  4. R4 - 1KΩ resistor In series with the LED. Limits current to a safe level for the Xiao's GPIO pin (max 12mA per pin on the RP2040). With a 3.3V output and a ~2V LED forward voltage, the current through the circuit is approximately (3.3 - 2.0) / 100 = 13mA — within safe limits.
  5. LED1 — LED Anode connects to the resistor (which connects to D1). Cathode connects to GND. Lights up when D1 is pulled HIGH by the firmware, confirming a save action to the user.
  6. J1 — USB-C (onboard) The Xiao's built-in USB-C connector serves as both power supply and serial communication interface. This is noted on the schematic as the data/power interface
  7. 12C 4-Pin Male Header
  8. UPDATE: Note that since this schematic design, I've updated my plans for my final project to use the XIAO RP-2350 as my microcontroller. See the 'why these comonents' section above for more info.

Problems Encountered

    KiCad does not have the Seeed Library in it already when you download it.
I am not 100% sure yet which type of screen will work or look best for my project. When I first wired my tactile push buttons in KiCad, I connected the pull-up resistors between GND and the button, with the other side of the button going to 3V3. I did this because I was following a tutorial without fully understanding why the components were arranged the way they were. The problem with this wiring is that it is backwards. A GPIO pin on the Xiao RP2040 can only make decisions based on voltage — it reads either HIGH (3V3) or LOW (0V/GND). For that reading to be meaningful, the pin needs a stable default voltage when the button is not being pressed. Without one, the pin is left floating — connected to nothing — and it picks up random electrical noise from the environment, causing the microcontroller to register phantom button presses even when no one is touching anything. My wiring also placed the GPIO connection point in the wrong location. The pin needs to sit at the junction between the resistor and the button so it can sense the change in voltage when the button is pressed. In my original schematic, that junction was not clearly connected to the GPIO pins at all. Ensuring my circuit is electrically sound

Results

Fusuon360Design
Net List Visual

Reflection

Connection to Final Project

This week's work is the first functional prototype of my final project's application layer. The journal app built this week will evolve through the following stages toward the final product:

  1. Next step (Electronics Production): Add a second Xiao-based PCB as the wearable component, with a vibration motor and NeoPixels as actuators. The console PCB will also gain an LED display to show the current prompt number, and an SD card module to store entries locally without a computer.
  2. Prototype phase:Replace the computer application with firmware running directly on the handheld console. The console's touchscreen will handle text input, and entries will write to the SD card rather than a JSON file on the computer.
  3. Final product:The computer is removed from the system entirely. The console is standalone. The wearable communicates with the console over BLE, receiving trigger signals that activate vibration and light patterns timed to the user's journaling session which provides somatic pattern interruption designed to break cognitive habit loops and encourage new thought patterns.

The design built this week remains the core of the experience at every stage. What changes is the hardware it runs on and components that enhance the UI.

Files

File Description
File Seeed KiCad Files
File KiCad Schematic