Naoki Yokoyama
About MeCVResearchGitHubGoogle Scholar

Autonomously keeps plants moist!

Before I knew it, my venus flytraps had multiplied and I had to divide them into more pots. Watering them was tedious, especially since they need to be kept pretty moist. So I designed this robot in SolidWorks and printed it out, and bought a few parts for the electronics.

The robot is plugged into a timer I had, and waters the plants on a daily basis.

Homemade Optical Encoder

Ensures the robot moves exact distances by counting the number of blinks;
it stops after a certain, predetermined amount of blinks, are counted.

To make the robot's movement precise, I used an LED and a photoresistor, along with a slotted disc I 3D printed, in order to track exactly how long the robot extends and retracts the nozzle. As the disk rotates, the light from the LED is continuously covered and uncovered by the slots on the disk. On the other side of the disk is a photoresistor, which can count the amount of times the light is covered and then uncovered, or 'blinks.' The motor stops after a certain amount of blinks are counted, thus accurately stopping the nozzle at the same displacement every time.

Potentiometer for More Position Control

A simple potentiometer is coupled to the large gear the robot is mounted upon. In fact, the potentiometer is the actual shaft! Since the potentiometer knob glides so smoothly anyway, I thought why not use it as a robot joint?


Parts list:

  • Arduino Uno
  • 5V USB Charger (powers the Arduino from the wall)
  • Water pump
  • SPST Relay (turns water pump on/off)
  • L298 H-bridge motor driver
  • VEX Motor 393
  • White LED (encoder)
  • Photoresistor (encoder)
  • Limit switch (resetting position)