Week 8 - Electronics Production
Assignment Overview
Group Assignment: - Characterize the design rules for your in-house PCB production process - Submit a PCB design to a board house
Individual Assignment: - Make and test an embedded microcontroller system that you designed - Extra credit: make it with another process
As usual here is my schedule!

Group Assignment
Introduction
For this week's group assignment, we characterized the design rules for our in-house PCB production process using the Roland DGSHAPE MonoFab SRM-20 milling machine. Our objective was to understand the machine's specifications, test its capabilities, and produce a milled PCB board.
Machine Specifications - The SRM-20

The SRM-20 (Subtractive Rapid Manufacturing) is a compact desktop 3-axis CNC milling machine designed for rapid prototyping. It's the machine we use for all our PCB milling in the lab and is one of the most commonly found machines in Fab Labs around the world.
| Specification | Value |
|---|---|
| Cuttable Area (X, Y, Z) | 203.2 x 152.4 x 60.5 mm |
| Spindle Speed | 3,000 – 7,000 RPM |
| Mechanical Resolution | 0.000998594 mm/step |
| Software Resolution | 0.01 mm/step |
| Interface | USB |
| Cuttable Materials | Modelling Wax, Foam, Acrylic, ABS, PCB |
Software Tools
The software used for PCB milling with the SRM-20 are: - Inkscape — for preparing and exporting PNG files at the correct DPI - MODS — for generating RML toolpath files from the board exports - VPanel — for controlling the machine and setting X, Y, and Z origins
Characterizing Design Rules
We used the characterized files from Prof. Neil to guide our design rules.


We concluded that 0.020 inch is the minimum required for proper visibility and clean milling of both trace width and spacing. Anything below 0.015 inch (1/64") risks traces being too narrow or too close together, which can lead to incomplete cuts or shorts on the board.
Modeling and Cutting
We prepared our board files in Inkscape, exported them as 1000 DPI PNGs, and used MODS to generate the RML files. We then milled the board on the SRM-20 using:
- 1/64 inch endmill for milling copper traces
- 1/32 inch endmill for cutting the board outline

Cutting Settings:
| Setting | Value |
|---|---|
| Traces Tool | 1/64 inch endmill |
| Outline Tool | 1/32 inch endmill |
| File Format | RML |
| Export DPI | 1000 |
Results

Group Assignment Conclusion
Our board came out well on the first try. Through this assignment we gained hands-on experience with the full PCB milling workflow — from preparing files in Inkscape and MODS, to setting up and running the SRM-20. The skills and design rules we learned here will guide our circuit board designs going forward.
For more details, check out the full group assignment page here.
Individual Assignment
For this week's assignment I milled my PCB from week 06.
Exporting PCB Design from KiCad
I first started off by exporting my PCB design as SVG. To do that I used the plot feature.

In the plot feature I exported the design as SVG. I used the following settings:

This is how the files will be saved: There will be 2 SVG files. One with both the traces and the Edge Cut and one with the Edge Cut only.

Preparing Files in Inkscape
After that, open Inkscape and import the SVG file.
![]() |
![]() |
|---|---|
Then add your initials to customize it and then export the SVG file as a PNG file.

When you click the Export button a window will pop up where you can make some changes. Change the background color to white and DPI to 1000, then click the export button after selecting your desired folder.


After that you have to do the same thing for your Edge Cut file.

Generating RML File
What is an RML file?
An RML file for the Roland SRM-20 is a machine-readable toolpath file, specifically in the RML-1 command set format, used to instruct the desktop milling machine to cut or trace PCB (Printed Circuit Board) designs.
Here are the steps to make the RML file:
First go to modsproject.org and open programs and find the SRM-20 milling machine and click on mill 2D PCB.

Here is a screenshot of the interface and numbers to follow along.

First import your PNG file and click Invert. Note: The white parts are the traces and the black parts are the things that will be removed.

Select the 1/64 for the mill bit size.

Then select the 2 programs and click the delete button. Then create a new module (save): Modules -> Save


Remember to set the origin to 0.

After that hit Calculate and your RML file will be downloaded automatically to your downloads folder.

Moreover, a new window will pop up where you can see the toolpath in 3D view.

Carefully check if the toolpath is correct by checking if there are any shorts in the connections.

After that, do the same thing for your edge cut file.
Import the PNG file and click invert.

Important! Set the mill bit size to 1/32.

Don't forget to add the save module.

Hit Calculate to automatically download the RML file and view the toolpath in 3D view.
![]() |
![]() |
|---|---|
Milling the PCB
Turn on the machine.

Now open the V-Panel for the SRM-20.

This is the interface for the SRM-20.

Set the X-Y coordinates to 0 and for the Z axis use the gravity method and set the Z axis to 0.

Click the Cut button and choose the RML file you downloaded (the one with the traces and the edge cut).
![]() |
![]() |
|---|---|
Then click the Output button to start milling your PCB!

Yay! It's getting milled!!
This is after milling the traces:

Then do the same thing for the edge cut and click output!

After that, clean the dust and using the spatula take out your PCB!! Yay!!!!
First Attempt - Version 1
This is the final result:

I noticed that some traces didn't come out well so I went to redesign the PCB in KiCad.
Second Attempt - Version 2
This is the Version 2 PCB Design:

The Challenge:
I only have 1 day left to do everything and I still haven't finished the milling, soldering, and programming my board. So I decided to design another PCB which is much simpler. So I grinded the whole night and I finally designed a new PCB and milled it!
Design Iteration - Version 3
Here is the new PCB design:

This new design is much easier to work with and what it basically does is that I can program the LEDs to make patterns.
After designing the PCB I made the RML file using the same steps I did before using MODS. And then I milled the design. Here is the result of my design.

Here is the PCB after cleaning the dust.

Yaay!! It looks great!

Soldering the Components
After that I gathered all the components and placed them like this: It makes the soldering much easier.
![]() |
![]() |
|---|---|
The soldering part was quite interesting and I enjoyed it a lot. This part for me was quite easy as I've done some soldering before.
Important: From the components I used, only the LED had polarity so always remember to solder that correctly!
Here is the result of the soldering! I'm pretty impressed - it looks clean and nice!
![]() |
![]() |
|---|---|
Programming the LEDs
For programming I used Claude.ai. For the programming I gave the prompt to Claude AI and it gave me the code for the program.
Note: I haven't just copy-pasted the code to my Arduino IDE - I learned line by line what it does so that I understand the core idea.
Here is the link to my chat with Claude AI: Link
To program the LEDs I first opened the Arduino IDE and connected the board to my computer. Then I selected the board type and the port.
Note: I am using the XIAO ESP32 C3 and to program it you have to add the board to your Arduino IDE. To know how I added the board, click here to view my previous assignment.

After that I copy-pasted the code from Claude AI and uploaded it to the board.
Yaay!! My board is alive!!!
Final Results
Hero Shot

Click here to view the code: Code
Project Files
Reflection
This week was very humbling as at first I wanted to mill my final project board but I learned that I have to learn and gain more experience to do it. I also learned to work under tight deadlines as I had to redesign everything at the last minute.
Overall I'm very happy that I learned a lot about PCB milling, programming, and soldering. From now on I will continue to work on my final project board and make it work.
Thank you! See you next time!









