Project Overview
The Phyto-Hydrometric Feeder is an automated hydroponic system that maintains optimal plant growth conditions without manual intervention. It continuously monitors water levels, humidity, and temperature — triggering pump actions automatically when thresholds are crossed.
The project is a full end-to-end build: from the embedded firmware on the ESP32 to a polished web dashboard that provides real-time monitoring and manual overrides from any device on the network.
Web Dashboard UI
I developed a responsive web interface served directly from the ESP32. It uses the Fetch API to auto-refresh sensor data every 2 seconds and provides manual override buttons for the water pumps. The dark-mode interface is intentionally lightweight — suitable for rendering from a microcontroller's limited memory.
function updateData() {
fetch('/data')
.then(response => response.json())
.then(data => {
document.getElementById('temp').innerText
= data.temperature + ' °C';
document.getElementById('humidity').innerText
= data.humidity + ' %';
document.getElementById('waterLevel').innerText
= data.waterLevel + ' cm';
});
}
setInterval(updateData, 2000);
Hardware & Control Logic
The core logic runs on an ESP32, which polls an ultrasonic distance sensor to measure the water tank depth. When the level drops below a calculated threshold, it triggers a relay to activate the dosage pump for a precise duration — then verifies the refill before stopping.
void checkWaterLevel() {
float distance = getUltrasonicDistance();
if (distance > THRESHOLD_EMPTY) {
digitalWrite(PUMP_RELAY, HIGH);
server.send(200, "text/plain", "Pump Activated");
delay(PUMP_DURATION_MS);
digitalWrite(PUMP_RELAY, LOW);
}
}
Interested in a similar IoT dashboard for your project?