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

Arduino Nano-Based Home Security System with LCD Display and GSM Alerts

View and Edit Project In Cirkit DesignerImage of Arduino Nano-Based Home Security System with LCD Display and GSM Alerts

Circuit Documentation

Summary

This circuit is a home protection system that integrates various sensors and modules to monitor environmental conditions and send alerts. The system uses an Arduino Nano microcontroller to interface with a 16x2 LCD display, an MQ-2 gas sensor, an HC-SR04 ultrasonic sensor, an LM35 temperature sensor, and a SIM800L GSM module. The system is powered by a 18650 Li-ion battery and includes a TP5100 battery charger and an XL4015 DC-DC buck converter for power management. The Arduino Nano runs embedded code to read sensor data, display information on the LCD, and send SMS alerts via the GSM module.

Component List

16X2 LCD

Arduino Nano

MQ-2

SIM800L

HC-SR04 Ultrasonic Sensor

Temperature Sensor (LM35)

18650 Li-ion Battery

Potentiometer

TP5100

XL4015 5A DC Buck Step-down

DC Power Source

Rocker Switch (SPST)

Wiring Details

16X2 LCD

Arduino Nano

MQ-2

SIM800L

HC-SR04 Ultrasonic Sensor

Temperature Sensor (LM35)

18650 Li-ion Battery

Potentiometer

TP5100

XL4015 5A DC Buck Step-down

DC Power Source

Rocker Switch (SPST)

Documented Code

Arduino Nano Code

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#include <NewPing.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
SoftwareSerial gsm(7, 8); // RX, TX

const int trigPin = 9;
const int echoPin = 10;
const int lm35Pin = A0;
const int mq2Pin = A1;

const unsigned long cooldownPeriod = 60000; // Cooldown period in milliseconds
unsigned long lastMovementAlertTime = 0;
unsigned long lastTemperatureAlertTime = 0;
unsigned long lastGasAlertTime = 0;

const int movementThreshold = 30; // cm
const float temperatureThreshold = 40.0; // Celsius
const int gasThreshold = 250; // MQ-2 value

// SMS Messages
const char* movementAlertMsg = "Alert Movement Detected!";
const char* temperatureAlertMsg = "Alert Temperature Detected!";
const char* gasAlertMsg = "Alert Gas Leakage/Smoke Detected!";

void setup() {
  lcd.begin(16, 2);
  gsm.begin(9600);
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  lcd.print("Home Protect v3.0");
  delay(2000);
  lcd.clear();
}

void loop() {
  long distance = detectMovement();
  float temperature = detectTemperature();
  int gasValue = detectGas();

  checkAlerts(distance, temperature, gasValue);
  updateDisplay(distance, temperature, gasValue);
  
  delay(1000); // Delay for stability
}

long detectMovement() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  long duration = pulseIn(echoPin, HIGH);
  return (duration * 0.034) / 2; // Distance in cm
}

float detectTemperature() {
  return analogRead(lm35Pin) * (5.0 / 1023.0) * 100.0; // Convert to Celsius
}

int detectGas() {
  return analogRead(mq2Pin);
}

void checkAlerts(long distance, float temperature, int gasValue) {
  if (distance < movementThreshold