Arduino UNO Q - Control Pump
A 12V pump can move water, oil, or other liquids and is commonly used in irrigation systems, aquariums, and water refilling stations. Arduino UNO Q controls the pump through a relay. With Bridge and Telegram, you can turn the pump on or off remotely from anywhere.
In this tutorial, you will learn:
- How a 12V pump works and how to connect it to the Arduino UNO Q via relay
- How to program the MCU to turn the pump on and off
- How to use Bridge to control the pump from the Linux side (Python)
- How to remotely turn the pump on or off via Telegram on Arduino UNO Q
- How to use OpenClaw on Arduino UNO Q with the pump

Hardware Preparation
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Additionally, some of these links are for products from our own brand, DIYables .
Overview of the 12V Pump
Pinout
A 12V pump typically has two wire connections:
- Positive (+) red wire: Connect to 12V DC through the relay
- Negative (-) black wire: Connect to GND of the 12V DC power supply

How to Control the Pump
A 12V pump requires a 12V power supply — it must NEVER be connected directly to an Arduino UNO Q pin. A relay is used as the interface. The MCU controls the relay, which switches the 12V supply to the pump:
- Relay pin HIGH → relay closes → 12V to pump → pump ON
- Relay pin LOW → relay opens → no power to pump → pump OFF
Wiring Diagram

This image is created using Fritzing. Click to enlarge image
Connect the relay module IN pin to MCU pin D3. Connect the relay's COM and NO terminals between the 12V supply and the pump. Connect the relay's VCC to 5V and GND to GND.
| Relay Pin | Arduino UNO Q MCU |
|---|---|
| GND | GND |
| VCC | 5V |
| IN | D3 |
How To Program For Pump
- Set up the relay pin as output:
- Turn pump on and off:
Arduino UNO Q Code
The Arduino UNO Q has two processors working together:
- The STM32 MCU controls the relay that switches 12V power to the pump
- The Qualcomm MPU runs Debian Linux and handles Wi-Fi, Python, and cloud connectivity
- In this section, only the MCU is programmed — the Linux side stays idle. A later section shows how both processors work together via Bridge.
This code turns the pump on for 5 seconds, then off for 5 seconds — repeating continuously.
Detailed Instructions
First time with Arduino UNO Q? Follow the Getting Started with Arduino UNO Q tutorial before proceeding.
- Connect: Wire the pump, relay, and 12V power supply to the Arduino UNO Q MCU as shown in the wiring diagram. Attach vinyl tubing to the pump inlet/outlet.
- Open Arduino App Lab: Launch Arduino App Lab and wait until it detects your Arduino UNO Q.
- Create a new App: Click the Create New App button.

- Give the App a name, for example: Pump
- Click Create to confirm.

- Paste the sketch: Copy the MCU code above and paste it into sketch/sketch.ino. Keep other files as default.
- No library required — uses only the built-in digitalWrite() function.
- Upload: Click the Run button in Arduino App Lab.

- Observe the pump turning on and off every 5 seconds.
App Lab Console Output
Bridge: Linux + MCU
This section shows how to program both processors of the Arduino UNO Q so the Linux side can turn the pump on and off via Bridge:
- The pump is connected to the MCU via relay — the MCU controls the relay output pin
- The MPU cannot control the relay directly — it calls Bridge functions to turn the pump on or off
- The MPU has Wi-Fi — running full Debian Linux, it can accept commands from Telegram or any service and translate them into pump control actions
- Arduino_RouterBridge enables RPC communication between the two processors
- ⚠️ /dev/ttyHS1 (Linux) and Serial1 (MCU) are RESERVED by the router — never open them in user code
In short: MPU sends on/off commands → calls Bridge → MCU controls relay → pump activates.
MCU Code (Bridge)
Python Code (Bridge)
Detailed Instructions
- Connect: Wire the pump, relay, and 12V power supply to the Arduino UNO Q as shown in the wiring diagram.
- Open Arduino App Lab: Launch Arduino App Lab and wait for the board to be detected.
- Create a new App: Click Create New App, name it PumpBridge, then click Create.
- Paste the MCU sketch: Copy the MCU Bridge code above and paste it into sketch/sketch.ino.
- Paste the Python code: Copy the Python Bridge code above and paste it into the Python file in the App.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Upload: Click the Run button in Arduino App Lab.

- Watch the pump cycle: on → wait 5 seconds → off → wait 1 second → repeat.
App Lab Console Output
Telegram
Control the pump remotely via Telegram — turn it on or off from anywhere with a simple command.
MCU sketch: Keep the same MCU sketch from the previous Bridge section.
Python Code (Telegram)
Detailed Instructions
- Replace YOUR_TELEGRAM_BOT_TOKEN with your actual bot token from BotFather.
- Replace YOUR_CHAT_ID with your Telegram chat ID.
- Paste this Python code into your App's Python file (keep the same MCU sketch).
- Click the Run button. Send /on from Telegram to start the pump, then /off to stop it.
App Lab Console Output
ArduinoBot
OpenClaw
...OPENCLAW
OpenClaw support for Arduino UNO Q Controls Pump is coming soon.
...OPENCLAW
Project Ideas
You can build many useful projects with the pump and Arduino UNO Q:
- Remote Irrigation System: Start and stop garden watering from anywhere via Telegram — the Linux side logs each pumping session with start time and duration to a CSV file
- Automatic Plant Watering: Program the MPU to run the pump every morning for 5 minutes using the Linux system clock — no manual intervention required
- Flood Response: Pair with a water sensor — when the sensor detects a rising water level, the pump automatically switches on via Bridge to drain the water and sends a Telegram alert
- Aquarium Auto Top-Up: Monitor the water level with a sensor — when it drops below the minimum, Python activates the pump for 30 seconds to refill and sends a Telegram notification
- Water Refill Station: Build a coin-operated or timer-controlled water dispenser — /on starts the pump and a 30-second Python timer stops it automatically, preventing overflow
Challenge Yourself
Ready to go further with the pump on Arduino UNO Q? Try these challenges:
- Easy: Add a /on_10s Telegram command that turns the pump on for exactly 10 seconds using time.sleep(10) on the Python side before calling Bridge.call("pump_off").
- Medium: Implement a daily watering schedule: Python reads a JSON file containing ON/OFF times and controls the pump automatically — send a Telegram notification when each pumping session starts and finishes.
- Advanced: Build a flow logger: every pump ON session is logged to a CSV file with start timestamp, stop timestamp, and duration — implement a /log Telegram command that returns a summary of the last 5 sessions.