Week 08 — Electronics Production

Group assignment

Individual assignment

Learning outcomes


Checklist


Documentation

Introduction

Electronics production week focused on making custom printed circuit boards (PCBs) using CNC milling – a process called PCB isolation routing. Instead of chemical etching, a precision CNC machine physically mills away thin channels of copper from a copper-clad board, leaving behind the circuit traces.

By the end of the week the goal was to have a fully milled, populated, and working PCB – the "Yaroboard" – a custom breakout board for the Seeed Studio XIAO ESP32 C3 microcontroller.

From Week 6 design to Week 8 production

In Week 6 Electronics Design, I designed a simple PCB with a button and an LED for the Xiao microcontroller. For Week 8, I prepared the manufacturing files and reviewed the full PCB production workflow.

Week 6 PCB design screenshot
Week 6 PCB design prepared for production.
Gerber export view
Gerber export view for the Week 8 production workflow.

Here's a quick rundown of each file in the Gerber export:

Board definition

Copper layers

Solder mask (the colored coating with openings for pads)

Silkscreen (the printed labels/outlines you see on the board)

Paste mask (used for stencil-based SMD soldering)

Drill files

Extras

I found the resource on how to convert the Gerber site into PNG from FabLab Kerala.

https://gerber2png.fablabkerala.in/

After study documentation from Namita

https://fabacademy.org/2025/labs/kochi/students/namita-aravind/assignments/week08.html

I uploaded all files and selected option “Generate All” then “Generate PNG”.

Gerber files uploaded to the preview tool
Gerber files uploaded to the preview tool.
Generate All and Generate PNG options
Generate All and Generate PNG options.

Website generated four files:

Top layer preview
Top layer preview.
Trace preview
Trace preview.
Drills top layer preview
Drills top layer preview.
Board outline preview
Board outline preview.

Equipment Overview

Roland MDX-40A – Professional PCB Mill

The main machine used for PCB milling at the FormShop Fab Lab is the Roland MDX-40A – a compact, high-precision desktop CNC milling machine. It is operated through Roland's VPanel software using the RML-1 control language. The machine is capable of milling traces and gaps as narrow as 0.1 mm, making it ideal for fine-pitch PCB work.

Roland MDX-40A user manual – overview diagram and safety warnings (pinching hazard, high temperature, sharp tool)
Roland MDX-40A user manual – overview diagram and safety warnings (pinching hazard, high temperature, sharp tool)
Examining the Roland MDX-40A at the Fab Lab – two people inspecting the machine before the first job
Examining the Roland MDX-40A at the Fab Lab – two people inspecting the machine before the first job

Researching CNC Milling Options

As part of the research phase, other PCB milling machines on the market were explored. The Roland MDX-40 (the older 4-axis variant) is available second-hand at significantly lower cost. The Makera Z1 Desktop CNC is a newer option with an automatic tool changer and 0.02 mm industrial precision.

Makera Z1 Desktop CNC – a modern alternative offering quick tool changer, auto probing, and 0.02 mm accuracy
Makera Z1 Desktop CNC – a modern alternative offering quick tool changer, auto probing, and 0.02 mm accuracy

Class Design Review Session

A group review session was held with all students' PCB designs projected on a large screen using EasyEDA. The session covered DRC (Design Rule Checks), trace width and clearance settings, and the correct export process for sending files to the mill.

Group PCB review session – EasyEDA layout displayed on the large classroom screen for collaborative feedback and design critique
Group PCB review session – EasyEDA layout displayed on the large classroom screen for collaborative feedback and design critique

Trace Width Test

Before milling the actual board, a trace width test is mandatory. This test mills a small comb pattern with three different trace pitches to find the finest reliable trace width achievable with the current bit and machine settings.

The test piece shows three zones: 0.001", 0.010", and 0.020" trace-to-trace spacing. After milling, the test is inspected under magnification. The finest zone that shows complete, clean isolation (no copper bridges) determines the minimum design rule for this machine/bit combination.

Trace width test milling in progress on the copper board – three zones (0.001", 0.010", 0.020" spacing) being cut side by side
Trace width test milling in progress on the copper board – three zones (0.001", 0.010", 0.020" spacing) being cut side by side
The test cut from a different angle – the three trace zones are clearly visible as separate sections
The test cut from a different angle – the three trace zones are clearly visible as separate sections
The completed trace width test piece held in hand – fine traces at left, wider traces at right. The 0.010" zone produces reliably clean isolation.
The completed trace width test piece held in hand – fine traces at left, wider traces at right. The 0.010" zone produces reliably clean isolation.

Design Preparation – Mods Software

The PCB design was created in EasyEDA and exported as a high-resolution PNG image of the copper trace layer. This image is then processed using Mods – a browser-based modular workflow tool used universally across Fab Labs. Mods converts the PNG bitmap into an RML (Roland Machine Language) or G-code file that the mill can execute.

Key export settings in Mods:

Mods software loading the Yaroboard trace PNG – showing 999 DPI resolution and 54.7 × 37.3 mm board dimensions
Mods software loading the Yaroboard trace PNG – showing 999 DPI resolution and 54.7 × 37.3 mm board dimensions
Candle (GRBL sender software) showing the PCB toolpath loaded and visualised – ready to send to the machine
Candle (GRBL sender software) showing the PCB toolpath loaded and visualised – ready to send to the machine

Machine Setup

Loading the Copper Board

The cut copper-clad board is placed inside the Roland MDX-40A on top of a pink sacrificial foam layer. The foam protects the machine bed from the cutting bit when it passes through the full board thickness. The board is secured with double-sided tape on all four corners to prevent any movement during milling – even 0.1 mm of shift will cause misaligned traces.

Roland MDX-40A interior with the copper board loaded on the pink foam sacrificial layer – bed levelling marks visible on the foam
Roland MDX-40A interior with the copper board loaded on the pink foam sacrificial layer – bed levelling marks visible on the foam
The copper board positioned on the foam – double-sided tape on all corners ensures zero movement during milling
The copper board positioned on the foam – double-sided tape on all corners ensures zero movement during milling

Installing the Engraving Bit

The V-bit engraving tool is installed into the Roland's precision collet using the included open-ended wrenches. The bit must be fully seated – the cutting tip should protrude by the minimum amount needed for the job. Any runout (wobble) in the bit will cause variable trace widths and potentially break the fragile bit tip.

Small handheld vacuum used to clean the spindle area of any copper dust before bit installation
Small handheld vacuum used to clean the spindle area of any copper dust before bit installation
Installing the V-bit engraving tool into the Roland MDX-40A spindle collet – first hand-tight, then wrench-tightened
Installing the V-bit engraving tool into the Roland MDX-40A spindle collet – first hand-tight, then wrench-tightened
Tightening the collet with an open-ended wrench – firm but not over-torqued to avoid collet damage
Tightening the collet with an open-ended wrench – firm but not over-torqued to avoid collet damage

Setting Origins with Roland VPanel

The Roland VPanel (RML-1 interface) is the software used to manually jog the machine and set the work origins. The process is:

Roland VPanel showing current position: X=4.00 mm, Y=−0.34 mm, Z=21.87 mm, spindle at 6000 RPM – before zeroing
Roland VPanel showing current position: X=4.00 mm, Y=−0.34 mm, Z=21.87 mm, spindle at 6000 RPM – before zeroing
The Z-probe brass sensing disc placed on the copper board surface directly beneath the bit tip
The Z-probe brass sensing disc placed on the copper board surface directly beneath the bit tip
Zero probing the copper surface with the Roland Z-probe sensor.
VPanel with "Set Z origin using sensor" option selected – the machine will lower automatically to touch the disc
VPanel with "Set Z origin using sensor" option selected – the machine will lower automatically to touch the disc
VPanel after full zeroing – X=0.00, Y=0.00, Z=0.00 mm. The machine is ready to begin milling.
VPanel after full zeroing – X=0.00, Y=0.00, Z=0.00 mm. The machine is ready to begin milling.

Milling the PCB

Running the Trace Milling Job

The trace milling job is sent from Mods (or Candle for G-code machines) to the Roland. The spindle spins at 6,000–10,000 RPM and the V-bit moves across the board, carving isolation channels through the copper layer. Fine copper-coloured dust accumulates on the board surface during the process.

It is important not to open the machine lid or touch the board during the job. Any vibration can cause the bit to skip, producing an open-circuit trace or a broken bit.

The V-bit engraving tip touching the copper surface at the start of the milling job – first contact with the board
The V-bit engraving tip touching the copper surface at the start of the milling job – first contact with the board
Milling in progress – the "Yaroboard" name text and the first circuit traces becoming visible as copper is removed
Milling in progress – the "Yaroboard" name text and the first circuit traces becoming visible as copper is removed
Milling the copper traces on the Yaroboard.
Milling nearing completion – the full Yaroboard circuit layout is clearly visible on the copper surface
Milling nearing completion – the full Yaroboard circuit layout is clearly visible on the copper surface
Milling the board outline to release the PCB from the stock.

Cleaning the Milled Board

After milling, the board is removed from the machine and the copper dust is cleaned off. A brass wire brush is used to scrub the surface under a drop of isopropyl alcohol (IPA) or flux. This removes the fine copper particles that can bridge traces and also prepares the pads for soldering by lightly abrading the surface oxide.

Freshly milled Yaroboard being cleaned with a brass wire brush and IPA – the circuit traces are clean and well-defined
Freshly milled Yaroboard being cleaned with a brass wire brush and IPA – the circuit traces are clean and well-defined
The completed milled Yaroboard PCB held in hand – clear copper traces, isolated channels, and the XIAO ESP32 C3 footprint all visible
The completed milled Yaroboard PCB held in hand – clear copper traces, isolated channels, and the XIAO ESP32 C3 footprint all visible

Soldering the Components

Components Used

The Yaroboard is designed as a full breakout board for the Seeed Studio XIAO ESP32 C3 – a tiny USB-C microcontroller module with Wi-Fi and Bluetooth Low Energy. The component list is:

Components laid out before soldering: SMD chip resistors (top), a red tactile button (centre), and a long 40-pin header strip for cutting to size
Components laid out before soldering: SMD chip resistors (top), a red tactile button (centre), and a long 40-pin header strip for cutting to size
Holding a 1206 SMD LED with tweezers – these components require steady hands and good lighting
Holding a 1206 SMD LED with tweezers – these components require steady hands and good lighting
The SMD LED showing its polarity marking – the green arrows indicate the cathode direction for correct orientation
The SMD LED showing its polarity marking – the green arrows indicate the cathode direction for correct orientation

Soldering Setup

Soldering is performed at 360°C using a temperature-controlled soldering station. Liquid flux is applied to all pads before soldering – flux chemically removes the thin oxide layer on copper, dramatically improving solder wetting and joint quality. Solder paste (in a syringe) is used for SMD components; conventional solder wire is used for through-hole headers.

Workbench setup – a partially populated board, cotton swabs for flux application, flux container, and fine-point scraper tools
Workbench setup – a partially populated board, cotton swabs for flux application, flux container, and fine-point scraper tools
Soldering station set to 360°C, the Yaroboard in position alongside the XIAO ESP32 C3 module and components
Soldering station set to 360°C, the Yaroboard in position alongside the XIAO ESP32 C3 module and components
Syringe of solder paste – applied in small dots to SMD pads before component placement and reflow
Syringe of solder paste – applied in small dots to SMD pads before component placement and reflow
Roll of desoldering wick (copper braid) with scissors – used to remove excess solder or correct solder bridges between traces
Roll of desoldering wick (copper braid) with scissors – used to remove excess solder or correct solder bridges between traces

Populating the Board

The XIAO ESP32 C3 module is the first component soldered onto the board – it goes in the centre and sets the reference position for all other components. Pin headers are then soldered on both sides to expose all GPIO pins. SMD passives are placed using tweezers and soldered one pad at a time. The tactile button is soldered last.

After soldering, each joint is inspected visually: a good solder joint is shiny, smooth, and concave. A cold or dry joint appears dull and lumpy. Any solder bridges between adjacent pads must be removed with desoldering wick.

Yaroboard with the XIAO ESP32 C3 module seated and pin headers installed on both sides – ready for final soldering
Yaroboard with the XIAO ESP32 C3 module seated and pin headers installed on both sides – ready for final soldering
Board with the majority of components soldered – XIAO module, tactile button, and passive SMD components all in place
Board with the majority of components soldered – XIAO module, tactile button, and passive SMD components all in place

The Completed Yaroboard

The finished Yaroboard provides full GPIO access to the XIAO ESP32 C3 's 11 digital I/O pins, plus power and ground rails, through standard 2.54 mm pin headers on both sides of the board. The USB-C port of the XIAO module remains fully accessible for programming and power. An LED indicator shows power status, and the tactile button provides a convenient reset/user input without external wiring.

The board is ready to be programmed with CircuitPython or MicroPython via the USB-C port. It can be plugged into a breadboard or mounted directly into a project enclosure.

The completed Yaroboard – all components soldered, traces clean, and the board ready for programming and use
The completed Yaroboard – all components soldered, traces clean, and the board ready for programming and use
Final view of the Yaroboard showing clean solder joints across all pin headers and the XIAO ESP32 C3 module
Final view of the Yaroboard showing clean solder joints across all pin headers and the XIAO ESP32 C3 module

Assembling a Personal Desktop CNC Router Lunyee 3018

In parallel with the Fab Lab work, a small desktop CNC router kit was assembled at home during this week. This machine – a hobby-grade 3-axis CNC kit – is intended for light-duty PCB milling, small engraving jobs, and general experimentation. It runs on a GRBL controller (the same G-code sender used in the Candle software shown earlier).

Building and commissioning your own CNC machine is an excellent way to deeply understand how these machines work mechanically and electronically – stepper motor drivers, limit switches, work coordinate systems, and feed rate tuning all become hands-on learning.

The desktop CNC router kit arrived in a package that was much bigger than expected
The desktop CNC router kit arrived in a package that was much bigger than expected.
ER11A collet clamping nut included with the kit – this holds the router bit in the spindle
ER11A collet clamping nut included with the kit – this holds the router bit in the spindle
Close-up of the ER11A clamping nut showing the text and locking thread detail
Close-up of the ER11A clamping nut showing the text and locking thread detail
A spiral-flute end mill alongside the collet nut – showing scale of the small cutting tool
A spiral-flute end mill alongside the collet nut – showing scale of the small cutting tool
The assembled desktop CNC router – orange anodised aluminium frame, vacuum-hole bed, and spindle mount
The assembled desktop CNC router – orange anodised aluminium frame, vacuum-hole bed, and spindle mount
Desktop CNC with all wiring connected – GRBL controller board, stepper drivers, and power supply installed
Desktop CNC with all wiring connected – GRBL controller board, stepper drivers, and power supply installed
Desktop CNC running with the LCD coordinate display active – the machine is calibrated and ready for its first job
Desktop CNC running with the LCD coordinate display active – the machine is calibrated and ready for its first job

Preparing the Copper-Clad Board

The raw material for PCB milling is an FR1 (or FR4) copper-clad board – a rigid substrate coated with a thin copper layer (typically 35 µm / 1 oz). Before loading it into the machine, the board must be cut to a size that fits the job and the machine bed.

A steel ruler and utility knife are used on a self-healing cutting mat. The technique is to score the board firmly three or four times along a ruler edge, then snap the board cleanly along the score line. This gives a clean, square edge without dust or cracking.

Raw copper-clad FR1 boards – two strips of different widths ready for cutting to job size
Raw copper-clad FR1 boards – two strips of different widths ready for cutting to job size
Scoring a copper-clad board with a utility knife along a steel ruler on a cutting mat
Scoring a copper-clad board with a utility knife along a steel ruler on a cutting mat
Completing the board cut – the scored board snaps cleanly to the required dimension
Completing the board cut – the scored board snaps cleanly to the required dimension

Engraving Bits and End Mills

PCB milling uses two different categories of cutting tool:

It is important to select the correct bit for each operation and to inspect bits before use for any damage or dullness. A broken or chipped bit will ruin the copper traces.

Full set of PCB cutting tools – V-bit engraving bits (left, pointed tips) and spiral end mills (right, fluted), each with blue protective caps
Full set of PCB cutting tools – V-bit engraving bits (left, pointed tips) and spiral end mills (right, fluted), each with blue protective caps
Close-up of the V-bit engraving bits sorted by size – the sharp angled tip mills the isolation channels between copper traces
Close-up of the V-bit engraving bits sorted by size – the sharp angled tip mills the isolation channels between copper traces
Close-up of the spiral end mills – used for profile cutting and drilling operations on the PCB board
Close-up of the spiral end mills – used for profile cutting and drilling operations on the PCB board
V-bits laid out for selection – the circled bit (highlighted in red) is the chosen engraving bit for this job
V-bits laid out for selection – the circled bit (highlighted in red) is the chosen engraving bit for this job
End mills laid out – the circled end mill is the selected profile cutter for the board outline cut
End mills laid out – the circled end mill is the selected profile cutter for the board outline cut

Lunyee 3018 Milling

This time, for milling traces, I wanted to try a V-bit on the Lunyee 3018 CNC machine. I installed it in the spindle and started the milling workflow using Candle, the GRBL sender software recommended by the machine supplier. Candle is beginner-friendly and makes it easy to load the toolpath, set the work origin, and send the job to the machine.

V-bit installed in the Lunyee 3018 CNC spindle before milling traces
V-bit installed in the Lunyee 3018 CNC spindle before milling traces.

For the outline cut, I used a larger ball end mill. It worked well for releasing the board from the stock, although for smaller details and holes a smaller end mill would be better.

Candle running the second board milling job.
Outline milling for the second board.
Clean traces after milling with the V-bit on the Lunyee 3018
The V-bit produced clean traces with less cleanup needed on the copper surface.

After soldering my second Yaroboard, it worked the same as the first one and was ready for the next operations.

Second soldered Yaroboard after assembly and testing
The second Yaroboard after soldering and testing.
Ready second Yaroboard. Functioning without any problem.

QPad PCB

As recommended, I decided to mill one more board: the QPad PCB for experiments. I found the Gerber files and assembly information on Quentin Bolsee's GitLab page:

https://gitlab.cba.mit.edu/quentinbolsee/qpad-xiao

I also had a XIAO RP2040, so I made one more board for that microcontroller and prepared the electronic components for assembly.

Milling the QPad traces.
QPad PCB after milling with clean copper traces
The QPad milling result was clean, with well-isolated traces.

At that time I did not have a small enough end mill to drill the 1 mm holes, so I used a drill press and drilled them manually. This allowed me to install pin headers and remove the microcontroller module when needed, without soldering the microcontroller permanently to the board.

QPad PCB after outline cutting
The outline bit was a little large, but the board was still usable.

I also received a display and the necessary components for the QPad with the XIAO RP2040, then uploaded test code from Quentin's page.

QPad with XIAO RP2040, OLED display, and components connected for testing
QPad with XIAO RP2040, OLED display, and components connected for testing.

I tried the Tetris game and it worked well. Based on that test, I asked ChatGPT to help write another game in the style of Space Invaders, with simple graphics and animation.

QPad display test code from Quentin's repository

Create a beginner-friendly Space Invaders style game for an Arduino Uno with a 128x64 I2C OLED display and push buttons.

Hardware setup:
- Board: Arduino Uno
- Display: SSD1306 128x64 OLED display, I2C
- OLED VCC -> 5V
- OLED GND -> GND
- OLED SDA -> A4
- OLED SCL -> A5
- Left button -> D2
- Right button -> D3
- Shoot button -> D6
- Each button uses INPUT_PULLUP
- One side of each button goes to the Arduino pin
- The other side of each button goes to GND
- Optional: buzzer on D9 for simple sound effects

Game request:
Generate a simple Space Invaders style game where the player controls a spaceship at the bottom of the OLED screen, moves left and right, and shoots upward at enemy invaders. The enemies should move across the screen and slowly come downward. The game should include a start screen, score display, simple enemy animation, collision detection, game over screen, and restart option. Please provide complete Arduino Uno code ready to upload, list the libraries needed, explain how the controls work, and briefly explain the main functions of the code in simple language so students can understand and learn from it.

After some tuning and customization of the interface, I could play the game. It has three levels and difficulty progression, which made this a fun extension of the electronics production assignment.

Space Invaders style game running on the OLED display
Space Invaders style game running on the OLED display.
Testing the Space Invaders style game on the QPad setup.

Reflection

This week I learned the full workflow of making a PCB: preparing files, generating toolpaths, milling traces, cutting the outline, soldering components, and testing the final board. It helped me understand that PCB production is not only a digital process; small physical details like bit choice, Z-origin, board flatness, and milling depth can strongly affect the result.

One important highlight was using a V-bit on the Lunyee 3018 CNC machine. The traces came out very clean, and the board needed less cleaning after milling. I also learned that tool selection is very important. My outline bit was a little too large, and I did not have a small end mill for 1 mm holes, so I solved this by drilling the holes manually with a drill press.

I successfully made and tested my second Yaroboard, and it worked the same as the first one. I also milled a QPad PCB for the XIAO RP2040, soldered the components, connected the OLED display, and tested it with example code. Running the Tetris game and then creating a Space Invaders style game with AI support was an exciting extension of the assignment.

For next time, I want to prepare better tools in advance, especially smaller end mills for drilling and outlines. Overall, this week helped me become more confident in PCB production and showed me how design, milling, soldering, and programming all connect together in one complete workflow.

References