ESP-Now uyidagi ob-havo stantsiyasi: 9 qadam (rasmlar bilan)
ESP-Now uyidagi ob-havo stantsiyasi: 9 qadam (rasmlar bilan)
Anonim
ESP-Now uy ob-havo stantsiyasi
ESP-Now uy ob-havo stantsiyasi

Men uzoq vaqt uy meteorologik stantsiyasiga ega bo'lishni xohlardim va har bir oila harorati va namligini osongina tekshirishi mumkin edi. Tashqi sharoitlarni kuzatishdan tashqari, men uyning alohida xonalarini va garaj ustaxonasini kuzatishni xohlardim. Bu bizga uyni shamollatish yoki namlagichni ishga tushirish uchun qulay vaqt bo'lganida xabar beradi (qishda bu erda yomg'ir ko'p yog'adi). Men yaratgan narsa-bu ESP-Now asosidagi sensorli tizim bo'lib, u har kim o'z kompyuteridan yoki telefonidan tekshirishi mumkin bo'lgan mahalliy veb-serverga hisobot beradi. Telefon uchun men buni osonlashtiradigan oddiy Android ilovasi sifatida yozdim.

1 -qadam: dizayn tafsilotlari

Dizayn tafsilotlari
Dizayn tafsilotlari

Men har xil sensorli stantsiyalarga ega bo'lishni xohlardim, ular har xil joylarga joylashtirilib, ular ma'lumotni saqlaydigan bitta asosiy stantsiyaga (yoki uyaga) hisobot berilishi kerak edi. Har xil g'oyalarni sinab ko'rganimdan so'ng, men Espressif-ning ESP-Now protokolidan foydalanishga qaror qildim, chunki bu to'g'ridan-to'g'ri qurilmalar o'rtasida tezkor aloqa o'rnatishga imkon berdi. Siz ESP-Now haqida bir oz o'qishingiz mumkin va bu GitHub repo mening ilhomimning ajoyib qismi edi.

Birinchi rasmda tizim sxemasi ko'rsatilgan. Har bir sensor o'z o'lchovlari haqida ma'lumotlarni qattiq serverli ketma -ket ulanish orqali asosiy serverga uzatuvchi shlyuz qurilmasiga xabar beradi. Buning sababi shundaki, ESP-Now protokoli WIFI ulanishi bilan bir vaqtda faol bo'la olmaydi. Foydalanuvchi veb-sahifaga kirishi uchun WIFI har doim yoniq bo'lishi kerak edi, bu esa o'sha qurilmada ESP-Now aloqasidan foydalanishni imkonsiz qiladi. Shlyuz qurilmasi Espressif-ga asoslangan (ESP-Now-ga ega) qurilma bo'lishi kerak bo'lsa-da, asosiy server veb-sahifani ishga tushiradigan har qanday qurilma bo'lishi mumkin.

Ba'zi sensorli stantsiyalar batareyalarni (yoki quyosh batareyali batareyalarni) ishdan chiqaradi, boshqalari esa tarmoqdan quvvat oladi. Ammo men hammaga iloji boricha kam quvvat sarflashni xohlardim, bu erda ESP8266 va ESP32 qurilmalarida mavjud "chuqur uyqu" xususiyati juda foydali. Sensor stantsiyalari vaqti -vaqti bilan uyg'onib, o'lchovlarni olib, shlyuz qurilmasiga yuboradi va oldindan dasturlashtirilgan vaqt davomida uyquga qaytadi. Ularning har 5 daqiqada atigi 300ms uyg'onish davri (menimcha) ularning quvvat sarfini sezilarli darajada kamaytiradi.

2 -qadam: Sensorlar

Sensorlar
Sensorlar
Sensorlar
Sensorlar

Atrof -muhit parametrlarini o'lchash uchun turli xil sensorlar mavjud. Men faqat I2C aloqa qobiliyatiga ega sensorlar bilan ishlashga qaror qildim, chunki bu tezkor o'lchovlarga imkon berdi va menda mavjud bo'lgan har qanday qurilmada ishlaydi. To'g'ridan-to'g'ri IC bilan ishlashning o'rniga, men o'z dizaynlarimni soddalashtirish uchun bir xil pinli modullardan foydalanishga tayyorligini izladim. Men faqat harorat va namlikni o'lchashni xohladim va shuning uchun SI7021 asosidagi modulni tanladim. Keyinchalik men bosimni o'lchaydigan sensorni xohladim va BME280 sensorli modullarini sinab ko'rishga qaror qildim. Ba'zi joylarda men hatto yorug'lik darajasini kuzatishni xohlardim va BH1750 moduli alohida sensorli modul sifatida ideal edi. Men sensorlar modullarini ebaydan sotib oldim va bu men olgan modullar:

  • BME280 (GY-BMP/E280), harorat, namlik va bosimni o'lchaydi
  • SI7021 (GY-21), harorat va namlikni o'lchaydi
  • BH1750 (GY-302), yorug'likni o'lchaydi

GY-BMP/E280 tenglikni modullarining ikkita uslubi mavjud. Ikkalasi ham 1 - 4 -pinlar uchun bitta pinni ulashadi. Bir modulda ikkita qo'shimcha pin bor: CSB va SDO. Bu ikkita pin modulning 4-pinli versiyasiga oldindan ulangan. SDO pinining darajasi I2C manzilini aniqlaydi (Ground = standart 0x76, VCC = 0x77). I2C interfeysini tanlash uchun CSB pin VCC ga ulangan bo'lishi kerak. Men 4 pinli modulni afzal ko'raman, chunki u mening maqsadimga muvofiq foydalanishga tayyor.

Umuman olganda, ushbu modullardan foydalanish juda qulay, chunki ular allaqachon aloqa liniyalari uchun tortishish rezistorlari o'rnatilgan va ularning hammasi 3.3V da ishlaydi, shuning uchun ESP8266 asosidagi platalarga mos keladi. E'tibor bering, bu sensorlar IC -lari pinlari odatda 5 V ga bardoshli emas, shuning uchun ularni Arduino Uno kabi narsalar bilan to'g'ridan -to'g'ri bog'lash ularni doimiy ravishda buzishi mumkin.

3 -qadam: Sensorli stantsiyalar

Sensorli stantsiyalar
Sensorli stantsiyalar

Yuqorida aytib o'tilganidek, sensorli stantsiyalarning barchasi ESP-Now aloqa protokolidan foydalanadigan Espressif qurilmalari bo'ladi. Oldingi loyihalar va tajribalardan menda dastlabki testlarni o'tkazish va ularni yakuniy dizaynga kiritish uchun bir nechta turli xil qurilmalar mavjud edi. Menda quyidagi qurilmalar bor edi:

  • ikkita ESP-01 moduli
  • ikkita Wemos D1 mini ishlab chiqish taxtasi
  • bitta Lolin ESP8266 ishlab chiqish taxtasi
  • bitta ESP12E seriyali WIFI to'plami
  • bitta GOOUUU ESP32 kartasi (38 pinli ishlab chiqarish kartasi)

Menda Wemos D1 R2 ishlab chiqish platasi ham bor edi, lekin u bilan bog'liq muammolar bor edi, ular uni qattiq uyqudan uyg'otishga imkon bermadi va eshikli qurilma sifatida u qulab tushadi va to'g'ri qayta ishga tushmaydi. Men keyinchalik uni ta'mirladim va u Garaj eshiklarini ochish loyihasining bir qismiga aylandi. "Chuqur uyqu" ishlashi uchun ESP8266 ning RST pinini GPIO16 piniga ulash lozim, shuning uchun uyqu taymeri qurilmani uyg'otishi mumkin. Ideal holda, bu ulanish Schottky diodi bilan amalga oshirilishi kerak (katoddan GPIO16gacha), shuning uchun dasturlash paytida USB-TLL ulanishi orqali qo'lda qayta o'rnatish hali ham ishlaydi. Biroq, past qiymatli (300 ishchi Ohm) qarshilik yoki hatto to'g'ridan-to'g'ri simli ulanish muvaffaqiyatli bo'lishi mumkin.

ESP-01 modullari GPIO16 piniga oson kirishga imkon bermaydi va uni to'g'ridan-to'g'ri ICga lehimlash kerak. Bu oddiy ish emas va men buni hamma uchun tavsiya qilmayman. ESP12E ketma -ket WIFI to'plami biroz yangilik edi va mening maqsadim uchun foydali bo'lishi uchun bir nechta o'zgartirishlarni talab qildi. Wemos D1 mini tipli taxtalar va Lolin taxtalaridan foydalanish osonroq edi. ESP32 qurilmalari chuqur uyqu ishlashi uchun hech qanday modifikatsiyani talab qilmaydi. Andreas Spissda bu borada yaxshi ko'rsatma bor.

4-qadam: ESP-01 sensorlar stantsiyasi

ESP-01 sensorlar stantsiyasi
ESP-01 sensorlar stantsiyasi
ESP-01 sensorlar stantsiyasi
ESP-01 sensorlar stantsiyasi
ESP-01 sensorlar stantsiyasi
ESP-01 sensorlar stantsiyasi

Barcha sensorlar stantsiyalarida sensor modullari to'planishi mumkin bo'lgan chang miqdorini kamaytirish uchun vertikal ravishda o'rnatiladi. Hamma ham korpusda emas va men ularni korpusga o'rnatmasligim mumkin. Buning sababi shundaki, asboblar etarli darajada ventilyatsiya qilinmagan bo'lsa, isitiladi va harorat va namlik ko'rsatkichlariga ta'sir qilishi mumkin.

ESP-01 platalari juda ixcham va ular bilan ishlash uchun raqamli IO pinlari kam, lekin bu I2C interfeysi uchun etarli. Biroq, taxtalar "chuqur uyqu" ning ishlashiga ruxsat berish uchun murakkab modifikatsiyani talab qiladi. Ko'rsatilgan fotosuratda, burchak pinidan (GPIO16) sarlavhadagi RST pinigacha sim lehimlangan. Men ishlatgan sim 0,1 mm diametrli izolyatsiyalangan "ta'mirlash" simidir. Izolyatsiya qoplamasi qizdirilganda eriydi, shuning uchun uni PCB izlari va boshqalarni tuzatish uchun lehimlash mumkin, lekin sim boshqa komponentalarga tegib turadigan qisqa kiyimlar yaratish haqida qayg'urmang. Uning o'lchami ishlashni qiyinlashtiradi va men bu simni (havaskor/shtamp yig'uvchilar uslubidagi) mikroskop ostida lehimladim. Shuni yodda tutingki, o'ng tarafdagi sarlavhada 0,1 dyuymli (2,54 mm) pim oralig'i bor. Bu erga Schottky diodini o'rnatish oson bo'lmaydi, shuning uchun men faqat simni sinab ko'rishga qaror qildim va ikkala birlik ham ishlamay qoldi. hech qanday muammosiz bir oy.

Modullar men yaratgan ikkita prototip taxtasiga o'rnatildi. Biri (#1) - bu I2C modullarini o'rnatish va sinovdan o'tkazishga imkon beradigan dasturchi taxtasi, ikkinchisi (#2) I2C qurilmalari uchun ishlab chiqish/sinov paneli. Birinchi taxta uchun men eski USB erkak ulagichi va kichik PCBni lehimlab, qurilmani to'g'ridan -to'g'ri USB devor adapteridan quvvatlantirdim. Boshqa qurilmaning vintli terminali sarlavhasiga o'rnatilishi uchun o'zgartirilgan oddiy shahar uyasi bor va u devor adapteri orqali ham quvvatlanadi.

Sxemada ular qanday bog'langanligi va dasturchi qanday ishlashi ko'rsatilgan. Menda boshqa ESP-01 modullari yo'q, shuning uchun menda dasturchi kerak emas. Kelgusida men ular uchun tenglikni ishlab chiqaraman. Ikkala taxtada ham SI7021 sensori moduli o'rnatilgan, chunki men bu joylardagi bosim o'lchovlariga unchalik qiziqmaganman.

5 -qadam: ESP 12E seriyali WIFI to'plam sensori stantsiyasi

ESP 12E seriyali WIFI to'plam sensorlar stantsiyasi
ESP 12E seriyali WIFI to'plam sensorlar stantsiyasi
ESP 12E seriyali WIFI to'plam sensorlar stantsiyasi
ESP 12E seriyali WIFI to'plam sensorlar stantsiyasi

ESP12E ketma -ket WIFI to'plami bu qurilma bilan nima qilish mumkinligini ko'rsatish uchun ishlab chiqishga mo'ljallanmagan. Men uni uzoq vaqtdan beri ESP8266 dasturlashi haqida bilish uchun sotib olganman va nihoyat yangi foydalanishga qaror qildim. Men namoyish qilish uchun o'rnatilgan barcha LEDlarni olib tashladim va USB dasturlash sarlavhasini, shuningdek men foydalanadigan modullarga mos keladigan I2C sarlavhasini qo'shdim. Uning analog kirish piniga ulangan CdS foto rezistori bor edi va men uni o'sha erda qoldirishga qaror qildim. Bu maxsus bo'linma mening garaj ustaxonamni kuzatib turmoqchi edi va uning foto-sensori, agar chiroqlar tasodifan yoqilgan bo'lsa, menga xabar berish uchun etarli edi. Yorug'likni o'lchash uchun men o'qishni normallashtirdim, bu menga foizli natijani beradi va tunda "5" dan yuqori bo'lgan narsa, chiroqlar yoqilgan yoki uyning eshigi to'g'ri yopilmagan. RST va GPIO16 pinlari PCBda aniq ko'rsatilgan va ularni birlashtiruvchi Schottky diodi PCB tagiga o'rnatilgan. U to'g'ridan-to'g'ri USB devor zaryadlovchisiga ulangan USB-seriyali karta orqali quvvatlanadi. Menda USB-ketma-ket taxtalarning qo'shimcha elementlari bor va hozirda ularga kerak emas.

Men bu taxtaning sxemasini tuzmaganman va umuman shu maqsadda foydalanish uchun sotib olishni tavsiya etmayman. Wemos D1 Mini platalari ancha mos keladi va keyingi muhokama qilinadi. Agar sizda ulardan biri bo'lsa va sizga maslahat kerak bo'lsa, men yordam berishdan xursand bo'laman.

6 -qadam: D1 mini sensorli stantsiyalar

D1 mini sensorli stantsiyalar
D1 mini sensorli stantsiyalar
D1 mini sensorli stantsiyalar
D1 mini sensorli stantsiyalar
D1 mini sensorli stantsiyalar
D1 mini sensorli stantsiyalar

Wemos D1 Mini tipidagi ESP8266 ishlab chiqish platalari men uchun afzalroqdir va agar men buni bajarishga majbur bo'lsam, men ularni ishlatardim. Ularda ko'p sonli IO pinlari bor, ularni Arduino IDE orqali to'g'ridan -to'g'ri dasturlash mumkin va ular hali ham ixchamdir. D0 pin bu taxtalarda GPIO16 bo'lib, Schottky diodini ulash juda oson. Sxemada men qanday qilib bu taxtalarni sim bilan bog'laganimni ko'rsataman va ikkalasi ham BME2808 sensorli modulidan foydalanadilar.

Ikkita taxtadan biri tashqi ob -havoni kuzatish uchun ishlatiladi va quyosh batareyasidan ishlaydi. 165 mm x 135 mm (6V, 3,5 Vt) quyosh paneli TP4056 Li-ion batareyali zaryadlovchi modulga ulangan (Quyosh energiyasi bilan ishlaydigan batareya sensori stantsiyasini o'rnatish sxemasiga qarang). Bu maxsus zaryadlash moduli (03962A) batareyani himoya qilish sxemasiga ega, agar batareyada (to'plamda) bo'lmasa. Li-ion batareyasi eski noutbuk akkumulyatoridan qayta ishlangan va u hali ham D1 Mini kartasini ishlatish uchun etarli quvvatni ushlab turishi mumkin, ayniqsa chuqur uyqu yoqilganda. Kengash elementlardan bir oz xavfsiz bo'lishi uchun plastmassa panjara ichiga joylashtirilgan. Biroq, ichki makon tashqi harorat va namlik ta'sirida bo'lishi uchun qarama -qarshi tomondan diametri 25 mm bo'lgan ikkita teshik ochilgan va qora peyzaj mato bilan qoplangan (ichkaridan). Mato namlik o'tishi uchun mo'ljallangan va shuning uchun namlikni o'lchash mumkin. Korpusning bir uchida kichik teshik ochilgan va shaffof plastik deraza o'rnatilgan. Bu erda BH1750 yorug'lik sensori moduli joylashtirilgan. Butun qurilma ochiq havoda soyada (to'g'ridan -to'g'ri quyosh nuri bo'lmagan) joylashtirilgan, yorug'lik sensori ochiq holda. Bu qishki yomg'irli/bulutli ob -havo sharoitida deyarli 4 hafta davomida quyosh batareyasi bilan ishlaydi.

7 -qadam: Gateway va veb -server

Gateway va veb -server
Gateway va veb -server
Gateway va veb -server
Gateway va veb -server
Gateway va veb -server
Gateway va veb -server

ESP-Now Gateway qurilmasi uchun Lolin NodeMCU V3 (ESP8266) taxtasi ishlatilgan va veb-server uchun ESP32 (GOOUUU platasi) ishlatilgan. Deyarli har qanday ESP8266 yoki hatto ESP32 taxtasi shlyuz qurilmasi bo'lib xizmat qilishi mumkin edi, bu men qolgan barcha taxtalarni ishlatganimdan so'ng, men qoldirgan "taxta" edi.

Men ESP32 taxtasidan foydalandim, chunki menga ma'lumot yig'ish, saralash, saqlashga saqlash va veb -serverni ishga tushirish uchun biroz ko'proq hisoblash quvvatiga ega karta kerak. Kelajakda u o'z sensoriga va mahalliy (OLED) displeyga ega bo'lishi mumkin. Saqlash uchun moslashtirilgan adapter bilan SD -karta ishlatilgan. Men oddiy microSD -dan SD -karta adapteridan foydalandim va 7 pinli (0,1 dyuymli) balandlikdagi sarlavhani plastinka kontaktlariga lehimladim. Ulanish uchun men bu GitHub tavsiyasiga amal qildim.

Prototiplarni sozlash (Dupont simlari bilan) sensorli modulni o'z ichiga olmaydi, lekin men ishlab chiqqan PCB bir xil va kichik OLED -displeyga ruxsat beradi. Men PCBni qanday ishlab chiqqanim haqida tafsilotlar boshqa yo'riqnomaning bir qismi.

8 -qadam: dasturiy ta'minot

Dasturiy ta'minot
Dasturiy ta'minot

ESP8266 (ESP-NOW) qurilmalari

Barcha qurilmalar uchun dasturiy ta'minot Arduino IDE (v1.87) yordamida yozilgan. Har bir sensorli stantsiya asosan bir xil kodda ishlaydi. Ular faqat I2C aloqasi uchun qaysi pinlar ishlatilgani va qaysi sensor moduliga ulanganligi bilan farq qiladi. Eng muhimi, ular bir xil sensori bor-yo'qligidan qat'i nazar, bir xil o'lchov ma'lumot paketini ESP-Now Gateway stantsiyasiga yuboradi. Buning ma'nosi shundaki, ba'zi sensorlar stantsiyalari bosim va yorug'lik darajasini o'lchash uchun qo'pol qiymatlarni to'ldiradilar, agar ular haqiqiy qiymatlarni ta'minlaydigan sensorlar bo'lmasa. Har bir stantsiya va shlyuzning kodi Entoni Elderning ushbu GitHub misollaridan olingan.

Shlyuz qurilmasining kodi SoftwareSerial -dan veb -server bilan bog'lanish uchun ishlatilgan, chunki ESP8266 faqat bitta to'liq ishlaydigan UART uskunasiga ega. 9600 maksimal tezlik tezligida ishlash juda ishonchli ko'rinadi va bu nisbatan kichik ma'lumotlar paketlarini yuborish uchun etarli. Shlyuz qurilmasi ham shaxsiy MAC -manzil bilan dasturlashtirilgan. Buning sababi shundaki, agar uni almashtirish kerak bo'lsa, sensorli stantsiyalarning hammasini yangi qabul qiluvchining MAC manzili bilan qayta dasturlash shart emas.

ESP32 (veb -server)

Har bir sensorli stantsiya o'z ma'lumot paketini shlyuz qurilmasiga yuboradi, uni veb -serverga uzatadi. Ma'lumotlar to'plami bilan bir qatorda, har bir stantsiyani aniqlash uchun MAC manzili sensori ham yuboriladi. Veb-serverda har bir sensorning joylashishini aniqlash uchun "qidirish" jadvali mavjud va shunga mos ravishda ma'lumotlar saralanadi. O'lchovlar orasidagi vaqt oralig'i 5 minus va tasodifiy omil sifatida o'rnatildi, bu sensorlar bir -biri bilan darvoza yo'lli qurilmaga yuborilmasligi uchun.

Uy WIFI yo'riqnoma veb -serverga WIFI -ga ulanganida aniq IP -manzil ajratish uchun o'rnatildi. Men uchun bu 192.168.1.111 edi. Bu manzilni istalgan brauzerda yozish, agar foydalanuvchi uy tarmog'ining WIFI diapazonida bo'lsa va ob -havo stantsiyasining veb -serveriga ulanadi. Foydalanuvchi veb -sahifaga ulanganida, veb -server o'lchovlar jadvaliga javob beradi va har bir sensorning oxirgi o'lchov vaqtini o'z ichiga oladi. Shunday qilib, agar sensorli stantsiya javob bermasa, uni o'qishdan 5-6 minut oldinroq bo'lsa, buni jadvaldan ko'rish mumkin.

Ma'lumotlar SD -kartadagi alohida matnli fayllarda saqlanadi va ularni veb -sahifadan ham yuklab olish mumkin. Ma'lumotni chizish uchun uni Excelga yoki boshqa har qanday dasturga import qilish mumkin

Android ilovasi

Mahalliy ob -havo ma'lumotlarini smartfonda ko'rishni osonlashtirish uchun men Android Studio yordamida nisbatan Android ilovasini yaratdim. Bu mening GitHub sahifamda mavjud. U veb -sahifani serverdan yuklash va cheklangan funksiyalar kabi veb -ko'rish sinfidan foydalanadi. U ma'lumot fayllarini yuklab ololmaydi va menga baribir telefonimdagilar kerak emas edi.

9 -qadam: Natijalar

Natijalar
Natijalar

Nihoyat, uy meteorologik stantsiyasidan ba'zi natijalar. Ma'lumotlar noutbukga yuklangan va Matlabda chizilgan. Men Matlab skriptlarini biriktirdim va siz ularni GNU Octave -da ishlatishingiz mumkin. Tashqi sensor deyarli 4 hafta davomida quyosh batareyasi bilan ishlaydi va bizda yilning shu vaqtida quyosh kamdan -kam uchraydi. Hozircha hamma narsa yaxshi ketmoqda va oiladagi har bir kishi mendan hozir so'rashdan ko'ra, ob -havoni o'zi kuzatishi mumkin!