Plant Friends is a moisture sensor system that monitors the air temperature, humidity and soil moisture of your indoor plants and will alert you via email or text message when your plants are thirsty.

TELL ME MORE!

The Plant Friends system consists of multiple wireless, battery powered sensor nodes that gather temperature, humidity, and soil moisture readings for each individual plant and a receiving basestation that logs and processes the data. I also made a mobile app that allows me to connect to the basestation over the internet, allowing me to monitoring both the real-time and historical data on my phone.

PROCESS

Some people are born with a knack for taking care of plants. As for myself, I struggle to even keep a store-bought potted basil alive. Refusing to be called a plant murderer, I sought the help of modern technology to lend me a hand. Failing to find anything that suits my needs on Amazon, I decided to design something myself. I saw this as a great opportunity to learn about electronics and programming too!

First, I needed to find out what I was doing, or not doing, that was killing my plants. After doing some research, the highest likelihood was that I was over watering - I was literally drowning my plants. This was cause by me not knowing how to tell the moisture content in the soil. Second, I had most of my pots near the window where the temperature varied too much for my plant’s liking. Knowing this, I needed to make something that would:

• Remind me when to water my plants.

• Tell me how much moisture is in the soil.

• Tell me the temperature of the environment surrounding the plant.

I also wanted the look and feel of what I was going to make to compliment my plants so utilizing some kind of natural material seem fitting. That would also mean, minimal wires and no exposed electronics.

DESIGN ROUND ONE

Some sketching and electronics research ensued. My first design wasn’t that great. Look at this 3D sketch:

Not what I was going for but I like the idea of enclosing the device with wood. Having a solar panel was out of the question because it draws too much attention to the electronics aspect of the device and it doesn’t go well with anything. So this means my device will need to run on batteries and because I hate changing batteries, it’ll need to be super power efficient. This first design was lacking flare and fun so this design was scrapped pretty quickly.

DESIGN ROUND TWO

While looking through my old sketchbook for inspiration, I came across a drawing of a robot I drew many years ago and though, “Wouldn’t it be funny if a robot developed a green thumb?” More sketching ensued.

Oh, wouldn’t it be funny for a robot to befriend a bunny?

How about a dinosaur too?

PROTOTYPE

Cardboard prototyping time!

To ensure a good fit, everything was modeled in 3D before any laser cutting was done.

THE ELECTRONICS

The brains of the characters are powered by an Arduino clone called the Moteino made by Felix of lowpowerlab.com. Not only is this Arduino clone small, it also contains a wireless transceiver onboard which allows me to transmit and receive data wirelessly! If that wasn’t enough already, the Moteino runs on 3.3 volts which means low power.

The temperature and humidity sensor was a simple off-the-shelf part and the soil probe was a PCB with with exposed leads which allowed me to utilize a resistive sensing method to detect the moisture in the soil with most of the heavy lifting work done in software.

I wanted all the gathered data to reside locally at my home so that meant I needed to run a server of some sort and it needs to be relatively small. The Raspberry fits the bill perfectly.

THE SOFTWARE

The characters / sensor nodes need to transfer sensor data to the basestation where the data will be stored, processed and served to my Android app. Felix wrote a library for the wireless transceiver which made the wireless data transfer much simpler.

On the basestation side, the Raspberry Pi runs a custom Python script to read the received data from the serial port (which is connected to a Moteino) and then inserts the data into a MySQL database. The Lighttpd web server running ont he Pi feeds data to the Android app which was written in Processing.

PUTTING EVERYTHING TOGETHER

With the laser cutting done, it was time to put everything together! Here are the characters in various stages of assembly.

THE BASESTATION

I made some modifications to the Raspberry Pi to reduce the overall size of the basestation. I desoldered the USB port and extended it to another part of the chassis. The poor Sandisk Ultra 16gb SD card was cut in half ( the actual electronics only take up half the card, the rest is just plastic). I also bypassed the microUSB port completely and soldered wires straight to the power board. In the picture on right, you can see the Moteino with the antenna.

The basestation also contains 24 LED lights that are controlled by the Moteino via 3 cascading shift-registers that allows for brightness adjustment and different lighting sequences.

MAKING FRIENDS, ONE PLANT AT A TIME

The characters are powered by four AA or four AAA batteries. With careful power management and data gathering, the batteries lasted approximately 18 months.

The gang with their back covers on. The blue device is a temperature and humidity sensor.

THE BASESTATION

THE ANDROID APP

Written in Processing, the Plant Friends mobile app allows me to monitor the soil moisture, humidity and temperature on my phone. The app connects to the basestation via the internet and retrieves both realtime and historical data. The main screen presents the characters (sensor nodes) that are actively collecting data. Tapping on a character brings up the data for that character.

The details screen shows the data for the respective plant that the character is monitoring. The date, soil moisture, humidity and warmth (temperature) value is displayed and color coded. Temperature can be toggled between Celsius and Fahrenheit by tapping on the number. Below the real time data is a chart that plots the averages for the past 5 days. Tapping on a date brings up the average values for that day.