Introduction: IoT Plant Moisture Notifier

Get a text or call if your plant is getting too dry, along with a nice
LCD display giving information regarding your plant's health.

Step 1: BoM (Bill of Materials)

For this project you will need:

Step 2: Introduction

The wonderful people at DFRobot reached out to me to do a project using their amazing soil moisture sensor and I2C 16x2 LCD.

I had an idea to create a device that would monitor a plant, and they
provided me with the necessary hardware. I decided to build a simple box that is powered by a single Particle Photon.

Every 30 minutes it takes a reading of the soil and determines if it's
too dry. If it is, it publishes an event, and then IFTTT can send a text, call, or email to notify you that it's too dry. There is also an RGB LED on top that turns green if the plant is happy, and blinks blue if the plant is too dry.

The 16x2 LCD displays a message from the plant, ranging from being very happy to feeling extremely sad.

Step 3: Design

To begin building it, I started by connecting each component to the
Particle Photon, along with the micro usb power connector. I loaded up some test code that simply displays the moisture level on the LCD. After the code ran successfully, I began to create a Fusion 360 design. The shape of the device is designed to be a rectangular prism, with the LCD facing out, the LED on top, and the micro USB port in the back.

I also made a hole that allows for the soil moisture sensor's cabling to attach. For the painting portion, I wanted there to be a green base coat with some floral designs on it in yellow.

Step 4: Creating the Parts

My Fusion 360 design was created to be CNC routed, so I laid out all of
the parts evenly on a flat surface and generated gcode from the machining paths. Next, I put my material, a sheet of 10.5" x 10.5" x 1/4" plywood on my Millright CNC machine and began cutting out each part. I also sanded down each piece and gave the edges a good rounding to create a better aesthetic.

Find the part files here: Fusion 360 Gallery

Step 5: Making It Pretty

I first collected my materials: the CNC routed pieces of plywood, a can
of green spray paint, a can of shellac, a little bottle of yellow acrylic paint, some 150- 400 grit sandpaper, a bottle of wood glue, and a sander.

I started by thoroughly sanding each part, gradually using increasingly finer grit sandpaper.

After I felt the sanding was sufficient, I glued the bottom, side, and back pieces together. Next, I sprayed each part with two coats of shellac, and then applied several even coats of green spray paint.

Step 6: Assembly

Now that all of the parts were painted, I added the electronic
components into the enclosure, fastening them down with hot glue. I also strung the wires for the soil sensor through the hole in the side and connected it to the Photon.

I added a little compartment in which to store the sensor and wires when not in use.

Step 7: Programming

I went to the Particle Photon Cloud IDE
and loaded up the attached sketch, flashing it to my Photon. The RGB LED on top blinked 5 times to notify me that it was powered and connected successfully. The code is set up such that when the moisture dips below 15% the Photon sends an event called "water", which then triggers an IFTTT applet. The github repository is here:

Step 8: Usage

To use it, I simply put the moisture sensor into the soil of my
potted plant, and plugged a micro USB cable into the connector, giving the device 5v. Next, I setup an IFTTT applet to text me whenever it receives the event named "dry" from the Particle Photon service.

It sends an email with the message: "Your plant needs water!". In addition, the LCD on the device displays the percentage of soil moisture along with a message from the plant, from very happy to very sad. Now, you never have to worry about whether or not your plant needs water.

Step 9: Thanks

I would like to say thank you to the people at DFRobot for sponsoring
this project. Without them, this would not have been possible.


Swansong (author)2017-08-16

That's a neat setup, I need to do something like this for our greenhouse :)