Skip to main content

Motion Detection (Telegram)

motion led cover

Membuat Notifikasi Pendeteksi Gerakan via Telegram

Untuk memulai siapkan beberap komponen sebagai berikut :

Komponen

ComponentDescription
ESP32Microcontroller
LEDOutput Cahaya
BreadboardPeletakan Component
Jumper CableMengubungkan Komponen
Pir SensorPendeteksi Gerakan

Wiring

Lalu Hubungkan semua komponen tersebut dengan kabel jumper seperti table berikut ini :

LEDESP32
+2
-GND
PIRESP32
+VCC
-GND
Data4

Rangkaian

Rangkaian akan seperti berikuti ini

esp-pir-wiring

Tutorial

Berikut ini adalah tutorial untuk menjalankannya

Langkah Pertama

esp-pir-wiring

Pastikan sudah meng install dan menambahkan librarry pada : wokwi dan Arduino Ide

  • UniversalTelegramBot -> by Benoit Blanchon
  • ArduinoJson -> by Brian Lough

Langkah Kedua

esp-pir-wiring

Tambahkan bot telegram yaitu @BotFather lalau, lalukan :

  • start -> untuk mulai chat baru
  • create new bot -> untuk membuat bot baru
  • masukan nama bot yang unik -> pastika nama bot uniq dan tidak sama
  • catat Token dan URL Bot dan masukan pada baris id di codingan

Langkah Ketiga

esp-pir-wiring

Tambahkan bot telegram yaitu @myidbot lalau, lalukan :

  • start -> memulai chat
  • getid -> mendapatkan ID chat telegram
  • catat id chat yang tampil dan masukan pada baris id di codingan

Langkah Keempat

esp-pir-wiring

Klik link Url Bot yang di buat sebelumnya dari @BotFather lalau, lalukan :

  • start
  • lalu amati pesan yang masuk pada bot ketika program di jalankan

Langkah Kelima

esp-pir-wiring

Masukan Token & ID Telegram pada baris kode di atas

Langkah Keenam

esp-pir-wiring

Sesuaikan Pesan yang akan di kirimkan ke Telegram dengan mengedit baris code tersebut

Running

Jika semua step sudah di lakukan, selanjutnya running dan amati hasilnya

esp-pir-wiring

Running Before Detected Object

  • Pastikan ssid / nama wifi & Password sesuai dengan pada router

esp-pir-wiring

Running After Detected Object

  • Pastikan koneksi wifi berhasil sesuai dengan ssid yang di masukan pada codingan
  • Pastikan ESP32 berhasil mendapatkan IP dari router

esp-pir-wiring

Tampilan Notifikasi di Aplikasi Telegram

  • Akan ada notifikasi Bot Started up jika ESP32 berhasil terhubung ke bot telegram
  • Notifikasi Gerakan Terdeteksi jika sensor mendeteksi objek "akan ada sedikit delay antara deteksi sensor dengan bot Telegram"

Praktik Tambahan

esp-pir-wiring

  • Tambahkan minimal 2 komponen berikut ini pada rangkaian sensor PIR

esp-pir-wiring

  • Lakukan Prakitkum untuk mengirimkan pesan ke telegram menggunakan sensor inframerah aktif
  • Referensi codingan di sini atau di tutorial sebelumnya

Code untuk menjalankan

pir-esp32-tele.ino
#include <Wire.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

// Wi-Fi and Telegram Credentials
const char* ssid = "Wokwi-GUEST"; //Jika men
const char* password = "";

#define BOTtoken "isikan token dari telegram @botfather"
#define CHAT_ID "isikan id dari @myidbot"

#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int ledPin = 2;
int inputPin = 4;
int pirState = LOW;
int vallue = 0;

void setup() {
Serial.begin(115200);

#ifdef ESP8266
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
#endif

#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
#endif

pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);

Serial.print("Connecting Wifi: ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

int a = 0;
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
a++;
}

Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
delay(500);
bot.sendMessage(CHAT_ID, "Bot started up", "");
//delay(1000);

}
void loop() {
vallue = digitalRead(inputPin);
if (vallue == HIGH) {
digitalWrite(ledPin, HIGH);
if (pirState == LOW) {
Serial.println("Motion detected!");
bot.sendMessage(CHAT_ID, "Gerakan Terdeteksi", "");
digitalWrite(ledPin, HIGH);
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
Hasil

Amati pada Serial Monitor menunjukan output bahwa koneksi ke wifi berhasil dan deteksi objek berjalan dan settingan token dan id telegram sudah sesuai

Jika Error

Pastikan Semua Pin dan Codingan sudah sesuai dan perkabelan tidak ada yg longgar

Referemsi

Artikel

Video