Daftar Isi:

Alarm PIR ke WiFi (dan Otomatisasi Rumah): 7 Langkah (dengan Gambar)
Alarm PIR ke WiFi (dan Otomatisasi Rumah): 7 Langkah (dengan Gambar)

Video: Alarm PIR ke WiFi (dan Otomatisasi Rumah): 7 Langkah (dengan Gambar)

Video: Alarm PIR ke WiFi (dan Otomatisasi Rumah): 7 Langkah (dengan Gambar)
Video: HANDS ON @BardiSmartHome PIR MOTION SENSOR + SIREN ALARM 2024, Juli
Anonim
Image
Image
Alarm PIR ke WiFi (dan Otomatisasi Rumah)
Alarm PIR ke WiFi (dan Otomatisasi Rumah)

Gambaran

Instruksi ini akan memberi Anda kemampuan untuk melihat tanggal/waktu terakhir (dan opsional riwayat waktu) saat PIR (sensor inframerah pasif) Alarm Rumah Anda dipicu, dalam perangkat lunak otomatisasi rumah Anda. Dalam proyek ini, saya akan membahas cara menggunakan OpenHAB (perangkat lunak otomatisasi rumah gratis, yang saya gunakan secara pribadi) meskipun itu akan bekerja dengan perangkat lunak atau aplikasi otomatisasi rumah lainnya yang mendukung MQTT (juga dijelaskan nanti dalam artikel ini). Instruksi ini akan memandu Anda melalui langkah-langkah yang diperlukan tentang cara memasang papan sirkuit dan Wemos D1 mini (papan IOT yang menggunakan chip ESP8266) yang masuk ke zona alarm di kotak kontrol alarm Anda sehingga ketika zona (yang berisi satu atau lebih PIR) dipicu, Wemos mengirim pesan secara nirkabel menggunakan protokol MQTT ke perangkat lunak otomatisasi rumah Anda yang pada gilirannya, menampilkan tanggal/waktu terakhir pemicu itu. Kode Arduino untuk memprogram Wemos juga disediakan.

pengantar

Gambar di atas adalah apa yang saya lihat melalui salah satu layar pada aplikasi OpenHAB di iPhone saya. Teks tanggal/waktu diberi kode warna untuk memberikan representasi yang lebih cepat tentang kapan PIR dipicu - ini akan menunjukkan merah (dipicu dalam 1 menit terakhir), oranye (dipicu dalam 5 menit terakhir), hijau (dipicu dalam 30 menit terakhir), biru (dipicu dalam satu jam terakhir) atau sebaliknya, hitam. Mengklik tanggal/waktu, akan menampilkan tampilan historis pemicu PIR, di mana 1 berarti terpicu, dan 0 menganggur. Ada banyak kegunaan untuk ini, misalnya dapat melengkapi solusi kehadiran di rumah Anda, dapat mendeteksi gerakan jika Anda pergi dan melalui aturan OpenHAB, mengirim pemberitahuan ke telepon Anda, Anda dapat menggunakannya seperti yang saya lakukan untuk melihat apakah anak-anak saya bangun di tengah malam, dipicu oleh PIR yang berada di luar kamar tidur mereka!

OpenHAB hanyalah perangkat lunak otomatisasi rumah yang saya gunakan, ada banyak lainnya - dan jika mereka mendukung MQTT maka Anda dapat dengan mudah menyesuaikan proyek ini agar sesuai dengan perangkat lunak yang Anda gunakan.

Asumsi

Instruksi ini mengasumsikan Anda sudah memiliki (atau akan menyiapkan):

  • Jelas sistem alarm rumah dengan PIR (sensor inframerah pasif) dan Anda memiliki akses ke kotak kontrol alarm untuk menghubungkan kabel yang diperlukan
  • OpenHAB (perangkat lunak otomasi rumah sumber terbuka gratis) berjalan, meskipun seperti yang dibahas, ia harus bekerja dengan perangkat lunak otomatisasi rumah apa pun yang dapat menyertakan pengikatan MQTT. Sebagai alternatif, Anda dapat mengubah kode sendiri sesuai dengan kebutuhan Anda sendiri.
  • Broker Mosquitto MQTT (atau serupa) diinstal dan mengikat dikonfigurasi dengan OpenHAB (MQTT adalah protokol jenis berlangganan/publikasikan pesan yang ringan dan bagus untuk komunikasi antar perangkat)

Jika Anda tidak menjalankan OpenHAB dan broker MQTT, lihat artikel bagus ini di situs web MakeUseOf

Apa yang saya butuhkan?

