As any gardener would know, taking care of plants is no easy task! While you may think you are watering and tending to your plants correctly, every type has a unique growing condition and watering schedule. Our goal is to simplify the plant caretaking process, ensuring that anyone can maintain healthy plants from the comfort of their home.

What it does

Farmbuddy is a plant health monitoring system that can be used to remotely monitor and regulate plant growing environment. First, the user must select the plant type(set over Node-RED), configuring the threshold values for the specific plant. The sensors on our device will update the UI with the current values and notify the user if any condition is not optimal. In the case of low soil moisture, a pump will dispense water until the moisture level is within range.

How we built it


Farmbuddy monitors and modulates plant condition in 3 key areas

  1. A Temperate and Humidity sensor that monitors the environmental growing conditions
  2. A Soil moisture sensor that measures the water content of the soil
  3. Peristaltic Pump that delivers water from a reservoir to the plant soil.


The firmware we have written provides us with a few functionalities

  1. CLI command interface that enables the user to debug/troubleshoot issues with the device and its sensors
  2. OTAFU that downloads the latest firmware version and uploads it to the device
  3. FreeRTOS to efficiently schedule multiple tasks
  4. Autonomous functionality that continuously checks and publishes sensor values


The CLI interface allows a PC serial port to send and receive data to our device via USART. Function calls compatible with the CLI includes the following:

  • fw: Performs OTAFU
  • sht3: Returns the current temperate and humidity values.
  • sen: Returns the current soil moisture value.
  • send_MQTT: Updates Node-RED with the sensor values
  • start: Autonomous function of the device; continuous sensor fetching data.

Challenges we ran into

  • Selection of the proper MOSFET to drive the 6V peristaltic pump was difficult, as there are many tunable parameters and we were unsure of the threshold conditions required for operation
  • The biggest challenge in hardware design was proper component placement on the PCB, especially for the 6V boost converter.
  • Due to time constraints, we were unable to integrate the lipo battery and embed the soil moisture sensor on the PCB to make a truly standalone device
  • Development of the I2C driver for the Temp/Humidity sensor was also very time-consuming. After using the logic analyzer we found the requisite commands to exchange data and were able to properly display the values.
  • We faced difficulty using
  • We ran into troubleshooting issues when attempting to update the firmware on our PCB due to outdated device drivers on our PC.
  • We had difficultly designing the Node-Red UI, given the multiple plant types and their unique threshold conditions

What we learned

  • Component selection based on project goals, power requirements and budget constraint
  • Schematic Design and PCB layout in Altium (Both team members had no Altium experience, so struggling with the intricacies of PCB design and having a functioning first prototype is very rewarding!)
  • Designing a power management system
  • Using freeRTOS to synchronize and schedule multiple tasks
  • Designing UI on Node-red to generate a real-time dashboard for our device

What's next for Farmbuddy

  • Integrating SMS alerts when sensor values are suboptimal
  • Incorporate NPK sensor for more information about plant health
  • Schedule Irrigation time via Node-RED

Built With

  • altium
  • c
  • embedded
  • microchip
Share this project: