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
- Snapmaker 3-in-1 / CNC module
What we plan to explore
We will focus on the key factors that affect PCB milling quality:
- Tool diameter and bit selection
- Trace width and clearance
- Single-sided vs double-sided PCB capability
- Workholding and board fixing
- Origin setting and coordinate calibration
- Copper board preparation
- Cut depth and engraving depth
- Export workflow from design file to CNC toolpath
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:
- Wider traces for power and signal
- Larger clearance between traces
- Fewer very tight paths between pads
- Avoiding unnecessary vias
- Designing for a single copper layer when possible
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:
- Power input connector
- Large capacitor for power stabilization
- XIAO header connections
- 3 servo connectors
- 1 sensor connector
- 1 NeoPixel connector
- 330 ohm resistor for NeoPixel data line
Design software and workflow
I used KiCad for both schematic design and PCB layout.
My workflow
- Built the schematic in KiCad
- Connected power, GND, servo outputs, sensor connector, and NeoPixel connector
- Assigned footprints
- Transferred the design into PCB Editor
- Manually placed the components
- Adjusted board outline
- Attempted manual routing
- Used the Freerouting extension to help with routing
- Checked front and back copper layers
- Evaluated whether the board was suitable for in-house production
Challenges I faced
As a beginner, I found PCB design much more complex than I expected. Some of the main difficulties were:
- Understanding the difference between schematic and PCB layout
- Arranging components logically before routing
- Interpreting airwires correctly
- Learning how traces must connect pad-to-pad
- Understanding front and back copper layers
- Realizing that switching layers requires vias
- Checking whether the routing matched the actual connector pin order
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:
- Better understand the complexity of multi-net routing
- Reduce some manual routing difficulty
- Visualize how a more complex board could be laid out
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:
- Checking continuity and shorts
- Verifying 5V and GND connections
- Testing XIAO power and basic boot function
- Testing servo signal outputs
- Testing the sensor connector
- Testing NeoPixel data output through the resistor
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