Botanix – Automatic Plant Watering

Botanix Hardware Overview

BotanixI want to automate plant watering with a Raspberry Pi Zero, a range of sensors, and controls. Because I have a hard time keeping herbs alive in my windowsill. Furthermore, as a software engineer I have a deep felt love for automation. And I like designing and building stuff. Below are my requirements. I will document the build here on the website as I go along.

Hardware Requirements

First the requirements I setup for the hardware:

  • Controlled by Raspberry Pi Zero.
  • Moisture sensors to monitor individual plants.
  • Valves to control watering of individual plants.
  • Water tank to minimize potential flooding and for ability to add fertilizer.
  • Float switch to alert about empty water tank.
  • Sensors for each plant to detect flooding.
  • Light, Temperature, and humidity sensors.
  • Relays to enable control of 12V components.
  • ADC to allow analog sensors.
  • RC filters to prevent noise from long wires for analog sensors.
  • Timer chip (555) to prevent pump from keep pumping if SW crashes.
  • Optional: LED grow light.

Software Requirements

These are the requirements I setup for the software – being a software engineer this is somewhat over-designed:

  • Implemente in Python 3.
  • Object Oriented approach.
  • Modular design to isolate implementation of different components.
  • Event driven system based on mails between the different components.
  • Database backend for data collection.
  • Web interface to monitor sensors, watering schedule, and water consumption.
  • Optional: Command line interface to control machine manually.