Overview
This mini submersible water pump moves up to about 120 liters per hour from a 5V DC supply, making it a favorite for automatic plant watering, desktop fountains, aquariums, hydroponics, and cooling loops. The brushless motor sits fully submerged and pushes water through a ~7.5mm outlet, with a 1.5m lead for easy placement.
Because the pump draws more current than a microcontroller pin can safely supply, you drive it through a relay or transistor from an Arduino, ESP32, or Raspberry Pi. That lets you automate watering with a soil-moisture sensor or run it on a timer.
At a Glance
Specifications
| Parameter | Value |
| Operating Voltage | 3V - 5V DC |
| Operating Current | ~150 - 220 mA |
| Flow Rate | ~120 L/H |
| Maximum Lift | ~1 m |
| Outlet Diameter | ~7.5 mm |
| Cable Length | 1.5 m |
| Motor Type | Brushless DC, submersible |
| Duty | Must stay submerged in liquid |
Wiring Guide
Arduino / ESP32 Wiring
Never connect the pump directly to a GPIO pin. Use a relay module or an NPN transistor / logic-level MOSFET with a flyback diode.
| Connection | Goes To |
|---|---|
| Pump + | External 5V supply + |
| Pump - | Relay COM or transistor drain/collector |
| Relay IN / transistor gate | GPIO control pin (e.g., D7) |
| Supply GND | Common ground with board |
Raspberry Pi Wiring
Same approach: a relay module or MOSFET on a GPIO pin switches an external 5V supply. The Pi's 3.3V logic drives most relay modules and logic-level MOSFETs directly.
| Connection | Goes To |
|---|---|
| Relay IN | GPIO17 (pin 11) |
| Relay VCC / GND | 5V and GND |
| Pump | Switched by relay on external 5V |
Code Examples
Arduino
// Drive a 5V pump through a relay or transistor on pin 7
const int PUMP = 7;
void setup() {
pinMode(PUMP, OUTPUT);
digitalWrite(PUMP, LOW);
}
void loop() {
digitalWrite(PUMP, HIGH); // pump ON
delay(5000); // run 5 seconds
digitalWrite(PUMP, LOW); // pump OFF
delay(60000); // wait 60 seconds
}
Raspberry Pi (Python)
import RPi.GPIO as GPIO
import time
PUMP = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(PUMP, GPIO.OUT)
try:
GPIO.output(PUMP, GPIO.HIGH) # pump ON
time.sleep(5)
GPIO.output(PUMP, GPIO.LOW) # pump OFF
finally:
GPIO.cleanup()