Përmbajtje:

Një stacion moti ESP-Tani në shtëpi: 9 hapa (me fotografi)
Një stacion moti ESP-Tani në shtëpi: 9 hapa (me fotografi)

Video: Një stacion moti ESP-Tani në shtëpi: 9 hapa (me fotografi)

Video: Një stacion moti ESP-Tani në shtëpi: 9 hapa (me fotografi)
Video: A e keni Ditur kete TRIK 😳 2024, Nëntor
Anonim
Një Stacion Moti i Shtëpisë ESP-Tani
Një Stacion Moti i Shtëpisë ESP-Tani

Doja të kisha një stacion moti në shtëpi për mjaft kohë dhe atë që të gjithë në familje mund ta kontrollonin me lehtësi për temperaturën dhe lagështinë. Përveç monitorimit të kushteve të jashtme, doja të monitoroja dhoma të veçanta në shtëpi, si dhe punëtorinë time të garazhit. Kjo do të na bënte me dije se kur është një kohë e mirë për të nxjerrë ajrin nga shtëpia ose për të përdorur dehumidifikuesin (bie shumë shi këtu gjatë dimrit). Ajo që kam krijuar është një sistem sensori i bazuar në ESP-Now që raporton në një web-server lokal që çdokush mund ta kontrollojë nga kompjuteri ose telefoni i tij. Për telefonin kam shkruar si aplikacion i thjeshtë Android për ta bërë atë edhe më të lehtë.

Hapi 1: Detaje të projektimit

Detajet e Dizajnit
Detajet e Dizajnit

Doja të kisha stacione të ndryshme sensori që mund t'i vendosja në vende të ndryshme dhe t'i kisha raportuar përsëri në një stacion kryesor (ose qendër) që do të kursente informacionin. Pasi provova ide të ndryshme, vendosa të përdor protokollin ESP-Now të Espressif, pasi ai lejoi komunikim të shpejtë drejtpërdrejt midis pajisjeve. Mund të lexoni pak për ESP-Tani këtu dhe kjo repo e GitHub ishte një pjesë e madhe e frymëzimit tim.

Fotografia e parë tregon paraqitjen e sistemit. Çdo sensor raporton matjet e tij në një pajisje portë e cila i përcjell të dhënat në serverin kryesor me anë të lidhjes serike me tela të fortë. Arsyeja për këtë është se protokolli ESP-Tani nuk mund të jetë aktiv në të njëjtën kohë me lidhjen WIFI. Që një përdorues të ketë qasje në faqen në internet, WIFI do të duhej të ishte i ndezur gjatë gjithë kohës dhe kjo e bën të pamundur përdorimin e komunikimeve ESP-Now në të njëjtën pajisje. Ndërsa pajisja portë duhet të jetë një pajisje e bazuar në Espressif (e aftë për ESP-Tani), serveri kryesor mund të jetë çdo pajisje e aftë për të drejtuar një faqe në internet.

Disa stacione sensori do të mbarojnë bateritë (ose bateri të ngarkuara me diell) dhe të tjerët thjesht do të kenë energji elektrike. Sidoqoftë, doja që të gjithë të përdorin sa më pak energji të jetë e mundur dhe kjo është ajo ku funksioni "gjumë i thellë" i disponueshëm për pajisjet ESP8266 dhe ESP32 është jashtëzakonisht i dobishëm. Stacionet e sensorit zgjoheshin periodikisht, merrnin matje dhe i dërgonin në pajisjen e portës dhe ktheheshin në gjumë për një periudhë të paracaktuar të kohës. Periudha e tyre e zgjimit prej vetëm rreth 300ms çdo 5 minuta (në rastin tim) zvogëlon ndjeshëm konsumin e energjisë së tyre.

Hapi 2: Sensorët

Sensorë
Sensorë
Sensorë
Sensorë

Ka sensorë të ndryshëm për të zgjedhur për matjen e parametrave të mjedisit. Vendosa të qëndroj vetëm me sensorë të aftë për komunikim I2C, pasi lejonte matje të shpejta dhe do të funksiononte në cilëndo nga pajisjet që kisha. Në vend që të punoja drejtpërdrejt me IC-të, kërkova module të gatshëm për përdorim që kishin të njëjtat dalje për të thjeshtuar modelet e mia. Fillova vetëm me dëshirën për të matur temperaturën dhe lagështinë dhe prandaj zgjodha një modul të bazuar në SI7021. Më vonë doja një sensor që mund të masë presionin gjithashtu dhe vendosa të provoja modulet e sensorit të bazuar në BME280. Për disa vende madje doja të monitoroja nivelet e dritës dhe moduli BH1750 ishte ideal për këtë si një modul i veçantë sensori. Bleva modulet e mia të sensorit jashtë ebay dhe këto janë modulet që mora:

  • BME280 (GY-BMP/E280), mat temperaturën, lagështinë dhe presionin
  • SI7021 (GY-21), mat temperaturën dhe lagështinë
  • BH1750 (GY-302), mat dritën

