Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO-Based Environmental Monitoring System with GSM Module

View and Edit Project In Cirkit DesignerImage of Arduino UNO-Based Environmental Monitoring System with GSM Module

Circuit Documentation

Summary

This circuit is designed to monitor environmental conditions using an Arduino UNO microcontroller. It includes a DHT11 sensor for temperature and humidity measurements, a water level sensor for soil moisture detection, and a SIM900A module for sending SMS notifications. The circuit is powered via a USB power source.

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

    • Description: A digital temperature and humidity sensor.
    • Pins: VCC, GND, DATA
  3. Water Level Sensor

    • Description: A sensor to measure the water level or soil moisture.
    • Pins: SIG, VCC, GND
  4. USB Power

    • Description: Provides power to the circuit.
    • Pins: +, -
  5. SIM900A

    • Description: A GSM module for sending SMS messages.
    • Pins: GND, DB9-3 (RXD), DB9-2 (TXD), 5V, 3VR, 5VR, 3VT, 5VT, VCC, Ring, RESTART, RESET, STATUS

Wiring Details

Arduino UNO

DHT11

Water Level Sensor

USB Power

SIM900A

Code Documentation

Arduino UNO Code

#include <DHT.h>
#include <SoftwareSerial.h>

#define DHTPIN 2
#define DHTTYPE DHT11
#define SOIL_MOISTURE_PIN A0

DHT dht(DHTPIN, DHTTYPE);
SoftwareSerial gsm(7, 8); // RX, TX

void setup() {
  Serial.begin(9600);
  gsm.begin(9600);
  dht.begin();
  delay(1000);
  
  // Initialize GSM module
  gsm.println("AT");
  delay(1000);
  gsm.println("AT+CMGF=1"); // Set SMS to text mode
  delay(1000);
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  int soilMoisture = analogRead(SOIL_MOISTURE_PIN);

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  String message = "Temp: " + String(temperature) + "C, Humidity: " + String(humidity) + "%, Soil Moisture: " + String(soilMoisture);
  sendSMS(message);
  
  delay(60000); // Wait for 1 minute before sending the next reading
}

void sendSMS(String message) {
  gsm.println("AT+CMGS=\"+1234567890\""); // Replace with your phone number
  delay(1000);
  gsm.print(message);
  delay(1000);
  gsm.write(26); // ASCII code for CTRL+Z to send the SMS
  delay(1000);
}

This code initializes the DHT11 sensor and the SIM900A GSM module. It reads temperature, humidity, and soil moisture data, then sends this data via SMS every minute.