IoT-Based Smart Agriculture Solution with Machine Learning Crop Recommendation

Precision Farming with ESP32, Multi-Sensor Environmental Monitoring, Automated Irrigation, Blynk IoT Dashboard, and Flask ML Crop Prediction Server

Category: IoT, Embedded Systems, Agriculture, Machine Learning
Tools & Technologies: ESP32, DHT22 Temperature/Humidity Sensor, Soil Moisture Sensor, LDR Light Sensor, Relay Module (Pump), 20x4 I2C LCD, Blynk IoT Platform, Flask ML Server (Fly.io), scikit-learn, Docker, Python, Arduino IDE

Status: Completed

Introduction

This project implements an IoT-based smart agriculture system that combines real-time environmental monitoring with machine learning-powered crop recommendations. The ESP32 microcontroller collects data from multiple sensors — DHT22 for temperature and humidity, an analog soil moisture sensor, and an LDR for light level detection. Based on soil moisture levels, the system automatically controls a water pump via relay for irrigation (activating below 40% moisture, deactivating above 50% with hysteresis). All sensor data is streamed to a Blynk IoT dashboard for remote monitoring. A companion Python prediction script fetches sensor data from Blynk, sends it to a Flask ML server deployed on Fly.io running a scikit-learn crop recommendation model, and posts the prediction back to the Blynk dashboard.

System Overview System Overview


Aim and Objectives

Aim:
Design and develop an IoT smart agriculture system integrating real-time sensor monitoring, automated irrigation, and ML-based crop recommendations.

Objectives:

  • Monitor temperature, humidity, soil moisture, and light levels using dedicated sensors.
  • Automate irrigation with hysteresis-based pump control (ON at <40%, OFF at ≥50%).
  • Stream all sensor data to Blynk IoT dashboard for remote farm monitoring.
  • Deploy a Flask ML server with scikit-learn crop recommendation model on cloud infrastructure.
  • Fetch sensor data from Blynk API and send to ML server for crop/action prediction.
  • Display real-time sensor readings on 20x4 LCD for local monitoring.

Features & Deliverables

  • Multi-Sensor Monitoring: DHT22 (temperature/humidity), soil moisture (analog), and LDR (light) sensors provide comprehensive environmental data.
  • Automated Irrigation: Relay-controlled pump with hysteresis logic prevents rapid cycling and ensures optimal watering.
  • Blynk IoT Dashboard: Real-time sensor data visualization and event logging for remote farm management.
  • ML Crop Recommendation: Flask server with scikit-learn model provides crop/action suggestions based on current conditions.
  • Cloud Deployment: ML server containerized with Docker and deployed on Fly.io for reliable access.
  • LCD Display: Local 20x4 LCD shows all sensor readings for on-site monitoring.
  • Offline Capability: System operates autonomously without WiFi with 10-second timeout fallback.

Process / Methodology

Hardware Assembly

Components: ESP32, DHT22, Soil Moisture Sensor, LDR, Relay Module, Water Pump, 20x4 I2C LCD, LEDs.

  • Connected DHT22 for ambient temperature and humidity monitoring.
  • Integrated analog soil moisture sensor for irrigation decision-making.
  • Configured relay module for automated water pump control.
  • Assembled weatherproof enclosure for outdoor agricultural deployment.

Software Development

  • Developed ESP32 firmware with multi-sensor polling and Blynk virtual pin updates.
  • Implemented irrigation control with moisture hysteresis (40%/50% thresholds).
  • Built Flask ML API server with scikit-learn sugarcane recommendation model.
  • Created Docker container for ML server deployment on Fly.io cloud platform.
  • Developed Python prediction script bridging Blynk data API with ML inference server.

Testing & Calibration

  • Calibrated soil moisture sensor readings against known moisture levels.
  • Validated ML model accuracy with various environmental condition inputs.
  • Tested pump relay switching reliability and hysteresis behavior.

Challenges & Solutions

  • Challenge: Soil moisture sensor corrosion from continuous soil contact.
    Solution: Used capacitive soil moisture sensor variant and implemented periodic reading intervals.
  • Challenge: ML server latency affecting real-time prediction updates.
    Solution: Implemented asynchronous prediction pipeline with periodic polling via Python script.
  • Challenge: WiFi connectivity in outdoor agricultural settings.
    Solution: Full offline irrigation capability with automatic cloud sync when connectivity restores.

Results & Impact

  • Automated Irrigation: Pump control maintained optimal soil moisture with minimal water waste.
  • Remote Monitoring: Blynk dashboard provided real-time farm condition visibility from anywhere.
  • Smart Recommendations: ML model provided actionable crop management suggestions based on conditions.
  • Reliable Operation: System functioned continuously in outdoor conditions with WiFi fallback.

Future Enhancements

  • Add weather forecast API integration for predictive irrigation scheduling.
  • Implement multi-zone irrigation control for larger farm deployments.
  • Add camera module for visual crop health monitoring and disease detection.
  • Expand ML model to support multiple crop types and regional conditions.

Demonstration / Access

  • GitHub Repository: Coming soon
  • Live Demonstration Video: Coming soon

Thank You for Visiting My Portfolio

I sincerely appreciate you taking the time to explore my portfolio and learn about my work and expertise. If you have any questions or wish to discuss potential collaborations, please feel free to reach out via the Contact section.

Best regards,
Damilare Lekan, Adekeye.