Smart Door

Pendeteksi Radar Musuh Realtime Notification adalah sebuah alat yang digunakan untuk mendeteksi keberadaan benda yang mendekat dan saat ada benda yang mendekat alat ini akan memberikan sebuah notifikasi secara reltime melalui telegram dan selain memebritahu melalui notifikasi alat ini juga akan memberitahu jika ada benda yang mendekat dengan suara yang di keluarkan dari buzzer. ok langsung saja ke langkah-langkah pembuatanya

Alat dan Bahan

  1. nodemcu devkit beli disini
  2. Sensor ultrasonik hc-sr04 beli disini
  3. Kabel Jumper
  4. Buzzer beli disini
  5. Motor servo beli disini

Gambar Rangkaian dan Diagram Sistem

source Code

#include <ESP8266WiFi.h>
#include “CTBot.h”
#include <Servo.h>
CTBot myBot;
String ssid = “xxx”;
String pass = “xxx”;
String token = “xxx”;
const int id = 22233311;
// membuat nama objek servo untuk pengontrolan servo
Servo myservo;
// variable
int pos = 0;
int trig = D8; // membuat varibel trig yang di set ke-pin 3
int echo = D7; // membuat variabel echo yang di set ke-pin 2
long durasi; // membuat variabel durasi
int jarak; // membuat variabel jarak
int pinSpeaker = D3; // membuat variabel Buzzer yang di set ke-pin 8

void setup() {
pinMode(trig, OUTPUT); // set pin trig menjadi OUTPUT
pinMode(echo, INPUT); // set pin echo menjadi INPUT
pinMode(pinSpeaker, OUTPUT); // set pin buzzer menjadi OUTPUT
Serial.begin(9600); // digunakan untuk komunikasi Serial dengan komputer
myservo.attach(2); // objek servo diletakan pada pin 9
Serial.println(“Starting TelegramBot…”);
myBot.wifiConnect(ssid, pass);
myBot.setTelegramToken(token);

if (myBot.testConnection()) {
Serial.println(“Koneksi Bagus”);
} else {
Serial.println(“Koneksi Jelek”);
}

}

void loop() {
// start dari 0 derajar sampai 180 derajat
for (pos = 0; pos < 180; pos += 1)
{
// pada posisi 1 derajat
// memberitahu servo untuk pergi ke posisi ‘pos’
myservo.write(pos);
// tunggu 50ms untuk pencapaian posisi servo
delay(50);
jarak = calculateDistance(); // mencatat jarak
if (jarak <= 10) // Ketika ada objek musuh mendekat dengan jarak kurang dari 10 cm dari Sensor Ultrasonik maka Buzzer akan menyala
{
digitalWrite(pinSpeaker, HIGH);
myBot.sendMessage(id, “Tes Radar Terdeteksi”);
Serial.println(“Pesan Terkirim”);
} else {
digitalWrite(pinSpeaker, LOW);
}
}
// start dari 180 derajat ke 0 derajat
for (pos = 180; pos >= 1; pos -= 1)
{
// memberitahu servo untuk pergi ke posisi ‘pos’
myservo.write(pos);
// tunggu 50ms untuk pencapaian posisi servo
delay(50);
jarak = calculateDistance(); // mencatat jarak
if (jarak <= 10) // Ketika ada objek musuh mendekat dengan jarak kurang dari 10 cm dari Sensor Ultrasonik maka Buzzer akan menyala
{
digitalWrite(pinSpeaker, HIGH);
myBot.sendMessage(id, “Tes Radar Terdeteksi”);
Serial.println(“Pesan Terkirim”);
} else {
digitalWrite(pinSpeaker, LOW);
}
}
}

void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(pinSpeaker, HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinSpeaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}

int calculateDistance() {
// program dibawah ini agar trigger memancarakan suara ultrasonic
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
delayMicroseconds(8);

durasi = pulseIn(echo, HIGH); // menerima suara ultrasonic
jarak = (durasi / 2) / 29.1; // mengubah durasi menjadi jarak (cm)
Serial.println(jarak); // menampilkan jarak pada Serial Monitor
}

Leave a Comment