Isi kandungan:

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, Julai
Anonim
Bendera Peti Surat Kuasa MQTT dan Wifi
Bendera Peti Surat Kuasa MQTT dan Wifi

Catatan: dikemas kini dengan firmware baru, skema dan petua untuk pengaturcara

Beberapa tahun saya memulakan projek automasi rumah saya sendiri. Ia dimulakan dengan membina penghantar 433 MHz yang dikendalikan oleh pelayan dengan Arduino untuk menukar banyak suis jauh berdasarkan PT2262 yang murah. Kemudian saya menambah penerima berasaskan Arduino untuk stesen cuaca saya, menghubungkan hubungan kawalan pengecas EV saya, dan lain-lain. Segala-galanya berkembang semakin terjalin (dan rumit!). Oleh itu, beberapa bulan yang lalu saya memutuskan untuk menyeragamkan semua berdasarkan MQTT untuk pemesejan, Node-RED untuk automasi (kedua-duanya berjalan pada satu Raspberry Pi B +) dan MariaDb untuk pembalakan (berjalan di Synology NAS saya). Kemudian saya memindahkan broker MQTT (Mosquitto) dan Node-RED ke NAS juga..

Instruksional ini menerangkan projek bodoh untuk keseronokan yang menghubungkan peti surat yang dipasang di jalan saya di infrastruktur rumah ini. Ideanya adalah bahawa jika seseorang membuka peti mel yang dipasang di pagar kira-kira 10 meter dari pintu depan, ia memberi isyarat kepada saya di telefon saya dan mungkin peranti lain.

Langkah 1: Garis Besar, Prasyarat dan Bahagian

Garis besar

Pada tahap yang tinggi, peti surat harus, ketika dibuka, mengirim pesan MQTT unik kepada broker, sehingga pelanggan untuk topik itu akan diberitahu. Node-RED juga melanggan dan melakukan automasi, dalam hal ini menghantar e-mel dan / atau mesej push ke telefon saya.

Peti mel harus menggunakan bateri dan beroperasi sekurang-kurangnya setahun, dan harus menggunakan rangkaian WiFi saya. Ketika menyedari pengawal mikro dan menyambung ke rangkaian WiFi memerlukan masa beberapa saat, saya tidak dapat menggunakan suis pengaktifan untuk memotong kuasa. Sebaliknya, pemproses harus dibenarkan menyelesaikan urusannya setelah penutup peti mel sudah ditutup.

Prasyarat

Saya menganggap anda mempunyai kemahiran pematerian yang sederhana, telah bekerja sedikit dengan Arduino IDE, dan telah memasang papan ESP8266 menggunakan Pengurus Papan. Anda juga perlu mempunyai penyesuai Serial USB 3.3 volt untuk memprogram pengawal mikro.

Saya juga menganggap anda mempunyai broker MQTT dan pelayan Node-RED berjalan. Sekiranya tidak, terdapat banyak arahan di Internet, tetapi saya sarankan untuk mengambil jalan malas dan menggunakan skrip pemasangan Peter Scargill yang sangat baik jika anda ingin menjalankannya di mana-mana Pi atau Ubuntu, atau menggunakan gambar Andreas Spiess untuk Pi Zero W (pautan dalam perihalan video itu), yang akan menjimatkan beberapa jam menonton skrip pemasangan yang sedang berjalan. Sebagai alternatif, anda boleh membuat firmware menghantar e-mel secara langsung, tetapi anda akan kehilangan banyak fleksibiliti untuk melakukannya.

Bahagian

  • 1 kotak bateri AA tertutup, 3
  • 2 bateri AA
  • 1 modul ESP8266. Untuk projek ini saya menggunakan ESP-01
  • 1 suis mikro
  • Perintang 1 47K
  • 1 perintang 4M7
  • 1 kapasitor 2.2uF
  • 1 tiub plastik nipis. Saya menggunakan pen
  • 1 batang tebal, mancis panjang atau lollipop. Ia semestinya sesuai dan bergerak di dalam tiub plastik

Langkah 2: Perkakasan: Kotak, Suis dan Pendawaian

Perkakasan: Kotak, Suis dan Pendawaian
Perkakasan: Kotak, Suis dan Pendawaian
Perkakasan: Kotak, Suis dan Pendawaian
Perkakasan: Kotak, Suis dan Pendawaian
Perkakasan: Kotak, Suis dan Pendawaian
Perkakasan: Kotak, Suis dan Pendawaian

Saya mulakan dengan kotak bateri lama dari hiasan Krismas yang tidak berfungsi. Ia direka untuk tiga bateri bersaiz AA. Oleh kerana ESP8266 akan berjalan dengan baik pada 3 volt, saya dapat menggunakan dua bateri dan menggunakan posisi ketiga untuk pengawal mikro. Perhatikan bagaimana kotak itu mempunyai petak tambahan kecil yang dapat saya gunakan untuk suis pengaktifan. Saya menggunakan jenis suis yang sangat biasa yang ditunjukkan dalam gambar, tetapi melepaskan spring yang mengikatnya pada kedudukan hidup atau mati. Saya menyolder dua wayar nipis ke kenalan NC dan menempelkannya ke dalam kotak dengan setitik lem super kecil.

Seterusnya, saya menggerudi lubang di penutup atas yang sesuai dengan tiub plastik yang diambil dari pena bola. Lubang sejajar dengan suis dan memandu pelocok yang terbuat dari batang korek tebal.

Akhirnya, saya memasangkan dua wayar lagi ke kenalan bateri dan memandu keempat-empat wayar ke kedudukan bateri ketiga, di mana pengawal mikro akan berada.

Langkah 3: Perkakasan: ESP-01

Perkakasan: ESP-01
Perkakasan: ESP-01
Perkakasan: ESP-01
Perkakasan: ESP-01
Perkakasan: ESP-01
Perkakasan: ESP-01

Memandangkan keperluan WiFi, keseluruhan projek menjerit ESP8266. Pengawal WiFi kecil ini telah menjadi tenaga kerja kegemaran komuniti bermain-main sebagai modul yang boleh dibeli dengan harga di bawah EUR 2.50 dan mengintegrasikan tumpukan WiFi dan TCP / IP penuh, dengan kapasiti lebih dari cukup untuk menjalankan program anda sendiri. Arduino IDE (atau Atom dengan plugin PlatformIO) menyokong sepenuhnya ESP8266.

Saya biasanya mengambil ESP-12F, tetapi saya meletakkan papan ESP-01 kecil yang sangat sesuai untuk kerja dan sesuai dengan kotak bateri. Satu-satunya masalah adalah bahawa agak rumit untuk mem-flash firmware dalam ESP-01. Lebih lanjut mengenai perkara itu pada langkah seterusnya. Terdapat satu pengubahsuaian untuk dilakukan: Anda harus mengeluarkan LED kuasa merah dari papan, kerana ia terus menarik 3mA. Dengan LED yang dipadamkan, modul menggunakan hanya beberapa puluh uA dalam mod deepsleep yang akan bertahan selama lebih dari satu tahun pada dua bateri AA berkualiti.

Ternyata saya dapat menggunakan dua helai header wanita 4 pin dan solder pada beberapa komponen tambahan dalam bentuk percuma sehingga saya dapat mengeluarkan ESP-01 untuk mengemas kini firmware, sementara itu masih boleh dipasang di ruang bateri ketiga.

Adalah sangat penting untuk memasang ESP dengan betul. Dengan menggunakan cheat sheet di atas, pasangkannya seperti berikut.

  1. Bateri ditambah kepada Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) dan perintang 47K.
  2. Bateri tolak ke GND (A1) dan satu wayar suis.
  3. Kawat suis lain ke kapasitor 100nF dan perintang 4M7.
  4. Hujung terbuka kedua-dua perintang dan kapasitor ke RST (C2).
  5. TXD (A2) tetap tidak dapat dihubungkan.

Edit: Saya terpaksa mengganti ESP-01 kerana saya melakukan kesalahan bodoh dan menghancurkannya. Ternyata yang mengejutkan saya, ESP-01 baru tidak diset semula dengan kapasitor 100nF yang asal. Ia mungkin mempunyai reka bentuk yang sedikit berbeza. Saya menggantinya dengan yang 2.2 uF dan sekarang ia berfungsi semula

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

Langkah 4: Memprogram ESP-01

Mengaturcara ESP-01
Mengaturcara ESP-01
Mengaturcara ESP-01
Mengaturcara ESP-01
Mengaturcara ESP-01
Mengaturcara ESP-01

Untuk mengaktifkan firmware pada ESP-01 anda, anda boleh membina rig kecil atau membeli (hampir) pengaturcara lengkap dengan harga sekitar 1 euro.

Pengaturcaraan perkakasan rig

Bina rig kecil dengan dua lagi header wanita untuk ESP-01. Anda juga memerlukan modul Serial USB, yang mampu menyediakan 3.3 volt. Perhatikan bahawa cip ESP8266 tidak mengeras 5 volt, jadi kesalahan di sini boleh mematikan modul anda. Bagaimanapun, sekali lagi menggunakan cheat sheet, pasangkan rig anda seperti berikut:

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

Pengaturcara pra-bina

Menyenangkan kerana membina barang anda sendiri, pendekatan yang lebih lazim adalah mendapatkan antara muka ESP-01-ke-siri dari laman lelongan kegemaran anda, lihat gambar di atas. Ini jauh lebih mudah, lebih padat dan lebih dipercayai daripada pelantar. Walau bagaimanapun, beberapa di antaranya bukan pengaturcara, hanya antara muka bersiri. Anda perlu menyolder jambatan wayar antara GND (pin A1) dan GPIO0 (pin C1) di bahagian belakang antara muka, lihat gambar kedua. Perhatikan bahawa ESP-01 harus dipasang dengan antena menghadap palam USB, bukan sebaliknya!

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

Muatkan firmware

Dengan mengandaikan Arduino IDE 1.8.3 atau lebih baru, pilih Tools> Board dan pilih papan yang anda miliki. Untuk ESP-01 seperti yang saya gunakan, pilih "Modul ESP8266 Generik", dan tetapkan pilihan berikut (ini mestilah semua lalai):

  1. Mod Kilat: DIO
  2. Kekerapan Kilat: 40MHz
  3. Kekerapan CPU: 80MHz
  4. Saiz kilat: 512KB (64KB SPIFFS) Catatan: jika anda menggunakan papan ESP-01 hitam, pilih 1MB (64KB SPIFFS)
  5. Port debug: Dilumpuhkan
  6. Tahap debug: Tiada
  7. Kaedah tetapkan semula: ck
  8. Kelajuan muat naik 115200
  9. Port: pilih port yang disambungkan ke antara muka Serial USB anda. Untuk PC Ubuntu saya yang / dev / ttyUSB0

Sambungkan rig / programmer, muatkan Sketsa yang anda dapati di sini https://gitlab.com/jeroenmeijer/Mailbox.git. Berikan kelayakan broker WiFi dan MQTT dan konfigurasi IP anda dalam config.h dan pilih Muat Naik.

Langkah 5: Menghimpunkan Semuanya

Menghimpunkan Semuanya
Menghimpunkan Semuanya

Saya menggerudi lubang tiub plastik di penutup dalam peti surat saya, sedekat mungkin dengan engsel, kemudian terpaku panas kotak bateri ke bahagian bawah penutup itu. Seterusnya saya menggunakan padanan tebal sebagai pelocok. Saya menggunakan potongan untuk memotong korek menjadi panjang sehingga suis terbuka jika penutup luar ditutup. Saya memeriksa kesambungan dengan membuka penutup semasa menjalankan mosquitto_sub untuk memantau mesej MQTT (ganti mqttbroker, pengguna dan kata laluan dengan konfigurasi MQTT anda):

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

Kira-kira enam saat selepas penutup luar dibuka, mesej MQTT berikut diterbitkan. Masa digunakan untuk membangunkan pengawal mikro dan mewujudkan sambungan WiFi dan broker.

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

Selama ini, pengawal mikro menggunakan kira-kira 70mA. Setelah selesai, ia akan tidur nyenyak dan dalam kes saya ia menggunakan kurang dari 20uA. "flap" selalu benar, "vcc" menyatakan voltan bateri dalam mV dan "prev" harus 0. Jika itu 1 atau 2, ini bermaksud kotak surat tidak dapat mengirim pesan lebih awal, baik kerana tidak dapat menyambung ke WiFi, atau kerana tidak dapat menyambung ke broker MQTT. "RSSI" adalah kekuatan isyarat WiFi. Kedua-duanya sangat berguna untuk mendiagnosis masalah.

Adalah idea yang baik untuk memantau voltan bateri selama beberapa hari untuk memastikan peranti berfungsi seperti yang diharapkan dan tidak menguras baterinya kerana beberapa sebab.

Firmware juga dapat mengemas kini dirinya melalui udara (OTA), tetapi itu sedikit di luar ruang lingkup arahan ini. Bagi mereka yang berminat, konfigurasi OTA juga terdapat di config.h.

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

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

Akhirnya, saya membuat aliran sederhana dalam Node-RED. Node pertama melanggan topik kotak surat (stat / kotak pos / pencetus). Apabila mesej diterima, node kedua memformat e-mel *). Node akhir menghantarnya ke alamat gmail saya, menggunakan gmail sebagai pelayan SMTP. Telefon saya kemudian akan memberitahu saya tentang surat baru.

Saya telah menambahkan aliran Node-RED ke coretan gitlab sehingga anda dapat mengimportnya ke aliran Node-RED anda.

Sudah tentu anda boleh menambahkan beberapa lagi nod, misalnya untuk mencatat peristiwa peti mel ke MariaDb atau SqlLite, atau membuat penggera tambahan apabila voltan bateri berada di bawah 2.7 volt.

Selamat memburu surat!

*) Lihat halaman seterusnya, saya menggunakan PushBullet sekarang dan bukannya e-mel.

Langkah 7: Selepas berfikir

Selalu ada perasaan ini perkara dapat dilakukan dengan lebih baik.

Tukar

Saya lebih suka menggunakan magnet (super) dan kenalan buluh daripada pendekatan pelocok yang agak kekok. Terdapat dua sebab. Salah satunya, tidak mungkin saya dapat membuat pekerjaan ini dengan penutup yang ditutup ketika kotak dibuka, dan jika selalu ditutup berarti arus kecil akan selalu mengalir. Jika dilihat kembali, kurang dari 1uA yang mengalir melalui perintang 4M7 tidak akan menjadi masalah besar dalam jangka hayat bateri. Yang lain adalah yang lebih praktikal. Saya membuat projek ini pada hari Sabtu dan menulis perisian, membina semuanya pada hari Ahad dari apa yang sedang dibuat. Saya tidak mempunyai kenalan buluh di kotak sampah.

Catatan: seperti diy_bloke berkomentar, kenalan buluh mempunyai kecenderungan untuk melekit ketika dimagnetkan untuk waktu yang lama, jadi mungkin pelocok itu sama sekali bukan idea buruk. Kita akan lihat. *)

Mesej mengenai pengosongan

Peti mel menghantar mesej ketika mengosongkannya juga. Ini bukan masalah besar tetapi dengan lebih banyak orang di rumah yang mendapat amaran, seseorang mungkin akan berakhir dengan memeriksa kotak mel yang menafikan seluruh tujuannya! Terdapat beberapa cara untuk mengatasi ini, seperti memeriksa apakah penutup dalam diangkat, dan jika demikian, jangan hantar mesej. Atau daripada menggunakan suis penutup, pasang alat pengesan di bahagian bawah peti mel. Atau butang reset kecil untuk ditekan semasa mengosongkannya. Walau bagaimanapun, semua perkara akan menyulitkan dan mungkin memburukkan lagi kebolehpercayaan.

Pemesejan

Menghantar e-mel adalah cara yang berkesan tetapi kasar untuk mengeluarkan amaran. Cara yang lebih elegan adalah aplikasi telefon, tetapi saya belum menemui aplikasi papan pemuka MQTT Android yang dapat dikonfigurasi untuk memicu amaran sistem operasi ketika pesan tertentu diterima. Sekiranya ada, sila tambahkan komen. **)

*) Setelah lebih dari satu tahun beroperasi, ternyata tongkat lolipop yang saya gunakan, pada dasarnya kertas bergolek, mempunyai kecenderungan untuk memendek di bawah tekanan spring spring yang berterusan. Setelah menyelesaikan beberapa masalah, saya menggantinya dengan tongkat kayu.

**) Saya menggunakan PushBullet sekarang untuk mesej push, terpisah dari papan pemuka MQTT. Antaramuka rendah Node-RED kecil ke API boleh didapati di sini. Pastikan anda memberikan token akses di node "Bersedia untuk pushbullet" dan alamat e-mel anda untuk tujuan penggantian di nod "Cuba semula".

Disyorkan: