Status (May 2026): Board assembly and bring-up complete. Currently debugging motor driver firmware and implementing FreeRTOS on the RP2354A.
Repository: Private during bring-up — available on request after firmware milestone.
I'm building an open-source liquid-handling system for labs and makers who can't afford to buy from Hamilton and want something more friendly than what 1985 has to offer on eBay. The current hardware is a programmable, occlusion-sensing, heater-jacketed syringe pump on a custom PCB — about $120 of components at full single-unit retail, driven by a modern browser-based React UI. The plan is to grow it into a carousel-based autonomous dispensing system driven by natural language: Opentrons-class lab automation at a third of the price for researchers, biohackers, and small-batch makers currently doing precision work with a pipette and a lot of patience.
I have a gut-level reaction to expensive, locked-down tools that sit just out of reach of the people and labs who could move the needle but lack the force-multiplier of automation. The best thing I can do with my time is build alternatives.
I designed the first version of this pump on my bedroom desk. I was fresh out of college, no EE lab, no institution backing me, and a 0% APR credit line. I picked a bare RP2354A microcontroller instead of a dev-board stamp because I wanted to learn how to build the real thing. I designed the schematic to be as boring and reliable as possible so I could spend the risk budget on the build itself. The board was paste-stenciled on a 3D-printed jig because I didn't want to buy one, hot-reflowed on a hot plate, and hand-assembled under my stereo microscope.
When I needed thermal data on my motor driver and didn't own a fancy thermal camera, I built a fixture from a smartphone thermal dongle and had it working by the afternoon. When the linear-stage vendor didn't publish CAD, I picked up my calipers and modeled it. This is an exercise in "if it doesn't exist at a price you can afford, build it".
I'm not building this for the labs that can already afford a Harvard Apparatus. I'm building for the PhD student who lost their lab budget to NIH cuts, the biohacker running serial dilutions who doesn't have enough hours in the day, and the artist making small-batch fragrances in their kitchen who needs batch consistency. The bottleneck is the same for all of them: cheap equipment isn't designed with the human in mind, and the best equipment is priced out of reach.
A 4-layer board for a syringe pump: RP2354A microcontroller, TMC2209 stepper driver, dual PWM-heated reservoirs with PID, force-sensing resistor for plunger feedback, and limit switches for end-of-travel. USB-C for logic, 24V barrel jack for motor and heaters.
This is the first complex board I've designed without a dev-board stamp for the MCU. I designed it to be boring on the schematic and unforgiving on the build — paste-stenciled, hot-plate and hot-air reflowed, hand-placed under a microscope on my bedroom desk. With one shot at JLC turnaround and no EE lab, I put the risk budget into the build, not the schematic.
To assemble the board I built a 3D-printed stencil jig from a guide, paste-stenciled the bare PCB, hand-placed components under a stereo microscope (0603 was the smallest passive footprint), and reflowed on a hot plate.
The first reflow run left shorts on the IC and QFN footprints, which I cleaned up with hot-air rework and solder wick. The hardest part by a wide margin was the TMC2209 as the QFN-28 was harder to seat cleanly than the QFN-60 RP2354A, which surprised me.
After cleanup, I flashed the RP2354A and verified bring-up over USB. The 24V rail and gate drive are validated, the buck is producing 12V within spec, and the heater MOSFETs are switching cleanly. Motor commutation is the current debug target, with implementing the firmware as the next step.
The interesting decision on this board isn't on the schematic. With one shot at JLC turnaround and a bedroom workspace, the schematic risk had to come down so the build risk could go up. Every component on this board is on a beaten path, chosen to be derisked against a published reference and stocked at distributors I could actually order from.
● RP2354A, this SKU has on board memory which is one less thing to go wrong on the board and keeps the board decluttered
● TMC2209 in the standalone STEP/DIR configuration straight from Figure 3.1 of the datasheet, with VREF set by a 10k/10k divider off the chip's own internal 5V regulator (2.5V → ~3A RMS motor capacity with my 0.39Ω external sense).
● MP2338 buck in the application-circuit topology to drop 24V to 12V for the heaters.
● Heater stage: AO3400A low-side N-FETs with MURS120 flyback diodes. The heaters live off-board on solder-wire pads, so cable inductance was an unknown I couldn't characterize at design time.
The board has 17 test points, including probe pads on every rail (+24V, +12V, +3.3V, +1V1, GND) and on every signal that matters during bring-up including the stepper motor rails. A 16-pin header breaks out 13 GPIO plus power and ground for any expansion or instrumentation I haven't thought of yet.
The dual-rail power separation is a debug feature, not just an electrical one: I can program and exercise firmware on USB alone, with no 24V supply anywhere near the bench, until I'm ready to drive the motor and heaters.
Heater Stage:
The MURS120 across the heater catches any kick from the cabling which is on solder-wire pads and not characterized at design time.
This project doesn't ship without fixtures. I designed and printed both the syringe-stage holder and the thermal-camera mount on a Prusa Mini, modeling them in OnShape.
I designed a rudimentary fixture to hold a 30mL syringe in place on an off the shelf linear stage.
I also had to model the linear stage from measurements as it didn’t come with CAD from the vendor.
This allowed me to test the fluid transfer mechanics as I built the code and electronics.
I used a thermal camera to verify motor driver thermals for performance and safety on my junction temperatures.
Seeking a cost-effective solution, I paired a smartphone thermal dongle with a 3D-printed stand to maintain a consistent distance from the board. This fixture was completed in an afternoon.
● Socket the motor driver for field swap. The TMC2209 is dropped in. If it burns out or shows a defect in the field, the whole board is the field-replaceable unit. A socket compatible design would let me swap drivers on a bench in five minutes and would have saved me debug time during bring-up by making the driver isolatable from the rest of the board.
● Power-up sequencing. Right now USB and 24V are independent. If 24V comes up first with USB off, the heater FET gates float briefly. I want gate pull-downs near Q1/Q2.
● Heater connector. Solder-wire pads worked for a desk prototype. Off the desk, I'd want a real connector with strain relief.
● Reverse-polarity protection on the 24V input. A series PFET or a TVS-and-fuse pair are both candidates.
● 12V current sense. Power-budget telemetry would help me watch heater duty cycles in firmware rather than guess at them.
● MCU: Raspberry Pi RP2354A (RP2350 + integrated flash), 60-QFN, 0.4mm pitch
● Motor drive: TMC2209-LA, 24V VS, 0.39Ω external sense, UART-configurable
● Heaters: Two 18.7Ω film heaters at 12V (~7.7W each), N-FET low-side PWM with flyback diodes
● Power in: USB-C 5V (logic only) + 24V barrel jack (motor + heater bus)
● Power tree: USB-C → NCP1117 LDO → 3.3V; 24V → MP2338 buck → 12V; RP2354A internal SMPS → 1.1V core
● Sensing: 2× 10k NTC thermistors (B3950), 1× force-sensing resistor, 2× limit switches
● Stack: 4-layer JLCPCB, KiCad 9, hand-assembled at home
Browser-based control interface mock-up built using Google Stitch
Temperature PID, pressure monitoring, syringe profile management, and serial telemetry.