Ekzistojnë dy stile të moduleve GY-BMP/E280 PCB që duhen gjetur. Të dy ndajnë të njëjtën kunj për kunjat 1 deri në 4. Një modul ka dy kunja shtesë, CSB dhe SDO. Këto dy kunja janë të lidhur paraprakisht në versionin 4-pin të modulit. Niveli i kunjit SDO përcakton adresën I2C (Ground = parazgjedhja e 0x76, VCC = 0x77). Pina CSB duhet të lidhet me VCC për të zgjedhur ndërfaqen I2C. Unë preferoj modulin me 4 kunja, pasi është gati të përdoret ashtu siç është për qëllimin tim.

Në përgjithësi, këto module janë shumë të përshtatshëm për t'u përdorur pasi ato tashmë kanë instaluar rezistorë tërheqës për linjat e komunikimit dhe të gjithë funksionojnë në 3.3V, kështu që janë në përputhje me bordet e bazuara në ESP8266. Vini re, se kunjat në këto IC sensorë në përgjithësi nuk janë 5V tolerante, kështu që ndërlidhja e tyre drejtpërdrejt me diçka si një Arduino Uno mund t'i dëmtojë ato përgjithmonë.

Hapi 3: Stacionet e sensorit

Stacionet e sensorit
Stacionet e sensorit

Siç u përmend, stacionet sensor do të ishin të gjitha pajisje Espressif duke përdorur protokollin e komunikimit ESP-Now. Nga projektet dhe eksperimentet e mëparshme, kisha disa pajisje të ndryshme në dispozicion për të kryer testet e mia fillestare dhe për t'i përfshirë ato në modelin përfundimtar. Unë kisha pajisjet e mëposhtme në dorë:

  • dy module ESP-01
  • dy borde zhvillimi mini Wemos D1
  • një bord të zhvillimit Lolin ESP8266
  • një dërrasë kit kit serial ESP12E
  • një bord GOOUUU ESP32 (një bord zhvillimi 38 pin)

Unë gjithashtu kisha një bord zhvillimi Wemos D1 R2, por kishte probleme me të që nuk e lejuan atë të zgjohej nga gjumi i thellë dhe si një pajisje porta do të rrëzohej dhe nuk do të rifillonte siç duhet. Unë e riparova atë më vonë dhe u bë pjesë e projektit të hapjes së Garage Door. Në mënyrë që "gjumi i thellë" të funksionojë, kunja RST e ESP8266 duhet të lidhet me kunjin GPIO16, kështu që kohëmatësi i gjumit mund të zgjojë pajisjen. Në mënyrë ideale, kjo lidhje duhet të bëhet me një diodë Schottky (katodë në GPIO16) në mënyrë që rivendosja manuale përmes lidhjes USB-TLL gjatë programimit të funksionojë akoma. Sidoqoftë, një rezistencë me vlerë të ulët (300-Ohm) apo edhe lidhje direkte me tela mund të jetë ende e suksesshme.

Modulet ESP-01 nuk lejojnë qasje të lehtë në pinin GPIO16 dhe duhet të lidhet drejtpërdrejt me IC. Kjo nuk është një detyrë e thjeshtë dhe nuk do ta rekomandoja për të gjithë. Pllaka serike e serisë ESP12E WIFI ishte një artikull pak risi dhe kërkonte mjaft ndryshime që të ishte i dobishëm për qëllimin tim. Tabelat më të lehta për t'u përdorur ishin bordet e tipit mini Wemos D1 dhe bordi Lolin. Pajisjet ESP32 nuk kërkojnë ndonjë modifikim që gjumi i thellë të funksionojë. Andreas Spiess ka një Udhëzues të mirë për këtë.

Hapi 4: Stacioni i sensorit ESP-01

Stacioni i sensorit ESP-01
Stacioni i sensorit ESP-01
Stacioni i sensorit ESP-01
Stacioni i sensorit ESP-01
Stacioni i sensorit ESP-01
Stacioni i sensorit ESP-01

