

Fertilizer Pump
The fertilizer dispenser automatically doses fertilizer concentrates or stock solutions using one or more peristaltic pumps. The amount dispensed depends on the selected recipe and the intended irrigation water volume.
- Size
- 100 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 102
- Nets
- 106
- Pads
- 419
- Tracks, vias
- 66, 7
- Pours
- 9
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 16 Sep 2026
- Updated
- 5 Nov 2026
Overview
Fertilizer Pump is an open-source printed circuit board by Handkep, from the Handkep/Fertilizer-Pump repository on GitHub. It is a 2-layer board of 100 × 100 mm with 102 parts on 106 nets, routed with 66 tracks and 7 vias.
It is built around the ESP32-S3-WROOM-1-N8, TPS54302 and AO3400A, with the SS14, ESD762DBZ and SI2307A among its other parts. Its parts include 30 capacitors, 27 resistors, 14 connectors, 7 diodes and 5 transistors. It belongs with the ESP32 boards of this library.
Main components
6ESP32-S3-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -98.2dBm 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA Bluetooth5.0 ESP32-S3 Chip On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesTPS54302
UncategorisedTexas InstrumentsAO3400A
SOT-23-55℃~+150℃ 1 N-channel 1.45V 1.4W 30V 48mΩ@2.5V 5.7A 50pF 630pF 75pF 7nC@10V N-Channel SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETsSS14
SMA(DO-214AC)-55℃~+150℃ 1A 25A 300uA@40V 40V 550mV@1A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky DiodesESD762DBZ
SOT-23ESD And Surge Protection (TVS/ESD)Texas InstrumentsSI2307A
SOT-23-55℃~+150℃ 1 P-Channel 1.25W 10nC@15V 126pF 30V 3A 3V 50mΩ@10V、70mΩ@4.5V 565pF 75pF P-Channel SOT-23 MOSFETs ROHSUMWMOSFETs
README
README.mdAutomatic Fertilizer Dispenser
The fertilizer dispenser automatically doses fertilizer concentrates or stock solutions using one or more peristaltic pumps. The amount dispensed depends on the selected recipe and the intended irrigation water volume. After dosing, the pump and outlet tubing are flushed with water to help prevent salt deposits.
Project status: In development. The Peristaltic pump is currently in the prototyping phase. PCB design is in progress. The user interface and display are still to be determined.
How It Works
Each recipe specifies a dose in ml per liter of irrigation water for each fertilizer. The required amount is calculated as follows:
Fertilizer volume [ml] = Water volume [L] × Dose [ml/L]
Example: 10 L of water × 5 ml/L = 50 ml of fertilizerA recipe can contain multiple fertilizers. Each fertilizer has its own separate channel, and the fertilizers are mixed only in the watering can. In the future, the device may support mixing fertilizers, after the pumps, to have a single outlet for the mixed solution.
Operation
The planned interface consists of a display and a rotary encoder with a push button:
- Set the water volume: Turn the knob. Each detent increases the selected volume by 1 L.
- Confirm the volume: Press the knob to proceed to recipe selection.
- Select a recipe: Turn the knob to choose the desired recipe.
- Start dosing: Press the knob again to dispense the fertilizer.
the further interface planning is still in progress. The display type has not yet been selected.
Hardware
| Component | Planned configuration |
|---|---|
| Controller | ESP32-S3 |
| Channels | Four positions, initially only two populated with TMC2209 modules |
| Motor drivers | Plug-in TMC2209 StepStick modules |
| Driver control | STEP/DIR/EN and UART |
| Pumps | Custom stepper-driven peristaltic pumps, designed in Onshape |
| Motors | NEMA17 stepper motors |
| User interface | Rotary encoder with push button and a display |
| Display | To be selected: a small OLED or another display type; no seven-segment display |
| Calibration | Individual steps-per-ml calibration for each pump |
Power and USB
V1
- Motor and solenoid valve operation requires USB-C PD or a separate 12 V power supply.
- USB-C provides data connectivity and firmware flashing.
- USB alone is intended to power the control electronics, including the ESP32-S3 and user interface. Motors and solenoid valves remain inactive without the 12 V supply. The 12 V supply should not be required for firmware flashing.
- USB Power Delivery is included in V1.
Fluid Path and Flushing
Each fertilizer channel has a selector valve upstream of the pump:
flowchart LR
fertilizer["Fertilizer concentrate<br/>or stock solution"] -->|Dosing| valve{"Selector valve"}
water["Flush water"] -->|Flushing| valve
valve --> pump(["Peristaltic pump"])
pump -->|Outlet tubing| can["Watering can"]
classDef fertilizerStyle fill:#dcfce7,stroke:#15803d,color:#14532d,stroke-width:2px;
classDef waterStyle fill:#dbeafe,stroke:#2563eb,color:#1e3a8a,stroke-width:2px;
classDef hardwareStyle fill:#f1f5f9,stroke:#64748b,color:#0f172a,stroke-width:2px;
classDef outputStyle fill:#fef3c7,stroke:#d97706,color:#78350f,stroke-width:2px;
class fertilizer fertilizerStyle;
class water waterStyle;
class valve,pump hardwareStyle;
class can outputStyle;
linkStyle 0 stroke:#15803d,stroke-width:2px;
linkStyle 1 stroke:#2563eb,stroke-width:2px;V1 will initially use an inexpensive electrically operated two-position solenoid selector valve.
After dosing, the valve switches to water to flush the pump and outlet tubing. The flushing water also flows into the watering can.
The additional flushing water is not included in the fertilizer dose calculation. For the intended use, this extra volume is considered small relative to the uncertainty of measuring the water volume in a watering can.
Planned for V2
- "peristaltic" selector valve built out of a servo and a 3D-printed part.
- The servo connector will already be included on the V1 PCB to simplify this future upgrade.
Development Status
The operating concept, four channel positions with two initially populated motor drivers, and separate fertilizer paths have been defined.
Practical testing is still pending. The display has not yet been selected.
Future Possibilities
- Release as an open-source project
- A PCB kit or complete DIY kit
- Accompanying project documentation on YouTube
License
A license has not yet been selected.
Parts
102| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C5, C6, C12, C13, C22, C24, C26, C28, C29, C30 |
| 7 | 10K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R18, R19, R20, R21, R22 |
| 5 | 22u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C9, C10, C16, C17, C20 |
| 4 | 100 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R24, R25, R27, R29 |
| 4 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R23, R26, R28, R30 |
| 4 | 220µF | Capacitor_SMD:CP_Elec_6.3x7.7 | C1, C23, C25, C27 |
| 4 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q2, Q3, Q4, Q9 |
| 4 | BTT TMC2209 | fertilizer-pump:BTT TMC2209 | A1, A2, A3, A4 |
| 4 | Conn_01x02 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J11, J12, J13, J14 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 4 | SS14 | Diode_SMD:D_SMA_Handsoldering | D4, D5, D6, D7 |
| 3 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C7, C14, C21 |
| 2 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R10, R12 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R16, R17 |
| 2 | 10u | Inductor_SMD:L_APV_APH0630 | L1, L2 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C19 |
| 2 | 22 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R14, R15 |
| 2 | 220uF | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C11, C18 |
| 2 | ESD762 | Package_TO_SOT_SMD:SOT-23_Handsoldering | D1, D2 |
| 2 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1, JP2 |
| 2 | TPS54302 | Package_TO_SOT_SMD:SOT-23-6 | U3, U4 |
| 1 | 10.5K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R8 |
| 1 | 13.3k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R13 |
| 1 | 1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5 |
| 1 | 1n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4 |
| 1 | 22k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R11 |
| 1 | 47p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8 |
| 1 | 49.9K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6 |
| 1 | 5.1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R7 |
| 1 | 75p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C15 |
| 1 | Barrel_Jack_Switch | Connector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_Horizontal | J15 |
| 1 | Connect shield to GND | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP3 |
| 1 | D_Zener | fertilizer-pump:D_SOD-123FL | D3 |
| 1 | ESP32-S3-WROOM-1 | PCM_Espressif:ESP32-S3-WROOM-1 | U1 |
| 1 | HUSB238_xxxDD | Package_DFN_QFN:WDFN-10-1EP_3x3mm_P0.5mm_EP1.8x2.5mm_ThermalVias | U2 |
| 1 | SI2307A | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Servo1 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J5 |
| 1 | Servo2 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J7 |
| 1 | Servo3 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J8 |
| 1 | Servo4 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J9 |
| 1 | Stepper1 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J1 |
| 1 | Stepper2 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J2 |
| 1 | Stepper3 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J3 |
| 1 | Stepper4 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J4 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J6 |
| 1 | VMotor source select | Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm | JP8 |
| 1 | VRegulator source select | Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm | JP9 |
Similar boards
- 4 layers91.4 × 91.4 mm

