Overview
This 5V submersible pump moves up to 120 liters per hour and ships with a generous 1.5 m cable, so the pump can sit at the bottom of a tank or reservoir while your electronics stay high and dry. It is the step-up choice for automatic plant watering, pet fountains, desktop hydroponics, aquarium circulation, DIY cooling loops, and science projects driven by Arduino, ESP32, Raspberry Pi, or Pico.
Like all small brushed DC pumps, it is a two-wire device that must be switched through a MOSFET, transistor, or relay rather than a GPIO pin, and it must always run submerged — water is its lubricant and coolant. The wiring table below is the whole electrical story.
At a Glance
Specifications
| Parameter | Value |
| Operating Voltage | 5V DC (runs slower down to ~3V) |
| Operating Current | ~100-200 mA (startup surge higher) |
| Rated Flow | Up to 120 L/H at 5V, open outlet |
| Max Lift (Head) | ~0.5-1 m (flow tapers toward zero at max head) |
| Cable Length | 1.5 m, pre-attached |
| Motor Type | Brushed DC, centrifugal impeller |
| Outlet | Barb for common soft tubing (slip fit) |
| Mounting | Suction-cup base (typical) |
| Operating Position | Fully submerged — never run dry |
| Liquid | Fresh water; not rated for potable, solvent, or salt-water duty |
Wiring & Driving Guide
Red to switched +5V, black to ground — through a driver, never a bare GPIO:
| Connection | Goes To |
|---|---|
| Pump red (+) | +5V supply rail |
| Pump black (−) | MOSFET drain (or relay NO contact) |
| MOSFET source | GND, shared with the microcontroller |
| Gate via ~220R | GPIO (D9 Arduino / GP15 Pico / GPIO 15 ESP32) |
| Flyback diode (1N4001-1N4007) | Across pump leads, cathode (stripe) to + |
Code Examples
Arduino: moisture-triggered watering (sensor optional)
// 5V 120L/H pump on MOSFET, gate on D9.
// Waters when the analog moisture reading is too dry.
// No sensor? Set USE_SENSOR to false for a simple timer.
const int PUMP_PIN = 9;
const int SENSOR_PIN = A0;
const bool USE_SENSOR = true;
const int DRY_LEVEL = 600; // calibrate for your sensor
void setup() {
pinMode(PUMP_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool shouldWater = true;
if (USE_SENSOR) {
int m = analogRead(SENSOR_PIN);
Serial.print("Moisture: ");
Serial.println(m);
shouldWater = (m > DRY_LEVEL); // higher = drier for many sensors
}
if (shouldWater) {
digitalWrite(PUMP_PIN, HIGH);
delay(4000); // 4 s water shot
digitalWrite(PUMP_PIN, LOW);
}
delay(60000); // check every minute
}
Raspberry Pi (Python): relay/MOSFET control
# Raspberry Pi controls the pump through a MOSFET or relay on GPIO 18.
# Pump power from the Pi's 5V pin (short runs) or an external 5V supply.
import RPi.GPIO as GPIO
import time
PUMP = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(PUMP, GPIO.OUT)
try:
while True:
print("Pump ON")
GPIO.output(PUMP, GPIO.HIGH)
time.sleep(5) # circulate for 5 s
print("Pump OFF")
GPIO.output(PUMP, GPIO.LOW)
time.sleep(55) # rest for 55 s
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()