Në të gjitha stacionet e sensorit modulet e sensorit janë montuar vertikalisht për të zvogëluar sasinë e pluhurit që mund të grumbullohet mbi to. Jo të gjithë janë në rrethime dhe unë nuk mund t'i montoj në rrethime. Arsyeja për këtë është se pajisjet mund të ngrohen dhe të ndikojnë në leximet e temperaturës dhe lagështisë në ajrosje të pamjaftueshme.

Pllakat ESP-01 janë shumë kompakte dhe kanë pak kunja dixhitale IO për të punuar, por është e mjaftueshme për ndërfaqen I2C. Bordet megjithatë kërkojnë një modifikim të ndërlikuar për të lejuar që "gjumi i thellë" të funksionojë. Në foton e treguar, një tel ishte ngjitur nga kunja e qoshes (GPIO16) në kunjin RST në kokë. Teli që kam përdorur është teli "riparues" i izoluar me diametër 0.1 mm. Veshja e izolimit shkrihet pas ngrohjes, kështu që mund të ngjitet për të riparuar gjurmët, etj në PCB dhe akoma mos u shqetësoni për krijimin e pantallonave të shkurtra ku tela kontakton përbërësit e tjerë. Madhësia e tij e bën të vështirë të punosh me të dhe unë e bashkova këtë tel në vend nën një mikroskop (stili i koleksionistëve të hobi/stampave). Mbani në mend se titulli në anën e djathtë ka një ndarje pin 0.1 "(2.54mm). Instalimi i një diodë Schottky këtu nuk do të ishte aspak e lehtë, kështu që vendosa të provoj vetëm tela vetëm dhe të dy njësitë kanë funksionuar gjatë një muaj pa asnjë problem.

