This week is focused on Electronics Production. The objectives were to characterize the design rules of our PCB milling workflow, fabricate my custom ESP32-C3 microcontroller board designed in Week 6, solder the surface-mount components, and program the board to verify that the circuit works. I milled my board using a Roland SRM-20 CNC machine, soldered the SMD parts using reflow and hand-soldering techniques, and tested it successfully.
The group assignment was to characterize the mechanical resolution of our lab's PCB fabrication workflow by milling a test pattern with lines of varying widths. The complete group characterization report is available on the Fablab Dilijan Group Assignment Page.
1/64 inch flat endmill for routing traces. Feed rate: 4 mm/s, Cut depth: 0.1 mm.1/32 inch flat endmill to cut board edges. Feed rate: 2 mm/s, Cut depth: 0.5 mm (multi-pass).I fabricated the ESP32-C3 dashboard development board using a single-sided FR-4 copper-clad PCB sheet.
I exported the board traces and edge outlines from KiCad as SVG files, loaded them into Mods CE, and generated the RML toolpaths.
I cleaned the copper traces with steel wool to remove oxidation. I then hand-soldered the surface-mount parts using a temperature-controlled iron set to 350°C and lead-free solder wire.
Before plugging the board into USB, I used a digital multimeter set to Continuity Mode to verify that there were no shorts between VCC (3.3V/5V) and GND. I then connected the board using a USB-C cable.
I loaded a test program in Arduino IDE that toggles the status LED when the push button is pressed. The firmware uploaded successfully:
// Board Test Code - Press button to light LED
const int BUTTON_PIN = 3; // GPIO3
const int LED_PIN = 2; // GPIO2
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Enable internal pull-up resistor
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) { // Button is pressed (pulled to ground)
digitalWrite(LED_PIN, HIGH); // Turn LED ON
} else {
digitalWrite(LED_PIN, LOW); // Turn LED OFF
}
}
Download the toolpath G-code files generated for the CNC mill:
| File Name | Format | Description | Download Link |
|---|---|---|---|
| traces_1-64.rml | Roland RML G-code (.rml) | Mods toolpath for engraving PCB trace isolation channels. | 📥 Download RML |
| outline_1-32.rml | Roland RML G-code (.rml) | Mods toolpath for cutting board outer boundary edges. | 📥 Download RML |
This week focused on hands-on PCB milling and assembly. Here is a summary of the accomplishments:
Configured Mods CE settings for 1/64" and 1/32" flat endmills on the Roland SRM-20 CNC mill.
Milled clean isolation tracks and board outlines on FR-4 double/single-sided clad sheets.
Hand-soldered Seeed Studio XIAO ESP32-C3, SMD components, and terminal headers with lead-free solder.
Conducted continuity tests, verified power tracks, flashed test code, and successfully operated input buttons.