

4-pump module
Compile recipes, then execute cocktails at rumtime.
- Size
- 84.7 × 20.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 30
- Nets
- 42
- Pads
- 115
- Tracks, vias
- 181, 3
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 18 Jun 2026
- Updated
- 7 Nov 2026
Overview
4-pump module is an open-source printed circuit board by cjlawson02, from the cjlawson02/Rumtime repository on GitHub, published under the MIT licence. It is a 2-layer board of 84.7 × 20.9 mm with 30 parts on 42 nets, routed with 181 tracks and 3 vias.
Its parts include 16 resistors, 9 connectors, 1 capacitor, 1 IC and 1 fuse.
README
README.mdRumtime
Rumtime is a modular cocktail execution engine: ingredients are registered as services, recipes are resolved at runtime, and beverages are dispensed through a scalable ESP32-powered pump architecture.
This repo holds Rumtime documentation, Phase 0 bench-rig firmware, and KiCad PCB specifications. CAD and full product firmware are still in progress. The v1 hardware design uses food-safe tubing, Kamoer KPHM100-class reversible peristaltic pumps, modular 4-pump cartridges, and an ESP32-S3 controller. Software stack direction (Cloudflare kiosk UI, ESP32 dispense engine) and locked firmware runtime model (ControlTask + command queue on FreeRTOS) are in docs/16-firmware-and-software-architecture.md. Kiosk UX and React + shadcn stack in docs/17-kiosk-ui-plan.md; production app at ui/kiosk/. Provisional device HTTP contract in docs/18-kiosk-device-api.md.
Current design snapshot
- Version 1 pump count: 8 installed pumps.
- Expansion target: 12 total pumps via one additional 4-pump module.
- Control platform: ESP32-S3 or similar ESP32 board, Wi-Fi only.
- Pump strategy: One reversible peristaltic pump per ingredient.
- Measurement strategy: Timed dispensing after calibration; load cell required for glass/ice detection, flow-gated pour start, and sanity checks.
- Carbonation: Do not pump carbonated mixers in v1. Software should instruct the user to top off manually.
- Cleaning: Moderate-effort cleaning with warm-water flush and Star San/session sanitizer workflow.
- Budget target: About $500 max for v1, excluding liquor and ingredients.
- Build style: Finished-looking countertop dispenser, with external bottles and replaceable tubing.
Document map
| File | Purpose |
|---|---|
AGENTS.md | Coding-agent and contributor behavior rules based on the requested Karpathy-style guidelines. |
docs/00-project-brief.md | Scope, goals, assumptions, and non-goals. |
docs/01-decisions.md | All captured design decisions from the planning conversation. |
docs/02-system-architecture.md | Hardware architecture and module layout. |
docs/03-parts-list-bom.md | Initial parts list with budget notes and sourcing guidance. |
docs/04-plumbing-and-fluid-path.md | Tubing, fittings, bottles, nozzles, and ingredient compatibility. |
docs/05-electronics-and-pcb.md | Electrical design and 4-pump PCB guidance. |
docs/06-flow-calibration-and-inventory.md | Timed flow calibration, flow-gated dispense, load cell, and inventory tracking. |
docs/07-cleaning-and-food-safety.md | Cleaning workflow, sanitizer handling, and maintenance assumptions. |
docs/08-mechanical-design.md | Enclosure, pump cartridges, drip tray, nozzle cluster, and fridge notes. |
docs/09-build-plan-and-verification.md | Staged build plan with success criteria and test checks. |
docs/10-open-questions-and-v2.md | Deferred decisions, v2 ideas, and risks. |
docs/11-sourcing-notes.md | Sourcing notes and search terms for pumps, tubing, fittings, electronics, and enclosure parts. |
docs/12-phase-0-decisions.md | Research-backed Phase 0 part decisions (pump, PSU, KiCad). |
docs/13-phase-0-mini-bom.md | Phase 0 shopping list (~2-pump bench rig). |
docs/14-bench-test-protocol.md | Bench tests, pass criteria, and session log template. |
docs/15-project-timeline.md | Gantt chart, milestones, and procurement log (order/receive dates). |
docs/16-firmware-and-software-architecture.md | Software stack decisions, firmware layers, sequence runner, NVS ownership, migration from bench rig. |
docs/17-kiosk-ui-plan.md | Locked kiosk UX, connectivity, and guest/setup flows. |
ui/kiosk/ | Production kiosk PWA — see ui/kiosk/README.md. |
firmware/bench-rig/ | ESP32-S3 + TB6612 bring-up firmware (PlatformIO). |
firmware/controller/ | ESP32-S3 product firmware scaffold (ControlTask runtime; pump subsystem implemented). |
hardware/kicad/ | KiCad 4-pump module project, schematic spec, and kicad-cli scripts. |
hardware/cad/ | build123d parametric CAD (src/), dimension refs (refs/), export scripts; Onshape for assembly review only. |
Design philosophy
Build the simplest version of Rumtime that can make repeatable drinks, clean up reasonably, and expand without rewiring everything. Avoid premature complexity such as inline flow meters, shared manifolds, fridge drilling, carbonated pumping, or fully custom embedded module networks until the basic 8-pump machine has been validated.
Current status
Next action: Fit-check/measure the assembled load-cell cantilever, then solder the bar to HX711 (E+/E−/A+/A−) and run Tests 7–9. Parallel: finish 4-pump PCB layout (silkscreen/placement). Schematic v1 is ERC-clean. Bar 75 mm, holes 5 / 15 / 59 / 69, M4 tapped — hardware/cad/refs/estardyn-load-cell.md. HX711↔MCU already wired (GPIO 8/9). Sessions: 06 (measure + print) · 07 (assembled, not measured).
Done so far: 8× correct 12 V HB pumps are on hand and the 2 wrong 24 V units were returned. P1 + P2 are bench-validated @ 1.75 ml/s; dual-pump ~0.4 A; anti-drip 100 ms; P2 sequential 50 ml target → ~45 ml (anti-drip); host CLI benchctl.py + proto=2 serial parser. The other 6 pumps still need incoming inspection and variance testing.
Decisions are locked in docs/12-phase-0-decisions.md (KPHM100-HBB10 pump, TB6612 breakout, ESP32-S3-DevKitC-1, KiCad for Phase 2 PCB).
First prototype goal
Validate the core liquid path with 2–4 pumps. Module schematic v1 is done (ERC clean). Layout/silkscreen in progress. Fab waits on DRC (I2C bring-up is Test 10 on the first board).
- Dispense 15 ml, 30 ml, and 60 ml targets by time after calibration.
- Validate flow-gated dispense vs timed-only on de-primed and post–anti-drip lines (Test 9) — v1 pour default, not a PCB gate.
- Reverse briefly after pours to reduce drips; document sequential pour drift (Test 4b).
- Flush simple syrup and grenadine adequately with warm water.
- Confirm tubing and nozzles do not retain obvious flavor or clog during a normal session.
- Confirm load cell detects glass, ice tare, flow onset, and no-flow conditions (Tests 7–9) — v1 pour, not a PCB gate.
- I2C pump control is proven on the first assembled module (Test 10), not a pre-fab MCP23017 breakout.
After DRC, fabricate the 4-pump module (hardware/kicad/) and proceed to the finished enclosure.
Parts
30| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16 |
| 1 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1 |
| 1 | 2A PTC TBD | Fuse:Fuse_1812_4532Metric_Pad1.30x3.40mm_HandSolder | F1 |
| 1 | A0 | Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP1 |
| 1 | A1 | Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP2 |
| 1 | Conn_02x03_Counter_Clockwise | Connector_Molex:Molex_Micro-Fit_3.0_43045-0600_2x03_P3.00mm_Horizontal | J1 |
| 1 | MCP23017x-x-SO | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U1 |
| 1 | PUMP 1 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J3 |
| 1 | PUMP 2 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J4 |
| 1 | PUMP 3 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J5 |
| 1 | PUMP 4 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J6 |
| 1 | Pololu1-CTRL | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J7 |
| 1 | Pololu1-PWR | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J8 |
| 1 | Pololu2-CTRL | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J9 |
| 1 | Pololu2-PWR | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J10 |
Questions
How big is the 4-pump module PCB?
It measures 84.7 × 20.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the 4-pump module use?
30 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the 4-pump module KiCad files?
From the cjlawson02/Rumtime repository on GitHub, at the commit this page was made from: the board is hardware/kicad/4-pump-module/4-pump-module.kicad_pcb and its schematic hardware/kicad/4-pump-module/4-pump-module.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the 4-pump module design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
More from cjlawson02/Rumtime
1- 2 layers76.7 × 51.1 mm

Similar boards
- 2 layers52.2 × 52.2 mm

Base promicro
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards
30 parts3kApache-2.0 - 2 layers40.6 × 15.2 mm

- 2 layers270 × 11 mm

Daylight
VoronDesign/Voron-Hardware
Cool Hardware designed by the Voron Design group
30 parts1.1kGPL-3.0 - 2 layers65 × 30 mm

Rgb to hdmi
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
30 parts1kGPL-3.0 - 2 layers40.5 × 58 mm

Initial v
tenderlove/initial-v
It's a BMW shifter converted to a Bluetooth Keyboard that you use with Vim
30 parts1kApache-2.0 - 2 layers34.3 × 41.8 mm

MotionCubeViewAllForces
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
30 parts915 - 2 layers57.4 × 62 mm

- 2 layers52.1 × 46.8 mm
