HTMAA course site

75 Amherst St, Cambridge, MA 02139

About

Name ---------- Daniel Harianto
Work ---------- Web Portfolio
Media --------- @danielharianto_
AffiliationMS, Architectural Studies - SMArchSMassachusetts Institute of Technology

** Open a selected work **
or visit the web portfolio

I explore how design and computation can make relationships between people, space, and complex systems more visible, legible, and actionable.

QR code

** Thank you and please come again **

Week 05

Electronics Production

10/14/26
Assembled module with the servo and board inside

TLDR

This week I milled and assembled two boards. The first is the LED board I designed in Week 04 with the XIAO RP2040. The second is the servo board for my final project, which I put inside a 3D-printed casing to test how two modules articulate with a simple servo motor.

Milling Process

Trace Files

Before milling, I exported the trace layers of both boards as black and white PNGs. White is the copper that stays, and black is what the end mill cuts away.

Black and white trace images of the two boards prepared for milling

Roland SRM-20

I exported the KiCad layouts from Week 04 and milled both boards on a Roland SRM-20 from single-sided copper stock. The machine first isolates the traces, then cuts the board outline.

Roland SRM-20 milling machine and a board being milled on the bed

Board 1: LED Board

Stuffing and Testing

I soldered the XIAO RP2040, five LEDs with their resistors, and the push button onto the milled board. When I press the button, the LEDs light up, which confirms the traces and solder joints work the same way the breadboard prototype did in Week 04.

Finished LED board with the XIAO RP2040 and five LEDs, tested by pressing the button

Board 2: Servo Board and Module Casing

Servo Board

To continue my final project, I milled the single-sided servo board and soldered the XIAO ESP32-S3, the push button, the status LED, and the servo header onto it.

Milled servo board and the same board with the XIAO ESP32-S3 and servo cable connected

Pressing the button on the board moves the servo, which confirms the board works before it goes into the casing.

Casing Design

To test the articulation, I designed a casing for each module half: a base plate that holds a micro servo at the center, and a lattice shell that closes over it. The magnets sit in the round openings of the shell so the modules can attach to each other.

Exploded 3D model showing the base plates and lattice shells assembling into a module

3D Printing

I printed the base plates standing up with supports and the lattice panels flat on the bed.

Slicer preview with two base plates and six lattice panels on the build plate Printed base plates with servos mounted and lattice shells

Articulation Test

After assembly, I connected the servo board to my laptop and sent the servo a series of angles (0, 60, 120, and 150 degrees) to watch one half of the module rotate against the other.

Assembled module connected to the servo board over USB Module under test with the servo angles printed in the serial monitor

Close up, the servo turns one half of the module against the other around the diagonal joint.

Attaching two modules with the magnets shows how they can bend into different configurations through the rotating joint.

Two printed modules stacked and rotated against each other

Reflection

Not every board came out right. My first attempts at the servo board did not mill evenly: on one side the traces were not fully isolated, and on the other the cut was too shallow to separate the copper cleanly. Checking that the stock is flat and firmly fixed to the bed, and confirming the cut depth before running the whole job, would have saved me these attempts.

Two failed servo board attempts milled on one piece of copper stock

The casing test shows that a single servo can rotate one half of a module against the other. As next steps, I will try a wireless board so each module can be controlled without a cable, and test the joint under load to see how much weight the servo and magnets can hold.