The aim of this project is to design an Arduino-based monitoring system that measures soil moisture, humidity, and temperature. The collected data is displayed on an LCD screen in real-time, allowing users to efficiently manage and maintain optimal conditions for agricultural or horticultural environments.
Benefits:
- Enhanced Crop Management: By monitoring soil moisture levels, farmers and gardeners can ensure that plants receive the right amount of water, preventing overwatering or underwatering. This leads to healthier plants and improved crop yields.
- Resource Efficiency: Efficient water usage is crucial in agriculture. By using soil moisture data, irrigation systems can be optimized, reducing water waste and conserving this vital resource. This is particularly beneficial in areas prone to drought or water scarcity.
- Climate Control: Monitoring humidity and temperature helps in maintaining the ideal growing conditions for different plants. This is especially important in greenhouses where precise climate control can significantly impact plant growth and productivity.
- Cost Savings: Optimized watering and climate control reduce the costs associated with excessive water use and energy consumption. Additionally, healthier plants and higher yields contribute to increased profitability for farmers.
- Environmental Sustainability: Proper water management and reduced resource wastage contribute to more sustainable agricultural practices, promoting environmental conservation and reducing the carbon footprint of farming operations.
- Data-Driven Decisions: Real-time data displayed on the LCD allows for immediate and informed decision-making. Historical data can also be collected and analyzed to improve long-term farming strategies.
Components and their Connection:
Components Required:
- Arduino Uno
- DHT 11 (Temp. Sensor)
- I2C LCD
- Soil Sensor
- Resistor(10k ohm)
- Jumper Wire [ Male to Female X7,Male to Male X5 ]
- Soil Moisture Sensor:
- Signal pin to A3
- Power (VCC) to 5V
- Ground (GND) to GND
- DHT11 Sensor:
- Signal pin to D2
- Power (VCC) to 5V
- Ground (GND) to GND
- I2C LCD:
- SDA to A4
- SCL to A5
- Power (VCC) to 5V
- Ground (GND) to GND
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Define pins and type
#define DHTPIN 2
#define DHTTYPE DHT11
#define SOIL_MOISTURE_PIN A3
// Initialize the DHT11 sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize the I2C LCD (address 0x27, 16 columns, 2 rows)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Start serial communication
Serial.begin(9600);
// Initialize the DHT sensor
dht.begin();
// Initialize the LCD
lcd.begin();
lcd.backlight();
// Print a message to the LCD
lcd.setCursor(0, 0);
lcd.print("Soil Humidity Temp");
}
void loop() {
// Read temperature and humidity from DHT11
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Read soil moisture value
int soilMoistureValue = analogRead(SOIL_MOISTURE_PIN);
float soilMoisturePercent = map(soilMoistureValue, 1023, 0, 0, 100); // Assuming 1023 is dry and 0 is wet
// Print values to serial monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%, Temperature: ");
Serial.print(temperature);
Serial.print("C, Soil Moisture: ");
Serial.print(soilMoisturePercent);
Serial.println("%");
// Display values on the LCD
lcd.setCursor(0, 0);
lcd.print("H:");
lcd.print(humidity);
lcd.print("% T:");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Soil:");
lcd.print(soilMoisturePercent);
lcd.print("% ");
// Wait a bit before the next loop
delay(2000);
}