- 4 layers130 × 100 mm

Atlas carrier ctrl
md-sazzad-eee/ATLAS
Modular multi-robot system: a carrier robot that docks, transports, charges and redeploys two small agent robots. KiCad, FreeCAD, MATLAB/Simulink, COMSOL and ESP32 firmware.
157 parts - 2 layers90 × 70.1 mm

Sra board
VarunAPatil/Wall-E-2027-Board-Design
The SRA board brings the control, sensing, display, power, and motor interfaces for a small mobile robot onto one development board.
186 parts - 2 layers100 × 100 mm

Hydroponics reservoir controller
bookofthefuture/hydroponics-pcb
KiCad PCB designs for the two-tier IKEA hydroponics monitoring/control system
82 parts - 4 layers48 × 42 mm

Gimme danger
EDA-bench/eda-bench
Execution-based benchmark for open-book KiCad PCB reconstruction agents
113 parts4 - 4 layers59.6 × 48.3 mm

Plant1337
chl33/Plant133
Firmware, circuit design, and 3D-printable components for an automated plant-watering system.
61 parts6MIT - 4 layers63.2 × 70.5 mm

- 4 layers80 × 106 mm

NodeHardware
AleksaHeler/FlexNode
FlexNode is a DIY "smart home" system with a single hub and multiple flexible and customizable nodes
220 partsGPL-3.0
Questions
How big is the Fertilizer Pump PCB?
It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Fertilizer Pump use?
102 parts, built around the ESP32-S3-WROOM-1-N8, TPS54302, AO3400A and SS14. 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 Fertilizer Pump KiCad files?
From the Handkep/Fertilizer-Pump repository on GitHub, at the commit this page was made from: the board is KiCad/fertilizer-pump.kicad_pcb and its schematic KiCad/fertilizer-pump.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Fertilizer Pump design in my own project?
Its repository states no licence, so its author keeps all rights: ask Handkep before reusing the design.