Automatic Lamp

by yohanes tulangow in Circuits > Sensors

523 Views, 2 Favorites, 0 Comments

Automatic Lamp

automaticlamp.PNG
20.PNG
21.PNG
22.PNG
23.PNG
24.PNG
25.PNG
26.PNG

Tujuan pada projek ini adalah merancang sebuah alat/produk berbasis IoT dari sebuah sensor passive infrared yang dijadikan switch atau saklar lampu dan mampu memonitoring keadaan ruangan dari jarak jauh. Projek ini berguna sekali terutama pada masa pandemi seperti ini untuk menyalakan dan mematikan lampu tanpa perlu menyentuh apapun. Orang-orang masih menggunakan saklar konvensional untuk menyalakan atau mematikan lampu, dengan projek kami ini, kita tidak perlu menempelkan jari atau tangan kita untuk mengganti saklarnya dari on ke off atau sebaliknya, melainkan hanya dengan mendekatinya saja atau melambaikan tangan dari jarak tertentu dari sensor maka lampu bisa tertrigger. Tidak hanya itu, dengan menggunakan firestore kita bisa juga memonitoring keadaan sekarang atau current condition yang ada pada suatu ruangan, seperti apakah lampunya menyala atau tidak, berapa keterangan atau densitas cahaya yang ada pada ruangan saat ini, apakah gelap atau terang, apakah lampu redup atau menyala terang.

Teori:

- Modul relay merupakan prinsip elektromagnetik untuk menggerakkan kontaktor yang digunakan memindahkan posisi ON ke OFF atau sebaliknya dengan memanfaatkan tenaga listrik.

-PIR HC-501 merupakan motion sensor yang mendeteksi gerakan infrared dari manusia maupun hewan. Akan bernilai 0 bila mendeteksi gerakan dan akan bernilai 1 bila terdeteksi gerakan.

-BH1750 sebuah IC sensor berguna untuk mengukur perubahan intensitas cahaya dalam satuan lux.

-ESP32 merupakan mictrocontroller yang dikembangkan oleh Espressif System. ESP32 kita gunakan dalam project ini karena support modul wifi. ESP32 juga dapat dikatakan sebagai upgrade version dari ESP8266.

Supplies

ESP 32

Sensor PIR HC 501

Lampu 3 Watt

Light Sensor BH1750

Breadboard

Cable Jumper

USB Data Cable

Stop kontak 2 lubang

2 kabel 1 meter

Rangkaian Dan Skematik

3.PNG
WhatsApp Image 2022-06-21 at 10.05.36 AM.jpeg
WhatsApp Image 2022-06-21 at 10.05.35 AM.jpeg

Rangkaian ini bekerja dengan meletakkan Pin PIR Sensor sebagai berikut :

-VCC - VCC

-GND-GND

-Data(DOut) - GPIO 14(D14)

Pinout BH1750 :

-VCC - VCC

-GND - GND

-SCL - GPIO4(D4)

-SDA - GPIO15(D15)

Pinout Relay 5V :

-VCC - VCC

-GND - GND

-IN1 - GPIO26(D26)

-NC (normally close) dan common - LAMPU

Untuk mensimulasikannya, kita menggunakan kardus sebagai case atau package alat.

Setup Hardware Dengan Platformio

4.PNG
5.PNG
6.PNG
8.PNG
30.PNG
9.PNG

Pertama pergi ke logo platformio pada logo semut lalu buat new project.

Lalu buat new project dengan nama bebas (disini kami menamainya sebagai esp32automaticlamp) dengan board DOIT ESP32 DEVKIT V1 dan framework Arduino Framework.

Kedua, setelah project telah jadi, buatlah file baru pada folder include dengan nama filenya sebagai “device.h”.

Pada device.h kita harus mendeklarasikan atau menyatakan pin-pin apa saja yang akan disambungkan dari relay, bh1750, dan pir sensornya.

inputPin pada variable di atas merupakan pir sensor.
Ketiga, masukan library yang dibutuhkan dengan membuat variabel lib_deps. Untuk kasus ini kita menggunakan library BH1750 by claws dan Firebase Arduino client for ESP8266 and ESP32 versi 4.0.0 by mobizt. Lalu, set monitor_speed dengan angka 115200.

Setalah itu, masuk ke main.cpp dan masukkan include yang akan dibutuhkan.

Keempat, kita deklarasikan variabel-variabel yang dibutuhkan untuk meng set-up pir sensor (menggunakan interrupt dan timers) dan light sensor (bh1750). Pir sensor akan digunakan sebagai pendeteksi gerakan manusia pada sebuah ruangan dan light sensor digunakan untuk mengambil informasi atau data dari densitas cahaya yang ada pada ruangan tersebut.

Kelima, karena menggunakan interrupt pada pir sensor, buatlah fungsi tambahan dengan nama detectsMovement, tujuannya untuk menjalankan fungsi tersebut bila ada trigger (kami menggunakan rising edge untuk triggernya).

Keenam, kita akan membuat fungsi setup terlebih dahulu sebagai blue print yang akan berjalan sekali ketika program pertama kali berjalan.

