#include "DHT.h"
// =============================
// PIN KOMPONEN
// =============================
#define PIR_PIN 2
#define DHT_PIN 3
#define LDR_PIN A0
#define LED_HIJAU 8
#define LED_MERAH 9
#define BUZZER 10
// Jenis sensor DHT
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
// =============================
// SETUP
// =============================
void setup() {
// Serial Monitor
Serial.begin(9600);
// PIR
pinMode(PIR_PIN, INPUT);
// LED
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
// Buzzer
pinMode(BUZZER, OUTPUT);
// Memulai DHT22
dht.begin();
// Kondisi awal
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_MERAH, LOW);
noTone(BUZZER);
Serial.println("================================");
Serial.println(" SMART ROOM SENSOR");
Serial.println("================================");
}
// =============================
// LOOP
// =============================
void loop() {
// =============================
// MEMBACA SENSOR PIR
// =============================
int gerakan = digitalRead(PIR_PIN);
// =============================
// MEMBACA LDR
// =============================
int cahaya = analogRead(LDR_PIN);
// =============================
// MEMBACA DHT22
// =============================
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
// =============================
// CEK DHT22
// =============================
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("--------------------------------");
Serial.println("Gagal membaca sensor DHT22!");
delay(1000);
return;
}
// =============================
// TAMPILKAN DATA
// =============================
Serial.println("--------------------------------");
Serial.print("Suhu : ");
Serial.print(suhu);
Serial.println(" C");
Serial.print("Kelembapan : ");
Serial.print(kelembapan);
Serial.println(" %");
Serial.print("Cahaya : ");
Serial.println(cahaya);
Serial.print("Gerakan : ");
if (gerakan == HIGH) {
Serial.println("TERDETEKSI");
}
else {
Serial.println("TIDAK ADA");
}
// =============================
// SISTEM KEAMANAN PIR
// =============================
if (gerakan == HIGH) {
// LED merah menyala
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_HIJAU, LOW);
// Buzzer berbunyi
tone(BUZZER, 2000);
Serial.println("PERINGATAN: GERAKAN TERDETEKSI!");
}
else {
// LED hijau menyala
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_HIJAU, HIGH);
// Buzzer mati
noTone(BUZZER);
}
// =============================
// PERINGATAN SUHU
// =============================
if (suhu > 35) {
Serial.println("PERINGATAN: SUHU TINGGI!");
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_HIJAU, LOW);
tone(BUZZER, 1500);
}
// =============================
// PERINGATAN CAHAYA
// =============================
if (cahaya < 300) {
Serial.println("Kondisi: RUANGAN GELAP");
}
// =============================
// DELAY
// =============================
delay(1000);
}