Autonomous-Environmental-Monitoring-and-Plant-Care-Robot
An Arduino planter that waters itself, refuses to run dry, and drives a 60-LED grow-light cycle. Watering only — nutrient dosing is planned.
The idea: A plant that looks after itself
An autonomous growing system: sensors, control logic, mechanical hardware and automated irrigation combined so that a plant can be maintained without an operator. Soil moisture feeds a rolling average to a 16×2 LCD in real time; when moisture drops below a set threshold, a pump runs until it is back in range.
The whole thing is built around one failure mode people get wrong — running a pump against an empty reservoir. A mechanical low-water sensor on the jug triggers a buzzer and an LCD warning and blocks the pump until the jug is refilled.
The approach: One loop, four jobs
The control loop is ordered:
- Check the grow-light schedule and flip the LED strip on or off if it is time.
- Read and average the moisture sensor.
- If the soil is dry, check the reservoir sensor. Empty → buzz and flash a warning until refilled. Full → run the pump until moisture is back in range.
- Repeat forever.
The grow lighting is a 60-LED WS2812B strip on a fixed 16-hours-on / 8-hours-off schedule to simulate a day/night cycle.

Flow diagram — the same loop drawn out of the build’s own logic. It starts with the Arduino timer at zero, checks elapsed time to flip the grow LEDs, reads the moisture sensor, prints the level to the LCD, then checks the jug: low level sounds the buzzer, high level triggers the pump. It waits 30 seconds and repeats.
The build: A pulley, tin foil and copper wire
The reservoir level sensing is the least refined part of the machine. It runs on a pulley system and a makeshift contact button made from tin foil and copper wire, with a 220 Ω resistor in the level-sensing path. The connections were not always stable.
The rest of the hardware is a 16×2 parallel LCD for readout, an analog soil moisture sensor, a pump with its driver, a piezo buzzer for the audible low-water alert, and a potentiometer for LCD contrast.


What broke: The level sensor, repeatedly
The unstable level-detection contacts are this build’s weak point. The failure is mechanical rather than logical — the watering logic works; the switch that reports the jug’s state does not always.
The result: A working watering system, and only that
This version — V2 — handles watering only. Nutrient dosing is not implemented. The threshold logic is already shaped to extend toward dosing later, but that extension has not been built or tested.
Also unbuilt: the grow lights run a fixed teal colour (0, 120, 120). Swapping to a red/blue spectrum mix for testing growth-rate differences would be an easy change, but it has not been done.

What’s next
- Replace the pulley and contact-switch level sensing with an ultrasonic sensor measuring the reservoir, delivering alerts the same way the current system does
- Extend the threshold logic toward nutrient dosing
- Move the grow lights to a red/blue spectrum if growth-rate testing is wanted