Sistem Pembuka Pintu Otomatis Berbasis Deteksi Gerakan dan Suhu adalah sebuah sistem yang dirancang untuk mengontrol pintu agar dapat membuka dan menutup secara otomatis berdasarkan dua faktor: keberadaan orang (deteksi gerakan) dan kondisi suhu lingkungan.
TUJUAN
Membuat sistem otomatis yang membuka pintu hanya jika terdeteksi gerakan manusia di sekitarnya dan suhu ruangan berada di atas ambang batas tertentu (misalnya, 25°C). Ini bisa digunakan untuk aplikasi seperti pintu otomatis di rumah atau ruang tertentu yang perlu menjaga suhu, misalnya rumah kaca atau laboratorium.
KOMPONEN UTAMA DAN FUNGSINYA
PRINSIP KERJA
PROSES ALUR KERJA
KEUNTUNGAN
CODINGAN
#include <LiquidCrystal.h>
#define pir_pin1 7
#define pir_pin2 8
#define suhu_pin A1
bool open = false;
bool terbuka = false;
bool standby = false;
bool standby2 = false;
int starttime = 0;
int prevtime = 0;
int waktuawal = 0;
int interval1 = 500;
int interval2 = 100;
int interval3 = 600;
float suhu = 0;
String status = "";
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("Selamat Datang");
lcd.setCursor(0, 1);
lcd.print("Mohon Ukur Suhu");
pinMode(pir_pin1, INPUT);
pinMode(pir_pin2, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
int pir1 = digitalRead(pir_pin1);
int pir2 = digitalRead(pir_pin2);
float suhu = ((analogRead(suhu_pin)*0.004882814)-0.5)*100;
String temp = String(suhu,1);
if(pir1 == HIGH){
standby = false;
if(suhu <= 37.5){
bukapintu();
if(terbuka==false){
lcd.setCursor(0, 0);
lcd.print("Suhu anda: "+temp);
lcd.setCursor(0, 1);
lcd.print("Anda boleh masuk");
}
else{
lcd.setCursor(0, 0);
lcd.print("Pintu Terbuka ");
lcd.setCursor(0, 1);
lcd.print("Silahkan masuk ");
}
}
if(suhu > 37.5){
if(standby2 == false){
diam();
waktuawal = millis();
lcd.setCursor(0, 0);
lcd.print("Suhu anda: "+temp);
lcd.setCursor(0, 1);
lcd.print("Tidak boleh masuk");
standby2 = true;
status = "Tidak boleh masuk, suhu tinggi";
}
if(millis()-waktuawal >= interval3){
standby = true;
standby2 = false;
int haha = false;
}
}
}
if(pir1==LOW && pir2==HIGH){
tutuppintu();
}
if(standby == true){
lcd.setCursor(0, 0);
lcd.print("Selamat Datang ");
lcd.setCursor(0, 1);
lcd.print("Mohon Ukur Suhu ");
status = "Pintu Tertutup, standby";
}
if(millis()-prevtime>= interval2){
prevtime = millis();
Serial.print("Suhu: "+String(suhu));
Serial.print(" ");
Serial.print("Pir 1: "+String(pir1));
Serial.print(" ");
Serial.print("Pir 2: "+String(pir2));
Serial.print(" ");
Serial.println("Status: "+status);
}
}
void bukapintu(){
if(open==false){
starttime=millis();
buka();
open=true;
status = "Membuka Pintu";
}
if(millis()-starttime >= interval1){
diam();
status = "Pintu Terbuka";
terbuka = true;
}
}
void tutuppintu(){
if(open==true){
starttime=millis();
tutup();
status = "Menutup Pintu";
open=false;
resetlcd();
lcd.setCursor(0, 0);
lcd.print("Terima Kasih ");
lcd.setCursor(0, 1);
lcd.print("Patuhi Protokol");
}
if(millis()-starttime>=interval1){
diam();
terbuka = false;
standby = true;
}
}
void tutup(){
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
}
void buka(){
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
}
void diam(){
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}
void resetlcd(){
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
}
0 Orang Menyukai Karya Ini