Untuk membuat pengontrol nirkabel, Anda perlu sumber bagian-bagian berikut:

  • Wemos D1 mini V2 (memiliki CHIP nirkabel ESP8266 built-in)
  • Komparator LM339 (ini akan melakukan pemeriksaan PIR idle vs trigger)
  • Sumber daya DC 5V untuk Wemos (ATAU, konverter DC-DC. Catatan: regulator tegangan LM7805 mungkin tidak berfungsi untuk aplikasi ini seperti yang akan dibahas nanti dalam proyek ini)
  • Dua resistor untuk pembagi tegangan (ukuran akan tergantung pada tegangan alarm Anda, dibahas nanti dalam proyek)
  • Satu resistor 1K ohm untuk bertindak sebagai resistor pull down untuk mengontrol daya LM339
  • Satu 2N7000 (atau serupa) MOSFET untuk mengaktifkan LM339 secara logis (mungkin opsional, dibahas nanti dalam proyek)
  • Papan tempat memotong roti berukuran sesuai untuk pengaturan dan pengujian sirkuit
  • Sekelompok kabel papan tempat memotong roti untuk menghubungkan semuanya bersama-sama
  • Alat yang dibutuhkan: pemotong samping, kawat inti tunggal
  • Multimeter DC (wajib!)

Langkah 1: Kotak Kontrol Sistem Alarm

Kotak Kontrol Sistem Alarm
Kotak Kontrol Sistem Alarm

Pertama beberapa peringatan dan penafian

Secara pribadi, saya memiliki sistem alarm Bosch. Saya akan sangat menyarankan Anda mengunduh manual yang relevan untuk sistem alarm khusus Anda dan membiasakan diri dengannya sebelum Anda mulai karena Anda perlu mematikan sistem alarm untuk menghubungkan zona. Saya juga menyarankan Anda membaca artikel ini secara keseluruhan sebelum Anda mulai!

Di bawah ini adalah daftar beberapa hal yang harus Anda ketahui sebelum memulai - pastikan Anda membaca dan memahami masing-masing sebelum melanjutkan! Saya tidak bertanggung jawab jika Anda mengacaukan sistem alarm Anda dan/atau harus membayar installer Anda untuk memperbaikinya. Namun, jika Anda membaca dan memahami hal berikut dan mengambil tindakan pencegahan yang diperlukan, Anda seharusnya baik-baik saja:

1. Sistem alarm saya memiliki baterai cadangan di dalam kotak dan juga memiliki sakelar pengrusak di bagian dalam tutupnya (yang menyediakan akses ke papan sistem alarm) sehingga mematikan alarm secara eksternal, saat melepas panel depan kontrol kotak itu memicu alarm! Untuk menyiasatinya saat saya mengerjakan proyek, saya melewati perlindungan tamper dengan mencabut lalu menghubungkan arus pendek sakelar tamper (kabel merah tebal seperti yang ditunjukkan pada foto di atas)

2. Saat menyalakan sistem alarm kembali, setelah kira-kira ~12 jam panel kontrol alarm mulai berbunyi bip dengan kode kesalahan. Setelah menentukan kode kesalahan melalui manual, saya menemukan bahwa itu memperingatkan saya bahwa:

  • Tanggal/waktu tidak disetel (saya memerlukan kode master dan urutan kunci dari manual untuk mengkonfigurasi ulang)
  • Bahwa baterai cadangan tidak terhubung (perbaikan mudah, saya hanya lupa memasang kembali baterai)

3. Di alarm saya, ada 4 blok koneksi zona x (berlabel Z1-Z4) untuk PIR untuk dihubungkan ke papan alarm utama, namun - sistem alarm saya sebenarnya mampu 8 zona. Setiap blok koneksi zona sebenarnya dapat menjalankan 2 x zona masing-masing (Z1 melakukan Z1 dan Z5, Z2 melakukan Z2 dan Z6 dan seterusnya). Sistem alarm memiliki perlindungan tamper built-in untuk menghentikan seseorang berkata, membuka tutup sistem alarm seperti yang disebutkan di atas, atau memotong kabel ke PIR. Ini membedakan antara setiap zona tamper melalui resistor EOL (end of line). Ini adalah resistor berukuran khusus yang berada di "ujung garis" - dengan kata lain, di dalam PIR (atau sakelar tamper kotak kontrol, atau kotak sirene atau apa pun yang dihubungkan ke zona itu) Seperti disebutkan resistor ini digunakan sebagai 'tamper proteksi' - secara teknis, jika seseorang memotong kabel ke PIR - karena sistem alarm mengharapkan untuk melihat resistansi tertentu dari PIR tersebut, maka jika resistansi berubah, ia menganggap seseorang telah merusak sistem dan akan memicu alarm.

Sebagai contoh:

Pada alarm saya, Zona "Z4" memiliki 2 kabel di dalamnya, satu ke PIR di lorong saya dan satu lagi ke sakelar tamper kotak kontrol alarm. Di dalam lorong PIR, ia memiliki resistor 3300 ohm. Kawat lain yang mengalir ke sakelar tamper kotak kontrol, memiliki resistor 6800 ohm yang disambungkan secara seri. Ini adalah bagaimana sistem alarm (secara logis) membedakan antara tamper "Z4" dan "Z8". Demikian juga, zona "Z3" memiliki PIR (dengan resistor 3300 ohm di dalamnya) dan juga sakelar tamper sirene (dengan resistor 6800 ohm di dalamnya) yang membentuk "Z7". Pemasang alarm akan melakukan pra-konfigurasi sistem alarm sehingga mengetahui perangkat apa yang terhubung ke setiap zona (dan mengubah ukuran resistor EOL agar sesuai, karena sistem alarm diprogram untuk mengetahui ukuran resistor EOL yang berbeda. Di bawah dalam keadaan apa pun Anda harus mengubah nilai resistor ini!)

Jadi berdasarkan hal di atas, karena setiap zona mungkin memiliki beberapa perangkat yang terpasang juga (dengan nilai resistansi yang berbeda), dan mengingat rumus V=IR (tegangan = amp x resistansi) maka itu juga berarti setiap zona mungkin memiliki voltase yang berbeda. Yang membawa kita ke langkah berikutnya, mengukur masing-masing zona tegangan IDLE vs DITIRU…

Langkah 2: Mengukur Tegangan Zona Alarm

Mengukur Tegangan Zona Alarm
Mengukur Tegangan Zona Alarm
Mengukur Tegangan Zona Alarm
Mengukur Tegangan Zona Alarm

Setelah Anda mendapatkan akses ke papan utama pada sistem alarm Anda (dan melewati sakelar tamper jika Anda memilikinya; sesuai langkah sebelumnya) nyalakan kembali sistem alarm Anda. Kita sekarang perlu mengukur tegangan masing-masing zona saat IDLE (tidak ada gerakan di depan PIR) vs DITIRU (PIR telah mendeteksi gerakan) Ambil pena dan kertas sehingga Anda dapat menuliskan pembacaan tegangan Anda.

PERINGATAN: Sebagian besar sistem alarm Anda kemungkinan besar akan berjalan pada 12V DC, namun akan memiliki umpan daya awalnya pada 220V (atau 110V) AC, dengan transformator yang mengubah daya dari AC ke DC. BACA manual dan lakukan tindakan pencegahan ekstra untuk memastikan Anda TIDAK mengukur terminal AC apa pun!!! Sesuai tangkapan layar sistem alarm saya di halaman ini, Anda dapat melihat bahwa bagian paling bawah gambar adalah daya AC masuk, diubah menjadi 12V DC. Kami mengukur DC 12V di kotak merah yang disorot. Jangan pernah menyentuh daya AC. Berhati-hatilah!

Mengukur Tegangan PIR

Saya memiliki 4 x PIR yang terhubung ke Z1 hingga Z4. Ukur setiap zona Anda sebagai berikut.

  1. Pertama, identifikasi terminal GND dan terminal zona pada panel alarm. Saya telah menyoroti ini pada gambar yang ditunjukkan dari manual alarm Bosch saya.
  2. Ambil multimeter Anda dan atur pengukuran tegangan Anda ke 20V DC. Hubungkan kabel hitam (COM) dari multimeter Anda ke terminal GND pada alarm. Tempatkan kabel merah (+) dari multimeter Anda di zona pertama - dalam kasus saya berlabel "Z1". Catat pembacaan tegangan. Lakukan langkah yang sama untuk zona yang tersisa. Pengukuran tegangan saya adalah sebagai berikut:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7.92V
  • Z4 = 7.92V

Sesuai di atas, dua zona pertama saya hanya memiliki PIR yang terpasang juga. Dua zona terakhir memiliki PIR dan perlindungan tamper yang terhubung ke dalamnya (tamper kotak kontrol Z3, tamper sirene Z4) Perhatikan perbedaan tegangan.

3. Anda mungkin membutuhkan 2 orang untuk langkah berikutnya. Anda juga perlu mengetahui PIR mana yang berada di zona mana. Kembali dan baca tegangan pada zona pertama. Sekarang minta seseorang di rumah Anda untuk berjalan di depan PIR, tegangannya akan turun. Perhatikan pembacaan tegangan baru. Dalam kasus saya, voltase terbaca sebagai berikut ketika PIR dipicu:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4.30V
  • Z4 = 4.30V

Sesuai di atas, saya dapat melihat bahwa ketika zona 1 dan 2 dipicu, tegangan turun dari 6.65V ke 0V. Namun ketika zona 3 dan 4 dipicu, tegangan turun dari 7.92V ke 4.30V.

Mengukur catu daya 12V

Kami akan menggunakan terminal 12V DC dari kotak kontrol alarm untuk menyalakan proyek kami. Kita perlu mengukur tegangan dari umpan DC 12V pada alarm. Meskipun sudah menyatakan 12V, kita perlu mengetahui pembacaan yang lebih akurat. Dalam kasus saya, itu benar-benar membaca 13.15V. Tuliskan ini, Anda akan membutuhkan nilai ini di langkah berikutnya.

Mengapa kita mengukur tegangan?

Alasan kita perlu mengukur tegangan untuk setiap PIR adalah karena rangkaian yang akan kita buat. Kami akan menggunakan chip komparator diferensial quad LM339 (atau komparator quad op-amp) sebagai komponen listrik inti untuk proyek ini. LM339 memiliki 4 pembanding tegangan independen (4 saluran) di mana setiap saluran membutuhkan 2 x tegangan input (satu input pembalik (-) dan satu input non-pembalik (+), lihat diagram) Jika tegangan tegangan input pembalik harus turun lebih rendah dari tegangan non-pembalik, maka output terkait akan ditarik ke ground. Demikian juga jika tegangan input non-inverting turun lebih rendah dari input inverting, maka output ditarik ke Vcc. Mudahnya, di rumah saya, saya memiliki 4 x alarm PIR's/zona - oleh karena itu setiap zona akan dihubungkan ke setiap saluran pada komparator. Jika Anda memiliki lebih dari 4 x PIR, Anda memerlukan komparator dengan lebih banyak saluran, atau LM339 lain!

Catatan: LM339 mengkonsumsi daya dalam nano-amp, sehingga tidak akan mempengaruhi resistansi EOL dari sistem alarm yang ada.

Jika ini membingungkan, lanjutkan ke langkah berikutnya, bagaimanapun, itu akan mulai lebih masuk akal setelah kami menghubungkannya!

Langkah 3: Membuat Pembagi Tegangan

Image
Image

Apa itu pembagi tegangan?

Pembagi tegangan adalah rangkaian dengan 2 x resistor (atau lebih) secara seri. Kami memberikan tegangan (Vin) ke resistor pertama (R1) Kaki R1 yang lain terhubung ke kaki pertama resistor kedua (R2), dan ujung R2 lainnya terhubung ke GND. Kami kemudian mengambil tegangan output (Vout) dari koneksi antara R1 dan R2. Tegangan tersebut akan menjadi tegangan referensi kita untuk LM339. Untuk informasi lebih lanjut tentang cara kerja pembagi tegangan, lihat video youtube Adohms

(Catatan: resistor tidak memiliki polaritas, sehingga dapat dihubungkan dengan cara apa pun)

Menghitung tegangan referensi kami

Dengan asumsi bahwa tegangan turun ketika PIR Anda dipicu (ini seharusnya terjadi pada sebagian besar alarm) maka apa yang kami coba capai, adalah untuk mendapatkan pembacaan tegangan yang cukup banyak antara tegangan idle terendah kami dan tegangan pemicu tertinggi kami, ini akan menjadi tegangan referensi kita.

Mengambil alarm saya sebagai contoh…

Tegangan idle zona adalah Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Oleh karena itu, tegangan idle terendah adalah 6.65V

Zona tegangan yang dipicu adalah: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Oleh karena itu, tegangan terpicu tertinggi adalah 4.30V

Jadi kita perlu memilih angka setengah jalan antara 4.30V dan 6.65V (tidak harus tepat, hanya kasar) Dalam kasus saya, tegangan referensi saya harus sekitar 5.46V. Catatan: Jika tegangan idle terendah dan tegangan pemicu tertinggi sangat dekat satu sama lain karena beberapa zona yang menyebabkan rentang tegangan berbeda, Anda mungkin perlu membuat 2 atau lebih pembagi tegangan.

Menghitung nilai resistor kami untuk pembagi tegangan

Sekarang kita memiliki tegangan referensi, kita perlu menghitung resistor ukuran apa yang kita butuhkan untuk membuat pembagi tegangan yang akan memberikan tegangan referensi kita. Kami akan menggunakan sumber tegangan DC 12V (Vs) dari alarm. Namun, sesuai langkah sebelumnya ketika kami mengukur umpan DC 12V, kami benar-benar mendapatkan 13,15V. Kita perlu menghitung pembagi tegangan menggunakan nilai ini sebagai sumbernya.

Hitung Vout menggunakan hukum ohm…

Vout = Vs x R2 / (R1 + R2)

…atau gunakan kalkulator pembagi tegangan online:-)

Anda perlu bereksperimen dengan nilai resistor sampai Anda mencapai output yang diinginkan. Dalam kasus saya, ini berhasil dengan R1 = 6.8k ohm dan R2 = 4.7K ohm, dihitung dalam bentuk panjang sebagai berikut:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61, 805 / 11, 500

Vout = 5,37V

Langkah 4: Hubungkan LM339

Menghubungkan Wemos D1 Mini
Menghubungkan Wemos D1 Mini

Pembagi Tegangan ke input pembalik LM339

Seperti yang telah dibahas sebelumnya mengenai komparator LM339, akan membutuhkan 2 x input. Satu akan menjadi tegangan dari setiap PIR ke setiap saluran terminal non-pembalik (+), yang lain akan menjadi tegangan referensi kami ke terminal pembalik (-) kami. Tegangan referensi perlu memberi makan semua 4 input pembalik komparator. Matikan sistem alarm Anda sebelum melakukan langkah-langkah ini.

  • Jalankan kabel dari blok 12V DC pada sistem alarm ke rel + di papan tempat memotong roti Anda *
  • Jalankan kabel dari blok GND pada sistem alarm ke - rel pada papan tempat memotong roti Anda **
  • Pasang komparator LM339 di tengah breadboard (takik menunjukkan paling dekat dengan pin 1)
  • Pasang 2 x resistor untuk membuat rangkaian pembagi tegangan dan kabel untuk membagi tegangan keluar
  • Jalankan kabel dari Vout 'tegangan dibagi' ke setiap terminal pembalik LM339

* TIPS: gunakan klip buaya untuk daya jika memungkinkan, karena ini memudahkan untuk memberikan daya ON/OFF ke proyek Anda** PENTING! MOSFET mungkin diperlukan JIKA Anda menyalakan Wemos dari panel Alarm! Dalam kasus saya, LM339, Wemos, dan Alarm semuanya menerima daya dari sumber yang sama (yaitu: sistem alarm itu sendiri) Hal ini memungkinkan saya untuk menyalakan daya ke segala sesuatu dengan satu sambungan daya. Namun, secara default pin GPIO pada Wemos didefinisikan sebagai pin "INPUT" - artinya pin tersebut mengambil tegangan apa pun yang diberikan padanya dan mengandalkan sumber tersebut untuk memberikan level voltase yang benar (level min/maks) sehingga Wemos menang. t crash atau terbakar. Dalam kasus saya, sistem alarm mendapatkan kekuatannya dan mulai melakukan urutan boot dengan sangat cepat - sangat cepat, sehingga ia melakukan ini sebelum Wemos dapat melakukan boot dan mendeklarasikan pin GPIO sebagai "INPUT_PULLUP" (tegangan ditarik secara internal di dalam chip). Ini tidak berarti bahwa perbedaan tegangan akan menyebabkan Wemos mogok ketika seluruh sistem mendapat daya. Satu-satunya cara untuk mengatasinya adalah dengan mematikan dan menghidupkan Wemos secara manual. Untuk mengatasi ini, MOSFET ditambahkan dan bertindak sebagai "saklar logis" untuk menyalakan LM339. Ini memungkinkan Wemos untuk boot, mengatur 4 x pin GPIO komparatornya sebagai "INPUT_PULLUP's", menunda beberapa detik dan KEMUDIAN (melalui pin GPIO D5 lain yang didefinisikan sebagai OUTPUT) mengirim sinyal "TINGGI" melalui pin GPIO D5 ke MOSFET, yang secara logis mengaktifkan LM339. Saya akan merekomendasikan pemasangan kabel seperti di atas, tetapi JIKA Anda menemukan bahwa Wemos mogok seperti yang saya lakukan, maka Anda harus menyertakan MOSFET dengan resistor pull down 1k ohm. Untuk informasi lebih lanjut tentang cara melakukan ini, lihat akhir instruksi ini.

Zona alarm ke input non-pembalik LM339

Kita sekarang perlu menjalankan kabel dari setiap zona pada panel kontrol alarm ke input komparator LM339. Dengan sistem alarm masih dimatikan, untuk setiap zona diumpankan kabel ke setiap input non-pembalik (+) pada komparator LM339. Misalnya, di sistem saya:

  • Kawat dari Z1 masuk ke LM339 input 1+
  • Kawat dari Z2 masuk ke input LM339 2+
  • Kawat dari Z3 masuk ke input LM339 3+
  • Kawat dari Z4 masuk ke input LM339 4+

Lihat pin-out LM339 di bawah langkah 3 jika Anda mengingatkan (ini diberi kode warna dengan gambar papan tempat memotong roti). Setelah selesai, papan tempat memotong roti Anda akan tampak mirip dengan gambar yang ditunjukkan pada langkah ini.

Nyalakan sistem alarm dan ukur tegangan yang keluar dari pembagi tegangan untuk memastikannya sama dengan tegangan referensi Anda seperti yang dihitung sebelumnya.

Langkah 5: Menghubungkan Wemos D1 Mini

Menghubungkan Wemos D1 mini

Sekarang kita memiliki semua input LM339, kita sekarang perlu memasang Wemos D1 mini. Setiap pin output LM339 menuju ke pin Wemos GPIO (input/output tujuan umum) yang akan kita tentukan melalui kode sebagai pin pullup input. Wemos membutuhkan maksimum 5V sebagai tegangan Vcc (sumber input) (meskipun mengatur ini secara internal hingga 3,3V) Kami akan menggunakan regulator tegangan LM7805 yang sangat umum (EDIT: lihat di bawah) untuk menjatuhkan rel 12V di papan tempat memotong roti ke bawah 5V untuk memberi daya pada Wemos. Lembar data untuk LM7805 menunjukkan bahwa kita memerlukan kabel kapasitor di setiap sisi regulator untuk memperlancar daya, seperti yang ditunjukkan pada gambar papan tempat memotong roti. Kaki kapasitor yang lebih panjang adalah positif (+) jadi pastikan kabel ini terpasang dengan benar.

Regulator tegangan mengambil tegangan masuk (pin sisi kiri), ground (pin tengah) dan tegangan keluar (pin sisi kanan) Periksa kembali pin-out jika regulator tegangan Anda bervariasi dari LM7805.

(EDIT: Saya menemukan amp yang berasal dari panel alarm terlalu tinggi untuk ditangani LM7805. Ini menyebabkan banyak panas di heat sink kecil LM7805 dan menyebabkannya gagal, dan pada gilirannya menyebabkan Wemos berhenti berfungsi. Saya mengganti LM7805 dan kapasitor dengan konverter buck DC-DC dan tidak ada masalah sejak itu. Ini sangat mudah untuk dipasang. Cukup sambungkan tegangan input dari Alarm, sambungkan ke multimeter terlebih dahulu dan gunakan sekrup potensiometer dan sesuaikan hingga tegangan output ~ 5V)

Pin masukan GPIO

Untuk proyek ini, kami menggunakan pin berikut:

  • zona Z1 => pin D1
  • zona Z2 => pin D2
  • zona Z3 => pin D3
  • zona Z4 => pin D5

Hubungkan output dari LM339, ke pin GPIO terkait pada papan Wemos, sesuai dengan gambar papan tempat memotong roti yang ditunjukkan pada langkah ini. Sekali lagi, saya telah memberi kode warna pada input dan output yang cocok, untuk membuatnya lebih mudah untuk melihat apa yang mengacu pada apa. Setiap pin GPIO di Arduino didefinisikan sebagai 'INPUT_PULLUP', yang berarti mereka akan ditarik hingga 3,3V dalam penggunaan normal (IDLE) dan LM339 akan menariknya ke ground jika PIR dipicu. Kode mendeteksi perubahan TINGGI ke RENDAH, dan mengirim pesan secara nirkabel ke perangkat lunak otomatisasi rumah Anda. Jika Anda mengalami masalah dengan cara kerja ini, kemungkinan Anda memiliki input pembalik vs non-pembalik dengan cara yang salah (jika tegangan dari PIR Anda menjadi tinggi saat dipicu, seperti yang terjadi pada sebagian besar PIR hobi, maka Anda akan menginginkan koneksi yang sebaliknya)

Arduino IDE

Hapus Wemos dari papan tempat memotong roti, sekarang kita perlu mengunggah kode ke sana (tautan alternatif di sini) Saya tidak akan menjelaskan secara rinci tentang cara melakukan ini, karena ada banyak artikel di web tentang mengunggah kode ke Wemos atau ESP8266 lainnya papan ketik. Colokkan kabel USB Anda ke papan Wemos dan ke PC Anda dan jalankan Arduino IDE. Unduh kode dan buka di proyek Anda. Anda perlu memastikan papan yang benar dipasang dan dimuat untuk proyek Anda serta port COM yang dipilih (Alat, Port). Anda juga perlu menginstal pustaka yang sesuai (PubSubClient, ESP8266Wifi) Untuk memasukkan papan Wemos ke dalam sketsa Anda, lihat artikel ini.

Anda perlu mengubah baris kode berikut, dan mengganti dengan SSID dan kata sandi Anda sendiri untuk koneksi nirkabel Anda. Juga, ubah alamat IP untuk menunjuk ke broker MQTT Anda sendiri.

// Wifi

const char* ssid = "your_wifi_ssid_sini"; const char* password = "your_wifi_password_here"; // MQTT Broker IPaddress MQTT_SERVER(172, 16, 223, 254)

Setelah diubah, verifikasi kode Anda lalu unggah ke papan Wemos melalui kabel USB.

Catatan:

  • Jika Anda menggunakan port GPIO yang berbeda, Anda perlu menyesuaikan kodenya. Jika Anda menggunakan lebih banyak atau lebih sedikit zona daripada yang saya miliki, Anda juga perlu menyesuaikan kode dan TOTAL_ZONES=4; konstan sesuai.
  • Di bawah sistem alarm saya, sistem alarm akan melakukan tes daya ke semua 4 x PIR yang menarik semua GPIO yang terhubung ke ground, menyebabkan Wemos berpikir bahwa zona sedang dipicu. Kode akan mengabaikan pengiriman pesan MQTT jika melihat semua 4 x zona aktif pada saat yang sama, karena mengasumsikan sistem alarm sedang menyala.

Tautan unduhan alternatif ke kode DI SINI

Langkah 6: Pengujian dan Konfigurasi OpenHAB

Pengujian dan Konfigurasi OpenHAB
Pengujian dan Konfigurasi OpenHAB

Pengujian MQTT

MQTT adalah sistem pesan "berlangganan / terbitkan". Satu atau lebih perangkat dapat berbicara dengan "broker MQTT" dan "berlangganan" ke topik tertentu. Setiap pesan masuk dari perangkat lain yang "diterbitkan" ke topik yang sama, akan didorong keluar oleh broker ke semua perangkat yang telah berlangganan. Ini adalah protokol yang sangat ringan dan mudah digunakan dan sempurna sebagai sistem pemicu sederhana seperti yang ada di sini. Untuk pengujian, Anda dapat melihat pesan MQTT yang masuk dari Wemos ke broker MQTT Anda dengan menjalankan perintah berikut di server Mosquitto Anda (Mosquitto adalah salah satu dari banyak perangkat lunak MQTT Broker yang tersedia). Perintah ini berlangganan pesan keepalive yang masuk:

mosquitto_sub -v -t openhab/alarm/status

Anda akan melihat pesan masuk yang masuk dari Wemos setiap 30 detik atau lebih dengan angka "1" (artinya "Saya hidup") Jika Anda melihat "0" konstan (atau tidak ada respons) maka tidak ada komunikasi. Setelah Anda melihat nomor 1 masuk, maka itu berarti Wemos sedang berkomunikasi dengan broker MQTT (cari "MQTT Last Will and Testament" untuk informasi lebih lanjut tentang cara kerjanya, atau lihat entri blog yang sangat bagus ini)

Setelah Anda membuktikan bahwa komunikasi berfungsi, kami dapat menguji apakah status zona dilaporkan melalui MQTT. Berlangganan ke topik berikut (# adalah wildcard)

mosquitto_sub -v -t openhab/alarm/#

Pesan status biasa harus masuk, seperti halnya alamat IP Wemos itu sendiri. Berjalanlah di depan PIR, dan Anda juga akan melihat informasi zona masuk yang menunjukkan bahwa itu BUKA, lalu beberapa detik kemudian, bahwa itu TUTUP, mirip dengan berikut ini:

openhab/alarm/status 1

openhab/alarm/zone1 BUKA

openhab/alarm/zone1 TUTUP

Setelah ini berfungsi, kita dapat mengonfigurasi OpenHAB agar ini terwakili dengan baik di GUI.

Konfigurasi OpenHAB

Perubahan berikut diperlukan untuk OpenHAB:

file transformasi 'alarm.map': (opsional, untuk pengujian)

CLOSED=IdleOPEN=TriggeredNULL=Tidak Diketahui-=Tidak Diketahui

file transformasi 'status.map':

0=Gagal

1=Online -=BAWAH! NULL = tidak diketahui

berkas 'item':

String alarmMonitorState "Alarm Monitor [MAP(status.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/status:state:default]" } String alarmMonitorIPAddress "Alarm Monitor IP [%s]" { mqtt ="<[mqttbroker:openhab/alarm/ipaddress:state:default]" } Number zone1_Chart_Period "Zone 1 Chart" Hubungi alarmZone1State "Zone 1 State [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone1:state:default" } String alarmZone1Trigger "Lounge PIR [%1$ta %1$tr]" Nomor zone2_Chart_Period "Zone 2 Chart" Hubungi alarmZone2State "Zona 2 Negara [MAP(alarm.map):% s]" { mqtt="<[mqttbroker:openhab/alarm/zone2:state:default" } String alarmZone2Trigger "First Hall PIR [%1$ta %1$tr]" Number zone3_Chart_Period "Zone 3 Chart" Hubungi alarmZone3State "Zone 3 Status [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone3:state:default" } String alarmZone3Trigger "Bedroom PIR [%1$ta %1$tr]" Nomor zone4_Chart_Period "Zone 4 Chart" Hubungi alarmZone4State "Zone 4 State [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openha b/alarm/zone4:state:default" } String alarmZone4Trigger "PIR Aula Utama [%1$ta %1$tr]"

file 'peta situs' (termasuk grafik rrd4j):

Item teks=alarmZone1Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Bingkai { Ganti item=zone1_Chart_Period label= Pemetaan "Periode"=[0="Jam", 1="Hari", 2="Minggu"] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone1_Chart_Period==0, zone1_Chart_Period= =Tidak diinisialisasi] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone1_Chart_Period==1] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone1_Chart_Period==2] } } Item teks=alarmZone2Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Beralih item= zone2_Chart_Period label="Period" mappings=[0="Jam", 1="Hari", 2="Minggu"] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone2_Chart_Period==0, zone2_Chart_Period==Tidak Diinisialisasi] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone2_Chart_Period==1] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone2_Chart_Period ==2] } } Item teks=alarmZone3Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Bingkai { Ganti item=zone3_Chart_Period label="Period" pemetaan =[0="Jam", 1="Hari", 2="Minggu"] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone3_Chart_Period==0, zone3_Chart_Period==Tidak Diinisialisasi] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone3_Chart_Period==1] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone3_Chart_Period==2] } } Teks item=alarmZone4Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Bingkai { Ganti item=zone4_Chart_Period label=" Periode" pemetaan=[0="Jam", 1="Hari", 2="Minggu"] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone4_Chart_Period==0, zone4_Chart_Period== Tidak diinisialisasi] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone4_Chart_Period==1] Gambar url="https://localhost:8080/rrdchart.png" visibility=[zone4_Chart_Period==2] } } // OPSIONAL tetapi berguna untuk mendiagnosis status dan alamat IP ss Teks item=alarmMonitorState Item teks=alarmMonitorIPAddress

berkas 'aturan':

aturan "Perubahan status Zona 1 Alarm"

ketika Item alarmZone1State berubah menjadi OPEN lalu postUpdate(alarmZone1Trigger, new DateTimeType()) alarmZone1State.state = CLOSED end

aturan "Perubahan status Zona Alarm 2"

ketika Item alarmZone2State berubah menjadi OPEN lalu postUpdate(alarmZone2Trigger, new DateTimeType()) alarmZone2State.state = CLOSED end

aturan "Perubahan status Zona Alarm 3"

ketika Item alarmZone3State berubah menjadi OPEN lalu postUpdate(alarmZone3Trigger, new DateTimeType()) alarmZone3State.state = CLOSED end

aturan "Perubahan status Zona 4 Alarm"

ketika Item alarmZone4State berubah menjadi OPEN lalu postUpdate(alarmZone4Trigger, new DateTimeType()) alarmZone4State.state = CLOSED end

Anda mungkin perlu sedikit mengubah konfigurasi OpenHAB di atas agar sesuai dengan pengaturan Anda sendiri.

Jika Anda memiliki masalah dengan PIR yang dipicu, mulailah dari awal, dan ukur tegangan untuk setiap bagian rangkaian. Setelah Anda puas dengan itu, periksa kabel Anda, pastikan ada kesamaan, periksa pesan di Wemos melalui konsol debug serial, periksa komunikasi MQTT dan periksa sintaks file transformasi, item, dan peta situs Anda.

Semoga beruntung!

Direkomendasikan: