ESP-tagad mājas laika stacija: 9 soļi (ar attēliem)
ESP-tagad mājas laika stacija: 9 soļi (ar attēliem)
Anonim
ESP-tagad mājas laika stacija
ESP-tagad mājas laika stacija

Es gribēju, lai jau ilgu laiku būtu mājas laika stacija, kuru ikviens ģimenes loceklis varētu viegli pārbaudīt attiecībā uz temperatūru un mitrumu. Papildus ārējo apstākļu uzraudzībai es vēlējos uzraudzīt arī konkrētas mājas telpas un savu garāžas darbnīcu. Tas ļautu mums zināt, kad ir pienācis laiks vēdināt māju vai palaist sausinātāju (ziemā šeit daudz līst). Es izveidoju uz ESP-Now balstītu sensoru sistēmu, kas ziņo vietējam tīmekļa serverim, kuru ikviens var pārbaudīt no sava datora vai tālruņa. Tālrunim es uzrakstīju kā vienkāršu Android lietotni, lai to padarītu vēl vieglāku.

1. darbība: noformējuma detaļas

Dizaina detaļas
Dizaina detaļas

Es gribēju, lai man būtu dažādas sensoru stacijas, kuras es varētu izvietot dažādās vietās, un likt tām ziņot vienai galvenajai stacijai (vai centrmezglam), kas saglabātu informāciju. Pēc dažādu ideju izmēģināšanas es nolēmu izmantot Espressif ESP-Now protokolu, jo tas ļāva ātri sazināties tieši starp ierīcēm. Jūs varat mazliet izlasīt par ESP-Now šeit, un šis GitHub repo bija lieliska manas iedvesmas daļa.

Pirmajā attēlā parādīts sistēmas izkārtojums. Katrs sensors ziņo savus mērījumus vārtejas ierīcei, kas pārsūta datus uz galveno serveri, izmantojot vadu sērijas savienojumu. Iemesls tam ir tas, ka ESP-Now protokols nevar būt aktīvs vienlaikus ar WIFI savienojumu. Lai lietotājs varētu piekļūt tīmekļa lapai, WIFI jābūt ieslēgtam visu laiku, un tas padara neiespējamu ESP-Now sakaru izmantošanu tajā pašā ierīcē. Lai gan vārtejas ierīcei jābūt uz Espressif balstītai ierīcei (kas spēj nodrošināt ESP-Now), galvenais serveris var būt jebkura ierīce, kas spēj palaist tīmekļa lapu.

Dažās sensoru stacijās izlādējas baterijas (vai ar saules baterijām uzlādētas baterijas), bet citās vienkārši ir elektrība. Tomēr es gribēju, lai visi patērētu pēc iespējas mazāk enerģijas, un tieši šeit ir ļoti noderīga ESP8266 un ESP32 ierīcēm pieejamā funkcija "deepsleep". Sensora stacijas periodiski pamostas, veic mērījumus un nosūta tos uz vārtejas ierīci un atgriežas miega režīmā kādu iepriekš ieprogrammētu laika periodu. Viņu pamošanās periods ir tikai aptuveni 300 ms ik pēc 5 minūtēm (manā gadījumā) ievērojami samazina enerģijas patēriņu.

2. darbība: sensori

Sensori
Sensori
Sensori
Sensori

Vides parametru mērīšanai var izvēlēties dažādus sensorus. Es nolēmu pieturēties tikai pie I2C sakariem spējīgiem sensoriem, jo tas ļāva veikt ātrus mērījumus un darbosies jebkurā manā ierīcē. Tā vietā, lai tieši strādātu ar IC, es meklēju gatavus lietot moduļus, kuriem bija vienādas tapas, lai vienkāršotu savus dizainus. Sāku tikai ar to, ka vēlos izmērīt temperatūru un mitrumu, un tāpēc izvēlējos moduli, kura pamatā ir SI7021. Vēlāk es gribēju sensoru, kas varētu izmērīt arī spiedienu, un nolēmu izmēģināt uz BME280 balstītus sensoru moduļus. Dažās vietās es pat gribēju uzraudzīt gaismas līmeni, un BH1750 modulis tam bija ideāls kā atsevišķs sensora modulis. Es nopirku savus sensoru moduļus no ebay, un es saņēmu šādus moduļus:

  • BME280 (GY-BMP/E280), mēra temperatūru, mitrumu un spiedienu
  • SI7021 (GY-21), mēra temperatūru un mitrumu
  • BH1750 (GY-302), mēra gaismu

Ir pieejami divi PCB moduļu GY-BMP/E280 stili. Abiem ir viena un tā pati tapa tapām no 1. līdz 4. Vienam modulim ir divas papildu tapas - CSB un SDO. Šīs divas tapas ir iepriekš pievienotas moduļa 4 kontaktu versijai. SDO tapas līmenis nosaka I2C adresi (zemējums = noklusējuma vērtība 0x76, VCC = 0x77). Lai izvēlētos I2C saskarni, CSB tapai jābūt savienotai ar VCC. Es dodu priekšroku 4 kontaktu modulim, jo tas ir gatavs lietošanai manam nolūkam.

Kopumā šie moduļi ir ļoti ērti lietojami, jo tiem jau ir sakaru līnijām uzstādīti uzvilkšanas rezistori, un tie visi darbojas ar 3.3 V spriegumu, tāpēc tie ir saderīgi ar ESP8266 balstītām plāksnēm. Ņemiet vērā, ka šo sensoru IC tapas parasti nav izturīgas pret 5 V, tāpēc to tieša saskarne ar kaut ko līdzīgu Arduino Uno var tos neatgriezeniski sabojāt.

3. darbība: sensoru stacijas

Sensora stacijas
Sensora stacijas

Kā jau minēts, visas sensoru stacijas būtu Espressif ierīces, izmantojot ESP-Now sakaru protokolu. No iepriekšējiem projektiem un eksperimentiem man bija pieejamas vairākas dažādas ierīces, lai veiktu sākotnējos testus un iekļautu tos galīgajā dizainā. Man pie rokas bija šādas ierīces:

  • divi ESP-01 moduļi
  • divas Wemos D1 mini izstrādes plates
  • viena Lolin ESP8266 izstrādes plāksne
  • viena ESP12E sērijas WIFI komplekta plate
  • viena GOOUUU ESP32 plate (38 kontaktu izstrādes plate)

Man bija arī Wemos D1 R2 izstrādes panelis, taču ar to bija problēmas, kas neļāva tam pamosties no dziļa miega un kā vārtu ceļu ierīce avarēja un nepareizi restartējās. Vēlāk es to saremontēju, un tas kļuva par daļu no garāžas durvju atvēršanas projekta. Lai "deepsleep" darbotos, ESP8266 RST tapai jābūt savienotai ar GPIO16 tapu, lai miega taimeris varētu pamodināt ierīci. Ideālā gadījumā šo savienojumu vajadzētu izveidot ar Schottky diodi (katods uz GPIO16), lai programmēšanas laikā manuālā atiestatīšana, izmantojot USB-TLL savienojumu, joprojām darbotos. Tomēr zemas vērtības (300 omu omu) rezistors vai pat tiešs vadu savienojums joprojām var būt veiksmīgs.

ESP-01 moduļi neļauj viegli piekļūt GPIO16 tapai, un ir jāpielodē tieši pie IC. Tas nav vienkāršs uzdevums, un es to neiesaku visiem. ESP12E sērijas WIFI komplekta dēlis bija mazliet jaunums un prasīja diezgan daudz izmaiņu, lai tas būtu noderīgs manam mērķim. Visvienkāršāk izmantotie dēļi bija Wemos D1 mini tipa dēļi un Lolin dēlis. ESP32 ierīcēm nav nepieciešamas nekādas izmaiņas, lai darbotos dziļais miegs. Andreasam Spiesam šajā jautājumā ir jauka instrukcija.

4. solis: ESP-01 sensora stacija

ESP-01 sensora stacija
ESP-01 sensora stacija
ESP-01 sensora stacija
ESP-01 sensora stacija
ESP-01 sensora stacija
ESP-01 sensora stacija

Visās sensoru stacijās sensoru moduļi ir uzstādīti vertikāli, lai samazinātu putekļu daudzumu, kas uz tiem var savākties. Ne visi ir iežogojumos, un es, iespējams, tos nemontēju. Iemesls tam ir tas, ka ierīces var sasilt un ietekmēt temperatūras un mitruma rādījumus nepietiekami vēdinot.

ESP-01 plates ir ļoti kompaktas, un tām ir maz digitālo IO tapu, ar kurām strādāt, taču ar to pietiek I2C saskarnei. Tomēr dēļiem ir nepieciešamas sarežģītas izmaiņas, lai ļautu "aizmigt" darboties. Parādītajā fotoattēlā vads tika pielodēts no stūra tapas (GPIO16) uz galvenes RST tapu. Vads, ko izmantoju, ir 0,1 mm diametra izolēts "remonta" vads. Izolācijas pārklājums sakarst, karsējot, tāpēc to var pielodēt, lai labotu pēdas utt. PCB, un joprojām nav jāuztraucas par šortu veidošanos vietās, kur stieple saskaras ar citām sastāvdaļām. Tā izmēra dēļ ir grūti strādāt, un es pielīmēju šo vadu vietā (hobija/pastmarku kolekcionāru stilā) mikroskopā. Paturiet prātā, ka galvenē labajā pusē ir 0,1 collu (2,54 mm) atstatums starp tapām. Šotka diodes uzstādīšana šeit nebūtu vienkārša, tāpēc es nolēmu vienkārši izmēģināt vadu atsevišķi, un abas vienības ir darbojušās ilgāk mēnesi bez problēmām.

Moduļi tika uzstādīti uz diviem manis izveidotiem prototipa dēļiem. Viens (#1) ir programmētāju panelis, kas arī ļauj uzstādīt un pārbaudīt I2C moduļus, bet otrs (#2) ir I2C ierīču izstrādes/pārbaudes dēlis. Pirmajai plāksnei es lodēju kopā veco USB vīriešu savienotāju un nelielu PCB, lai barotu ierīci tieši no USB sienas adaptera. Otrai ierīcei ir regulāra līdzstrāvas ligzda, kas ir modificēta tā, lai tā ietilptu skrūves spaiļu galviņā, un tā tiek darbināta arī caur sienas adapteri.

Shēma parāda, kā tie ir savienoti un kā darbojas programmētājs. Man nav citu ESP-01 moduļu, tāpēc man nav bijusi tūlītēja vajadzība pēc programmētāja. Nākotnē, visticamāk, es viņiem izveidošu PCB. Abās šajās plāksnēs ir uzstādīts SI7021 sensora modulis, jo mani neinteresēja spiediena mērījumi šajās vietās.

5. darbība: ESP 12E sērijas WIFI komplekta sensoru stacija

ESP 12E sērijas WIFI komplekta sensoru stacija
ESP 12E sērijas WIFI komplekta sensoru stacija
ESP 12E sērijas WIFI komplekta sensoru stacija
ESP 12E sērijas WIFI komplekta sensoru stacija

ESP12E sērijas WIFI komplekta dēlis nebija paredzēts attīstībai tik daudz, cik tas bija, lai parādītu, ko var darīt ar šo ierīci. Es to iegādājos jau sen, lai mazliet uzzinātu par ESP8266 programmēšanu, un beidzot nolēmu to nedaudz izmantot. Es noņemu visas gaismas diodes, kas tika instalētas demonstrācijām, un pievienoju USB programmēšanas galveni, kā arī I2C galveni, kas piemērota maniem moduļiem. Tam bija CdS foto rezistors, kas pievienots tā analogās ieejas tapai, un es nolēmu to atstāt tur. Šī konkrētā iekārta uzraudzīs manu garāžas darbnīcu, un ar to esošo foto sensoru pietika, lai paziņotu man, vai gaismas bija nejauši ieslēgtas. Gaismas mērīšanai es normalizēju rādījumus, lai iegūtu procentuālu izlaidi, un naktī, kas pārsniedz “5”, gaismas bija atstātas ieslēgtas vai mājas durvis nebija pareizi aizvērtas. RST un GPIO16 tapas ir skaidri marķētas uz PCB, un Schottky diode, kas tās savieno, tika uzstādīta PCB apakšpusē. Tas tiek darbināts, izmantojot USB sērijas plati, kas ir tieši pievienota USB sienas lādētājam. Man ir šo USB sērijas plākšņu papildierīces, un man tas nav vajadzīgs.

Es neveidoju shēmu šai plāksnei un parasti neiesaku to iegādāties šim nolūkam. Wemos D1 Mini dēļi ir daudz piemērotāki, un tie tiks apspriesti tālāk. Lai gan, ja jums ir kāds no šiem un jums ir nepieciešams padoms, es labprāt palīdzētu.

6. darbība: D1 mini sensoru stacijas

D1 mini sensoru stacijas
D1 mini sensoru stacijas
D1 mini sensoru stacijas
D1 mini sensoru stacijas
D1 mini sensoru stacijas
D1 mini sensoru stacijas

Wemos D1 Mini tipa ESP8266 izstrādes plates ir manas vēlamākās, un, ja man tas būtu jādara vairāk, es vienkārši izmantotu šīs. Tiem ir liels skaits pieejamu IO tapu, tos var tieši ieprogrammēt, izmantojot Arduino IDE, un tie joprojām ir diezgan kompakti. Šajās plāksnēs D0 tapa ir GPIO16, un Schottky diodes pievienošana ir diezgan vienkārša. Shēma parāda, kā man ir pieslēgti šie dēļi, un abi izmanto BME2808 sensora moduli.

Viens no diviem dēļiem tiek izmantots, lai uzraudzītu ārējos laika apstākļus, un darbojas no saules enerģijas akumulatora. 165 mm x 135 mm (6 V, 3,5 W) saules panelis ir pievienots TP4056 litija jonu akumulatora uzlādes modulim (skatiet saules bateriju sensora stacijas uzstādīšanas shēmu). Šim konkrētajam uzlādes modulim (03962A) ir akumulatora aizsardzības ķēde, kas nepieciešama, ja akumulators (iepakojums) to nesatur. Li-ion akumulators tika pārstrādāts no vecā klēpjdatora akumulatora, un tas joprojām var uzņemt pietiekamu uzlādi, lai palaistu D1 Mini dēli, it īpaši, ja ir iespējota dziļa miega funkcija. Dēlis tika ievietots plastmasas korpusā, lai tas būtu nedaudz pasargāts no elementiem. Tomēr, lai interjers būtu pakļauts ārējai temperatūrai un mitrumam, pretējās pusēs tika izurbti divi caurumi ar diametru 25 mm un pārklāti (no iekšpuses) ar melnu ainavu drānu. Audums ir paredzēts mitruma iekļūšanai, tāpēc mitrumu var izmērīt. Korpusa vienā galā tika urbts neliels caurums un uzstādīts caurspīdīgs plastmasas logs. Šeit tika novietots gaismas sensora BH1750 modulis. Visa iekārta ir novietota ārā ēnā (nevis tiešā saulē) ar gaismas sensoru uz āru. Mūsu lietus/mākoņainajā ziemas laikā tas gandrīz 4 nedēļas darbojas no saules baterijas.

7. darbība: vārteja un tīmekļa serveris

Vārteja un tīmekļa serveris
Vārteja un tīmekļa serveris
Vārteja un tīmekļa serveris
Vārteja un tīmekļa serveris
Vārteja un tīmekļa serveris
Vārteja un tīmekļa serveris

ESP-Now Gateway ierīcei tika izmantota Lolin NodeMCU V3 (ESP8266) plāksne, bet tīmekļa serverim-ESP32 (GOOUUU plate). Gandrīz jebkura ESP8266 vai pat ESP32 plāksne varēja kalpot kā vārtejas ierīce, tā vienkārši bija tā dēlis, kas man bija "palicis pāri" pēc visu pārējo dēļu izmantošanas.

Es izmantoju ESP32 plati, jo man ir nepieciešama tāfele ar nedaudz lielāku skaitļošanas jaudu, lai apkopotu datus, kārtotu tos, saglabātu tos krātuvē un palaistu tīmekļa serveri. Nākotnē tam var būt arī savs sensors un lokāls (OLED) displejs. Uzglabāšanai tika izmantota SD karte ar pielāgotu adapteri. Es izmantoju parasto microSD līdz SD kartes adapteri un pie lodētajiem kontaktiem pielodēju 7 kontaktu vīrieša (0,1 piķa) galveni. Lai izveidotu savienojumus, ievēroju šī GitHub ieteikumus.

Prototipēšanas iestatījumos (ar Dupont vadiem) nav iekļauts sensora modulis, bet manis izstrādātajā pabeigtajā PCB ir iespējams gan viens, gan neliels OLED displejs. Sīkāka informācija par to, kā es izveidoju šo PCB, ir daļa no cita Instructable.

8. solis: programmatūra

Programmatūra
Programmatūra

ESP8266 (ESP-NOW) ierīces

Visu ierīču programmatūra tika uzrakstīta, izmantojot Arduino IDE (v1.87). Katra sensoru stacija darbojas pēc būtības identiskā kodā. Tie atšķiras tikai ar to, kuras tapas tiek izmantotas I2C sakariem un kuram sensora modulim tie ir pievienoti. Vissvarīgākais ir tas, ka viņi nosūta identisku mērījumu datu paketi uz ESP-Now Gateway staciju neatkarīgi no tā, vai tiem ir viens un tas pats sensors. Tas nozīmē, ka dažas sensoru stacijas aizpildīs fiktīvas vērtības spiediena un gaismas līmeņa mērījumiem, ja tām nav sensoru, kas nodrošinātu reālas vērtības. Katras stacijas un vārtejas kods tika pielāgots no Entonija Eldera piemēriem šajā GitHub.

Vārtejas ierīces kods saziņai ar tīmekļa serveri izmantoja SoftwareSerial, jo ESP8266 ir tikai viena pilnībā funkcionējoša aparatūra UART. Darbojoties ar maksimālo batu pārraides ātrumu 9600, tas šķiet diezgan uzticami un ir pietiekami, lai nosūtītu šīs salīdzinoši mazās datu paketes. Vārtejas ierīce ir ieprogrammēta arī ar privātu MAC adresi. Iemesls tam ir tāds, ka, ja tā ir jāmaina, tad visas sensoru stacijas nav jāpārprogrammē ar jauno saņēmēja MAC adresi.

ESP32 (tīmekļa serveris)

Katra sensoru stacija nosūta savu datu paketi uz vārtejas ierīci, kas to pārsūta uz tīmekļa serveri. Kopā ar datu paketi tiek nosūtīta arī sensoru stacijas MAC adrese, lai identificētu katru staciju. Tīmekļa serverī ir "uzmeklēšanas" tabula, lai noteiktu katra sensora atrašanās vietu, un atbilstoši sakārto datus. Laika intervāls starp mērījumiem tika iestatīts uz 5 minūtēm plus nejaušs faktors, lai izvairītos no sensoru savstarpējas sadursmes, nosūtot tos uz vārtu ceļa ierīci.

Mājas WIFI maršrutētājs tika iestatīts tā, lai, izveidojot savienojumu ar WIFI, tīmekļa serverim piešķirtu fiksētu IP adresi. Manējam tas bija 192.168.1.111. Ievadot šo adresi jebkurā pārlūkprogrammā, tiks izveidots savienojums ar meteoroloģiskās stacijas tīmekļa serveri, kamēr lietotājs atrodas mājas tīkla WIFI diapazonā (un izveido savienojumu ar to). Kad lietotājs izveido savienojumu ar tīmekļa lapu, tīmekļa serveris atbild ar mērījumu tabulu un ietver katra sensora pēdējā mērījuma laiku. Tādā veidā, ja sensoru stacija nereaģē, to var redzēt no tabulas, ja rādījums ir vairāk nekā 5-6 minūtes vecs.

Dati tiek saglabāti atsevišķos teksta failos SD kartē, un tos var lejupielādēt arī no tīmekļa lapas. To var importēt programmā Excel vai jebkurā citā lietojumprogrammā datu uzzīmēšanai

Android lietotne

Lai viedtālrunī būtu vieglāk apskatīt vietējo laika apstākļu informāciju, es izveidoju salīdzinoši Android lietotni, izmantojot Android Studio. Tas ir pieejams manā GitHub lapā šeit. Tā izmanto Webview klasi, lai ielādētu Web lapu no servera un kā ierobežota funkcionalitāte. Tas nespēj lejupielādēt datu failus, un man vienalga nebija nepieciešami tie, kas atrodas manā tālrunī.

9. darbība. Rezultāti

Rezultāti
Rezultāti

Visbeidzot, šeit ir daži rezultāti no manas mājas laika stacijas. Dati tika lejupielādēti klēpjdatorā un uzzīmēti Matlab. Es pievienoju savus Matlab skriptus, un jūs varat tos palaist arī GNU Octave. Āra sensors darbojas ar saules bateriju uzlādētu akumulatoru gandrīz 4 nedēļas, un šajā gada laikā mums reti ir saule. Līdz šim viss darbojas labi, un visi ģimenes locekļi var paši meklēt laika apstākļus, nevis jautāt man tagad!

Ieteicams: