Overview
This mini submersible pump moves water on a 3-5V supply, making it one of the easiest ways to add liquid handling to a microcontroller project. Drop it in the reservoir (it must run submerged), give it power through a small transistor, MOSFET, or relay, and it pushes water through a slip-on hose — perfect for automatic plant watering, desktop fountains, aquarium top-offs, cooling demos, and classroom STEM builds with Arduino, ESP32, Raspberry Pi, or Pico.
Electrically it is a simple two-wire brushed DC motor, which is exactly why it should not hang directly off a GPIO pin: it draws far more current than a pin can source and kicks back voltage spikes like any motor. The wiring guide below shows the safe one-transistor hookup that works on every platform.
At a Glance
Specifications
| Parameter | Value |
| Operating Voltage | 3-5V DC |
| Operating Current | ~100-200 mA (higher at startup) |
| Flow Rate | ~80-120 L/H at 5V (lower at 3V) |
| Max Lift (Head) | ~0.4-1.1 m depending on voltage |
| Motor Type | Brushed DC, centrifugal impeller |
| Mounting | Suction cups on base (typical) |
| Outlet | Barb for common soft tubing (slip fit) |
| Operating Position | Fully submerged — never run dry |
| Liquid | Fresh water (not rated for potable use, solvents, or salt water) |
Wiring & Driving Guide
Two wires: red to switched positive, black (or blue) to ground. Switch the positive side with a small MOSFET or NPN transistor and add a flyback diode across the pump leads:
| Connection | Goes To |
|---|---|
| Pump red (+) | 5V supply (or 3.3V for slower flow) |
| Pump black (−) | MOSFET drain / transistor collector |
| MOSFET source / transistor emitter | GND, shared with the microcontroller |
| Gate (220R) / Base (1k) | GPIO pin (e.g. D9 on Arduino, GP15 on Pico) |
| Flyback diode (1N4001-1N4007) | Across pump leads, cathode (stripe) to + |
Code Examples
Arduino: timed watering pulse
// Mini pump on a MOSFET/transistor, control pin D9.
// Runs the pump 3 s every 30 s - adjust for your plant.
const int PUMP_PIN = 9;
void setup() {
pinMode(PUMP_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.println("Pump ON");
digitalWrite(PUMP_PIN, HIGH);
delay(3000); // pump for 3 seconds
Serial.println("Pump OFF");
digitalWrite(PUMP_PIN, LOW);
delay(27000); // wait 27 seconds
}
Pico / ESP32 (MicroPython): PWM flow control
# Vary pump speed with PWM through the MOSFET.
# Gate on GP15 (Pico) / GPIO 15 (ESP32).
from machine import Pin, PWM
import time
pump = PWM(Pin(15))
pump.freq(1000)
def set_flow(percent):
pump.duty_u16(int(65535 * percent / 100))
# Gentle start, full flow, then stop
set_flow(50)
time.sleep(2)
set_flow(100)
time.sleep(5)
set_flow(0)
print("Done")