Skip to main content
Version: ACS CC

SIrriS

Smart Irrigation System using Dual Raspberry Pi Pico 2 (Rust Embedded)

Author: Dobrinoiu David
GitHub Project Link: PMRust

Description

An automated irrigation system using two Raspberry Pi Pico boards programmed in Rust. The system measures soil moisture, air temperature and humidity. Based on sensor data, it controls water pumps and valves. One Pico manages the sensors and actuators, while the second Pico handles user interaction, data logging, and debugging functionalities.

Motivation

I was inspired to create this project by a real-world problem I personally observed: the inefficiency of manual irrigation systems. My goal is to design a solution that brings real added value by automating irrigation based on environmental conditions. Using the knowledge and ideas I developed, I aim to build a system that is practical, efficient, and can have a positive impact in everyday life.

Architecture

Architecture Diagram

Overview

Pico 1 – Main Node (Controller)

  • Handles real-time sensor data
  • Controls irrigation via transistor array (ULN2803A)
  • Drives the buzzer and feedback LEDs
  • Web interface via Wi-Fi for live monitoring (using smoltcp)

Pico 2 – Debug Node

  • Used for flashing and debugging via SWD
  • Optional UART communication with Pico 1

Connected Modules

ComponentInterfacePico Pin Example
HTU21 SensorI2CSDA=GP0, SCL=GP1
BH1750 Light SensorI2CSDA=GP0, SCL=GP1 (shared bus)
Soil Moisture (Analog)ADCADC0 = GP26
ULN2803 + PumpDigital GPIOIN1 = GP15
Buzzer (via Transistor)Digital GPIOGP14
LED IndicatorsDigital GPIOGP16, GP17
Button (manual trigger)Digital GPIOGP18

Functional Diagram

Functional Diagram


Log

Week 5 - 11 May

  • Chosen architecture and basic wiring tested

Week 12 - 18 May

  • Sensor readings integrated, pump logic implemented

Week 19 - 25 May

  • Final integration

Hardware

This project was built with breadboard prototyping and basic soldered connectors. A DC-DC XL6009 boost converter is used to raise 6V (battery) to 12V for driving the water pump. Logic runs at 3.3V. All modules are connected to the main Pico, with power and signal routing handled via jumper wires.

Schematics

Electrical schematic created in KiCad. For illustration, refer to the image below:

Schematic Poza1 Poza2 Poza3 Poza4

Bill of Materials

DeviceUsagePrice
2x Raspberry Pi Pico WDual controller setup69 RON
HTU21 SensorMeasures temperature & humidity~15 RON
BH1750 Light SensorMeasures ambient light~10 RON
Soil Moisture SensorReads soil humidity~8 RON
ULN2803A ModuleDrives pump from logic pin~20 RON
Mini Water Pump 12VPumps water~16 RON
XL6009 DC-DC BoostBoosts voltage to 12V~10 RON
1N4007 DiodeBack-EMF protection~0.50 RON
RTC DS3231Timekeeping~15 RON
Passive BuzzerAudible alert~1 RON
NPN Transistor 2N2222Controls buzzer~1 RON
Resistors (1kΩ, 10kΩ)Pull-downs, base limiter~0.30 RON
Breadboard + Jumper WiresAssembly & wiring~10 RON

Software

Library/CrateDescriptionUsage
rp-picoRust HAL for PicoPeripheral control
embedded-halHardware abstraction traitsGPIO, ADC, SPI, I²C
smoltcpTCP/IP StackHTTP Server on Pico
embassyAsync RuntimeAsync state machines & timers

  1. Rust on Raspberry Pi Pico
  2. Rust Embassy Framework
  3. Irrigation DIY Ideas