This circuit is designed to monitor environmental conditions using various sensors and communicate the data via a WiFi module. The main components include an Arduino UNO, a DHT22 temperature and humidity sensor, a soil moisture sensor, a vibration sensor, a tilt sensor, a buzzer, and an ESP8266 WiFi module. The Arduino UNO reads data from the sensors and sends it to the ESP8266 for wireless transmission. The buzzer is used to provide audible alerts based on sensor readings.
Arduino UNO
SW-420 Vibration Sensor
SparkFun Soil Moisture Sensor
Tilt Sensor
DHT22
ESP8266 ESP-01 WiFi Module
Buzzer
#include <DHT.h>
#include <SoftwareSerial.h>
#define DHTPIN 2 // Pin for DHT22 Data
#define DHTTYPE DHT22 // Define the sensor type (DHT22)
#define soilMoisturePin A0 // Soil Moisture Sensor (Analog Pin)
#define vibrationPin D3 // Vibration Sensor (Digital Pin)
#define tiltPin D4 // Tilt Sensor (Digital Pin)
#define buzzerPin D5 // Buzzer (Digital Pin)
#define wifiTX D6 // ESP8266 TX pin
#define wifiRX D7 // ESP8266 RX pin
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor
SoftwareSerial espSerial(wifiTX, wifiRX); // Define SoftwareSerial for ESP8266
void setup() {
// Start Serial Communication
Serial.begin(9600);
espSerial.begin(9600); // ESP8266 communication
// Initialize DHT sensor
dht.begin();
// Set pin modes
pinMode(soilMoisturePin, INPUT);
pinMode(vibrationPin, INPUT);
pinMode(tiltPin, INPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
// Read Soil Moisture
int soilMoistureValue = analogRead(soilMoisturePin);
Serial.print("Soil Moisture: ");
Serial.println(soilMoistureValue);
// Read Temperature and Humidity
float temperature = dht.readTemperature(); // Temperature in Celsius
float humidity = dht.readHumidity(); // Humidity percentage
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Read Vibration Sensor
int vibrationStatus = digitalRead(vibrationPin);
if (vibrationStatus == HIGH) {
Serial.println("Vibration Detected!");
digitalWrite(buzzerPin, HIGH); // Activate buzzer
} else {
digitalWrite(buzzerPin, LOW); // Deactivate buzzer
}
// Read Tilt Sensor
int tiltStatus = digitalRead(tiltPin);
if (tiltStatus == HIGH) {
Serial.println("Tilt Detected!");
digitalWrite(buzzerPin, HIGH); // Activate buzzer
} else {
digitalWrite(buzzerPin, LOW); // Deactivate buzzer
}
// Send Data to ESP8266
String data = "Temperature: " + String(temperature) + " C, Humidity: " + String(humidity) + "%, Moisture: " + String(soilMoistureValue);
espSerial.println("AT+CIPSEND=1"); // Send data command to ESP8266 (Modify with your server details)
espSerial.println(data);
delay(2000); // Wait for 2 seconds before the next loop
}
This code initializes the sensors and the WiFi module, reads data from the sensors, and sends the data to the ESP8266 for wireless transmission. The buzzer is activated based on the readings from the vibration and tilt sensors.