Daftar Isi:

Alarm Air IoT: 5 Langkah (dengan Gambar)
Alarm Air IoT: 5 Langkah (dengan Gambar)

Video: Alarm Air IoT: 5 Langkah (dengan Gambar)

Video: Alarm Air IoT: 5 Langkah (dengan Gambar)
Video: Buat Alat Anti Maling 30 Ribuan | Notifikasi Whatsapp & Alarm Cuma 5 Menit! IoT dengan Wemos 2024, November
Anonim
Alarm Air IoT
Alarm Air IoT

Saya baru-baru ini mengalami cadangan saluran pembuangan dapur. Seandainya saya tidak berada di rumah pada saat itu, itu akan menyebabkan kerusakan lantai dan drywall di apartemen saya. Untungnya, saya menyadari masalahnya dan siap untuk mengambil air dengan ember. Ini membuat saya berpikir untuk membeli alarm banjir. Saya menemukan banyak produk yang terjangkau di Amazon, tetapi produk dengan konektivitas internet memiliki persentase ulasan negatif yang signifikan, terutama karena masalah dengan layanan pemberitahuan kepemilikan. Itu sebabnya saya memutuskan untuk membuat alarm air IoT saya sendiri yang akan menggunakan sarana notifikasi terpercaya pilihan saya.

Langkah 1: Prinsip Operasi

Prinsip operasi
Prinsip operasi

Alarm memiliki mikrokontroler AVR ATtiny85 sebagai otaknya. Dibutuhkan pembacaan tegangan dari baterai dan sensor air dan membandingkannya dengan nilai yang telah ditentukan untuk mendeteksi keberadaan air atau kondisi baterai rendah.

Sensor air hanyalah dua kabel yang ditempatkan sekitar 1 mm terpisah. Salah satu kabel terhubung ke 3,3 V, dan yang lainnya terhubung ke pin penginderaan pada mikrokontroler, yang juga terhubung ke ground melalui resistor 0,5 MOhm. Biasanya, resistansi antara kabel sensor sangat tinggi (lebih dari 10 MOhm), sehingga pin sensor ditarik ke bawah hingga 0 V. Namun, ketika ada air di antara kabel, resistansi turun menjadi kurang dari 1 MOhm, dan pin penginderaan melihat beberapa tegangan (dalam kasus saya sekitar 1,5 V). Ketika ATtiny85 mendeteksi tegangan ini pada pin penginderaan, itu mengaktifkan MOSFET untuk menyalakan buzzer, dan mengirimkan sinyal bangun ke modul ESP8266 yang bertanggung jawab untuk mengirim peringatan (email dan pemberitahuan push). Setelah satu menit berdengung, alarm dimatikan, dan hanya dapat diatur ulang dengan siklus daya.

Unit ini mengalirkan dua sel alkaline atau NiMH. Mikrokontroler sebagian besar tertidur untuk menghemat baterai, bangun sebentar-sebentar untuk memeriksa sensor air serta tegangan baterai. Jika baterai hampir habis, mikrokontroler akan membangunkan modul ESP8266 untuk mengirimkan peringatan baterai lemah. Setelah peringatan, alarm dilucuti untuk mencegah baterai over-discharge.

Karena modul ESP8266 bertanggung jawab untuk mengirimkan baik peringatan baterai lemah maupun peringatan banjir, modul ini memerlukan sinyal kontrol dari ATiny85. Karena terbatasnya jumlah pin yang tersedia, sinyal kontrol ini dihasilkan oleh pin yang sama yang bertanggung jawab untuk indikasi LED baterai. Selama operasi normal (alarm menyala dan baterai terisi), LED berkedip sebentar-sebentar. Ketika kondisi baterai rendah terdeteksi, LED menyala untuk memberikan sinyal tinggi ke pin RX modul ESP. Jika terdeteksi air, LED baterai akan mati saat ESP8266 terjaga..

Langkah 2: Desain dan Perakitan

Desain dan Perakitan
Desain dan Perakitan
Desain dan Perakitan
Desain dan Perakitan
Desain dan Perakitan
Desain dan Perakitan

Saya merancang sirkuit yang akan dibangun di atas protoboard 4x6 cm dua sisi menggunakan sebagian besar bagian 0805 SMD. Skema yang disajikan didasarkan pada bangunan ini, tetapi dapat disesuaikan dengan mudah untuk komponen lubang tembus (tip: untuk meminimalkan ruang, solder resistor lubang tembus secara vertikal).

