Skip to main content
Version: FILS English

CactusCare

Smart Cactus Monitoring & Watering System

info

Author: Vladuta Aida
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-xwidaa

Description

CactusCare is a smart monitoring and watering system designed specifically for cactus plants. It uses a soil humidity sensor to detect moisture levels and decides when watering is needed. If the soil remains too dry for a set period, a small water pump activates to deliver just enough water, preventing overwatering. A water level sensor checks if the reservoir is empty, and an LCD display notifies the user only when a refill is needed. An RGB LED indicates the soil's wet or dry status. Additionally, the system connects to a remote mobile or web app over Wi-Fi, allowing users to monitor sensor readings and manually control watering from anywhere.

Motivation

CactusCare was designed to make cactus care easier and smarter. It monitors soil moisture and waters the plant only when needed, preventing overwatering or neglect. With a water level sensor and simple LCD alerts, users are notified only when the reservoir is empty. This helps save water, keeps the cactus healthy, and reduces the need for constant attention.

Architecture

The CactusCare system is designed to automate the monitoring and watering of cactus plants. It utilizes various sensors and actuators connected to a Raspberry Pi Pico W microcontroller and includes Wi-Fi capability to allow remote monitoring and control through an app.

CactusCare Architecture

  1. Microcontroller: Raspberry Pi Pico W Function: Acts as the central processing unit, reading sensor data and controlling actuators.

    Connections:

    Soil Moisture Sensor: Reads analog voltage corresponding to soil moisture levels.

    Water Level Sensor: Monitors the water reservoir level.

    RGB LED: Indicates soil moisture status (e.g., green for moist, red for dry).

    LCD Display: Displays messages, such as low water alerts.

    Water Pump: Activated when soil is dry and water is available.

    Wi-Fi Module (built-in): Connects to a remote app for monitoring and control.

  2. Soil Moisture Sensor Function: Measures the moisture content of the soil.

    Connection: Analog output connected to an ADC pin on the Pico W.

  3. Water Level Sensor Function: Detects the water level in the reservoir to prevent dry pumping.

    Connection: Digital or analog output connected to the Pico W.

  4. RGB LED Function: Provides a visual indication of soil moisture status.

    Connection: Three GPIO pins control the red, green, and blue channels.

  5. LCD Display Function: Displays system messages, such as "Water Reservoir Empty."

    Connection: Typically connected via I²C interface to the Pico W. Raspberry Pi Forums

  6. Water Pump Function: Irrigates the plant when soil moisture is low.

    Connection: Controlled via a relay module connected to a GPIO pin. element14 Community

  7. Remote App (Web/Mobile) Function: Allows users to remotely check soil moisture and water level status, and optionally trigger watering. Connection: Communicates with the Raspberry Pi Pico W over Wi-Fi (e.g., via HTTP or MQTT).

  8. Power Supply Function: Provides necessary voltage and current to the system.

    Components: Battery pack or USB power source.

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

This project uses a Raspberry Pi Pico W as the main controller to automate plant watering. A soil humidity sensor monitors the moisture level in the soil, while a water level sensor checks if there is enough water in the reservoir. An RGB LED visually indicates the soil's condition—dry or wet—and an LCD module displays a warning when the reservoir is empty. When the soil is dry and water is available, a small water pump motor is activated to water the plant through connected tubing. All components are connected using a breadboard, jumper wires, and appropriate resistors, and the system is powered by a battery for portability.

Schematics

Place your KiCAD schematics here.

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico WThe microcontroller35 RON
Soil Moisture SensorDetects soil moisture levels5 RON
Water Level SensorDetects water level in the reservoir1.5 RON
RGB LED 5mmShows dry/wet status with colors11 RON
LCD Module 16x2 Blue BacklightDisplays reservoir empty status35 RON
Mini Submersible Water PumpPumps water to the plant10 RON
Water Tank and Tube KitStores and channels water27 RON
Mini Breadboard 400 HolesFor prototyping and connections7 RON
Jumper Wires M-M 20cm For connecting components5 RON
ResistorsUsed with sensors and LEDs3 RON

Software

LibraryDescriptionUsage
st7789Display driver for ST7789Used for the display for the Pico Explorer Base
embedded-graphics2D graphics libraryUsed for drawing to the display
embedded-halHardware Abstraction Layer for embedded systemsFor interfacing with hardware components like sensors and actuators
embassy-rpAsync framework for RP2040-based microcontrollersManages async tasks on the Raspberry Pi Pico W
cortex-m-rtRust runtime for ARM Cortex-M microcontrollersProvides startup/runtime support for low-level embedded code
lcdLibrary for controlling LCD displaysUsed to control the 16x2 LCD module
dc-motor or relay-controlControl DC motors or relaysUsed for driving the water pump motor
esp-wifiWi-Fi stack for RP2040 and ESP chipsConnects Raspberry Pi Pico W to Wi-Fi network
minimqMQTT client library for embedded RustPublishes sensor data and subscribes to commands over MQTT
serde_jsonJSON serialization/deserializationFormats sensor readings into JSON for MQTT messages
  1. link
  2. link