Sistem Keamanan Rumah Arduino — Arduino Uno simulation

Sistem keamanan rumah menggunakan Arduino Uno, DHT11, PIR sensor, keypad, dan LCD 1602.

An interactive Arduino Uno 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>

// Inisialisasi LCD Paralel (RS, E, D4, D5, D6, D7)
// D7 sekarang terhubung ke pin 13
LiquidCrystal lcd(A1, A2, A3, A4, A5, 13);

// Sensor Suhu (Pin SIG ke Pin 3)
#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// Konfigurasi Pin Komponen
const int PIR_PIN = 2;       // Sensor PIR
const int BUZZER_PIN = 4;    // Buzzer
const int LED_GREEN = 5;     // LED Hijau
const int LED_RED = 6;       // LED Merah

// Konfigurasi Keypad 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] = {7, 8, 9, 10};
// C4 sekarang terhubung ke pin A2 (sesuai kabel baru)
byte colPins[COLS] = {11, 12, 13, 1}; // C4 sekarang di pin 1
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

bool systemArmed = true; // Status awal sistem aktif (ARMED)

void setup() {
  lcd.begin(16, 2);
  dht.begin();
  
  pinMode(PIR_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_RED, OUTPUT);
  
  // Memastikan buzzer mati saat pertama kali menyala
  noTone(BUZZER_PIN);
  digitalWrite(BUZZER_PIN, LOW);

  // Tampilan awal saat sistem dinyalakan
  lcd.setCursor(0, 0);
  lcd.print("Sistem Keamanan");
  lcd.setCursor(0, 1);
  lcd.print("Rumah Aktif...");
  delay(2000);
  lcd.clear();
}

void loop() {
  // 1. Cek Tombol Keypad ('*' untuk Aktif/Matikan Alarm Penyusup)
  char key = keypad.getKey();
  if (key == '*') {
    systemArmed = !systemArmed;
    lcd.clear();
    if (systemArmed) {
      lcd.print("Sistem: ARMED");
    } else {
      lcd.print("Sistem: DISARMED");
      noTone(BUZZER_PIN);
      digitalWrite(BUZZER_PIN, LOW);
      digitalWrite(LED_RED, LOW);
    }
    delay(1000);
    lcd.clear();
  }

  // 2. Baca data dari sensor
  float temp = dht.readTemperature();
  int motion = digitalRead(PIR_PIN);

  // 3. Tampilkan nilai suhu pada baris pertama LCD
  lcd.setCursor(0, 0);
  lcd.print("Suhu: ");
  if (isnan(temp)) {
    lcd.print("Error ");
  } else {
    lcd.print(temp, 1);
    lcd.print((char)223); // Simbol derajat °
    lcd.print("C  ");
  }

  // 4. Logika Peringatan (Kebakaran & Penyusup)
  if (!isnan(temp) && temp > 35.0) { 
    lcd.setCursor(0, 1);
    lcd.print("BAHAYA: FIRE!   ");
    
    digitalWrite(LED_RED, HIGH);
    digitalWrite(LED_GREEN, LOW);
    tone(BUZZER_PIN, 1000); // Buzzer berbunyi
  } 
  else if (systemArmed && motion == HIGH) { 
    lcd.setCursor(0, 1);
    lcd.print("AMARAN: PENYUSUP");
    
    digitalWrite(LED_RED, HIGH);
    digitalWrite(LED_GREEN, LOW);
    tone(BUZZER_PIN, 1000); // Buzzer berbunyi
  } 
  else {
    lcd.setCursor(0, 1);
    if (systemArmed) {
      lcd.print("Status: AMAN    ");
    } else {
      lcd.print("Status:NON-AKTIF");
    }

    digitalWrite(LED_RED, LOW);
    digitalWrite(LED_GREEN, HIGH);

    // Matikan tone buzzer saat kondisi aman
    noTone(BUZZER_PIN);

More projects by s160425118