Bagian-bagian berikut diperlukan:

- Resistor: 330 x 1; 470 x 1; 680 x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Satu kapasitor keramik 10 F- Satu MOSFET saluran-N tingkat logika (misalnya RFP30N06LE atau AO3400)- Satu LED merah dan satu kuning (atau warna lain jika Anda suka).- Konektor terminal sekrup dua kawat x 3 (tidak benar-benar diperlukan, tetapi membuatnya lebih mudah untuk menghubungkan dan memutuskan periferal selama pengujian)- Bel piezo keras yang bagus untuk 3,3 V- Mikrokontroler ATtiny85 (versi PDIP)- Soket PDIP 8-pin untuk mikrokontroler- Modul ESP-01 (dapat diganti dengan modul berbasis ESP8266 lain, tetapi akan ada banyak perubahan dalam tata letak dalam kasus itu)- Konverter boost DC-DC 3,3 V yang mampu memberikan arus 200 mA (semburan 500 mA) pada 2,2 V memasukkan. (Saya merekomendasikan https://www.canton-electronics.com/power-converter… karena arus diamnya yang sangat rendah)- Satu 3 pin female header- Dua 4-pin female header atau satu 2x4 header- 22 AWG solid wires untuk sensor air- 22 AWG kawat terdampar (atau jenis lain dari kawat tipis yang terbuka untuk membuat jejak)

Saya merekomendasikan nilai resistor yang tercantum di atas, tetapi Anda dapat mengganti sebagian besar dari nilai tersebut dengan nilai yang serupa. Tergantung pada jenis LED yang ingin Anda gunakan, Anda mungkin perlu menyesuaikan nilai resistor pembatas arus untuk mendapatkan kecerahan yang diinginkan. MOSFET dapat berupa lubang tembus atau SMT (SOT23). Hanya orientasi resistor 330 Ohm yang dipengaruhi oleh jenis MOSFET. Sekering PTC (misalnya diberi nilai 1 A) disarankan jika Anda berencana menggunakan sirkuit ini dengan baterai NiMH. Namun, itu tidak diperlukan dengan baterai alkaline. Tip: suku cadang yang diperlukan untuk alarm ini dapat dibeli dengan harga murah dari ebay atau aliexpress.

Selain itu, Anda memerlukan papan tempat memotong roti, beberapa resistor 10k lubang tembus, beberapa kabel jumper ("dupont") pria dan wanita-pria, dan adaptor USB-UART untuk memprogram modul ESP-01.

Sensor air dapat dibuat dengan berbagai cara, tetapi yang paling sederhana adalah dua kabel 22 AWG dengan ujung terbuka (panjang 1 cm) dengan jarak sekitar 1 mm. Tujuannya adalah untuk memiliki resistansi kurang dari 5 MΩ antara kontak sensor saat ada air.

Sirkuit ini dirancang untuk penghematan baterai maksimum. Ini hanya menarik 40-60 A dalam rezim pemantauan (dengan LED daya dilepas pada modul ESP-01). Setelah alarm dipicu, sirkuit akan menarik 300-500 mA (pada input 2,4 V) selama satu detik atau kurang, dan setelah itu arus akan turun di bawah 180 mA. Setelah modul ESP selesai mengirimkan notifikasi, konsumsi arus akan turun hingga di bawah 70 mA hingga buzzer mati. Kemudian alarm akan mati sendiri, dan konsumsi arus akan di bawah 30 A. Jadi satu set baterai AA akan dapat memberi daya pada sirkuit selama berbulan-bulan (mungkin lebih dari satu tahun). Jika Anda menggunakan konverter boost yang berbeda, misalnya dengan arus diam 500 A, baterai perlu diganti lebih sering.

Kiat perakitan:

Gunakan spidol permanen untuk memberi label pada semua jejak dan komponen pada protoboard untuk memudahkan penyolderan. Saya sarankan untuk melanjutkan dalam urutan berikut:

- LED SMT sisi atas dan jembatan kawat berinsulasi

- MOSFET sisi atas (catatan: jika Anda memiliki MOSFET SOT-23, letakkan secara diagonal seperti pada foto. Jika Anda menggunakan MOSFET lubang tembus, letakkan secara horizontal dengan pin gerbang di posisi I3.)

- sisi atas melalui bagian lubang (catatan: buzzer tidak disolder dan bahkan tidak harus dipasang ke PCB)

- bagian dan jejak SMT sisi terbalik (misalnya untaian individu dari kawat AWG22)

Langkah 3: Firmware

Kode C untuk ATtiny85

Main.c berisi kode yang perlu dikompilasi dan diunggah ke mikrokontroler. Jika Anda akan menggunakan papan Arduino sebagai programmer, Anda dapat menemukan diagram pengkabelan dalam tutorial ini. Anda hanya perlu mengikuti bagian berikut (abaikan sisanya):

– Konfigurasi Arduino Uno sebagai ISP (In-System Programming)

– Menghubungkan ATtiny85 dengan Arduino Uno.

Untuk mengompilasi dan mengunggah firmware, Anda memerlukan CrossPack (untuk Mac OS) atau rantai alat AVR (untuk Windows). Perintah berikut perlu dijalankan untuk mengkompilasi kode:

avr-gcc -Os -mmcu=attiny85 -c main.c; avr-gcc -mmcu=attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Untuk mengunggah firmware, jalankan yang berikut ini:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash:w:main.hex

Alih-alih "/dev/cu.usbmodem1411" Anda mungkin perlu memasukkan port serial yang terhubung dengan Arduino Anda (Anda dapat menemukannya di Arduino IDE: Tools Port).

Kode berisi beberapa fungsi. deep_sleep() membuat mikrokontroler memasuki kondisi daya yang sangat rendah selama kurang lebih 8 detik. read_volt() digunakan untuk mengukur tegangan baterai dan sensor. Tegangan baterai diukur terhadap referensi tegangan internal (2,56 V plus atau minus beberapa persen) sedangkan tegangan sensor diukur terhadap Vcc = 3,3 V. Pembacaan dibandingkan dengan BATT_THRESHOLD dan SENSOR_THRESHOLD yang didefinisikan masing-masing sebagai 932 dan 102, yang sesuai dengan ~2,3 dan 0,3 V. Anda mungkin dapat mengurangi nilai ambang batas baterai untuk meningkatkan masa pakai baterai, tetapi tidak disarankan (lihat Pertimbangan baterai untuk informasi terperinci).

active_alarm() memberi tahu modul ESP tentang deteksi air dan membunyikan bel. low_batt_notification() memberi tahu modul ESP bahwa baterai hampir habis dan juga membunyikan bel. Jika Anda tidak ingin dibangunkan di tengah malam untuk mengganti baterai, lepaskan " | 1< " di low_batt_notification().

Sketsa Arduino untuk ESP-01

Saya memilih untuk memprogram modul ESP menggunakan Arduino HAL (ikuti tautan untuk instruksi pengaturan). Selain itu saya menggunakan dua perpustakaan berikut:

ESP8266 Kirim Email oleh Górász Péter

ESP8266 Pushover oleh tim Arduino Hannover

Pustaka pertama terhubung ke server SMTP dan mengirimkan peringatan ke alamat email Anda. Cukup buat akun gmail untuk ESP Anda, dan tambahkan kredensial ke kode. Pustaka kedua mengirimkan pemberitahuan push melalui layanan Pushover (pemberitahuan gratis, tetapi Anda harus membayar sekali untuk menginstal aplikasi di ponsel/tablet Anda). Unduh kedua perpustakaan. Masukkan konten perpustakaan Kirim Email ke folder sketsa Anda (arduino akan membuatnya saat Anda membuka sketsa arduino untuk pertama kalinya). Instal pustaka Pushover melalui IDE (Sketsa -> Sertakan Pustaka -> Tambahkan pustaka. ZIP).

Untuk memprogram modul ESP-01 dapat mengikuti tutorial berikut ini: https://www.allaboutcircuits.com/projects/breadbo… Tidak perlu repot menyolder ulang satu baris pin seperti yang ditunjukkan pada panduan - cukup gunakan dupont female-male kabel untuk menghubungkan pin modul ke papan tempat memotong roti. Jangan lupa bahwa konverter boost dan adaptor USB-UART harus berbagi ground (catatan: Anda mungkin dapat menggunakan output 3,3 V adaptor USB-UART alih-alih konverter boost, tetapi kemungkinan besar tidak akan dapat menghasilkan arus yang cukup).

Langkah 4: Pertimbangan Baterai

Kode firmware yang disertakan telah dikonfigurasikan sebelumnya untuk mengirim peringatan baterai lemah dan dimatikan pada ~2,3 V. Ambang batas ini didasarkan pada asumsi bahwa dua baterai NiMH digunakan secara seri. Tidak disarankan untuk melepaskan sel NiMH individu di bawah 1 V. Dengan asumsi kedua sel memiliki kapasitas dan karakteristik pelepasan yang sama, keduanya akan terputus pada ~1,15 V - baik dalam kisaran aman. Namun, sel NiMH yang telah digunakan untuk banyak siklus pelepasan cenderung berbeda kapasitasnya. Perbedaan kapasitas hingga 30% dapat ditoleransi karena masih akan menghasilkan titik pemutusan sel tegangan terendah sekitar 1 V.

Meskipun dimungkinkan untuk mengurangi ambang batas baterai rendah di firmware, hal itu akan menghilangkan margin keamanan, dan dapat mengakibatkan baterai habis daya dan kerusakan sementara hanya sedikit peningkatan masa pakai baterai yang diharapkan (sel NiMH > 85% habis pada 1,15 V).

Faktor lain yang perlu diperhitungkan adalah kemampuan konverter boost untuk menyediakan setidaknya 3,0 V (2,5 V menurut bukti anekdot) pada arus puncak 300-500 mA pada baterai rendah. Resistansi internal yang rendah dari baterai NiMH hanya menyebabkan penurunan 0,1 V yang dapat diabaikan pada arus puncak, sehingga sepasang sel NiMH yang dilepaskan ke 2,3 V (sirkuit terbuka) akan dapat memberikan setidaknya 2,2 V ke konverter boost. Namun, lebih rumit dengan baterai alkaline. Dengan sepasang baterai AA duduk di 2,2-2,3 V (sirkuit terbuka) penurunan tegangan 0,2-0,4 V diharapkan pada arus puncak. Meskipun saya telah memverifikasi bahwa rangkaian bekerja dengan konverter boost yang direkomendasikan dengan suplai 1,8 V pada arus puncak, ini kemungkinan menyebabkan tegangan output turun sesaat di bawah nilai yang disarankan oleh Espressiff. Jadi ambang batas 2,3 V menyisakan sedikit margin keamanan dengan baterai alkaline (perlu diingat bahwa pengukuran tegangan yang dilakukan oleh mikrokontroler hanya akurat dalam plus atau minus beberapa persen). Untuk memastikan modul ESP tidak mengalami gangguan saat baterai alkaline rendah, saya sarankan untuk meningkatkan tegangan pemutus menjadi 2,4 V (#define BATT_THRESHOLD 973). Pada 1,2 V (sirkuit terbuka) sel alkalin sekitar 70% dikosongkan yang hanya 5-10 poin persentase lebih rendah dari tingkat pengosongan pada 1,15 V per sel.

Baik sel NiMH maupun alkaline memiliki kelebihan dan kekurangan untuk aplikasi ini. Baterai alkaline lebih aman (tidak terbakar jika korsleting), dan memiliki tingkat self-discharge yang jauh lebih rendah. Namun, baterai NiMH menjamin pengoperasian ESP8266 yang andal pada titik potong yang lebih rendah berkat resistansi internalnya yang rendah. Tetapi pada akhirnya, kedua jenis dapat digunakan dengan beberapa tindakan pencegahan, jadi ini hanya masalah preferensi pribadi.

Langkah 5: Penafian Hukum

Sirkuit ini dirancang oleh penghobi non-profesional untuk aplikasi hobi saja. Desain ini dibagikan dengan itikad baik, tetapi tanpa jaminan apa pun. Gunakan dan bagikan dengan orang lain dengan risiko Anda sendiri. Dengan membuat ulang sirkuit, Anda setuju bahwa penemu tidak akan bertanggung jawab atas segala kerusakan (termasuk namun tidak terbatas pada penurunan nilai aset dan cedera pribadi) yang mungkin terjadi secara langsung atau tidak langsung melalui malfungsi atau penggunaan normal sirkuit ini. Jika undang-undang negara Anda membatalkan atau melarang pelepasan tanggung jawab ini, Anda tidak boleh menggunakan desain ini. Jika Anda berbagi desain ini atau sirkuit yang dimodifikasi berdasarkan desain ini, Anda harus memberi kredit kepada penemu asli dengan menunjukkan url instruksi ini.

Direkomendasikan: