Overview

Electronic Production is where things start to feel real. After weeks of digital design, we now learn to physically produce our own circuit boards. The goal is to mill, solder, and program a working PCB from scratch using the fab lab's tools.

This week I characterized the design rules for our in-house PCB production, analyzed I²C signals with an oscilloscope, and designed a custom PCB for my final project, the SmartPi Agentic Assistant.

Group Assignment

1. Characterize the Design Rules for In-House PCB Production Process

The design rules for in-house PCB production are shaped by the precision and limitations of the Othermill (now Bantam Tools) desktop milling machine, which uses 1/64" and 1/32" end mills to cut copper traces and outline boards on FR-1 stock. The 1/64" bit is used for tracing — it defines the minimum spacing and trace width, typically around 0.016" (0.4 mm), which means components and routes must be laid out with careful attention to clearance. The 1/32" bit handles the board outline and larger cuts, providing faster material removal and cleaner edges. To ensure successful milling, traces should not be too fine or too close, pads should have adequate annular rings, and small islands should be avoided. The board's overall design must also consider the toolpath offsets and alignment tolerances of the mill. These rules balance accuracy with manufacturability, producing reliable single-sided PCBs that can be milled, soldered, and debugged entirely within the fab lab — a compact but powerful workflow that turns digital designs into functional hardware within hours.

2. Submit a PCB Design to a Board House

2.1 Hardware Setup and Testing

  1. I took my XIAO with RP2040 that we had soldered on the PCB board earlier in Week 03 Embedded Programming class and hooked it up to my computer running Arduino IDE. Downloaded a sketch (program) into my raspberry pi 2040 and made sure it was working as designed - LED blinking, Hello World on the display screen as well as touch sensors detecting capacitance on the finger, plotted on the Arduino IDE virtual plotter.
  2. Now to try and probe the signals coming out of the output pins of the XIAO package, I soldered a small wire to the ground pin of the XIAO (left most pin of the display unit). I clipped the ground wire to the ground clamp of the Oscilloscope and pressed the probe onto the SCL and SDA display pins connected to the XIAO through the pcb.
Ground wire connection for oscilloscope probing
Ensuring a solid ground connection for accurate oscilloscope measurements.
Oscilloscope probe connected to SDA line
Oscilloscope probe connected to the SDA (Serial Data Line) for signal analysis.

2.2 Oscilloscope Analysis: SCL (Serial Clock Line)

Below you're looking at the oscilloscope trace of the SCL (Serial Clock Line) from my OLED display's I²C communication while your Game of Life program is running on the XIAO RP2040.

Here's what's happening:

  • The square wave pattern you see represents the clock pulses generated by the RP2040's I²C controller.
  • Each high–low transition corresponds to one clock cycle, which synchronizes the data transfers on the SDA line.
  • The consistent pulse width shows that the microcontroller is regularly updating the display — in this case, sending pixel data for each new frame of your Game of Life animation.
  • The voltage level of the signal (typically around 3.3 V for the XIAO RP2040) confirms proper logic levels for I²C communication.
  • If you zoomed in on the SDA line at the same time, you'd see data bits changing state while SCL is low — the paired SCL/SDA timing is what defines valid I²C transfers.

In short, the waveform confirms that your RP2040 is actively clocking data to the OLED, with each burst of pulses representing a new screen update as your Game of Life evolves.

Oscilloscope display of SCL clock signal
Oscilloscope display showing the SCL (Serial Clock Line) signal, a consistent square wave.

2.3 Oscilloscope Analysis: SDA (Serial Data Line)

The SDA pin carries the actual data between the master and slave devices. It's a bidirectional line used for both sending commands to and receiving data from the display.

In this oscilloscope image, you're observing the SDA (Serial Data Line) from your OLED's I²C connection while your Game of Life program runs on the XIAO RP2040.

Here's what's happening:

  • The uneven waveform—a mix of long and short high and low pulses—represents the binary data (1s and 0s) being transmitted from the microcontroller to the OLED.
  • Each data bit on the SDA line is synchronized by the clock pulses on the SCL line (which you saw earlier). When SCL is high, the SDA line remains stable; when SCL is low, SDA can change state to transmit the next bit.
  • The bursts of activity you see correspond to data frames, each containing bytes of information such as display commands or pixel updates.
  • These data bursts occur repeatedly as your Game of Life simulation updates the display, sending new pixel patterns for each generation of the cellular automaton.
  • Between bursts, you may notice short idle periods where the line stays high—this indicates that the I²C bus is momentarily inactive, waiting for the next frame update.

In essence, this trace is a live view of the RP2040 streaming display data to the OLED: every pulse is a packet of bits that redraws part of your evolving Game of Life grid.

Oscilloscope probe connected to SDA line
Oscilloscope probe connected to the SDA (Serial Data Line) for signal analysis.
Oscilloscope display of SDA data line
Oscilloscope display showing the SDA (Serial Data Line) signal, with data transitions synchronized to the SCL clock.

Individual Assignment: EDA Tool Design and PCB Production

1. Design Rules

Our in-house production uses the Bantam Tools (Othermill) desktop milling machine. Key constraints:

  • 1/64" End Mill: Used for traces. Minimum spacing/trace width ~0.016" (0.4 mm).
  • 1/32" End Mill: Used for outlines and holes.
  • Clearance: Components must be spaced to allow the tool to pass without cutting into pads.

2. Oscilloscope Analysis

I probed the I²C signals (SCL and SDA) of my XIAO RP2040 running the "Game of Life" on an OLED display.

Ground connection
Ground connection for oscilloscope probe
Probing SDA line
Probing the SDA line

SCL (Clock Line)

The square wave represents the clock pulses. Consistent pulse width shows regular updates to the display.

SCL signal
SCL signal: Consistent square wave

SDA (Data Line)

The uneven waveform represents binary data (1s and 0s) being transmitted, synchronized with the clock.

SDA signal
SDA signal: Data transitions

PCB Design: SmartPi Assistant

I aligned this week's assignment with my final project, designing a PCB to interface a Raspberry Pi Pico W with a 64x64 RGB LED Matrix via the HUB75 protocol.

Schematic & Layout in Fusion 360

I used the Fusion 360 Electronics workspace. I imported the Fab library, created a schematic connecting the Pico W to header pins for the HUB75 interface, and added power components.

Schematic
Schematic design
Layout
PCB Layout with traces
Design Challenge: I encountered crossover issues with the single-sided board. Instead of a complex double-sided milling process, I used 0-ohm resistors as bridges and planned for 3 wire jumpers for the remaining crossovers.

Fabrication Process

Milling

I exported the design as a .brd file and loaded it into the Bantam software. I used FR-1 stock secured with double-sided tape.

  1. 1/64" Pass: Milled fine traces.
  2. 1/32" Pass: Milled larger areas, holes, and outline.
Milling process
Milling traces
Finished PCB
Completed PCB with traces and text

Soldering

I soldered the Raspberry Pi Pico W, header pins, and 0-ohm resistors. The digital magnifier helped inspect solder joints for bridges.

Digital magnifier
Inspection with digital magnifier
Soldered board
Fully assembled board

Testing & Derisking

Due to upcoming travel, I also set up a pre-fabricated adapter board to ensure I could continue software development while away. This "derisking" step proved crucial.

RGB Matrix test program running successfully
Working RGB Matrix
Success! The pixels obey my commands.