Water Bot - Never Forget to Water Your Plants Again!

by JWRyter in Workshop > 3D Printing

2759 Views, 46 Favorites, 0 Comments

Water Bot - Never Forget to Water Your Plants Again!

F9AAB5WKU2NWO2Z.jpeg
P1030296.JPG
P1030298.JPG
P1030283.JPG

I made this simple robot to help me remember to water my plants. The robot will turn on when watered, and turn off when the plant needs more water, reminding you to keep your plant alive.

Supplies

P1030206.JPG

Needed for this project:

  • Arduino Uno
  • Jumper Wires
  • 2 LEDs
  • 3D Printer
  • 9 Volt Battery
  • 9 Volt - Arduino Cable

Optional:

  • Breadboard
  • Button

Tools:

  • Soldering Iron
  • Hot Glue Gun
  • Pliers
  • X-Acto Knife

Design and Print

Waterbotpicomp.PNG
P1030185.JPG
P1030183.JPG

First I designed the base, head, and body using simple shapes in Tinkercad. Then I printed them.

Here are the print settings:

  • Layer Height : 0.2mm
  • Printing Temperature : 200C
  • Base Temperature : 60C
  • Support Angle : 65 degrees
  • Build Plate Adhesion : None

Here are the files to 3D print:

Test Electronics

waterbotsetup.PNG
CodewaterBot.PNG
P1030167.JPG

Here is the wiring and the code. The first thing I did was set up the circuit in Tinkercad. Then, I used the breadboard to test the electronics then soldered later. I want the robot to stay on for a while, then turn off reminding me to water. That's why I set the delay for 10 seconds in the code, because I will change it to 2, 3, or 4 days after I am sure the code works. (It isn't recommended to have a delay for more than a few milliseconds, but my code is so simple that it doesn't really matter.) When you plug in the Arduino, the LED should be off until you press the button, then turn on and remain on for 10 seconds. The button will be replaced my the robots arms, which will connect when the plant is watered because water conducts electricity. The resistors I used were 220 Ohms.

Here is the code:

int LED = 12;

int BUTTON = 4;

void setup() {

// put your setup code here, to run once:

pinMode(BUTTON,INPUT);

pinMode(LED,OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

if

(digitalRead(BUTTON) == HIGH){

digitalWrite(LED,HIGH);

}

else{

digitalWrite(LED,LOW);

}

if

(digitalRead(LED)==HIGH)

delay(259200000);

else

digitalWrite(LED,LOW);

}

Soldering

P1030211.JPG
P1030216.JPG
P1030220.JPG

Here is how I wired everything for the final build.

First, I plugged in the wires that connected to the Arduino and bent them to the underside of it.

Then, I placed the base on top.

Next, I twisted all of the components together and soldered.

To test the Arduino, I uploaded the code then plugged the circuit in to a 9 volt battery and connected the two loose wires, which made the LEDs turn on.

NOTE: The first time I wired this I did it wrong, and the LEDs were way to dim. Make sure to wire the LEDs in parallel and not series. I am pretty sure that was the problem, or I just wired it wrong some other way.

Assembly

P1030223.JPG
P1030228.JPG
P1030229.JPG
P1030243.JPG

After getting all the wires soldered, its time to assemble the robot.

I stuck the 9 volt - Arduino cable through the whole in the base, and then plugged in the 9 volt.

Then, I put the body over all of the wires, and stuck the two loose wires (aka. the arms), through the arm holes in the body.

After that, I hot glued the LEDs into the eye holes in the head.

To finish the assembly, I hot glued the head onto the body.

NOTE: I didn't glue the body onto the base so that I could access the battery later.

Make sure to test if it is still working.

How Often to Water?

P1030296.JPG

Every plant needs to be watered a different amount, but the question is, how often? There are 4 different phylum levels in the plant kingdom (Kingdom Plantae), Phylum Filicinophyta, Phylum Coniferophyta, Phylum Angiospermophyta, and Phylum Cycadophyta. Most house plants are in Phylum Angiospermophyta (aka flowering plants), which includes plants such as cactuses, flowers and trees. All plants need to be watered a different ammount, even when they are in the same phylum. It is recommended to water enough to keep the soil moist. Since my plant is a cactus, I want to water it every 3 days. That means the delay in my code will have to be 3 days long.

A Little Bit of Math

WaterbotMath.PNG
WaterMath2.PNG

There is a small problem. Arduino measures delays in millisecond, which is 1/1000 of a second. I want to have a 3 day delay. We're going to have to use a bit of math.

First, I found how many milliseconds in a minute by multiplying 1000 by 60. Then, I multiplied that by 60 to find how many milliseconds are in an hour. Finally, I found out how many seconds in a day by multiplying that by 24.

After that, I found out how many milliseconds in 2,3, and 4 days, so that if you get different plant, you can change the code to water a different amount.

Finished Water Bot!

P1030304.JPG
P1030299.JPG
P1030290.JPG

Now the Water Bot is finished! Your plants will be much happier with this simple robot, and you won't feel guilty when they somehow, inexplicably die anymore.

The End!