Stasiun Cuaca Rumah ESP-Sekarang: 9 Langkah (dengan Gambar)
Stasiun Cuaca Rumah ESP-Sekarang: 9 Langkah (dengan Gambar)
Anonim
Stasiun Cuaca Rumah ESP-Sekarang
Stasiun Cuaca Rumah ESP-Sekarang

Saya ingin memiliki stasiun cuaca rumah untuk beberapa waktu dan stasiun yang dapat dengan mudah diperiksa oleh semua orang di keluarga untuk suhu dan kelembaban. Selain memantau kondisi luar, saya juga ingin memantau ruangan tertentu di rumah dan bengkel garasi saya. Itu akan memberi tahu kami kapan waktu yang tepat untuk mengeluarkan udara dari rumah atau menjalankan dehumidifier (hujan deras di sini selama musim dingin). Apa yang saya buat adalah sistem sensor berbasis ESP-Now yang melaporkan ke server web lokal yang dapat diperiksa siapa pun dari komputer atau ponsel mereka. Untuk telepon saya menulis sebagai aplikasi Android sederhana untuk membuatnya lebih mudah.

Langkah 1: Detail Desain

Detail Desain
Detail Desain

Saya ingin memiliki berbagai stasiun sensor yang dapat saya tempatkan di lokasi yang berbeda dan meminta mereka melaporkan kembali ke satu stasiun utama (atau hub) yang akan menyimpan informasi. Setelah mencoba berbagai ide, saya memutuskan untuk menggunakan protokol ESP-Now Espressif, karena memungkinkan komunikasi yang cepat secara langsung antar perangkat. Anda dapat membaca sedikit tentang ESP-Sekarang di sini dan repo GitHub ini adalah bagian besar dari inspirasi saya.

Gambar pertama menunjukkan tata letak sistem. Setiap sensor melaporkan pengukurannya ke perangkat gateway yang meneruskan data ke server utama melalui koneksi serial berkabel. Alasannya karena protokol ESP-Now tidak dapat aktif bersamaan dengan koneksi WIFI. Agar pengguna dapat mengakses halaman web, WIFI harus menyala setiap saat dan kemudian tidak memungkinkan untuk menggunakan komunikasi ESP-Now pada perangkat yang sama. Sementara perangkat gateway harus perangkat berbasis Espressif (mampu ESP-Now), server utama dapat berupa perangkat apa pun yang mampu menjalankan halaman web.

Beberapa stasiun sensor akan kehabisan baterai (atau baterai bertenaga surya) dan yang lainnya hanya memiliki daya listrik. Namun, saya ingin semua menggunakan daya sesedikit mungkin dan di situlah fitur "tidur nyenyak" yang tersedia untuk perangkat ESP8266 dan ESP32 sangat membantu. Stasiun sensor secara berkala akan bangun, melakukan pengukuran dan mengirimkannya ke perangkat gateway dan kembali tidur untuk beberapa periode waktu yang telah diprogram sebelumnya. Periode bangun mereka hanya sekitar 300ms setiap 5 menit (dalam kasus saya) mengurangi konsumsi daya mereka secara signifikan.

Langkah 2: Sensor

Sensor
Sensor
Sensor
Sensor

Ada berbagai sensor yang dapat dipilih untuk mengukur parameter lingkungan. Saya memutuskan untuk tetap menggunakan sensor berkemampuan komunikasi I2C saja, karena memungkinkan pengukuran cepat dan akan bekerja pada perangkat apa pun yang saya miliki. Daripada bekerja dengan IC secara langsung, saya mencari modul siap pakai yang memiliki pin-out yang sama untuk menyederhanakan desain saya. Saya mulai dengan hanya ingin mengukur suhu dan kelembaban dan karena itu memilih modul berbasis SI7021. Kemudian saya menginginkan sensor yang dapat mengukur tekanan juga dan memutuskan untuk mencoba modul sensor berbasis BME280. Untuk beberapa lokasi saya bahkan ingin memantau tingkat cahaya dan modul BH1750 sangat ideal untuk ini sebagai modul sensor terpisah. Saya membeli modul sensor saya dari ebay dan ini adalah modul yang saya terima:

  • BME280 (GY-BMP/E280), mengukur suhu, kelembaban dan tekanan
  • SI7021 (GY-21), mengukur suhu dan kelembaban
  • BH1750 (GY-302), mengukur cahaya

Ada dua gaya modul PCB GY-BMP/E280 yang dapat ditemukan. Keduanya berbagi pin out yang sama untuk pin 1 hingga 4. Satu modul memiliki dua pin tambahan, CSB dan SDO. Kedua pin tersebut telah terhubung sebelumnya pada modul versi 4-pin. Level pin SDO menentukan alamat I2C (Ground = default 0x76, VCC = 0x77). Pin CSB harus terhubung ke VCC untuk memilih antarmuka I2C. Saya lebih suka modul 4 pin, karena siap digunakan apa adanya untuk tujuan saya.

Secara umum, modul ini sangat nyaman digunakan karena sudah memiliki resistor pull-up yang dipasang untuk jalur komunikasi dan semuanya berjalan pada 3.3V sehingga kompatibel dengan papan berbasis ESP8266. Perhatikan, bahwa pin pada IC sensor ini umumnya tidak toleran terhadap 5V, jadi menghubungkannya secara langsung dengan sesuatu seperti Arduino Uno dapat merusaknya secara permanen.

Langkah 3: Stasiun Sensor

Stasiun Sensor
Stasiun Sensor

Seperti disebutkan, stasiun sensor semuanya akan menjadi perangkat Espressif yang menggunakan protokol komunikasi ESP-Now. Dari proyek dan eksperimen sebelumnya, saya memiliki beberapa perangkat berbeda yang tersedia bagi saya untuk melakukan pengujian awal dan menggabungkannya ke dalam desain akhir. Saya memiliki perangkat berikut di tangan:

  • dua modul ESP-01
  • dua papan pengembangan mini Wemos D1
  • satu papan pengembangan Lolin ESP8266
  • satu papan kit WIFI serial ESP12E
  • satu papan GOOUUU ESP32 (papan pengembangan 38 pin)

Saya juga memiliki papan pengembangan Wemos D1 R2, tetapi ada masalah dengannya yang tidak memungkinkannya untuk bangun dari tidur nyenyak dan sebagai perangkat gerbang, itu akan macet dan tidak dimulai ulang dengan benar. Saya memperbaikinya nanti dan menjadi bagian dari proyek pembuka Pintu Garasi. Agar "tidur nyenyak" berfungsi, pin RST ESP8266 harus terhubung ke pin GPIO16, sehingga pengatur waktu tidur dapat membangunkan perangkat. Idealnya koneksi ini harus dibuat dengan dioda Schottky (katoda ke GPIO16) sehingga reset manual melalui koneksi USB-TLL selama pemrograman masih berfungsi. Namun, resistor bernilai rendah (300-ish Ohm) atau bahkan koneksi kabel langsung masih bisa berhasil.

Modul ESP-01 tidak memungkinkan akses mudah ke pin GPIO16 dan harus disolder langsung ke IC. Ini bukan tugas yang sederhana dan saya tidak akan merekomendasikan ini untuk semua orang. Papan kit WIFI serial ESP12E adalah sedikit item baru dan memerlukan beberapa perubahan agar berguna untuk tujuan saya. Papan yang paling mudah digunakan adalah papan jenis mini Wemos D1 dan papan Lolin. Perangkat ESP32 tidak memerlukan modifikasi apa pun agar deepsleep berfungsi. Andreas Spiess memiliki Instructable yang bagus tentang ini.

Langkah 4: Stasiun Sensor ESP-01

Stasiun Sensor ESP-01
Stasiun Sensor ESP-01
Stasiun Sensor ESP-01
Stasiun Sensor ESP-01
Stasiun Sensor ESP-01
Stasiun Sensor ESP-01

Di semua stasiun sensor, modul sensor dipasang secara vertikal untuk mengurangi jumlah debu yang dapat terkumpul di atasnya. Tidak semua ada di dalam selungkup dan saya mungkin tidak memasangnya di dalam selungkup. Alasan untuk ini adalah bahwa perangkat dapat memanas dan mempengaruhi pembacaan suhu dan kelembaban di tempat yang tidak cukup berventilasi.

Papan ESP-01 sangat kompak dan memiliki beberapa pin IO digital untuk digunakan, tetapi cukup untuk antarmuka I2C. Namun papan membutuhkan modifikasi yang rumit untuk memungkinkan "tidur nyenyak" bekerja. Dalam foto yang ditunjukkan, sebuah kawat disolder dari pin sudut (GPIO16) ke pin RST di header. Kawat yang saya gunakan adalah kawat "perbaikan" berdiameter 0,1 mm. Lapisan insulasi meleleh saat dipanaskan, sehingga dapat disolder untuk memperbaiki jejak, dll di PCB dan masih tidak perlu khawatir akan membuat korsleting di mana kawat bersentuhan dengan komponen lain. Ukurannya membuatnya sulit untuk dikerjakan dan saya menyolder kawat ini di bawah mikroskop (gaya penghobi/pengumpul perangko). Perlu diingat bahwa header di sisi kanan memiliki jarak pin 0,1" (2,54mm). Memasang dioda Schottky di sini tidak akan mudah sama sekali, jadi saya memutuskan untuk mencoba kabel saja dan kedua unit telah berjalan lebih dari sebulan tanpa masalah.

Modul dipasang pada dua papan prototipe yang saya buat. Satu (#1) adalah papan pemrogram yang juga memungkinkan modul I2C dipasang dan diuji, sedangkan yang lain (#2) adalah papan pengembangan/pengujian untuk perangkat I2C. Untuk papan pertama, saya menyolder konektor USB lama dan PCB kecil untuk memberi daya pada unit langsung dari adaptor dinding USB. Unit lainnya memiliki jack DC biasa yang dimodifikasi agar sesuai dengan header terminal sekrup dan juga diberi daya melalui adaptor dinding.

Skema menunjukkan bagaimana mereka terhubung dan bagaimana programmer bekerja. Saya tidak memiliki modul ESP-01 lainnya, jadi saya tidak memiliki kebutuhan mendesak untuk programmer. Di masa depan saya kemungkinan akan membuat PCB untuk mereka. Kedua papan ini memiliki modul sensor SI7021 yang terpasang karena saya tidak begitu tertarik dengan pengukuran tekanan di lokasi tersebut.

Langkah 5: Stasiun Sensor Kit WIFI Serial ESP 12E

Stasiun Sensor Kit WIFI Serial ESP 12E
Stasiun Sensor Kit WIFI Serial ESP 12E
Stasiun Sensor Kit WIFI Serial ESP 12E
Stasiun Sensor Kit WIFI Serial ESP 12E

Papan Kit WIFI Serial ESP12E tidak dimaksudkan untuk pengembangan melainkan untuk menampilkan apa yang dapat dilakukan dengan perangkat ini. Saya membelinya sejak lama untuk belajar sedikit tentang pemrograman ESP8266 dan akhirnya memutuskan untuk menggunakannya lagi. Saya menghapus semua LED yang dipasang untuk demonstrasi dan menambahkan header pemrograman USB serta header I2C yang cocok untuk modul yang saya gunakan. Itu memiliki resistor foto CdS yang terhubung ke pin input analognya dan saya memutuskan untuk meninggalkannya di sana. Unit khusus ini akan memantau bengkel garasi saya dan sensor foto yang dimilikinya cukup untuk memberi tahu saya jika lampu tidak sengaja dibiarkan menyala. Untuk pengukuran cahaya saya menormalkan pembacaan untuk memberi saya output persen dan apa pun di atas "5" di malam hari berarti lampu dibiarkan menyala atau pintu rumah tidak ditutup dengan benar. Pin RST dan GPIO16 diberi label dengan jelas pada PCB dan dioda Schottky yang menghubungkannya dipasang di bagian bawah PCB. Ini didukung melalui papan serial USB yang langsung dicolokkan ke pengisi daya dinding USB. Saya memiliki tambahan papan serial USB ini dan tidak membutuhkan yang ini sekarang.

Saya tidak membuat skema untuk papan ini dan umumnya tidak merekomendasikan membeli satu untuk digunakan untuk tujuan ini. Papan Wemos D1 Mini jauh lebih cocok dan akan dibahas selanjutnya. Meskipun, jika Anda memiliki salah satu dari ini dan memerlukan beberapa saran, saya akan dengan senang hati membantu.

Langkah 6: Stasiun Sensor Mini D1

Stasiun Sensor Mini D1
Stasiun Sensor Mini D1
Stasiun Sensor Mini D1
Stasiun Sensor Mini D1
Stasiun Sensor Mini D1
Stasiun Sensor Mini D1

Papan pengembangan ESP8266 tipe Wemos D1 Mini adalah yang saya sukai dan jika saya harus melakukannya lagi, saya hanya akan menggunakan ini. Mereka memiliki sejumlah besar pin IO yang dapat diakses, dapat langsung diprogram melalui Arduino IDE dan masih cukup ringkas. Pin D0 adalah GPIO16 pada papan ini dan menghubungkan dioda Schottky agak mudah dilakukan. Skema menunjukkan bagaimana saya memasang papan ini dan keduanya menggunakan modul sensor BME2808.

Salah satu dari dua papan digunakan untuk memantau cuaca luar dan beroperasi dari baterai tenaga surya. Panel surya 165mm x 135mm (6V, 3,5W) terhubung ke modul pengisian baterai Li-ion TP4056 (lihat Diagram Pengaturan Stasiun Sensor Baterai Tenaga Surya). Modul pengisian khusus ini (03962A) memiliki sirkuit perlindungan baterai yang diperlukan jika baterai (paket) tidak mengandungnya. Baterai Li-ion didaur ulang dari paket baterai laptop lama dan masih dapat menampung cukup daya untuk menjalankan papan D1 Mini, terutama dengan mengaktifkan mode tidur nyenyak. Papan ditempatkan di selungkup plastik agar agak aman dari elemen. Namun, agar bagian dalam dapat terkena suhu dan kelembaban luar, dua lubang berdiameter 25mm dibor pada sisi yang berlawanan dan ditutup (dari dalam) dengan kain lanskap hitam. Kain dirancang untuk memungkinkan kelembaban menembus dan karenanya kelembaban dapat diukur. Di salah satu ujung kandang, sebuah lubang kecil dibor dan sebuah jendela plastik bening dipasang. Di sinilah modul sensor cahaya BH1750 ditempatkan. Seluruh unit ditempatkan di luar ruangan di tempat teduh (bukan matahari langsung) dengan sensor cahaya mengarah ke tempat terbuka. Telah berjalan dari baterai bertenaga surya selama hampir 4 minggu dalam cuaca musim dingin yang hujan/berawan di sini.

Langkah 7: Gerbang dan Server Web

Gerbang dan Server Web
Gerbang dan Server Web
Gerbang dan Server Web
Gerbang dan Server Web
Gerbang dan Server Web
Gerbang dan Server Web

Papan Lolin NodeMCU V3 (ESP8266) digunakan untuk perangkat ESP-Now Gateway dan ESP32 (papan GOOUUU) digunakan untuk server Web. Hampir semua papan ESP8266 atau bahkan ESP32 dapat berfungsi sebagai perangkat gateway, ini hanyalah papan yang saya "sisakan" setelah saya menggunakan semua papan lain yang saya miliki.

Saya menggunakan papan ESP32 karena saya membutuhkan papan dengan daya komputasi yang sedikit lebih besar untuk mengumpulkan data, menyortirnya, menyimpannya ke penyimpanan dan menjalankan server web. Di masa depan mungkin juga memiliki sensor sendiri dan tampilan lokal (OLED). Untuk penyimpanan, kartu SD digunakan dengan adaptor khusus. Saya menggunakan adaptor kartu microSD ke SD umum dan menyolder header 7 pin male (0,1 pitch) ke kontak berlapis. Saya mengikuti saran dari GitHub ini untuk membuat koneksi.

Pengaturan prototyping (dengan kabel Dupont) tidak termasuk modul sensor, tetapi PCB akhir yang saya rancang memungkinkan untuk satu serta layar OLED kecil. Detail tentang bagaimana saya mendesain PCB itu adalah bagian dari Instructable yang berbeda.

Langkah 8: Perangkat Lunak

Perangkat lunak
Perangkat lunak

Perangkat ESP8266 (ESP-SEKARANG)

Perangkat lunak untuk semua perangkat ditulis menggunakan Arduino IDE (v1.87). Setiap stasiun sensor pada dasarnya menjalankan kode yang identik. Mereka hanya berbeda dengan pin mana yang digunakan untuk komunikasi I2C dan modul sensor mana yang terhubung. Yang paling penting mereka mengirim paket data pengukuran yang identik ke stasiun ESP-Now Gateway, terlepas dari apakah mereka memiliki sensor yang sama. Artinya, beberapa stasiun sensor akan mengisi nilai dummy untuk pengukuran tekanan dan tingkat cahaya jika mereka tidak memiliki sensor untuk memberikan nilai nyata. Kode untuk setiap stasiun dan gateway diadaptasi dari contoh Anthony Elder di GitHub ini.

Kode perangkat gateway menggunakan SoftwareSerial untuk berkomunikasi dengan server web, karena ESP8266 hanya memiliki satu UART perangkat keras yang berfungsi penuh. Berjalan pada baud rate maksimum 9600 tampaknya cukup andal dan lebih dari cukup untuk mengirim paket data yang relatif kecil ini. Perangkat gateway juga diprogram dengan alamat MAC pribadi. Alasannya adalah jika perlu diganti, maka stasiun sensor tidak semua harus diprogram ulang dengan alamat MAC penerima yang baru.

ESP32 (Server Web)

Setiap stasiun sensor mengirimkan paket datanya ke perangkat gateway yang meneruskannya ke server web. Bersamaan dengan paket data, alamat MAC stasiun sensor juga dikirim untuk mengidentifikasi setiap stasiun. Server web memiliki tabel "pencarian" untuk menentukan lokasi setiap sensor dan mengurutkan data yang sesuai. Interval waktu antara pengukuran diatur ke 5 menit ditambah faktor acak untuk menghindari sensor "bertabrakan" satu sama lain saat mengirim ke perangkat gate way.

Router WIFI rumah diatur untuk membagikan alamat IP tetap ke server web saat terhubung ke WIFI. Untuk saya itu 192.168.1.111. Mengetik alamat itu di browser apa pun akan terhubung ke server web stasiun cuaca selama pengguna berada dalam jangkauan WIFI (dan terhubung ke) jaringan rumah. Saat pengguna terhubung ke halaman web, server web merespons dengan tabel pengukuran, dan menyertakan waktu pengukuran terakhir setiap sensor. Dengan cara ini jika stasiun sensor menjadi tidak responsif, orang dapat melihatnya dari tabel jika pembacaan lebih dari 5-6 menit.

Data disimpan dalam file teks individual pada kartu SD dan juga dapat diunduh dari halaman web. Itu dapat diimpor ke Excel atau aplikasi lain untuk merencanakan data

Aplikasi Android

Untuk memudahkan melihat informasi cuaca lokal di smartphone, saya membuat Aplikasi yang relatif Android menggunakan Android Studio. Ini tersedia di halaman GitHub saya di sini. Ini menggunakan kelas tampilan web untuk memuat halaman web dari server dan dengan demikian fungsionalitas terbatas. Itu tidak mampu mengunduh file data dan saya tidak membutuhkannya di ponsel saya.

Langkah 9: Hasil

Hasil
Hasil

Akhirnya, inilah beberapa hasil dari stasiun cuaca rumah saya. Data diunduh di laptop dan diplot di Matlab. Saya melampirkan skrip Matlab saya dan Anda juga dapat menjalankannya di GNU Oktaf. Sensor luar ruangan telah berjalan dengan baterai yang diisi tenaga surya selama hampir 4 minggu dan kami jarang mendapatkan sinar matahari saat ini sepanjang tahun. Sejauh ini semuanya bekerja dengan baik dan semua orang di keluarga dapat melihat sendiri cuaca daripada bertanya kepada saya sekarang!