Skip to main content
Version: FILS English

Ripy the smart flowerpot

a self-watering plant pot with configurable parameters

info

Author: Nedelcu Andreea
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-andreea-35

Description​

Ripy is a plant pot add-on that waters your plant regularly! You set a desired humidity level and it adds water accordingly so as to maintain it. The display is where you can view your plant's conditions (current humidity / temperature) or set parameters (desired humidity level / number of times to water the plant per day).

Motivation​

Sometimes you have households where family members are away more often than they are at home. Even those who do spend a lot of time inside might go on vacation or have to be out of town for a couple of days, maybe a week - and not even the least demanding of plants can go unwatered that long! Ripy makes sure any green friend, fussy or not, is maintained happy and hydrated!
My family has a bunch of plants around the house but some aren't exactly thriving due to us getting busy and forgetting to water them or leaving them unwatered while we're away on vacation. That's what inspired me to take on this project!

Architecture​

Architecture Scheme

Log​

Week 5 - 11 May​

Having had all components arrive and soldered the previous week, it was time to put it all together. To plan everything out more exactly, I started with the KiCAD schematic. Not all of the components had symbols in the base library, so some I got off of Github and others I drew myself. With everything decided, connecting everything went quite smoothly. The relay module did confuse me a bit, but feedback from this week's lab and reading up on it answered all of my questions (seeing the module schematic especially helped). I also set-up the debugger pico within this timeframe and wrote code to test out the capacitive soil moisture sensor and buttons, which worked! I moved onto testing the LCD screen, and while it did light up, I couldn't manage to display anything on it. I'm planning on trying a different driver/library.

Week 12 - 18 May​

Unfortunately, this week hasn't seen as much progress as the previous when it comes to the project itself. I did the move from Gitlab to Github for the documentation, set up my local source code repository and pushed my first code. I had the water pump cables extended with some jumper wires at the lab and insulated them with tape at home. Spent Saturday morning updating the log with everything for the hardware milestone. Sunday I worked on the LCD again and while I did solve one big issue (not finding the correct I2C device address) I still couldn't get it to display anything.

Week 19 - 25 May​

Hardware​

The main challenge regarding hardware was having components that operate on 5V, incompatible with the pico's 3.3V output. Additional components had to be acquired to accomodate those.

Raspberry Pi Pico W - the brains: reads sensor data, controls the relay module (which switches the pump) and updates the LCD;

Capacitive Soil Moisture Sensor - measures the soil’s moisture level through analog output. The Pico reads this to determine if watering is needed;

  • Connections:
    • VCC
    • GND
    • OUT (Output)

LM35D Analog Temperature Sensor - measures ambient temperature through analog output; Values are displayed on the LCD;

  • Connections:
    • VCC
    • GND
    • OUT (Output)

5V Relay Module- acts as a switch for the water pump. Triggered by a GPIO pin from the Pico;

  • Connections:
    • VCC
    • GND
    • IN (Input / Control Pin) - used to control the output of the relay
    • COM (Common) - the common connection for both NO and NC
    • NO (Normally Open) - the load connection when the relay is ON
    • NC (Normally Closed) - connects to the COM terminal by default, or when the relay is OFF

Water Pump - turns on when the relay is triggered to water the plant;

1602 LCD Display with I2C Adapter - shows current humidity, temperature, and user-set parameters. Connects to the Pico via I2C;

  • Interface: I2C
  • Connections:
    • VCC
    • GND
    • SDA (Serial Data Line)
    • SCL (Serial Clock Line)

3 Γ— Push Buttons - provide input for adjusting settings like desired humidity and number of waterings per day. Each button connects to a GPIO pin.

Pictures​

Hardware wide shot Breadboard close-up

Schematics​

KiCAD Schematic

Bill of Materials​

DeviceUsagePrice
Raspberry Pi Pico 2WThe microcontroller39.66 RON
Breadboard power supplyThe voltage source4.69 RON
Capacitive Soil Moisture SensorThe soil moisture sensor4.77 RON
LM35D Analog Temperature Sensor (TO-92)The temperature sensor4.99 RON
Water PumpThe water dispenser13.49 RON
ΓΈ 8mm 1m Transparent TubeWater transportation from the pump to the pot2.92 RON
1 Channel 5V Relay ModuleWater pump activation4.99 RON
1602 Green LCD Display with I2C adapterDisplay for our parameters26.83 RON
TXS0108E 8 Bit Bidirectional Logic Level ConverterVoltage converter to use 5V components with the PICO6.49 RON
3x 6 x 6 x 6 Push ButtonsInteraction with the display1.08 RON

Software​

LibraryDescriptionUsage
embedded_halHardware abstraction layer for embedded systemsUsed for abstracting hardware interactions
gpioGPIO manipulationUsed for interacting with GPIO pins
defmtEfficient logging for embedded systemsEnables detailed logging for system diagnostics and debugging during development
embassy-rpPeripheral access libraryUsed for initializing and interacting with peripherals
embassy-timeTime management libraryUsed for time-based operations such as delays
heaplessData structure libraryUsed for String vectors
  1. Build A Plant Watering System πŸŒ±πŸ€– | With a Pi Pico by VEEB Projects
  2. DIY Raspberry Pi Arduino Plant Watering System by Caroline Dunn
  3. How to create IOT Plant Watering System Using Raspberry Pi Pico W
  4. Pico Pico - Embedded Programming with Rust
  5. Connect I2C 1602 LCD to Raspberry Pico
  6. Breadboard Power Supply module - How to use it?
  7. Sunfounder: 5V Relay module
  8. Circuit digest: Understanding How a Single Channel Relay Module Works
  9. Last Minute Engineers: Interface One Channel Relay Module with Arduino