8. Electronics Production

This week focused on electronics production. We characterized the design rules for our in-house PCB milling process (group assignment) and I designed a microcontroller development board based on the Seeed Studio XIAO ESP32-S3 / XIAO header format (individual assignment).

Group assignment: characterize in-house PCB design rules

1. Characterize the design rules for our in-house PCB production process

For this week’s group assignment, we will characterize our in-house PCB production workflow using the Snapmaker CNC milling machine. The goal is to understand the practical design constraints of milling PCBs in our lab and to document the settings and limitations of the machine. This section is a plan and will be updated with results after the group work is completed.

Machine used

What we plan to explore

We will focus on the key factors that affect PCB milling quality:

What we expect to document

After testing, we will summarize practical design rules (minimum trace width/clearance, recommended tooling, engraving depth, and fixturing/zeroing tips). We will also evaluate how realistic double-sided milling is in our lab setup, including alignment and flipping requirements.

Design rule understanding for in-house milling

Based on our machine characterization, the design rules for our in-house milling process should be more conservative than a professional PCB manufacturer. Important considerations include:

What I learned from the group assignment

This group task helped me understand that designing a PCB is not only about making the schematic electrically correct. It also depends heavily on the manufacturing process. A design that looks acceptable in KiCad may still be difficult or impossible to produce cleanly on our in-house CNC machine. This made me more aware of the relationship between design decisions and fabrication constraints.

Individual assignment: make and test a microcontroller development board

For the individual assignment, I designed a microcontroller development board based on the Seeed Studio XIAO ESP32-S3 / XIAO header format. My board was intended to support a robotic arm lamp project and included connectors for several peripherals.

My board design

The board included:

Design software and workflow

I used KiCad for both schematic design and PCB layout.

My workflow

Challenges I faced

As a beginner, I found PCB design much more complex than I expected. Some of the main difficulties were:

At first, I tried to route the board manually, but I found it difficult to organize all the connections cleanly. After that, I used the Freerouting extension to help generate routing paths more efficiently.

Use of Freerouting

Using Freerouting helped me:

However, using Freerouting also led me to a 2-layer result, which was not ideal for our in-house Snapmaker PCB milling process. This was an important learning moment for me. I realized that software can help route the board, but I still need to make design decisions based on the actual fabrication method.

Why I may send the board to a manufacturer

Because my final routed design uses both front and back copper layers, I may not be able to manufacture it successfully with our Snapmaker CNC setup. For that reason, I may send the board to a board house such as Jialichuang / JLCPCB for fabrication.

This was not my original plan, but it taught me an important lesson: the design process should always consider fabrication constraints from the beginning.

Testing plan

After fabrication, I plan to test the board by:

If the manufactured PCB works correctly, it will serve as a customized microcontroller development board for my robotic arm lamp project.

Useful links

Code Example

  // the setup function runs once when you press reset or power the board
  void setup() {
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT);
  }

  // the loop function runs over and over again forever
  void loop() {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);                       // wait for a second
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(1000);                       // wait for a second
  }
        

Gallery

Description of image

Video

From Vimeo

Sound Waves from George Gally (Radarboy) on Vimeo.


From Youtube

3D Models

← Week 1 Back to Assignments