Ketujuh, masuk ke dalam void loop, di sini adalah fungsi utama yang akan menjalankan atau mengeksekusi program secara looping atau berulang.
Deklarasikan program bh1750 sebagai pembaca densitas cahaya dan pir yang akan diprogram untuk menyalakan atau mematikan lampu tergantung pada gerakan manusia atau hewan yang lewat pada range tertentu. Atur trigger interrupt sebagai rising edge, fungsi interrupt sebagai fungsi detectsMovement, dan GPIO yang dipakai sebagai trigger yaitu inputPin atau pir sensor.

Fungsi ini akan mencetak nilai densitas cahaya dengan parameter lux pada ruangan, lalu mencetak inputPin atau nilai yang akan dikirimkan dari pir ke esp 32. Bila pir tidak mendeteksi apapun, maka pir akan mengirim nilai 0 atau low ke variabel input yang akan dibaca oleh variable val. Nilai pada val akan dicetak ke serial monitor. Jika terdeteksi gerakan, interrupt akan menjalankan fungsi detectMovements( ) di mana bila variabel boolean turnLight adalah false maka akan masuk ke if condition dimana lampu menyala yaitu, menulis/write relay sebagai high (menyalakan lampu), pirState akan HIGH (menandakan lampu menyala), variabel previousState menjadi true dan turnLight menjadi false. Bila tidak ada gerakan setelahnya, lampu tetap menyala dan akan mati bila ada trigger rising (0 ke 1) lagi atau pir sensor mendeteksi adanya gerakan lagi bila keadaan pir sensor sebelumnya tidak mendeteksi apa-apa (0).
Kedelapan yaitu mengirim data dari ESP32 ke firestore, gunanya agak kita bisa memonitoring dari jauh melewati firestore bila ada lampu menyala atau tidak dan bisa memerhatikan densitas cahaya yang ada pada ruang tersebut. Kita menggunakan contoh code yang sudah disediakan mobizt di github untuk terus-menerus mengupdate data. https://github.com/mobizt/Firebase-ESP-Client/blo... Buka firebase lalu buka menu firestore dan ubah rulesnya menjadi seperti berikut. Untuk mengakses firestore, kita membutuhkn SSID, wifi password, API key, firebase project id, email, dan password email yang terdaftar di firestore,tujuannya agar ESP 32 dapat read dan write pada firestore yang akan kita gunakan.

Untuk WIFI_SSID dan WIFI_PASSWORD menggunakan jaringan internet sendiri.
API_KEY bisa didapat bila sudah memasukkan email pada menu authentication. Contohnya sebagai berikut.

Bila sudah, klik menu 3 bar pojok kiri atas, lalu ke setting - project settings - dan copy-paste project id beserta dengan API key yang tertera.

Lalu,untuk use email dan user password menggunakan email dan password yang sudah dimasukkan ke authentication.
Lalu, untuk bagian mengirim data, kita hanya membutuhkan data dari lux untuk membaca densitas ruangan dan pirState untuk membaca kondisi lampu saat ini, bila nilainya 0 maka lampu mati, sebaliknya bila nilai 1 maka lampu menyala. untuk itu, kita perlu membuat documentpathnya terlebih dahulu dengan membuat 2 fields yaitu Lamp untuk pirState dan Light untuk lux.

content.set adalah data yang akan diwrite oleh hardware atau ESP 32 ke firestore.
Setelah itu, upload code lalu lihat pada menu Cloud Firestore - Data dan hasilnya sebagai berikut.

field Lamp dan Light akan terus berubah bila terjadi perubahan pada value pirState dan lux. Dengan begitu kita bisa mengetahui dari jarak jauh apakah lampu dari ruangan tertentu menyala atau tidak.

Setup Main Code

34.PNG
36.PNG
35.PNG

Sekarang kita deklarasikan variabel-variabel yang dibutuhkan untuk meng set-up pir sensor (menggunakan interrupt dan timers) dan light sensor (bh1750). Pir sensor akan digunakan sebagai pendeteksi gerakan manusia pada sebuah ruangan dan light sensor digunakan untuk mengambil informasi atau data dari densitas cahaya yang ada pada ruangan tersebut.

Karena menggunakan interrupt pada pir sensor, buatlah fungsi tambahan dengan nama detectsMovement, tujuannya untuk menjalankan fungsi tersebut bila ada trigger (kami menggunakan rising edge untuk triggernya).

Kita akan membuat fungsi setup terlebih dahulu sebagai blue print yang akan berjalan sekali ketika program pertama kali berjalan.Setelah itu, masuk ke dalam void loop, di sini adalah fungsi utama yang akan menjalankan atau mengeksekusi program secara looping atau berulang. Deklarasikan program bh1750 sebagai pembaca densitas cahaya dan pir yang akan diprogram untuk menyalakan atau mematikan lampu tergantung pada gerakan manusia atau hewan yang lewat pada range tertentu. Atur trigger interrupt sebagai rising edge, fungsi interrupt sebagai fungsi detectsMovement, dan GPIO yang dipakai sebagai trigger yaitu inputPin atau pir sensor. Fungsi ini akan mencetak nilai densitas cahaya dengan parameter lux pada ruangan, lalu mencetak inputPin atau nilai yang akan dikirimkan dari pir ke esp 32. Bila pir tidak mendeteksi apapun, maka pir akan mengirim nilai 0 atau low ke variabel input yang akan dibaca oleh variable val. Nilai pada val akan dicetak ke serial monitor. Jika terdeteksi gerakan, interrupt akan menjalankan fungsi detectMovements( ) di mana bila variabel boolean turnLight adalah false maka akan masuk ke if condition dimana lampu menyala yaitu, menulis/write relay sebagai high (menyalakan lampu), pirState akan HIGH (menandakan lampu menyala), variabel previousState menjadi true dan turnLight menjadi false. Bila tidak ada gerakan setelahnya, lampu tetap menyala dan akan mati bila ada trigger rising (0 ke 1) lagi atau pir sensor mendeteksi adanya gerakan lagi bila keadaan pir sensor sebelumnya tidak mendeteksi apa-apa (0).

Setup Firestore Dan Mengirim Data Ke Firestore

gambarfirestore.png
14.PNG
15.PNG
17.PNG
16.PNG
12.PNG
18.PNG
19.PNG

Mengirim data dari ESP32 ke firestore berguna agar kita bisa memonitoring dari jauh melewati firestore bila ada lampu menyala atau tidak dan bisa memerhatikan densitas cahaya yang ada pada ruang tersebut. Kita menggunakan contoh code yang sudah disediakan mobizt di github untuk terus-menerus mengupdate data. https://github.com/mobizt/Firebase-ESP-Client/blo... Buka firebase.google.com, buat akun lalu buat project. Setelah project terbuat, buka menu firestore dan ubah rulesnya menjadi seperti berikut. Untuk mengakses firestore, kita membutuhkn SSID, wifi password, API key, firebase project id, email, dan password email yang terdaftar di firestore,tujuannya agar ESP 32 dapat read dan write pada firestore yang akan kita gunakan. Untuk WIFI_SSID dan WIFI_PASSWORD menggunakan jaringan internet sendiri. API_KEY bisa didapat bila sudah memasukkan email pada menu authentication. Contohnya sebagai berikut. Bila sudah, klik menu 3 bar pojok kiri atas, lalu ke setting - project settings - dan copy-paste project id beserta dengan API key yang tertera. Lalu,untuk use email dan user password menggunakan email dan password yang sudah dimasukkan ke authentication. Lalu, untuk bagian mengirim data, kita hanya membutuhkan data dari lux untuk membaca densitas ruangan dan pirState untuk membaca kondisi lampu saat ini, bila nilainya 0 maka lampu mati, sebaliknya bila nilai 1 maka lampu menyala. untuk itu, kita perlu membuat documentpathnya terlebih dahulu dengan membuat 2 fields yaitu Lamp untuk pirState dan Light untuk lux. content.set adalah data yang akan diwrite oleh hardware atau ESP 32 ke firestore. Setelah itu, upload code lalu lihat pada menu Cloud Firestore - Data dan hasilnya sebagai berikut. field Lamp dan Light akan terus berubah bila terjadi perubahan pada value pirState dan lux. Dengan begitu kita bisa mengetahui dari jarak jauh apakah lampu dari ruangan tertentu menyala atau tidak.

Cara Kerja Alat

WhatsApp Image 2022-06-21 at 1.00.21 AM.jpeg

Cara kerja sistem yakni lampu akan menyala bila pir sensor dari keadaan 0 menjadi 1 (rising edge), artinya bila lampu belum menyala dan terdeteksi gerakan maka lampu akan menyala. Dan untuk mematikan lampunya memiliki cara kerja yang sama persis dengan menyalakan lampu, bila pir sensor mendeteksi juga adanya gerakan maka kondisi lampu yang sebelumnya adalah nyala akan berubah menjadi mati.

Sensor BH750 digunakan untuk membantu pengguna bila ingin mengetahui seberapa terang cahaya yang ada pada sebuah ruang.

Setelah itu, pengguna juga dapat melihat keadaan lampu bila sedang berpergian ke luar ruangan atau rumah dengan menggunakan firestore.

Kesimpulan Dan Mock Up Alat

WhatsApp Image 2022-06-20 at 11.54.22 PM.jpeg
WhatsApp Image 2022-06-21 at 1.03.29 AM.jpeg
V1deo Demonstras1 TR IoT S3m 4

Alat ini dirangkai berbasis IoT yang sistemnya dikontrol oleh ESP32 dengan menggunakan motion pir sensor dan firestore.

Referensi:

randomnerdtutorials.com. 2018. ESP32 with PIR Motion Sensor using Interrupts and Timers. Diakses pada 7 Juni 2022, dari https://randomnerdtutorials.com/esp32-pir-motion-...

Suwatchai, K (2022) Firebase-ESP-Client [Source code]. https://github.com/mobizt/Firebase-ESP-Client/blo...