Skip to the content
2 layers100 × 100 mmFertilizer Pump, the printed circuit board in 3D

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

6

README

README.md

Automatic 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:

text
Fertilizer volume [ml] = Water volume [L] × Dose [ml/L]

Example: 10 L of water × 5 ml/L = 50 ml of fertilizer

A 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:

  1. Set the water volume: Turn the knob. Each detent increases the selected volume by 1 L.
  2. Confirm the volume: Press the knob to proceed to recipe selection.
  3. Select a recipe: Turn the knob to choose the desired recipe.
  4. 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

ComponentPlanned configuration
ControllerESP32-S3
ChannelsFour positions, initially only two populated with TMC2209 modules
Motor driversPlug-in TMC2209 StepStick modules
Driver controlSTEP/DIR/EN and UART
PumpsCustom stepper-driven peristaltic pumps, designed in Onshape
MotorsNEMA17 stepper motors
User interfaceRotary encoder with push button and a display
DisplayTo be selected: a small OLED or another display type; no seven-segment display
CalibrationIndividual 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:

mermaid
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
QtyValueFootprintReferences
11100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C5, C6, C12, C13, C22, C24, C26, C28, C29, C30
710KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R18, R19, R20, R21, R22
522uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C10, C16, C17, C20
4100Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR24, R25, R27, R29
4100kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR23, R26, R28, R30
4220µFCapacitor_SMD:CP_Elec_6.3x7.7C1, C23, C25, C27
4AO3400APackage_TO_SOT_SMD:SOT-23Q2, Q3, Q4, Q9
4BTT TMC2209fertilizer-pump:BTT TMC2209A1, A2, A3, A4
4Conn_01x02Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ11, J12, J13, J14
4MountingHoleMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4
4SS14Diode_SMD:D_SMA_HandsolderingD4, D5, D6, D7
310uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC7, C14, C21
2100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10, R12
210kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR16, R17
210uInductor_SMD:L_APV_APH0630L1, L2
21uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C19
222Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR14, R15
2220uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC11, C18
2ESD762Package_TO_SOT_SMD:SOT-23_HandsolderingD1, D2
2SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP2
2TPS54302Package_TO_SOT_SMD:SOT-23-6U3, U4
110.5KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR8
113.3kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
11KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
11nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4
122kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11
147pCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC8
149.9KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6
15.1KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7
175pCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC15
1Barrel_Jack_SwitchConnector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_HorizontalJ15
1Connect shield to GNDJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP3
1D_Zenerfertilizer-pump:D_SOD-123FLD3
1ESP32-S3-WROOM-1PCM_Espressif:ESP32-S3-WROOM-1U1
1HUSB238_xxxDDPackage_DFN_QFN:WDFN-10-1EP_3x3mm_P0.5mm_EP1.8x2.5mm_ThermalViasU2
1SI2307APackage_TO_SOT_SMD:SOT-23Q1
1Servo1Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ5
1Servo2Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ7
1Servo3Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ8
1Servo4Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ9
1Stepper1Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1
1Stepper2Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ2
1Stepper3Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ3
1Stepper4Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ4
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ6
1VMotor source selectJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP8
1VRegulator source selectJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP9

Similar boards

  • 4 layers91.4 × 91.4 mmBalise tofs, the printed circuit board in 3D

    Balise tofs

    EsialRobotik/Electronique

    103 parts
  • 4 layers130 × 100 mmAtlas carrier ctrl, the printed circuit board in 3D

    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 mmSra board, the printed circuit board in 3D

    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 mmHydroponics reservoir controller, the printed circuit board in 3D

    Hydroponics reservoir controller

    bookofthefuture/hydroponics-pcb

    KiCad PCB designs for the two-tier IKEA hydroponics monitoring/control system

    82 parts
  • 4 layers48 × 42 mmGimme danger, the printed circuit board in 3D

    Gimme danger

    EDA-bench/eda-bench

    Execution-based benchmark for open-book KiCad PCB reconstruction agents

    113 parts4
  • 4 layers59.6 × 48.3 mmPlant1337, the printed circuit board in 3D

    Plant1337

    chl33/Plant133

    Firmware, circuit design, and 3D-printable components for an automated plant-watering system.

    61 parts6MIT
  • 4 layers63.2 × 70.5 mmHomectrl v2, the printed circuit board in 3D

    Homectrl v2

    jeevan9s/homectrl-sys

    home automation controller

    141 parts2
  • 4 layers80 × 106 mmNodeHardware, the printed circuit board in 3D

    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.