Smart Home Security Alarm (copy) (copy) — Arduino Mega simulation

Sistem keamanan rumah dan alarm multi-bahaya menggunakan Arduino Mega dengan sensor PIR, DHT11, Keypad, LCD, dan Buzzer.

An interactive Arduino Mega circuit simulation you can run free in your browser on Velxio, by s160425118.

Components

Sketch code

#include <LiquidCrystal.h>
#include <DHT.h>
#include <Keypad.h>

// ==================================================
// DHT11
// ==================================================
#define DHTPIN A0
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// ==================================================
// GAS / SMOKE SENSOR (MQ2 - Grove 3 Pin)
// ==================================================
#define MQ2PIN A1
const int smokeThreshold = 400; // Threshold indikasi asap/gas (0 - 1023)

// ==================================================
// LCD 16x2 (RS, E, D4, D5, D6, D7)
// ==================================================
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// ==================================================
// KEYPAD CONFIGURATION (4x4)
// ==================================================
const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {22, 23, 24, 25}; 
byte colPins[COLS] = {26, 27, 28, 29}; 

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

// Password Settings
const String CORRECT_PASSWORD = "1234";
String enteredPassword = "";
int failedAttempts = 0;
const int MAX_ATTEMPTS = 5;
bool isLocked = false;
bool passwordMode = false;

// Mode status untuk spam pesan di Serial Monitor
bool isWrongPasswordState = false;
unsigned long wrongPasswordStartMillis = 0;
const long wrongPasswordDuration = 3500; // Durasi spam WRONG PASSWORD (3.5 detik)

// ==================================================
// PIN KOMPONEN
// ==================================================
const int pirPin = 7;
const int buzzerPin = 6;
const int fanPin = 8; // Pin untuk Kipas (DC Motor)

const int ledPIRPin = 30;
const int ledTempPin = 31; // LED Merah Indikator Suhu / Fire Alarm
const int ledsafe = 17;

// ==================================================
// STATUS ALARM & TIMING
// ==================================================
bool alarmAktif = true;
unsigned long previousMillis = 0;
const long interval = 2000; // Interval pembacaan sensor

unsigned long lastSerialMsgMillis = 0;
const long serialInterval = 800; // Interval spam pesan serial (0.8 detik)

void setup() {
  pinMode(pirPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(fanPin, OUTPUT); // Set pin Kipas sebagai OUTPUT
  pinMode(ledPIRPin, OUTPUT);
  pinMode(ledTempPin, OUTPUT);
  pinMode(ledsafe, OUTPUT);

  Serial.begin(9600);

  lcd.begin(16, 2);
  lcd.clear();

  dht.begin();

  noTone(buzzerPin);
  digitalWrite(buzzerPin, LOW);
  digitalWrite(fanPin, LOW); // Kipas mati saat awal dinyalakan
  digitalWrite(ledPIRPin, LOW);
  digitalWrite(ledTempPin, LOW);
  digitalWrite(ledsafe, HIGH);

  lcd.setCursor(0, 0);
  lcd.print("SYSTEM ARMED");
  lcd.setCursor(0, 1);
  lcd.print("Initializing...");

  Serial.println("SYSTEM ARMED");
  Serial.println("DHT11 & MQ2 Starting...");
  Serial.println("------------------------------------

More projects by s160425118