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

Arduino Nano-Based Landslide Detection System with GSM Alerts

View and Edit Project In Cirkit DesignerImage of Arduino Nano-Based Landslide Detection System with GSM Alerts

Circuit Documentation

Summary

This circuit is designed to detect potential landslides by monitoring soil moisture, vibrations, and tilt. It uses an Arduino Nano microcontroller to read sensor data from a soil moisture sensor, a vibration sensor, and an accelerometer. Based on the sensor readings, the system triggers alerts using LEDs and a buzzer. Additionally, it sends SMS alerts via a GSM module.

Component List

  1. Arduino Nano

    • Description: Microcontroller board based on the ATmega328P.
    • Pins: D1/TX, D0/RX, RESET, GND, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11/MOSI, D12/MISO, VIN, 5V, A7, A6, A5, A4, A3, A2, A1, A0, AREF, 3V3, D13/SCK
  2. SW-420 Vibration Sensor

    • Description: Vibration sensor module.
    • Pins: vcc, Ground, Digital output
  3. Buzzer

    • Description: Simple piezoelectric buzzer.
    • Pins: PIN, GND
  4. LED: Two Pin (red)

    • Description: Red LED.
    • Pins: cathode, anode
  5. SIM800L GSM Module

    • Description: GSM module for sending SMS.
    • Pins: 5V, GND, VDD, SIM_TXD, SIM_RXD, RST
  6. Soil Moisture Sensor

    • Description: Sensor to measure soil moisture levels.
    • Pins: VCC, GND, SIG
  7. ADXL345 Accelerometer

    • Description: 3-axis accelerometer.
    • Pins: 3.3V, SDA, SCL, GND, 5V
  8. Resistor (220 Ohms)

    • Description: Resistor with 220 Ohms resistance.
    • Pins: pin1, pin2
  9. LED: Two Pin (yellow)

    • Description: Yellow LED.
    • Pins: cathode, anode
  10. LED: Two Pin (green)

    • Description: Green LED.
    • Pins: cathode, anode
  11. 9V Battery

    • Description: Power source.
    • Pins: +, -

Wiring Details

Arduino Nano

SW-420 Vibration Sensor

Buzzer

LED: Two Pin (red)

SIM800L GSM Module

Soil Moisture Sensor

ADXL345 Accelerometer

Resistor (220 Ohms)

Resistor (220 Ohms)

Resistor (220 Ohms)

LED: Two Pin (yellow)

LED: Two Pin (green)

9V Battery

Documented Code

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
#include <SoftwareSerial.h>

// Pin definitions
#define SOIL_SENSOR_PIN A0
#define VIBRATION_SENSOR_PIN 2
#define BUZZER_PIN 3
#define GREEN_LED 4
#define YELLOW_LED 5
#define RED_LED 6

// Threshold values
#define MOISTURE_THRESHOLD 500  // Soil moisture threshold
#define VIBRATION_THRESHOLD 100 // Vibration sensor threshold
#define TILT_THRESHOLD 15.0     // Tilt threshold (degrees)

// Initialize accelerometer
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

// GSM module connected to pins D7 (TX) and D8 (RX)
SoftwareSerial gsm(7, 8);

void setup() {
  // Pin Modes
  pinMode(SOIL_SENSOR_PIN, INPUT);
  pinMode(VIBRATION_SENSOR_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(YELLOW_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);

  // Initialize Serial and GSM
  Serial.begin(9600);
  gsm.begin(9600);

  // Initialize Accelerometer
  if (!accel.begin()) {
    Serial.println("No ADXL345 detected, check wiring.");
    while (1);
  }
  accel.setRange(ADXL345_RANGE_16_G); // Set range for the accelerometer
}

void loop() {
  int moistureLevel = analogRead(SOIL_SENSOR_PIN);
  int vibration = digitalRead(VIBRATION_SENSOR_PIN);

  sensors_event_t event;
  accel.getEvent(&event);
  float tilt = atan2(event.acceleration.y, event.acceleration.x) * 180 / PI;

  // Print sensor readings
  Serial.print("Soil Moisture: ");
  Serial.println(moistureLevel);
  Serial.print("Vibration: ");
  Serial.println(vibration);
  Serial.print("Tilt: ");
  Serial.println(tilt);

  // Landslide detection logic
  if (moistureLevel > MOISTURE_THRESHOLD || vibration > VIBRATION_THRESHOLD || abs(tilt) > TILT_THRESHOLD) {
    // Trigger alert
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(RED_LED, HIGH);
    digitalWrite(YELLOW_LED, LOW);
    digitalWrite(GREEN_LED, LOW);
    sendSMS("Warning: Possible landslide detected!");
    delay(2000);
  } else if (moistureLevel > MOISTURE_THRESHOLD || abs(tilt) > (TILT_THRESHOLD / 2)) {
    // Moderate alert
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(RED_LED, LOW);
    digitalWrite(YELLOW_LED, HIGH);
    digitalWrite(GREEN_LED, LOW);
  } else {
    // Normal status