What We Were Asked to Do

๐Ÿ‘ฅ Group Assignment

  • Characterize the design rules for in-house PCB production โ€” document machine settings
  • Document the workflow for sending a PCB to a board house
  • Reflect on the group work page

โ†’ Exporting a PCB from KiCAD to JLCPCB order submission

๐Ÿ‘ค Individual Assignment

  • Make and test a microcontroller development board that you designed

From KiCad Design to Physical PCB

After designing the PCB in the Week 06 Electronics Design assignment, this week was about turning that design into a real, working board โ€” milling it in-house, soldering the components, and testing it. The board is based on the XIAO ESP32-C3 with an SMD push button and a through-hole LED.


Exporting Gerber Files from KiCad

I started from my completed KiCad PCB design. To prepare it for fabrication, I went to File โ€บ Fabrication Outputs โ€บ Gerbers and selected the layers needed for in-house milling โ€” F.Cu for the copper traces and Edge.Cuts for the board outline. I clicked Plot, then Generate Drill Files to produce the complete set.

KiCad Fabrication Outputs โ€” Gerber export with F.Cu and Edge.Cuts layers selected
KiCad โ€” Fabrication Outputs โ€บ Gerbers, F.Cu + Edge.Cuts layers selected

Gerber to PNG with Gerber2PNG Plugin

The PCB mill needs PNG image files, not Gerber files directly. Rather than using an external website, I used the Gerber2PNG plugin โ€” created by Fab Lab Kerala โ€” which converts Gerber outputs to PNG entirely within KiCad. I downloaded the plugin from the Fab Lab Kerala page in Git Hub. I followed the installing instructions in the page and installed it through KiCad's Plugin and Content Manager.

Gerber2PNG plugin zip file downloaded
Downloaded Gerber2PNG plugin zip
Gerber2PNG plugin installed and enabled in KiCad Plugin Manager
Plugin installed and enabled in KiCad's Plugin and Content Manager
Gerber2PNG plugin active in KiCad toolbar
Plugin visible in the KiCad toolbar โ€” click to launch the converter
Gerber2PNG conversion interface โ€” all layers checked
Gerber2PNG interface โ€” all three layers checked before generating

Once launched, I checked all three required layers and the plugin generated the PNG files:

Trace layer PNG โ€” copper engraving path
Traces โ€” copper engraving
Drills layer PNG โ€” hole positions
Drills โ€” hole positions
Cut layer PNG โ€” board outline
Cut โ€” board outline
โฌ‡ Gerber2PNG Plugin ZIP ยท KiCad Plugin

Milling the PCB

To generate the G-code I used the mods project web interface โ€” a browser-based CAM tool that converts PNG files into toolpaths for the mill. I selected Programs โ†’ iModela mill โ†’ PCB from the left sidebar, then uploaded the trace PNG. The machine used is the Roland iModela.

iModela mill PCB selected in mods project left sidebar
Selecting iModela mill machine โ†’ PCB
Full mods workflow showing PNG upload, toolpath calculation, and send-to-mill nodes
The full mods workflow: load PNG โ†’ set PCB defaults โ†’ calculate toolpath โ†’ send file to mill.

After uploading the PNG, mods calculates the toolpath using the parameters set in the mill raster 2D node. The following settings were used:

ParameterValue
Tool diameter0.40 mm
Cut depth0.10 mm
Max depth0.10 mm
Offset number4
Offset stepover0.2
Feed speed4 mm/s
2D toolpath view showing milling paths across the PCB
The generated 2D toolpath for the trace layer โ€” each pass removes copper to isolate the traces.
3D preview of the milled PCB showing copper traces on the FR1 substrate
3D preview in mods showing the milled copper traces on the board.
PCB being milled on the Roland iModela
PCB milling in progress

Soldering the Components

With the board milled and cut out, I soldered all the components. The board uses a mix of SMD and through-hole parts, which I placed and soldered in order of size โ€” smallest SMD components first, then the through-hole LED, and the XIAO last.

โฌ›
Resistor
Current-limiting resistor for the LED
๐Ÿ’ก
LED (Through-hole)
Status indicator โ€” through-hole, inserted from front
๐Ÿ”˜
SMD Push Button
Tactile SMD button for input triggering
๐ŸŸฆ
XIAO ESP32-C3
Main microcontroller โ€” seated on castellated edge pads
Fully soldered PCB with XIAO ESP32-C3, LED, button, and resistor
Fully soldered board โ€” XIAO ESP32-C3, SMD button, through-hole LED, and resistor

What I Learned

This week connected the digital and physical sides of the electronics workflow for the first time. The biggest discovery was the Gerber2PNG plugin โ€” being able to do the conversion directly inside KiCad without relying on an external website made the process much smoother and more repeatable.

The milling step taught me how sensitive the process is to small parameter changes. Small adjustments in depth of cut made a visible difference in trace quality, and running test passes before committing to the final board was essential. Soldering the XIAO on castellated pads also required patience โ€” getting alignment right before applying heat made a big difference in the final result.

โ† W07: Computer-Controlled Machining All Weeks W09: Input Devices โ†’
๐Ÿค–

AI Disclosure: Claude (Anthropic) was used as a writing tool to help proofread and structure the documentation on this page. All designs, fabrication, and technical decisions are my own.