Modulet u instaluan në dy pllaka prototipi që krijova. Njëra (#1) është një bord programues që lejon gjithashtu instalimin dhe testimin e moduleve I2C, ndërsa tjetri (#2) është një bord zhvillimi/testimi për pajisjet I2C. Për tabelën e parë bashkova një lidhës të vjetër mashkull USB dhe një PCB të vogël për të fuqizuar njësinë direkt nga një përshtatës muri USB. Njësia tjetër ka një prizë të rregullt DC të modifikuar për t'u përshtatur në kokën e terminalit të vidave dhe mundësohet gjithashtu nga një përshtatës muri.

Skema tregon se si lidhen dhe si funksionon programuesi. Unë nuk kam ndonjë modul tjetër ESP-01, kështu që nuk kam pasur ndonjë nevojë të menjëhershme për programuesin. Në të ardhmen ka të ngjarë të bëj një PCB për ta. Të dyja këto borde kanë të instaluar modulin e sensorit SI7021 pasi nuk isha aq i interesuar për matjet e presionit në ato vende.

Hapi 5: ESP 12E Stacioni i sensorit të serisë WIFI Kit

ESP 12E Stacioni i sensorit të serisë WIFI Kit
ESP 12E Stacioni i sensorit të serisë WIFI Kit
ESP 12E Stacioni i sensorit të serisë WIFI Kit
ESP 12E Stacioni i sensorit të serisë WIFI Kit

Bordi ESP12E Serial WIFI Kit nuk ishte i destinuar për zhvillim aq sa ishte për të treguar atë që mund të bëhej me këtë pajisje. E bleva shumë kohë më parë për të mësuar pak rreth programimit ESP8266 dhe më në fund vendosa t'i jepja një përdorim të ri. I hoqa të gjitha LED -të që ishin instaluar për demonstrime dhe shtova një kokë programimi USB, si dhe një kokë I2C të përshtatshme për modulet që përdor. Kishte një rezistencë fotografike CdS të lidhur me pinin e tij analog të hyrjes dhe vendosa ta lë atje. Kjo njësi e veçantë do të monitoronte punëtorinë time të garazhit dhe sensori i fotografisë që kishte ishte i mjaftueshëm për të më njoftuar nëse dritat ishin ndezur aksidentalisht. Për matjen e dritës i normalizova leximet për të më dhënë një përqindje të prodhimit dhe çdo gjë mbi "5" gjatë natës do të thoshte se dritat ishin lënë ose një derë në shtëpi nuk ishte mbyllur siç duhet. Kunjat RST dhe GPIO16 janë etiketuar qartë në PCB dhe dioda Schottky që i lidh ato është instaluar në pjesën e poshtme të PCB. Mundësohet nga një bord serial USB i cili lidhet drejtpërdrejt me një karikues muri USB. Unë kam shtesa të këtyre bordeve serialë USB dhe nuk kam nevojë për këtë tani.

Unë nuk kam bërë një skemë për këtë tabelë dhe në përgjithësi nuk rekomandoj të blini një për ta përdorur për këtë qëllim. Pllakat Wemos D1 Mini janë shumë më të përshtatshme dhe do të diskutohen më tej. Edhe pse, nëse keni një nga këto dhe keni nevojë për këshilla, do të isha i lumtur t'ju ndihmoja.

Hapi 6: Mini stacionet e sensorit D1

Mini stacione sensori D1
Mini stacione sensori D1
Mini stacione sensori D1
Mini stacione sensori D1
Mini stacione sensori D1
Mini stacione sensori D1

Lloji Wemos D1 Mini i bordeve të zhvillimit ESP8266 janë ato të preferuarat e mia për t'u përdorur dhe nëse më duhej ta bëja përsëri, thjesht do t'i përdorja këto. Ata kanë një numër të madh të kunjave të qasshëm IO, mund të programohen drejtpërdrejt përmes Arduino IDE dhe janë akoma mjaft kompakte. Pina D0 është GPIO16 në këto dërrasa dhe lidhja e një diodë Schottky është mjaft e lehtë për tu bërë. Skema tregon se si i kam këto dërrasa të lidhura dhe të dy përdorin modulin e sensorit BME2808.

Njëra nga dy bordet përdoret për të monitoruar motin jashtë dhe funksionon nga një bateri e energjisë diellore. Një panel diellor 165mm x 135mm (6V, 3.5W) është i lidhur me një modul të ngarkimit të baterisë Li-ion TP4056 (shiko Diagramin e Konfigurimit të Stacionit të Sensorit të Baterisë me Energji Diellore). Ky modul i veçantë karikimi (03962A) përmban një qark mbrojtës të baterisë i cili është i nevojshëm nëse bateria (paketa) nuk përmban një të tillë. Bateria Li-jon u riciklua nga një paketë e vjetër baterie laptopi dhe akoma mund të mbajë ngarkesë të mjaftueshme për të drejtuar bordin D1 Mini, veçanërisht me gjumë të thellë të aktivizuar. Bordi u vendos në një mbyllje plastike për ta mbajtur atë disi të sigurt nga elementët. Sidoqoftë, në mënyrë që pjesa e brendshme të ekspozohet ndaj temperaturës dhe lagështisë së jashtme, dy vrima me diametër 25 mm u shpuan në anët e kundërta dhe u mbuluan (nga brenda) me leckë të zezë të peizazhit. Pëlhura është projektuar për të lejuar depërtimin e lagështirës dhe kështu lagështia mund të matet. Në njërën skaj të rrethimit ishte bërë një vrimë e vogël dhe ishte instaluar një dritare plastike e qartë. Këtu u vendos moduli i sensorit të dritës BH1750. E gjithë njësia vendoset jashtë në hije (jo në diell të drejtpërdrejtë) me sensorin e dritës të dalë jashtë. Ajo ka qenë duke punuar nga bateria diellore për gati 4 javë në motin tonë me shi/re të dimrit këtu.

Hapi 7: Gateway dhe Webserver

Gateway dhe Webserver
Gateway dhe Webserver
Gateway dhe Webserver
Gateway dhe Webserver
Gateway dhe Webserver
Gateway dhe Webserver

Një bord Lolin NodeMCU V3 (ESP8266) u përdor për pajisjen ESP-Now Gateway dhe një ESP32 (bordi GOOUUU) u përdor për serverin e uebit. Pothuajse çdo bord ESP8266 apo edhe ESP32 mund të kishte shërbyer si pajisje porta, kjo ishte thjesht tabela që kisha "mbetur" pasi përdorja të gjitha dërrasat e tjera që kisha.

Kam përdorur bordin ESP32 pasi kam nevojë për një bord me pak më shumë fuqi llogaritëse për të mbledhur të dhënat, për t'i renditur ato, për t'i ruajtur në ruajtje dhe për të drejtuar serverin në internet. Në të ardhmen mund të ketë gjithashtu sensorin e vet dhe një ekran lokal (OLED). Për ruajtje, një kartë SD u përdor me një përshtatës të personalizuar. Përdora një përshtatës të zakonshëm microSD në kartën SD dhe ngjita një kokë 7 pin (0.1 katran) në kontaktet e veshura. Ndoqa këshillën e këtij GitHub për të bërë lidhjet.

Konfigurimi i prototipit (me tela Dupont) nuk përfshin një modul sensor, por PCB e finalizuar që kam projektuar lejon një si dhe një ekran të vogël OLED. Detajet se si e kam projektuar atë PCB janë pjesë e një Instructable të ndryshme.

Hapi 8: Softueri

Softuer
Softuer

ESP8266 (ESP-TANI) Pajisjet

Softueri për të gjitha pajisjet është shkruar duke përdorur Arduino IDE (v1.87). Çdo stacion sensor funksionon në thelb kodin identik. Ato ndryshojnë vetëm nga ajo se cilat kunja përdoren për komunikimet I2C dhe me cilin modul sensori janë të lidhur. Më e rëndësishmja, ata dërgojnë paketën e të dhënave të matjes identike në stacionin ESP-Now Gateway, pavarësisht nëse kanë të njëjtin sensor. Çfarë do të thotë kjo është se disa stacione sensori do të plotësojnë vlera dummy për matjet e presionit dhe nivelit të dritës nëse nuk kanë sensorë për të siguruar vlera reale. Kodi për secilin stacion dhe portë u përshtat nga shembujt e Anthony Elder në këtë GitHub.

Kodi i pajisjes së portës përdori SoftwareSerial për të komunikuar me serverin në internet, pasi ESP8266 ka vetëm një UART harduer plotësisht funksionues. Duke funksionuar me normën maksimale të baud prej 9600 duket mjaft e besueshme dhe është më se e mjaftueshme për dërgimin e këtyre paketave relativisht të vogla të të dhënave. Pajisja portë është programuar gjithashtu me një adresë MAC private. Arsyeja për këtë është kështu nëse kërkon zëvendësim, atëherë stacionet e sensorit nuk duhet të ri-programohen me adresën MAC të re të marrësit.

ESP32 (Web Server)

Çdo stacion sensor dërgon paketën e tij të të dhënave në pajisjen gateway e cila e përcjell atë në serverin e uebit. Së bashku me paketën e të dhënave, adresa MAC e stacionit sensor dërgohet gjithashtu për të identifikuar secilin stacion. Serveri në internet ka një tabelë "kërkimi" për të përcaktuar vendndodhjen e secilit sensor dhe rendit të dhënat në përputhje me rrethanat. Intervali kohor midis matjeve u caktua në 5 min plus një faktor të rastësishëm për të shmangur që sensorët të "përplasen" me njëri -tjetrin kur dërgohen në pajisjen e portës.

Ruteri WIFI i shtëpisë ishte vendosur që të ndajë një adresë IP fikse në serverin e uebit kur lidhet me WIFI. Për timen ishte 192.168.1.111. Shtypja e asaj adrese në çdo shfletues do të lidhet me serverin e uebit të stacionit të motit për sa kohë që përdoruesi është brenda intervalit WIFI (dhe lidheni me) rrjetin shtëpiak. Kur përdoruesi lidhet me faqen në internet, serveri në internet përgjigjet me një tabelë të matjeve dhe përfshin kohën e matjes së fundit të secilit sensor. Në këtë mënyrë nëse një stacion sensor nuk përgjigjet, mund ta shihni atë nga tabela nëse leximi është më i vjetër se 5-6 minuta.

Të dhënat ruhen në skedarë teksti individualë në një kartë SD dhe ato gjithashtu mund të shkarkohen nga faqja e internetit gjithashtu. Mund të importohet në Excel ose ndonjë aplikacion tjetër për komplotimin e të dhënave

Aplikacioni Android

Për ta bërë më të lehtë shikimin e informacionit lokal të motit në një smartphone, krijova një Aplikacion relativisht Android duke përdorur Android Studio. Isshtë në dispozicion në faqen time GitHub këtu. Ai përdor klasën e shikimit të uebit për të ngarkuar faqen e internetit nga serveri dhe si funksionim i kufizuar. Nuk është në gjendje të shkarkojë skedarët e të dhënave dhe sidoqoftë nuk kam pasur nevojë për ato në telefonin tim.

Hapi 9: Rezultatet

Rezultatet
Rezultatet

Më në fund, këtu janë disa rezultate për nga stacioni i motit në shtëpinë time. Të dhënat u shkarkuan në një kompjuter portativ dhe u komplotuan në Matlab. Unë bashkangjita skriptet e mia Matlab dhe ju gjithashtu mund t'i ekzekutoni ato në GNU Octave. Sensori i jashtëm ka funksionuar me baterinë e tij të ngarkuar me diell për gati 4 javë dhe ne rrallë kemi ndonjë diell në këtë kohë të vitit. Deri tani gjithçka po funksionon mirë dhe të gjithë në familje mund të shikojnë motin vetë në vend që të më pyesin tani!

Recommended: