Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

Arduino UNO-Based Environmental Monitoring System with Wi-Fi Connectivity

Image of Arduino UNO-Based Environmental Monitoring System with Wi-Fi Connectivity

Circuit Documentation

Summary

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.

Component List

  1. Arduino UNO

    • Description: A microcontroller board based on the ATmega328P.
    • Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
  2. SW-420 Vibration Sensor

    • Description: A sensor module that detects vibrations.
    • Pins: vcc, Ground, Digital output
  3. SparkFun Soil Moisture Sensor

    • Description: A sensor that measures the moisture level in the soil.
    • Pins: VCC, GND, SIG
  4. Tilt Sensor

    • Description: A sensor that detects tilt or orientation.
    • Pins: A0, D0, GND, VCC
  5. DHT22

    • Description: A sensor that measures temperature and humidity.
    • Pins: GND, VCC, DAT
  6. ESP8266 ESP-01 WiFi Module

    • Description: A WiFi module for wireless communication.
    • Pins: TXD, CH_PD, RST, VCC, GND, GPIO_2, GPIO_0, RXD
  7. Buzzer

    • Description: An electronic device that produces sound.
    • Pins: PIN, GND

Wiring Details

Arduino UNO

  • 3.3V: Connected to VCC of ESP8266 ESP-01 WiFi Module
  • 5V: Connected to VCC of DHT22, Tilt Sensor, SparkFun Soil Moisture Sensor, and SW-420 Vibration Sensor
  • GND: Connected to GND of DHT22, Tilt Sensor, SparkFun Soil Moisture Sensor, Buzzer, SW-420 Vibration Sensor, and ESP8266 ESP-01 WiFi Module
  • A0: Connected to SIG of SparkFun Soil Moisture Sensor
  • A1: Connected to A0 of Tilt Sensor
  • D5: Connected to PIN of Buzzer
  • D4: Connected to DAT of DHT22
  • D3: Connected to D0 of Tilt Sensor
  • D2: Connected to Digital output of SW-420 Vibration Sensor
  • D1: Connected to RXD of ESP8266 ESP-01 WiFi Module
  • D0: Connected to TXD of ESP8266 ESP-01 WiFi Module

SW-420 Vibration Sensor

  • vcc: Connected to 5V of Arduino UNO
  • Ground: Connected to GND of Arduino UNO
  • Digital output: Connected to D2 of Arduino UNO

SparkFun Soil Moisture Sensor

  • VCC: Connected to 5V of Arduino UNO
  • GND: Connected to GND of Arduino UNO
  • SIG: Connected to A0 of Arduino UNO

Tilt Sensor

  • A0: Connected to A1 of Arduino UNO
  • D0: Connected to D3 of Arduino UNO
  • GND: Connected to GND of Arduino UNO
  • VCC: Connected to 5V of Arduino UNO

DHT22

  • GND: Connected to GND of Arduino UNO
  • VCC: Connected to 5V of Arduino UNO
  • DAT: Connected to D4 of Arduino UNO

ESP8266 ESP-01 WiFi Module

  • TXD: Connected to D0 of Arduino UNO
  • RXD: Connected to D1 of Arduino UNO
  • VCC: Connected to 3.3V of Arduino UNO
  • GND: Connected to GND of Arduino UNO

Buzzer

  • PIN: Connected to D5 of Arduino UNO
  • GND: Connected to GND of Arduino UNO

Documented Code

#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.