Daftar Isi:

Bendera Kotak Surat Bertenaga MQTT dan Wifi: 7 Langkah (dengan Gambar)
Bendera Kotak Surat Bertenaga MQTT dan Wifi: 7 Langkah (dengan Gambar)

Video: Bendera Kotak Surat Bertenaga MQTT dan Wifi: 7 Langkah (dengan Gambar)

Video: Bendera Kotak Surat Bertenaga MQTT dan Wifi: 7 Langkah (dengan Gambar)
Video: sempat gelek lagi. tercekik pakcik2 tgh makan 🧐 2024, Juli
Anonim
Bendera Kotak Surat Bertenaga MQTT dan Wifi
Bendera Kotak Surat Bertenaga MQTT dan Wifi

Catatan: diperbarui dengan firmware baru, skema dan tip untuk programmer

Beberapa tahun saya memulai proyek otomatisasi rumah saya sendiri. Ini dimulai dengan membangun server yang dikendalikan pemancar 433 MHz yang dibangun dengan Arduino untuk mengganti banyak sakelar jarak jauh berbasis PT2262 yang murah. Kemudian saya menambahkan penerima berbasis Arduino untuk stasiun cuaca saya, menghubungkan kontak kontrol pengisi daya EV saya, dan sebagainya. Hal-hal tumbuh semakin terjalin (dan rumit!). Jadi, beberapa bulan yang lalu saya memutuskan untuk membakukan semuanya berdasarkan MQTT untuk perpesanan, Node-RED untuk otomatisasi (keduanya berjalan di satu Raspberry Pi B+) dan MariaDb untuk masuk (berjalan di Synology NAS saya). Kemudian saya memindahkan broker MQTT (Nyamuk) dan Node-RED ke NAS juga..

Instruksi ini menjelaskan proyek konyol untuk bersenang-senang yang mengaitkan kotak surat saya yang dipasang di jalan di infrastruktur rumah ini. Idenya adalah bahwa jika seseorang membuka kotak surat yang dipasang di pagar sekitar 10 meter dari pintu depan, itu memberi saya sinyal di ponsel saya dan mungkin perangkat lain.

Langkah 1: Garis Besar, Prasyarat dan Bagian

Garis besar

Pada tingkat tinggi, kotak surat harus, ketika dibuka, mengirim pesan MQTT unik ke broker, sehingga pelanggan topik itu akan diberitahu. Node-RED juga berlangganan dan melakukan beberapa otomatisasi, dalam hal ini mengirim email dan/atau pesan push ke ponsel saya.

Kotak surat harus berjalan dengan baterai dan berjalan setidaknya selama satu tahun, dan harus melakukannya menggunakan jaringan WiFi saya. Karena membangunkan pengontrol mikro dan menghubungkan ke jaringan WiFi dapat memakan waktu beberapa detik, saya tidak dapat menggunakan sakelar aktivasi untuk memutus daya. Sebaliknya, prosesor harus diizinkan untuk menyelesaikan bisnisnya setelah tutup kotak surat telah ditutup.

Prasyarat

Saya berasumsi Anda memiliki keterampilan menyolder yang sederhana, telah bekerja dengan Arduino IDE sedikit, dan telah menginstal papan ESP8266 menggunakan Boards Manager. Anda juga harus memiliki adaptor Serial USB 3,3 volt untuk memprogram mikrokontroler.

Saya juga menganggap Anda memiliki broker MQTT dan server Node-RED yang berjalan. Jika tidak, ada banyak instruksi di Internet, tetapi saya akan menyarankan untuk mengambil rute malas dan menggunakan skrip instalasi Peter Scargill yang sangat baik jika Anda ingin menjalankan ini di Pi atau Ubuntu apa pun, atau gunakan gambar Andreas Spiess untuk Pi Zero W (tautan dalam deskripsi video itu), yang akan menghemat beberapa jam untuk menonton skrip instalasi yang sedang berjalan. Atau, Anda dapat membuat firmware mengirimkan email secara langsung, tetapi Anda akan kehilangan banyak fleksibilitas untuk melakukannya.

Bagian

  • 1 tertutup, 3 kotak baterai AA
  • 2 baterai AA
  • 1 modul ESP8266. Untuk proyek ini saya menggunakan ESP-01
  • 1 saklar mikro
  • 1 resistor 47K
  • 1 resistor 4M7
  • 1 2.2uF kapasitor
  • 1 tabung plastik tipis. Saya menggunakan pena
  • 1 batang korek api atau lolipop yang tebal dan panjang. Itu harus dengan mudah masuk dan bergerak di dalam tabung plastik

Langkah 2: Perangkat Keras: Kotak, Sakelar, dan Pengkabelan

Perangkat Keras: Kotak, Sakelar, dan Pengkabelan
Perangkat Keras: Kotak, Sakelar, dan Pengkabelan
Perangkat Keras: Kotak, Sakelar, dan Pengkabelan
Perangkat Keras: Kotak, Sakelar, dan Pengkabelan
Perangkat Keras: Kotak, Sakelar, dan Pengkabelan
Perangkat Keras: Kotak, Sakelar, dan Pengkabelan

Saya mulai dengan kotak baterai lama dari dekorasi Natal yang sudah tidak berfungsi. Itu dirancang untuk tiga baterai berukuran AA. Karena ESP8266 akan berjalan dengan baik pada 3 volt, saya dapat menggunakan dua baterai dan menggunakan posisi ketiga untuk mikrokontroler. Perhatikan bagaimana kotak itu memiliki kompartemen ekstra kecil yang dapat saya gunakan untuk sakelar aktivasi. Saya menggunakan jenis sakelar yang sangat umum yang ditunjukkan pada gambar, tetapi melepas pegas yang menguncinya dalam posisi hidup atau mati. Saya menyolder dua kabel tipis ke kontak NC dan menempelkannya di kotak dengan setetes kecil lem super.

Selanjutnya, saya mengebor lubang di penutup atas yang cocok dengan tabung plastik yang diambil dari pulpen. Lubang itu sejajar persis dengan sakelar dan mengarahkan pendorong yang terbuat dari batang korek api yang tebal.

Akhirnya, saya menyolder dua kabel lagi ke kontak baterai dan mengarahkan keempat kabel ke posisi baterai ketiga, di mana mikrokontroler akan berada.

Langkah 3: Perangkat Keras: ESP-01

Perangkat keras: ESP-01
Perangkat keras: ESP-01
Perangkat keras: ESP-01
Perangkat keras: ESP-01
Perangkat keras: ESP-01
Perangkat keras: ESP-01

Mengingat persyaratan WiFi, seluruh proyek meneriakkan ESP8266. Kontroler WiFi kecil ini telah menjadi pekerja keras favorit komunitas bermain-main sebagai modul yang dibeli di bawah EUR 2,50 dan mengintegrasikan WiFi lengkap dan tumpukan TCP/IP, dengan kapasitas lebih dari cukup untuk menjalankan program Anda sendiri. Arduino IDE (atau Atom dengan plugin PlatformIO) mendukung penuh ESP8266.

Saya biasanya akan mengambil ESP-12F, tetapi saya memiliki papan ESP-01 kecil yang diletakkan di sekitar yang sempurna untuk pekerjaan itu dan cocok dengan baik di kotak baterai. Satu-satunya masalah adalah cukup rumit untuk mem-flash firmware di ESP-01. Lebih lanjut tentang itu di langkah berikutnya. Ada satu modifikasi yang harus dilakukan: Anda harus melepas LED daya merah dari papan, karena terus menerus menarik 3mA. Dengan LED dilepas, modul hanya menggunakan beberapa puluh uA dalam mode deepsleep yang akan membuatnya bertahan selama lebih dari satu tahun dengan dua baterai AA berkualitas.

Ternyata saya bisa menggunakan dua strip 4 pin header perempuan dan solder pada beberapa komponen tambahan dalam bentuk bebas sehingga saya bisa menghapus ESP-01 untuk memperbarui firmware, sementara masih muat di kompartemen baterai ketiga.

Sangat penting untuk memasang ESP dengan benar. Dengan menggunakan lembar contekan di atas, sambungkan sebagai berikut.

  1. Baterai plus ke Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) dan resistor 47K.
  2. Baterai minus ke GND (A1) dan satu kabel sakelar.
  3. Kabel lain dari sakelar ke kapasitor 100nF dan resistor 4M7.
  4. Ujung terbuka dari kedua resistor dan kapasitor ke RST (C2).
  5. TXD (A2) dapat tetap tidak terhubung.

Sunting: Saya harus mengganti ESP-01 karena saya membuat kesalahan konyol dan menghancurkannya. Ternyata yang mengejutkan saya, ESP-01 baru tidak disetel ulang dengan kapasitor 100nF asli. Mungkin memiliki desain yang sedikit berbeda. Saya menggantinya dengan yang 2,2 uF dan sekarang berfungsi lagi

Setelah selesai, semuanya dapat dipasang di dalam kotak, tetapi tunggu, pertama-tama kita perlu memprogram modul.

Langkah 4: Memprogram ESP-01

Memprogram ESP-01
Memprogram ESP-01
Memprogram ESP-01
Memprogram ESP-01
Memprogram ESP-01
Memprogram ESP-01

Untuk mem-flash firmware pada ESP-01 Anda, Anda dapat membuat rig kecil atau membeli programmer (hampir) lengkap dengan harga sekitar 1 euro.

Pemrograman perangkat keras rig

Bangun rig kecil dengan lagi dua header wanita untuk ESP-01. Juga, Anda memerlukan modul Serial USB, yang mampu menyediakan 3,3 volt. Perhatikan bahwa chip ESP8266 tidak dikeraskan 5 volt, jadi kesalahan di sini dapat mematikan modul Anda. Bagaimanapun, sekali lagi menggunakan lembar contekan, sambungkan rig Anda sebagai berikut:

  1. 3.3V dari modul USBSerial ke Vcc, CH_PD, RST dan GPIO2.
  2. GND dari modul USBSerial ke GND dan GPIO0.
  3. TXD dari modul USBSerial ke RXD.
  4. RDX dari modul USBSerial ke TXD.

Pemrogram pra-bangun

Asyiknya membangun barang sendiri, pendekatan yang lebih malas adalah mendapatkan antarmuka ESP-01-to-serial dari situs lelang favorit Anda, lihat gambar di atas. Ini jauh lebih mudah, lebih ringkas, dan lebih andal daripada rig. Namun, beberapa di antaranya bukan programmer, hanya antarmuka serial. Anda perlu menyolder jembatan kawat antara GND (pin A1) dan GPIO0 (pin C1) di bagian belakang antarmuka, lihat gambar kedua. Perhatikan bahwa ESP-01 harus dicolokkan dengan antena menghadap ke colokan USB, bukan sebaliknya!

Catatan: mereka juga ada dengan sakelar, lihat gambar ketiga, sangat bagus.

Muat firmware

Dengan asumsi Arduino IDE 1.8.3 atau lebih baru, pilih Tools > Board dan pilih board yang Anda miliki. Untuk ESP-01 seperti yang saya gunakan, pilih "Modul ESP8266 Generik", dan atur opsi berikut (ini harus menjadi default semua):

  1. Mode Lampu Kilat: DIO
  2. Frekuensi Flash: 40MHz
  3. Frekuensi CPU: 80MHz
  4. Ukuran Flash: 512KB (64KB SPIFFS) Catatan: jika Anda menggunakan papan ESP-01 hitam, pilih 1MB (SPIFFS 64KB)
  5. Port debug: Dinonaktifkan
  6. Tingkat debug: Tidak ada
  7. Setel ulang metode: ck
  8. Kecepatan unggah 115200
  9. Port: pilih port yang terhubung ke antarmuka Serial USB Anda. Untuk PC Ubuntu saya itu /dev/ttyUSB0

Hubungkan rig / programmer, muat Sketsa yang dapat Anda temukan di sini https://gitlab.com/jeroenmeijer/Mailbox.git. Berikan kredensial broker WiFi dan MQTT Anda dan konfigurasi IP Anda di config.h dan pilih Unggah.

Langkah 5: Merakit Semuanya

Merakit Semuanya
Merakit Semuanya

Saya mengebor lubang untuk tabung plastik di tutup bagian dalam kotak surat saya, sedekat mungkin dengan engselnya, lalu menempelkan kotak baterai ke bagian bawah tutupnya. Selanjutnya saya menggunakan korek api yang tebal sebagai pendorong. Saya menggunakan gunting untuk memotong korek api menjadi panjang sehingga sakelar akan terbuka jika tutup luar ditutup. Saya memeriksa konektivitas dengan membuka tutupnya saat menjalankan mosquitto_sub untuk memantau pesan MQTT (ganti mqttbroker, pengguna dan kata sandi dengan konfigurasi MQTT Anda):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u pengguna -P kata sandi

Kira-kira enam detik setelah tutup luar dibuka, pesan MQTT berikut akan dipublikasikan. Waktu digunakan untuk membangunkan mikrokontroler dan membangun koneksi WiFi dan broker.

stat/kotak surat/pemicu {"vcc":3050, "flap":true, "prev":0, "RSSI":29, "version": "005"}

Selama ini, mikrokontroler yang digunakan sekitar 70mA. Setelah selesai, ia masuk ke tidur nyenyak dan dalam kasus saya menggunakan kurang dari 20uA. "flap" selalu benar, "vcc" menyatakan tegangan baterai dalam mV dan "prev" harus 0. Jika 1 atau 2, itu berarti kotak surat tidak dapat mengirim pesan sebelumnya, baik karena tidak dapat terhubung ke WiFi, atau karena tidak dapat terhubung ke broker MQTT. "RSSI" adalah kekuatan sinyal WiFi. Keduanya sangat berguna untuk mendiagnosis masalah.

Sebaiknya pantau voltase baterai selama beberapa hari untuk memastikan perangkat berfungsi sebagaimana mestinya dan tidak menguras baterai karena alasan tertentu.

Firmware juga dapat memperbarui dirinya sendiri melalui udara (OTA), tetapi itu sedikit di luar cakupan instruksi ini. Bagi yang berminat, konfigurasi OTA juga ada di config.h.

Langkah 6: Menggunakan Node-RED untuk Bertindak pada Pesan MQTT

Menggunakan Node-RED untuk Bertindak pada Pesan MQTT
Menggunakan Node-RED untuk Bertindak pada Pesan MQTT

Akhirnya, saya membuat alur sederhana di Node-RED. Node pertama berlangganan topik kotak surat (stat/kotak pos/pemicu). Saat pesan diterima, node kedua memformat email *). Node terakhir mengirimkannya ke alamat gmail saya, menggunakan gmail sebagai server SMTP. Ponsel saya kemudian akan mengingatkan saya tentang email baru.

Saya telah menambahkan aliran Node-RED ke cuplikan gitlab sehingga Anda dapat mengimpornya ke aliran Node-RED Anda.

Tentu saja Anda dapat menambahkan beberapa node lagi, misalnya untuk mencatat peristiwa kotak surat ke MariaDb atau SqlLite, atau membuat alarm tambahan saat voltase baterai di bawah 2,7 volt.

Selamat berburu surat!

*) Lihat halaman berikutnya, saya menggunakan PushBullet sekarang bukan email.

Langkah 7: Pikiran sesudahnya

Selalu ada perasaan bahwa hal-hal bisa dilakukan dengan lebih baik.

Mengalihkan

Saya lebih suka menggunakan magnet (super) dan kontak buluh daripada pendekatan plunger yang agak canggung. Ada dua alasan. Salah satunya adalah, tidak mungkin saya bisa membuat ini bekerja dengan kontak menutup ketika kotak dibuka, dan selalu tertutup berarti arus kecil akan selalu mengalir. Dalam retrospeksi, kurang dari 1uA yang mengalir melalui resistor 4M7 tidak akan menjadi masalah besar dalam hal masa pakai baterai. Yang lainnya adalah yang lebih praktis. Saya membuat proyek ini pada hari Sabtu dan menulis perangkat lunak, membangun semuanya pada hari Minggu dari apa yang ada. Saya hanya tidak memiliki kontak buluh di kotak sampah.

Catatan: seperti komentar diy_bloke, kontak buluh cenderung lengket ketika dimagnetisasi untuk waktu yang lama, jadi mungkin plunger bukanlah ide yang buruk sama sekali. Kita lihat. *)

Pesan tentang pengosongan

Kotak surat mengirimkan pesan saat mengosongkannya juga. Ini bukan masalah besar tetapi dengan lebih banyak orang di rumah yang mendapatkan peringatan, seseorang mungkin berakhir dalam lingkaran memeriksa kotak surat yang menentang seluruh tujuannya! Ada beberapa cara untuk mengatasinya, seperti memeriksa apakah tutup bagian dalam terangkat, dan jika demikian, jangan kirim pesan. Atau alih-alih menggunakan sakelar tutup, pasang detektor di bagian bawah kotak surat. Atau tombol reset kecil untuk ditekan saat mengosongkannya. Namun, semua akan memperumit masalah dan mungkin memperburuk keandalan.

Perpesanan

Mengirim email adalah cara yang agak efektif tetapi kasar untuk mengeluarkan peringatan. Cara yang lebih elegan adalah aplikasi telepon, tetapi saya belum menemukan aplikasi dasbor Android MQTT yang dapat dikonfigurasi untuk memicu peringatan sistem operasi ketika pesan tertentu diterima. Jika ada satu di sekitar, silakan tambahkan ke komentar. **)

*) Setelah lebih dari satu tahun beroperasi, ternyata stik lolipop yang saya gunakan, pada dasarnya kertas gulung keras, memiliki kecenderungan untuk memendek di bawah tekanan konstan pegas sakelar. Setelah beberapa pemecahan masalah saya menggantinya dengan tongkat kayu.

**) Saya menggunakan PushBullet sekarang untuk pesan push, terpisah dari dasbor MQTT. Antarmuka kecil Node-RED rendah ke API dapat ditemukan di sini. Pastikan Anda memberikan token akses di node "Siapkan pushbullet" dan alamat email Anda untuk tujuan fallback di node "Coba lagi".

Direkomendasikan: