VIN / GND terminals.| Terminal | GPIO | Function | Notes |
|---|---|---|---|
| VIN/GND | -- | Power (12-24V DC) | Polarity protected. Use clean industrial PSU. |
| OUT1/COM1/NC1 | 27 | Pump Relay (10A SPDT) | Connect pump to NO-COM for normally-open. |
| IN1 | 19 | Float Switch (NPN pull-up) | Switch between IN1 and GND. LOW = tank full. |
| IN2 | 18 | Fault Reset Button | Momentary switch to GND. Clears latched faults. |
| IN3 | 5 | Flow Sensor (pulse) | Hall-effect meter. Signal to IN3, power from 5V/GND. |
| VI1 | 36 | Pressure/Process Sensor | 4-20mA or 0-10V selectable in Settings. |
| VO1/IO1 | 25 | VFD Analog Setpoint | 0-10V or 4-20mA via SW1 DIP switch on board. |
| A+ / B- | 1/3/22 | RS485 Bus | Modbus RTU. Add termination at end of cable run. |
Maintains constant pressure using sensor feedback and pump start/stop.
setpoint - dead-band, stops at setpoint. Prevents rapid cycling.Simple level control. Pump runs when float says EMPTY, stops when FULL.
Runs the pump for a fixed duration, a set number of times per day.
Pumps a precise volume per cycle, measured by the flow meter.
Stops the pump if no water is detected while running. In Pressure mode: trips if pressure stays below Min Pressure for the Dry-Run Time. In Supply mode: trips if flow stays below 0.1 L/min (requires flow meter enabled). Only active while the pump relay is energised.
Stops the pump if pressure exceeds the trip level for longer than the trip delay. Pressure mode only.
Stops the pump if the analog input voltage is outside the expected range (open wire, short circuit, wrong type).
After a fault, waits the Restart Delay then retries automatically up to the configured number of Attempts. After 60 s clean running, the counter resets. Fault card shows RETRY 1/3, RETRY 2/3 etc.
| Topic | Direction | Payload |
|---|---|---|
pump/status | Publish (5s) | JSON with all live values |
pump/cmd/setpoint | Subscribe | Numeric value |
pump/cmd/run | Subscribe | 1 or 0 |
pump/cmd/mode | Subscribe | AUTO or MANUAL |
pump/cmd/resetfault | Subscribe | 1 |
In Arduino IDE go to Tools > Port and select the kpjpump network port.
OTA password: kpjota1
| Pin | Dir | Value |
|---|---|---|
| V0 | R | Pressure |
| V1 | R/W | Setpoint |
| V2 | R/W | Pump (0/1) |
| V3 | R/W | Mode (0=AUTO) |
| V4 | W | Reset fault (send 1) |
| V5 | R | Flow rate L/min |
| V6 | R | Total litres |
| V7 | R | State string |
| Symptom | Likely Cause | Fix |
|---|---|---|
| SENSOR_FAULT on startup | No sensor wired or wrong type | Check VI1 wiring or disable Sensor Fault in Settings |
| DRY_RUN immediately | Flow meter not connected | Disable Flow Meter in Settings > Connected Hardware |
| Pressure reads zero | Wrong calibration or wiring | Check VI1, verify voltages in Settings sensor section |
| Float not working | Wrong polarity or disabled | NPN: switch to GND. Enable float in Settings. |
| WiFi not reconnecting | Credentials not saved | Re-enter via AP mode (connect to KPJ-Pump-Ctrl) |
| Dashboard shows -- | Browser cannot reach /status | Check WiFi, try http://kpjpump.local directly |
| Pump short-cycling | Hysteresis too small | Increase dead-band in Settings > Pressure Setpoint |
KPJ Pump Controller V8.1 | ESP32 + ES32C14 Expansion Board