Build a smart plant monitor with soil moisture and light sensors connected to Blynk and keep your indoor plants, kitchen garden, or terrace garden thriving. This project uses capacitive soil moisture sensors (more reliable than resistive probes in India’s monsoon humidity), a BH1750 light sensor, and DHT22 for ambient conditions – all connected to ESP8266 and reported to your phone via Blynk with watering reminders and automated pump control.
Table of Contents
- Indian Gardening Context: Monsoon, Summer, and Terrace
- Hardware: Sensors and Microcontroller Selection
- Sensor Wiring and Waterproofing for Indian Climate
- ESP8266 Firmware for Multi-Sensor Plant Monitoring
- Blynk Dashboard: Gauges, Charts, and Alerts
- Automatic Watering with Submersible Pump
- Monitoring Multiple Plants and Garden Zones
- Frequently Asked Questions
Indian Gardening Context: Monsoon, Summer, and Terrace
Indian plant care has unique seasonal challenges:
- Summer (March-May): Terrace and balcony temperatures can reach 45-50 degrees C. Pots dry out in 12-18 hours. Automated watering twice daily is essential for Tulsi, Mogra, Hibiscus, and Curry Leaf plants.
- Monsoon (June-September): Rain provides natural irrigation but overwatering risks root rot. Smart monitoring detects when soil is already saturated and skips scheduled watering cycles.
- Indoor plants: Kitchen windows in Indian homes typically receive 2-4 hours of direct sunlight. BH1750 light readings help position Money Plant, Peace Lily, and Pothos for optimal indirect light.
- Kitchen gardens: Coriander, Methi, Spinach require consistent soil moisture (40-60% VWC). Smart monitoring replaces the daily guess-and-check routine.
Recommended: UNO WiFi R3 (ATmega328P + ESP8266)
The UNO WiFi R3 is the perfect smart plant monitor brain. Its ATmega328P handles multi-sensor ADC readings while the ESP8266 manages WiFi and Blynk cloud reporting, all on one affordable board.
Hardware: Sensors and Microcontroller Selection
Complete BOM (India prices 2025):
- Capacitive soil moisture sensor v2.0: Rs 90 (better than resistive – no electrolytic corrosion in humid conditions)
- BH1750 I2C light intensity sensor: Rs 80 (measures lux accurately, useful for sunlight tracking)
- DHT22 temperature and humidity sensor: Rs 120 (monitors ambient conditions that affect watering needs)
- 5V mini submersible pump: Rs 150 (for automated watering, 3-5 litre/min flow rate)
- 5V relay module: Rs 30 (to switch pump from ESP8266 GPIO)
- 1000ml water reservoir (repurposed plastic jar): Free
- Total BOM per plant zone: approximately Rs 650
Sensor Wiring and Waterproofing for Indian Climate
Capacitive Soil Moisture Sensor:
VCC -> 3.3V
GND -> GND
AOUT -> A0 (NodeMCU has single ADC)
OR use I2C ADC (ADS1115, Rs 80) for multiple soil sensors
BH1750 (I2C):
VCC -> 3.3V
GND -> GND
SDA -> D2 (GPIO4)
SCL -> D1 (GPIO5)
ADDR -> GND (address 0x23)
DHT22:
VCC -> 3.3V
GND -> GND
DATA -> D4 (GPIO2) with 10kohm pullup
Water Pump Relay:
VCC -> 5V
GND -> GND
IN -> D5 (GPIO14)
Weatherproofing for Indian monsoon: Coat all PCB connections with conformal coating spray (Rs 200 at hardware stores). Mount the ESP8266 enclosure under a ledge or overhang. Use marine-grade silicone sealant around cable entry holes. The BH1750 and DHT22 can be exposed; the ESP8266 electronics must be protected from direct rain.
ESP8266 Firmware for Multi-Sensor Plant Monitoring
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <BH1750.h>
#include <Wire.h>
DHT dht(D4, DHT22);
BH1750 lightSensor;
BlynkTimer timer;
// Calibration values for capacitive sensor in your soil type
const int DRY_VALUE = 850; // ADC reading in dry soil
const int WET_VALUE = 380; // ADC reading in saturated soil
void readAndUpload() {
// Soil moisture (0-100%)
int rawADC = analogRead(A0);
int moisture = map(rawADC, DRY_VALUE, WET_VALUE, 0, 100);
moisture = constrain(moisture, 0, 100);
// Light (lux)
float lux = lightSensor.readLightLevel();
// Temperature and humidity
float temp = dht.readTemperature();
float humi = dht.readHumidity();
// Upload to Blynk
Blynk.virtualWrite(V1, moisture); // Moisture %
Blynk.virtualWrite(V2, lux); // Light lux
Blynk.virtualWrite(V3, temp); // Temperature C
Blynk.virtualWrite(V4, humi); // Humidity %
// Watering alerts
if (moisture < 30) {
Blynk.logEvent("water_needed", "Soil moisture below 30%!");
}
// Light alert for Indian summer
if (lux > 80000 && temp > 38) {
Blynk.logEvent("sun_stress", "High sun + heat. Move plant to shade.");
}
}
void setup() {
Wire.begin(D2, D1);
lightSensor.begin();
dht.begin();
Blynk.begin(BLYNK_AUTH, ssid, pass);
timer.setInterval(60000L, readAndUpload); // every minute
}
Recommended: Mega WiFi R3 (ATmega2560 + ESP8266)
Manage a full kitchen garden or terrace farm with the Mega WiFi R3. Connect ADS1115 ADC expanders to monitor 16+ soil moisture zones simultaneously and automate irrigation valves for each garden bed.
Blynk Dashboard: Gauges, Charts, and Alerts
In the Blynk IoT console, create a dashboard with:
- Gauge (V1, 0-100%): Soil moisture with colour zones: Red 0-30% (dry), Yellow 30-60% (needs water soon), Green 60-80% (optimal), Blue 80-100% (overwatered)
- Value display (V2): Light in lux with label “Optimal: 5,000-15,000 lux for most indoor plants”
- SuperChart (V3, V4): 7-day temperature and humidity trend to correlate with watering needs
- Button (V5): Manual pump override for immediate watering from phone
Set up Blynk Events: moisture_below_30 (email + push), overmoist_above_85 (push only), pump_on (log only). Blynk free plan supports 2 events – upgrade to Plus for unlimited events or use MQTT to Home Assistant for unlimited automations.
Automatic Watering with Submersible Pump
// Auto-water when moisture drops below threshold
void checkAndWater() {
int moisture = getMoisturePercent();
// Only water during daylight (6 AM - 8 PM IST) to prevent root rot
int hour = getISTHour();
bool isDaylight = (hour >= 6 && hour <= 20);
// Don't water if it's been raining (high humidity AND moisture rising)
bool isRaining = (dht.readHumidity() > 90 && getMoistureTrend() > 0);
if (moisture < 35 && isDaylight && !isRaining) {
// Pump for 5 seconds (delivers ~25-50ml)
digitalWrite(PUMP_PIN, HIGH);
delay(5000);
digitalWrite(PUMP_PIN, LOW);
// Log the watering event
Blynk.logEvent("auto_watered", String("Moisture was ") + moisture + "%");
// Cooldown: don't re-check for 30 minutes
lastWaterTime = millis();
}
}
Monitoring Multiple Plants and Garden Zones
For balcony gardens with 5-10 pots, use an ADS1115 I2C ADC (Rs 80) to read 4 capacitive soil sensors from one I2C address:
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
void readAllZones() {
for (int ch = 0; ch < 4; ch++) {
int16_t adc = ads.readADC_SingleEnded(ch);
int moisture = map(adc, DRY_ADC, WET_ADC, 0, 100);
Blynk.virtualWrite(V10 + ch, constrain(moisture, 0, 100));
}
}
// Wire two ADS1115 (ADDR pin to GND and VCC) for 8 soil channels
Name each Blynk datastream with the plant name (Tulsi, Mogra, Curry Leaf, Tomato) for an intuitive garden dashboard showing your entire terrace farm at a glance.
Recommended: 12V 1-Channel Relay Module (RS485/Modbus)
For garden irrigation with solenoid valves (drip irrigation systems common in Indian terrace gardens), this relay module handles the 12V solenoid valve coils reliably with proper inductive load protection.
Frequently Asked Questions
- Why does the capacitive sensor give different readings in the same pot after a week?
- Soil settling, compaction, and salt accumulation around the sensor tip change readings over time. Re-calibrate every 2-4 weeks: take a DRY_VALUE reading in completely dry soil (sun-dried) and WET_VALUE reading after thoroughly watering. Save new calibration to EEPROM.
- How deep should I insert the soil moisture sensor?
- Insert at 60-70% of pot depth for most plants. For shallow-rooted herbs (Coriander, Methi), 3-5cm depth. For deep-rooted plants (Hibiscus, Bougainvillea in large pots), 15-20cm. The sensor reads moisture only at the insertion point.
- Will the sensor corrode in India’s monsoon season?
- Capacitive sensors (v2.0 and later) have a conformal-coated PCB that resists corrosion. The earlier resistive type (with exposed metal electrodes) corrodes rapidly in humid conditions. Ensure you are using a genuine capacitive sensor. Counterfeits with exposed electrodes are common on Indian platforms like Flipkart and Amazon India.
- Can I get Indian plant care advice in the Blynk notification?
- Not natively from Blynk, but you can send Telegram messages via a webhook from Blynk with customised advice strings. Alternatively, use Home Assistant with a local LLM (Ollama on PC) to generate contextual plant care tips based on sensor readings.
- What is the pump runtime needed for a standard 8-inch Indian nursery pot?
- A standard 8-inch pot (approximately 3 litres of soil) needs 150-200ml to bring moisture from 30% to 60%. At 3 litre/min pump flow, that is 3-4 seconds. Always test your specific pump and pot combination: run pump for 3s, wait 5 minutes for distribution, read moisture, adjust duration accordingly.
Add comment