MotionSense: Deteksi Intrusi Cerdas dengan Arduino & ESP8266
Komponen dan Perlengkapan
- Arduino Mega – 1 unit
- Espressif ESP8266 ESP-01 – 1 unit
- Sensor PIR HC-SR501 – 1 unit
- Kapasitor 1000µF – 1 unit
- Resistor dan kabel jumper – 1 set
Alat dan Mesin yang Diperlukan
Aplikasi dan Layanan Online
Tentang Proyek Ini
MotionSense adalah sistem yang memberitahukan aktivitas atau intrusi yang tidak diizinkan. Saya menggunakan Arduino dan PIR untuk deteksi aktivitas serta ESP8266 untuk konektivitas WiFi. Notifikasi dikirim melalui aplikasi Pushbullet dan API-nya dari Arduino.
Pendahuluan
Dalam tutorial ini, saya akan membahas cara membuat sistem yang memberitahukan aktivitas atau intrusi yang tidak diizinkan. Saya menggunakan Xperia Z1 untuk menerima notifikasi. Aplikasi Pushbullet digunakan untuk menerima notifikasi, dan API Pushbullet digunakan untuk mengirim notifikasi dari Arduino.
Pengetahuan Dasar yang Diperlukan
- Pengetahuan tentang Arduino dan hardware dasar [ kunjungi: www.arduino.cc ]
- Ide tentang perintah AT [ baca: https://www.codeproject.com/Articles/85636/Introduction-to-AT-commands-and-its-uses ]
- PIR, cara kerjanya [ tentang: https://en.wikipedia.org/wiki/Passive_infrared_sensor ]
Perangkat yang Digunakan
- Arduino Mega 2560
- ESP8266 serial WiFi varian ESP-01
- Sensor PIR HC-SR501
- Kapasitor 1000 µF, resistor berbagai macam [ kapasitor untuk suplai daya WiFi, resistor untuk regulasi tegangan ]
- Kabel single thread 0,5mm [ kawat penghubung ]
- Kabel jumper female-female [ penghubung ]
- Xperia Z1 [ untuk aplikasi Pushbullet, ponsel apa pun juga bisa ]
- Laptop saya [ coding di Arduino ]
- Arduino IDE [v1.6.4]
Apa yang Harus Dilakukan
Pengaturan Lingkungan: Jika Arduino belum terinstal, instal dari situs resmi Arduino.
Pengaturan Sensor PIR:
Saya asumsikan Anda perlu sensitivitas maksimum dengan siklus peringatan minimum untuk tingkat deteksi yang lebih baik. Oleh karena itu, atur potensiometer sensor PIR seperti ini:
Buka bola putih sensor PIR dan Anda akan melihat deskripsi pin: GND | OUT | VCC
Hubungkan kabel jumper female dengan GND, VCC, dan OUT.
Sekarang hubungkan ujung lain pin jumper (yang terhubung ke PIR) ke Arduino:
PIR GND → Arduino GND
PIR VCC → Arduino 5V
PIR OUT → pin DIGITAL 2 [ Anda dapat memilih pin sesuai pilihan dan mengubahnya dalam kode Arduino ]
Untuk menguji PIR Anda, Anda dapat menggunakan kode ini di Arduino Playground.
Jadi sensor PIR Anda siap BEKERJA.
Mengaktifkan Arduino untuk terhubung ke internet melalui WiFi:
Saya menggunakan modul serial WiFi ESP8266 (varian ESP-01) untuk proyek saya yang cukup murah. Terdapat varian lain selain ESP-01. Terdapat juga firmware berbeda. Saya menggunakan firmware default, firmware AT. Periksa dua gambar ini untuk referensi koneksi.
Hubungkan ESP8266 dengan Arduino menggunakan kabel jumper:
ESP8266 GND → Arduino GND
ESP8266 UXTX (pin transmit) → Arduino RX2 (pin penerima Arduino Mega, yaitu Serial2 dalam kode)
ESP8266 CH_PD (buat HIGH) → Arduino 5V (tambahkan regulator tegangan 3.3 karena ESP 8266 dapat menahan 3.3v. Saya menggunakan resistor karena saya tidak punya regulator tegangan. Namun regulator tegangan lebih disarankan)
Biarkan RST, GPIO2, dan GPIO0 tidak terhubung
ESP8266 URXD (pin penerima) → Arduino TX2 (pin penerima Arduino yaitu Serial2 dalam kode)
ESP8266 VCC → 3.3v dari Arduino
ESP8266 memiliki masalah daya saat transmisi data. Ia menarik daya dari Arduino begitu banyak hingga Arduino dapat me-restart jika Arduino dipower melalui USB PC. Bahkan dengan suplai daya 5v melalui steker daya mungkin tidak cukup. Oleh karena itu, selalu disarankan untuk menggunakan suplai daya eksternal untuk ESP8266. Namun dalam eksperimen saya, saya menggunakan solusi cepat dan murah untuk hal ini. Saya menggunakan satu kapasitor elektrolit 1000µF untuk menyediakan daya yang cukup ke ESP8266.
pin yang lebih panjang → ESP8266 VCC terhubung ke 3.3v
pin yang lebih pendek → ESP8266 GND terhubung ke Arduino GND
Jadi modul WiFi ESP8266 Anda siap BEKERJA.
Pushbullet Notifier:
Pushbullet memungkinkan Anda memberitahukan berbagai perangkat Anda melalui notifikasi push dengan lancar. Kami akan menggunakan API-nya untuk notifikasi push dari sensor PIR kami. Baca lebih lanjut tentang Pushbullet.
Mari kita mulai.
Pergi ke PushBullet
Daftarkan diri Anda, unduh aplikasi Chrome dan aplikasi Smartphone.
Masuk ke Pushbullet di perangkat Anda.
Sekarang lihat cara kerjanya dengan mengirim beberapa pesan push ke perangkat Anda menggunakan aplikasi atau ekstensi Chrome yang terinstal di PC Anda.
Pergi ke bagian API
CATATAN: Di sini semua tautan API dan URL disediakan untuk koneksi HTTPS dan Arduino tidak dapat menggunakan HTTPS karena tidak cukup canggih untuk menangani hal itu. Oleh karena itu, kami akan menggunakan versi HTTP dari API-nya yang tidak disebutkan di dokumentasi Pushbullet namun saya mendapatkan referensi ini dari github.
Dalam dokumentasi Pushbullet untuk push, mereka telah menyebutkan URL yang merupakan HTTPS, jadi kami akan menggunakan URL HTTP dan port yang disediakan dalam proyek github tersebut. Juga kami akan menambahkan /pushbullet sebelum jalur REST yang mereka sebutkan.
Contoh:
untuk notifikasi push ke semua perangkat, menurut dokumen pushbullet, jalur REST adalah: /v2/pushes
tapi kami akan menggunakan: /pushbullet/v2/pushes
URL dasar: 173.17.168.19
port: 8181
Sekarang periksa berbagai API dan baca deskripsi untuk mengetahui tentangnya. Anda dapat menggunakannya nanti untuk versi yang ditingkatkan dari tutorial ini.
Anda perlu kunci autentikasi Anda untuk push dari Arduino. Jadi pergi ke Akun Anda.
Cari Access Token, salin dan simpan di PC Anda di tempat yang aman.
Jadi Pushbullet sekarang siap MENGIRIM dan MENERIMA Push notification.
Saatnya untuk coding
Buka Proyek GitHub ini
Pergi ke folder Experiments. Di sana Anda akan menemukan MotionSense.ino, kode Anda yang akan mengirim notifikasi ke Perangkat Cerdas Anda.
Salin kode ini ke Arduino IDE dan hubungkan Arduino Anda (yang sudah diatur dengan WiFi dan sensor PIR).
Sekarang ubah parameter ini:
#define SSID "YOURSSID" /* ganti YOURSSID dengan nama titik akses WiFi Anda */ #define PASS "YOURPASSWORD" /* ganti PASSWORD Anda dengan kata sandi titik akses WiFi Anda */
Anda mungkin ingin mengubah pin OUT PIR ke pin yang Anda inginkan
#define PIRPIN 2 /* ganti dengan pin digital yang Anda inginkan dari Arduino Anda */ #define AUTH_TOKEN "YOUR_TOKEN_FROM_YOUR_ACCOUNT"; /* ganti YOUR_TOKEN_FROM_YOUR_ACCOUNT dengan Access Token Anda*/
Juga gunakan access token Anda seperti yang disebutkan dalam cuplikan di atas.
Sekarang kompilasi dan jalankan.
Akan membutuhkan waktu untuk kalibrasi sensor, inisialisasi modul WiFi, dan untuk terhubung ke titik akses Anda.
Anda dapat melihat hal-hal ini di Serial monitor Anda.
Setelah semuanya selesai, itu akan mulai looping melalui loop utama dan Anda akan melihat
"Semua baik | Tidak ada intrusi "
di serial monitor Anda secara berkelanjutan.
Kapan pun Anda pergi di depan sensor PIR Anda, itu akan mendeteksi gerakan dan mengirim Push notification ke perangkat Anda.
Memahami Kode Secara Singkat
#defines adalah sekelompok parameter yang telah ditentukan yang perlu Anda ubah sesuai kebutuhan.
Dalam setup Anda dapat melihat inisialisasi Arduino Serial(). Serial2 adalah untuk akses serial WiFi.
Memahami fungsi:
sensor_calibration (); /* Ini mengkalibrasi sensor untuk output yang tepat. Kita perlu mematikan PIRPIN sebelum itu */
check_WiFi_radio (); /* Memeriksa apakah modul WiFi baik atau tidak */
reset_wifi (); /* mereset modul WiFi untuk menghapus masalah apa pun */
set_wifi_mode (); /* Setel modul WiFi sebagai klien untuk terhubung ke Access Point */
Setelah mengatur mode WiFi, Anda perlu mereset WiFi untuk mengaturnya
check_wifi_stat (); /* Memeriksa apakah modul WiFi Anda terhubung ke AP atau tidak */
connect_ssid (); /* jika belum terhubung, maka akan terhubung dengan parameter koneksi Anda */
Sampai sini, modul WiFi Anda diinisialisasi dan terhubung, sekarang Anda perlu memeriksa pembacaan PIR apakah merasakan gerakan atau tidak. Ini akan berada di bawah loop utama.
pirRead (); /* membaca nilai PIR, entah 0 atau 1. Jika 1, maka Gerakan Terdeteksi, jika 0, maka tidak ada apa-apa */
Jika ada yang terdeteksi, maka pertama-tama Anda perlu terhubung ke server Pushbullet
server_connect (); /* terhubung ke server */
Sekarang kirim Push Notification
post (); /* mengirim notifikasi ke semua perangkat */
putuskan koneksi
server_disconnect (); /* tutup koneksi server */
dan loop melalui
Kode
Baca readme repository untuk penjelasan kode: https://github.com/anupam19/ESP8266-experiments
Skematik
Gambar skematik tersedia di bagian bawah halaman asli.