Made by Aaron Kurth

Monitor a plant and alert a plant owner when the plant needs a drink of water.

Created: January 29th, 2016



This concept is designed for my houseplant and my girlfriend. My plant benefits from staying adequately hydrated and it has an extra importance to me since it was given to me as an offshoot of her plant a few years ago. Therefore this device is also for her because it was a gift from her. It can be so easy to forget to water a plant with a busy schedule that a device like this built into a pot or easily attachable to the side could be a nice addition to one’s life. I chose this challenge because the plant adds to the atmosphere of my apartment and this particular plant has made it all the way from Minnesota with me.



The goal of this project was to monitor the water level of a potted plant. A plant’s water level is deceptively hard to monitor and one way people find out how dry their plant is by touching the soil. This device will take the place of the user putting their hand in the dirt and needing to decipher the moisture in the dirt. This device will send a notification so that the user can put it on a list rather than checking at random times. 



To complete this project, I used these components from the Photon Maker Kit: Photon with headers, USB cable, Mini Breadboard, 9 Jumper Wires, 1 green LED, 1 red LED, a 10k resistor, 2 1k resistors, two M3 screws and nuts, small piece of foamcore, and hot glue.

I started off with plans of making a device that sensed temperature, light and moisture. I utilized our class tutorials to develop circuits for each and then attempted to integrate their functionality then publish it on the web. I soon realized it would not be feasible in the time frame, so I simplified to the basic functionality that I desired: moisture sensing. I used the tutorial based on a photoresistor to develop my moisture sensing resistor and instead of the darkness causing the resistance to increase, the lack of moisture and the poor conductivity of dirt would cause high resistance. I then developed the LED scheme. I started with LEDs that went up and down based on the level of resistance, but realized that didn’t convey what would be important to the user: is the plant ok or not. So I switched to an If statement that controlled when the red and green LED would turn on. I also used this if statement to build in another if statement that published a signal to IFTTT which then sent a text message (Water your plant soon!) to my phone. The second if statement then names an integer the value of the current day. The publishing function checks this integer at the start of the process to see if it should send a message, so that it only sends 1 message a day. I prototyped in our lab with just our kit components, then created the dirt contacting parts at home. I initially had challenges with coding, but through instructor assistance and simplifying functionality I was able to get it to work.



The final outcome is a device that can silently monitor the plant and let the user know when they need to add water. During normal operation, while the plant is properly watered, the device sees the resistance is below its threshold so it does not send a text message, it only lights a soft green light. It is constantly checking if the resistance level has changed, but each day it checks to see if it needs to send a text message to alert the user. If the resistance level changes, the green light shuts off and a red light appears. The user also gets a text message saying “Water your plant soon!” The next steps for this product would be to build a housing that can hide the electronics, and develop a power source. In this case, a solar cell could be an easy power source since the plant relies on sun and if the code was tweaked to only check once per day to save power.



From this project, I learned a great deal. I learned how photo resistors can be applied and that temperature sensors are challenging to implement. that planning ahead and focusing on basic functionality first can save a lot of time. I refreshed some coding and circuits I have experienced in the past and made the leap from tutorials to implementation. On future projects I will work from a basic functional level and then build progressively more complex features into it. The features I removed, while interesting, would not have enriched the experience. In some ways I didn’t get where I wanted, since I wanted a device with more features, but in application, I did end up where I wanted since I can receive a simple message that I can store and apply without annoyance.

Video music is from

//moisture resistor code

// Define a pin that we'll place the photo cell on
// Remember to add a 10K Ohm pull-down resistor too.
int moisturePin = A2;

// Create a variable to hold the light reading
int moistureReading = 0;

// Define a pin we'll place an LED on
int ledPinRed = D0;

// Define a pin we'll place an LED on
int ledPinGreen = D2;

// Create a variable to store the red LED brightness.
int ledBrightnessRed = 0;

// Create a variable to store the green LED brightness.
int ledBrightnessGreen = 0;

// create a threshold to light up red led
int threshold = 1000;

// create a variable to store time when last published
int lastPublished = -1;

void setup(){

  // Set up the LED for output
  pinMode(ledPinRed, OUTPUT);

  // Set up the LED for output
  pinMode(ledPinGreen, OUTPUT);

  // Print the day for the current time


void loop() {

moistureReading = analogRead(moisturePin);

  // test moisture level
  if (moistureReading < threshold) {

    digitalWrite(ledPinRed, HIGH);   // Turn ON the red LED pins
    digitalWrite(ledPinGreen, LOW);   // Turn OFF the green LED pins
    if ( != lastPublished) {

      // publish event
      Particle.publish( "water_your_plant_soon", "Water your plant soon." );
      //update lastPublished
      lastPublished =;


  } else {

    digitalWrite(ledPinGreen, HIGH);   // Turn ON the green LED pins
    digitalWrite(ledPinRed, LOW);   // Turn OFF the red LED pins

  // wait 1/10th of a second and then loop
Click to Expand
Share this Project


49-713 Designing for the Internet of Things

· 4 members

This course charts the emergence of the now "connected world" to explore the possibilities for future products and connected spaces.


Monitor a plant and alert a plant owner when the plant needs a drink of water.