Daftar Isi:

Sensor Pintu Bertenaga Baterai Dengan Integrasi Otomatisasi Rumah, WiFi, dan ESP-NOW: 5 Langkah (dengan Gambar)
Sensor Pintu Bertenaga Baterai Dengan Integrasi Otomatisasi Rumah, WiFi, dan ESP-NOW: 5 Langkah (dengan Gambar)

Video: Sensor Pintu Bertenaga Baterai Dengan Integrasi Otomatisasi Rumah, WiFi, dan ESP-NOW: 5 Langkah (dengan Gambar)

Video: Sensor Pintu Bertenaga Baterai Dengan Integrasi Otomatisasi Rumah, WiFi, dan ESP-NOW: 5 Langkah (dengan Gambar)
Video: Automatic Smart Home with Solar Cell 2024, Juli
Anonim
Image
Image

Dalam instruksi ini saya menunjukkan kepada Anda bagaimana saya membuat sensor pintu bertenaga baterai dengan integrasi otomatisasi rumah. Saya telah melihat beberapa sensor dan sistem alarm bagus lainnya, tetapi saya ingin membuatnya sendiri.

Tujuan saya:

  • Sensor yang mendeteksi dan melaporkan pembukaan pintu dengan cepat (<5 detik)
  • Sebuah sensor yang mendeteksi penutupan pintu
  • Sebuah sensor yang dioperasikan dengan baterai dan berjalan selama beberapa bulan dengan baterai

Perangkat keras dan perangkat lunaknya terinspirasi oleh

  • Trigboard Kevin Darrah (TPL5111 dan TPS73733).
  • Video ini

Saya membuat sensor untuk pintu depan dan pintu belakang saya. Satu-satunya perbedaan adalah posisi led dan sakelar daya eksternal (pada sensor pintu belakang).

Saya melakukan beberapa perbaikan selama pengembangan di perangkat keras dan perangkat lunak, itu bisa dilihat di foto.

Perlengkapan

Saya membeli komponen elektronik dari Aliexpress, bagian utama:

  • Baterai LiPo
  • TPS73733 LDO
  • TPL5111
  • Saklar buluh
  • MOSFET saluran-P: IRLML6401TRPBF
  • magnet
  • Plat adaptor PCB untuk komponen SMD dan lainnya.

Langkah 1: Perangkat Keras - Sirkuit

Perangkat Keras - Sirkuit
Perangkat Keras - Sirkuit
Perangkat Keras - Sirkuit
Perangkat Keras - Sirkuit
Perangkat Keras - Sirkuit
Perangkat Keras - Sirkuit

Lihat skema terlampir untuk sirkuit. Saya menyolder bagian SMD pada pelat PCB adaptor dan menyolder semua komponen ke papan perf dua sisi. Saya menghubungkan ESP-01 melalui header perempuan, jadi saya bisa menghapusnya untuk memprogramnya melalui adaptor yang ditunjukkan pada langkah 3 dari Instructable ini.

Rangkaian ini bekerja sebagai berikut:

  • Saat pintu dibuka, TPL5111 menerima tembakan pada pin DELAY/M_DRV dan mengaktifkan LDO TPS73733 yang memberi daya pada ESP-01. Untuk operasi ini, EN/ONE_SHOT harus ditarik rendah, Lihat lembar data TPL5111.
  • Setelah program berjalan (lihat langkah Perangkat Lunak), ESP-01 mengirimkan sinyal Selesai ke TPL5111 yang kemudian menonaktifkan TPS73733 sehingga menghasilkan status daya yang sangat rendah untuk TPL5111 dan TPS73733.

Saya menggunakan sakelar buluh dengan koneksi NO dan NC. Saya menghubungkan kabel NC, karena sakelar buluh harus menutup sirkuit ketika magnet dilepas (pintu terbuka) dan terbuka ketika magnet dekat (pintu tertutup).

Untuk sensor backdoor saya menambahkan beberapa kondensator dan resistor ketika saya menemukan beberapa ketidakstabilan, namun ketidakstabilan itu disebabkan oleh perangkat lunak (esp_now_init) seperti yang saya temukan kemudian.

Langkah 2: Perangkat Keras - Kandang

Perangkat Keras - Kandang
Perangkat Keras - Kandang
Perangkat Keras - Kandang
Perangkat Keras - Kandang
Perangkat Keras - Kandang
Perangkat Keras - Kandang

Saya mendesain enklosur di Autodesk Fusion360, terinspirasi oleh video ini oleh 'pria dengan aksen swiss'.

File STL dari tiga bagian:

  • Kotak
  • Tutup
  • pemegang magnet

diterbitkan di halaman Thingiverse saya.

Langkah 3: Perangkat Lunak

Perangkat lunak
Perangkat lunak

Programnya ada di Github saya.

Alur program ditunjukkan pada gambar. Lihat Instructable saya yang lain untuk penjelasan tentang bagaimana saya menggunakan ESP-NOW.

Ketika modul dihidupkan, pertama-tama ia mencoba mengirim pesan 'BUKA' melalui ESP-NOW. Jika ini tidak berhasil, itu akan beralih ke koneksi WiFi dan MQTT.

Saya menemukan bahwa, setidaknya dalam pengaturan saya, pesan 'TERTUTUP' tidak berhasil dikirim melalui ESP-NOW, jadi saya menghapusnya dari program dan hanya menggunakan WiFi dan MQTT.

Selama pintu dibuka dan modul menunggu pintu ditutup, modul ini menggunakan waktu ini untuk terhubung ke WiFi dan MQTT, jadi ketika pintu ditutup, hanya perlu mengirim tegangan terukur dan pesan TUTUP dan kemudian itu langsung tidur.

Program memeriksa apakah pesan tertutup diterima oleh penerima melalui mendengarkan pesan MQTT pada topik yang tepat.

Langkah 4: Otomatisasi Rumah dan Telegram

Otomatisasi Rumah dan Telegram
Otomatisasi Rumah dan Telegram
Otomatisasi Rumah dan Telegram
Otomatisasi Rumah dan Telegram
Otomatisasi Rumah dan Telegram
Otomatisasi Rumah dan Telegram

Sensor pintu saya berkomunikasi dengan Openhab Home Automation di Raspberry Pi Zero saya.

Aplikasi utama:

  • Baca keadaan pintu: TERBUKA atau TERTUTUP.
  • Alarm saya melalui telegram jika pintu dibuka (Jika Alarm dihidupkan atau fungsi Monitor dihidupkan).
  • Baca terakhir kali pintu dibuka atau ditutup.
  • Hitung jumlah bukaan yang dapat ditangani sensor pintu sebelum baterai habis.

Misalnya, jika kita sedang berlibur dan tetangga datang untuk menyirami tanaman, saya mendapat pesan. Lihat videonya di intro.

Item, aturan, dan file peta situs Openhab saya ada di Github saya. Dalam file ini Anda juga dapat melihat sensor pintu gudang saya, yang menggunakan sakelar buluh kabel biasa dan sakelar kontak (ujung) kecil dari printer 3D di bukaan kunci (lihat gambar).

Cara menggunakan aksi Telegram di Openhab dijelaskan di sini.

Langkah 5: Perbaikan dan Perbaikan Lebih Lanjut

Perbaikan dan Perbaikan Lebih Lanjut
Perbaikan dan Perbaikan Lebih Lanjut
Perbaikan dan Perbaikan Lebih Lanjut
Perbaikan dan Perbaikan Lebih Lanjut

Dalam beberapa bulan terakhir saya membuat perbaikan berikut.

Tangani bukaan pintu yang panjang melalui sinyal pulsa self-switching

Di musim panas, kami membiarkan pintu belakang terbuka selama beberapa jam ketika kami berada di rumah. ESP-01 yang berjalan dengan koneksi WiFi kemudian akan menguras baterai secara tidak perlu. Oleh karena itu saya menyertakan sakelar hidup/mati untuk dapat mematikan modul dalam situasi ini.

Namun, ini terkadang mengakibatkan modul mati secara permanen (ketika saya lupa menyalakannya) dan baterai terkuras setelah beberapa sore pintu terbuka dan modul berjalan (Ketika saya lupa mematikannya).

Oleh karena itu saya ingin dapat mematikan modul melalui perangkat lunak setelah modul menyala untuk waktu yang telah ditentukan (1 menit).

Namun, di mana pulsa 'SELESAI' ESP-01 mematikan TPL5111 ketika pintu ditutup, saya menemukan bahwa TPL5111 tidak diaktifkan oleh pulsa 'SELESAI' sementara pin DELAY/M_DRV TINGGI. Sinyal HIGH pada pin DELAY/M_DRV ini disebabkan oleh pintu terbuka dan kontak NC dari reed switch yang terhubung ke tegangan baterai.

Jadi, sinyal ke pin DELAY/M_DRV tidak boleh terus menerus HIGH, tetapi harus berdenyut. Dalam lembar data TPL5111 Anda dapat menemukan bahwa itu harus berupa pulsa > 20 ms. Saya membuat sinyal self-switching ini melalui MOSFET saluran-P, kapasitor, dan resistor 10K dan 300K, lihat skema yang disertakan.

Ia bekerja sebagai berikut:

  • Jika kontak NC dari saklar buluh ditutup, Gerbang LOW dan MOSFET AKTIF, menghasilkan sinyal TINGGI pada pin DELAY/M_DRV yang mengaktifkan modul.
  • Kapasitor diisi dengan cepat, menghasilkan tegangan yang meningkat pada Gerbang.
  • Setelah sekitar 20 ms, tegangan pada Gerbang adalah 97% dari tegangan baterai (300K/(300K+10K) yang TINGGI dan MOSFET dimatikan, menghasilkan sinyal RENDAH pada pin DELAY/M_DRV.
  • Ketika pin DELAY/M_DRV LOW, sinyal DONE dari ESP-01 menyebabkan modul dimatikan.

Ini diimplementasikan dalam perangkat lunak; while-loop tidak hanya memeriksa apakah pintu masih terbuka, tetapi juga memeriksa apakah modul tidak dinyalakan terlalu lama. Jika dinyalakan terlalu lama, ia menerbitkan nilai NULL (keadaan pintu tidak ditentukan). Dalam hal ini saya tidak tahu apakah pintu dibuka atau ditutup dan saya tidak mencapai semua tujuan yang disebutkan di intro, tetapi masa pakai baterai lebih penting dan paling sering kami membuka pintu lagi di kemudian hari, menghasilkan keadaan tertutup yang dikonfirmasi dari pintu.

Penting untuk menggunakan MOSFET saluran-P yang cocok untuk rentang tegangan yang digunakan di sini. MOSFET harus sepenuhnya menyala pada VGS sekitar - 3,8V dan benar-benar mati pada VGS sekitar -0,2 V. Saya mencoba beberapa MOSFET dan menemukan bahwa IRLML6401TRPBF berfungsi dengan baik untuk tujuan ini dalam kombinasi dengan resistor 10K dan 300K. Sebuah kapasitor 1 uF bekerja dengan baik untuk mendapatkan panjang pulsa sekitar 20 ms. Kapasitor yang lebih besar menghasilkan pulsa yang lebih panjang, yang tidak diperlukan, karena TPL5111 diaktifkan. Saya menggunakan osiloskop DSO150 saya untuk memeriksa voltase dan panjang pulsa.

Peningkatan yang direncanakan: pembaruan OTA

Saya berencana untuk memasukkan pembaruan OTA melalui prosedur berikut, yang sebagian sudah termasuk dalam perangkat lunak saat ini

  • Melalui Openhab dari NodeRed saya menerbitkan pesan 'pembaruan' yang dipertahankan dan 'topik pembaruan'.
  • Jika modul diaktifkan dan terhubung ke server MQTT dan berlangganan 'topik pembaruan', modul akan menerima pesan pembaruan.
  • Pesan pembaruan akan mencegah modul dimatikan dan memulai
  • Melalui situs web HTTPUpdateServer, Anda dapat memperbarui perangkat lunak.
  • Melalui Openhab dari NodeRed saya menerbitkan pesan 'kosong' yang dipertahankan dan 'perbarui topik'.

Peningkatan yang direncanakan: shutdown perangkat keras setelah waktu yang telah ditentukan

Dalam skema saat ini, saya menggunakan resistor 200K antara DELAY/M_DRV dan GND dari TPL5111. Ini mengaktifkan modul selama lebih dari 2 jam (lihat 7.5.3. dari lembar data TPL5111). Namun, saya tidak ingin modul dinyalakan terlalu lama, karena baterai kemudian terkuras. Jika solusi perangkat lunak (lihat di atas) gagal mematikan modul, atau pesan pembaruan yang tidak diinginkan mengatur modul dalam mode pembaruan, modul tetap menyala untuk waktu yang lama.

Oleh karena itu sebaiknya menggunakan resistor yang lebih kecil antara DELAY/M_DRV dan GND dari TPL5111, sehingga modul dimatikan setelah waktu yang singkat, misalnya resistor 50K menghasilkan on time 7 menit.

Direkomendasikan: