Personal Project
I wanted to understand electronics, so I built a houseplant that takes care of itself.
A class project got me started on Arduino, and I wanted to keep going on my own terms. I settled on something hands-on and useful: an automatic plant waterer. It takes one of my houseplants, reads how dry the soil is, and lets the Arduino decide when to water.
I also wired in a push button to start a watering by hand. It helps when I am testing, and for the times I want to top the plant off myself.
The system runs as a loop. A capacitive moisture sensor sits in the soil and reads how wet it is. The Arduino watches that reading, and when it drops below a threshold I set, the Arduino tells the relay to switch on the pump. Water runs through the tubing into the pot until the reading climbs back above the line, and then the pump shuts off and the system waits.
The push button taps into that loop. Press it and the pump runs on its own, so I can water on demand or test the setup without waiting for the soil to dry. I wrote the code in the Arduino IDE and tuned the moisture threshold and timing by trial and error until the watering felt right. When I hit a wall, I worked through it with research, the documentation, and some AI help, and I made sure I understood what each part did and why.
The power gave me the most trouble.
My first instinct was to let the Arduino drive the pump directly. When I looked into it, I found out why that fails: a motor like the pump kicks voltage spikes back through the circuit every time it switches on or off, and those spikes can fry the Arduino. So I put a 5V relay between them. The Arduino sends a small control signal to the relay, the relay switches the pump, and the pump's power stays clear of the Arduino.
That left the question of how to power the pump. I stripped an old phone charger cable, ran it into a 5V wall brick, and used that to drive the pump side of the relay straight from the wall outlet. The noisy motor power sits on its own supply now, isolated from the electronics. With the power sorted, the rest of the system came together.
This was the self-directed learning I wanted. I came in hoping to understand electronics a bit better, and I came out with a working system and a clear picture of how sensors, relays, control signals, and power supplies fit together. Working through the power problem on my own taught me to slow down and research before I wire, a habit that has stuck with me since.
I built it as a version 1 on purpose. I wanted a working system to exist before I chased perfection, and that mindset is why I finished. It is easy to stall a project trying to make it perfect up front. Letting the first version stay a little rough kept me moving.
Now that it runs, these are the directions I want to take version 2:
Model a housing in Fusion and 3D print it to hold the Arduino and the wiring. It tidies up the look and shields the boards from the stray splashes a water build tends to produce.
Wire in an app to check soil moisture and other readings at a glance, water a plant from my phone, and manage a few plants from one place.
This is the one I care about most. Right now the Arduino has to stay tethered to my computer or a power bank. I want to run the system, both the Arduino and the pump, off a battery pack charged by a solar panel, and take it off the grid for good.