INHOUDSOPGAWE:
- Stap 1: Ontwerpbesonderhede
- Stap 2: Sensors
- Stap 3: Sensorstasies
- Stap 4: ESP-01 sensorstasie
- Stap 5: ESP 12E Serial WIFI Kit Sensor Station
- Stap 6: D1 -minisensorstasies
- Stap 7: Gateway en webbediener
- Stap 8: sagteware
- Stap 9: Resultate
Video: N ESP-Now tuisweerstasie: 9 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Ek wou 'n geruime tyd 'n tuisweerstasie hê, waarna almal in die gesin maklik kon kyk na temperatuur en humiditeit. Benewens die monitor van die buite -toestande, wou ek ook spesifieke kamers in die huis en my motorwerkswinkel monitor. Dit sal ons laat weet wanneer dit 'n goeie tyd is om die huis uit te lug of die ontvochtiger te laat loop (dit reën baie hier gedurende die winter). Wat ek geskep het, is 'n ESP-Now-gebaseerde sensorsisteem wat rapporteer aan 'n plaaslike webbediener wat almal vanaf hul rekenaar of telefoon kan nagaan. Vir die telefoon het ek 'n eenvoudige Android -app geskryf om dit nog makliker te maak.
Stap 1: Ontwerpbesonderhede
Ek wou verskillende sensorstasies hê wat ek op verskillende plekke kon plaas, en laat hulle terugrapporteer by een hoofstasie (of hub) wat die inligting sou stoor. Nadat ek verskillende idees probeer het, het ek besluit om die ESP-Now-protokol van Espressif te gebruik, aangesien dit vinnige kommunikasie tussen toestelle moontlik gemaak het. U kan hier 'n bietjie lees oor ESP-Now en hierdie GitHub-repo was 'n groot deel van my inspirasie.
Die eerste prentjie toon die uitleg van die stelsel. Elke sensor rapporteer sy metings aan 'n gateway -toestel wat die data deurstuur na die hoofbediener deur 'n vaste seriële verbinding. Die rede hiervoor is dat die ESP-Now-protokol nie op dieselfde tyd as die WIFI-verbinding aktief kan wees nie. Vir 'n gebruiker om toegang tot die webblad te verkry, moet die WIFI ten alle tye aan wees, en dit maak dit dan onmoontlik om die ESP-Now-kommunikasie op dieselfde toestel te gebruik. Alhoewel die gateway-toestel 'n Espressif-gebaseerde toestel moet wees (in staat tot ESP-Now), kan die hoofbediener enige toestel wees wat 'n webbladsy kan bestuur.
Sommige sensorstasies kan batterye (of sonkraggelaaide batterye) gebruik, en ander het net netkrag. Ek wou egter hê dat almal so min as moontlik krag gebruik, en dit is waar die 'diep slaap' -funksie wat beskikbaar is vir ESP8266- en ESP32 -toestelle baie nuttig is. Die sensorstasies word periodiek wakker, neem metings en stuur dit na die gateway -toestel en gaan slaap weer vir 'n vooraf geprogrammeerde tydperk. Hul waakperiode van slegs ongeveer 300 ms elke 5 minute (in my geval) verminder hul kragverbruik aansienlik.
Stap 2: Sensors
Daar is verskillende sensors om van te kies om die omgewingsparameters te meet. Ek het besluit om net by sensors van I2C te bly, aangesien dit vinnige metings moontlik maak en op enige van die toestelle wat ek het, kan werk. Eerder as om direk met IC's te werk, het ek gesoek na gebruiksklare modules met dieselfde pin-outs om my ontwerpe te vereenvoudig. Ek wou eers temperatuur en humiditeit meet, en het daarom 'n SI7021 -module gekies. Later wou ek 'n sensor hê wat ook druk kan meet en besluit om die op BME280 gebaseerde sensormodules te probeer. Op sommige plekke wou ek selfs die ligvlakke monitor, en die BH1750 -module was ideaal hiervoor as 'n aparte sensormodule. Ek het my sensormodules van eBay gekoop en dit is die modules wat ek ontvang het:
- BME280 (GY-BMP/E280), meet temperatuur, humiditeit en druk
- SI7021 (GY-21), meet temperatuur en humiditeit
- BH1750 (GY-302), meet lig
Daar is twee style van die GY-BMP/E280 PCB-modules. Beide deel dieselfde pen uit vir penne 1 tot 4. Een module het twee ekstra penne, CSB en SDO. Die twee penne is vooraf gekoppel aan die 4-pen weergawe van die module. Die vlak van die SDO -pen bepaal die I2C -adres (Grond = standaard 0x76, VCC = 0x77). Die CSB -pen moet aan VCC gekoppel word om die I2C -koppelvlak te kies. Ek verkies die 4 -pins module, aangesien dit gereed is om te gebruik soos dit vir my doel is.
Oor die algemeen is hierdie modules baie gerieflik om te gebruik, aangesien dit reeds optrekweerstands vir die kommunikasielyne geïnstalleer het en almal op 3.3V werk, sodat dit verenigbaar is met ESP8266-borde. Let daarop dat die penne op hierdie sensor -IC's oor die algemeen nie 5V -verdraagsaam is nie, sodat dit direk met iets soos 'n Arduino Uno in aanraking kan kom.
Stap 3: Sensorstasies
Soos genoem, sou die sensorstasies almal Espressif-toestelle wees wat die ESP-Now-kommunikasieprotokol gebruik. Uit vorige projekte en eksperimente het ek verskillende toestelle beskikbaar gehad om my eerste toetse uit te voer en in die finale ontwerp op te neem. Ek het die volgende toestelle byderhand gehad:
- twee ESP-01 modules
- twee Wemos D1 mini -ontwikkelingsborde
- een Lolin ESP8266 ontwikkelingsborde
- een ESP12E -reeks WIFI -kitbord
- een GOOUUU ESP32 -bord ('n 38 -pen ontwikkelbord)
Ek het ook 'n Wemos D1 R2 -ontwikkelbord gehad, maar daar was probleme waarmee dit nie uit diepe slaap kon wakker word nie, en as 'n gateway -toestel sou dit neerstort en nie weer begin nie. Ek het dit later herstel en dit het deel geword van die Garage Door -oopmaakprojek. Om 'diep slaap' te laat werk, moet die RST -pen van die ESP8266 aan die GPIO16 -pen gekoppel word, sodat die slaaptimer die toestel kan laat wakker maak. Ideaal gesproke moet hierdie verbinding met 'n Schottky-diode (katode na GPIO16) gemaak word, sodat die handmatige herstel deur die USB-TLL-verbinding tydens die programmering steeds werk. 'N Lae waarde (300-ish Ohm) weerstand of selfs direkte draadverbinding kan egter steeds suksesvol wees.
ESP-01-modules bied nie maklike toegang tot die GPIO16-pen nie, en u moet direk aan die IC soldeer. Dit is nie 'n eenvoudige taak nie, en ek sal dit nie vir almal aanbeveel nie. Die ESP12E -reeks WIFI -kitbord was 'n bietjie nuut, en dit het 'n hele paar veranderinge nodig gehad om dit nuttig te wees vir my doel. Die maklikste borde om te gebruik was die Wemos D1 mini -tipe borde en die Lolin -bord. ESP32 -toestelle benodig geen veranderinge vir diepe slaap om te werk nie. Andreas Spiess het 'n goeie instruksie hieroor.
Stap 4: ESP-01 sensorstasie
Op alle sensorstasies word die sensormodules vertikaal gemonteer om die hoeveelheid stof wat daarop kan ophoop, te verminder. Nie almal is in omhulsels nie en ek mag dit nie in omhulsels monteer nie. Die rede hiervoor is dat die toestelle kan opwarm en die temperatuur- en humiditeitsmetings kan beïnvloed as dit nie voldoende geventileer is nie.
ESP-01-borde is baie kompak en het min digitale IO-penne om mee te werk, maar dit is genoeg vir die I2C-koppelvlak. Die borde vereis egter 'n ingewikkelde aanpassing om 'diep slaap' te laat werk. Op die foto wat getoon is, is 'n draad van die hoekpen (GPIO16) aan die RST -pen op die kop vasgesoldeer. Die draad wat ek gebruik het, is 0,1 mm in deursnee geïsoleerde "herstel" draad. Die isolasiebedekking smelt weg wanneer dit verhit word, sodat dit gesoldeer kan word om spore, ens in PCB's te herstel, en u hoef nie bekommerd te wees oor die skep van kortbroek waar die draad met ander komponente in aanraking kom nie. Die grootte daarvan maak dit moeilik om mee te werk en ek het hierdie draad vasgesoldeer onder 'n (stokperdjie/seëlversamelaarstyl) mikroskoop. Hou in gedagte dat die kop aan die regterkant 'n spasafstand van 0,1 "(2,54 mm) het. Dit sou glad nie maklik wees om 'n Schottky -diode hier te installeer nie. 'n maand sonder probleme.
Die modules is geïnstalleer op twee prototipe borde wat ek geskep het. Die een (#1) is 'n programmeerderbord waarmee I2C -modules ook geïnstalleer en getoets kan word, terwyl die ander (#2) 'n ontwikkelings-/toetsbord vir I2C -toestelle is. Vir die eerste bord het ek 'n ou USB -aansluiting en 'n klein PCB saamgesoldeer om die eenheid direk van 'n USB -muuradapter aan te dryf. Die ander eenheid het 'n gewone DC -aansluiting wat aangepas is om in die skroefaansluitkop te pas, en word ook aangedryf deur 'n muuradapter.
Die skematiese toon aan hoe hulle verbind is en hoe die programmeerder werk. Ek het geen ander ESP-01-modules nie, so ek het geen onmiddellike behoefte aan die programmeerder gehad nie. In die toekoms sal ek waarskynlik 'n PCB vir hulle maak. Beide hierdie borde het die SI7021 sensormodule geïnstalleer, aangesien ek nie so geïnteresseerd was in drukmetings op die plekke nie.
Stap 5: ESP 12E Serial WIFI Kit Sensor Station
Die ESP12E Serial WIFI Kit -bord was nie net bedoel vir ontwikkeling nie, net om te wys wat met hierdie toestel gedoen kan word. Ek het dit lank gelede gekoop om 'n bietjie te leer oor ESP8266 -programmering en het uiteindelik besluit om dit weer te gebruik. Ek het alle LED's wat vir demonstrasies geïnstalleer is, verwyder en 'n USB -programmeerkop sowel as 'n I2C -kopstuk bygevoeg wat geskik is vir die modules wat ek gebruik. Dit het 'n CdS -fotoweerstand gekoppel aan die analoog invoerpen en ek het besluit om dit daar te laat. Hierdie spesifieke eenheid gaan my motorwerkswinkel monitor en die fotosensor wat dit gehad het, was voldoende om my te laat weet of die ligte per ongeluk aan was. Vir die ligmeting het ek die metings genormaliseer om my 'n persentasie -uitset te gee, en enigiets meer as '5' in die nag beteken dat die ligte aan is of 'n deur na die huis nie behoorlik gesluit is nie. Die RST- en GPIO16 -penne is duidelik op die printplaat gemerk en die Schottky -diode wat dit verbind, is aan die onderkant van die printplaat geïnstalleer. Dit word aangedryf deur 'n USB-reekskaart wat direk in 'n USB-muurlaaier gekoppel is. Ek het ekstra's van hierdie USB-seriële borde en het dit nie nou nodig nie.
Ek het nie 'n skema vir hierdie bord gemaak nie en raai gewoonlik nie aan om een te koop om dit te gebruik nie. Die Wemos D1 Mini -borde is baie meer geskik en sal vervolgens bespreek word. Alhoewel, as u een hiervan het en advies benodig, help ek u graag.
Stap 6: D1 -minisensorstasies
Die Wemos D1 Mini -tipe ESP8266 -ontwikkelingsborde is my gunsteling om te gebruik, en as ek dit moet doen, sal ek dit net gebruik. Hulle het 'n groot aantal toeganklike IO -penne, kan direk geprogrammeer word via die Arduino IDE en is nog steeds redelik kompak. Die D0 -pen is GPIO16 op hierdie borde, en dit is redelik maklik om 'n Schottky -diode aan te sluit. Die skematiese voorstelling toon hoe ek hierdie borde opgemaak het en albei gebruik die BME2808 sensormodule.
Een van die twee borde word gebruik om die weer buite te monitor en loop vanaf 'n sonkragbattery. 'N Sonnepaneel van 165 mm x 135 mm (6 V, 3,5 W) is gekoppel aan 'n TP4056 Li-ioon-laai-module (sien die opstellingdiagram van die sonkrag-batterysensorstasie). Hierdie spesifieke laadmodule (03962A) beskik oor 'n batterybeskermingskring wat nodig is as die battery (pak) nie een bevat nie. Die Li-ioonbattery is herwin uit 'n ou skootrekenaarpakket en kan nog steeds genoeg laai om die D1 Mini-bord te laat werk, veral as diepe slaap moontlik is. Die bord is in 'n plastiekomhulsel geplaas om dit ietwat teen die elemente te beskerm. Om die binnekant aan buitentemperatuur en humiditeit blootgestel te word, is twee gate met 'n deursnee van 25 mm aan weerskante geboor en (van binne) bedek met swart landskapdoek. Die lap is ontwerp sodat vog kan binnedring en die humiditeit kan dus gemeet word. Aan die een kant van die omhulsel is 'n klein gaatjie geboor en 'n deurskynende plastiekvenster aangebring. Dit is waar die BH1750 ligsensormodule geplaas is. Die hele eenheid word buite in die skaduwee geplaas (nie direkte son nie) met die ligsensor in die oopte. Dit werk al byna 4 weke van die sonkragbattery af in ons reënerige/bewolkte winterweer hier.
Stap 7: Gateway en webbediener
'N Lolin NodeMCU V3 (ESP8266) -bord is gebruik vir die ESP-Now Gateway-toestel en 'n ESP32 (GOOUUU-bord) is vir die Webbediener gebruik. Byna enige ESP8266- of selfs ESP32 -bord kon as die gateway -toestel gedien het; dit was eenvoudig die bord wat ek oorgehad het nadat ek al die ander borde gebruik het.
Ek het die ESP32 -bord gebruik, aangesien ek 'n bord met 'n bietjie meer rekenaarkrag nodig het om die data te versamel, te sorteer, dit in die stoor te stoor en die webbediener te laat loop. In die toekoms kan dit ook sy eie sensor en 'n plaaslike (OLED) skerm hê. Vir die berging is 'n SD -kaart saam met 'n pasgemaakte adapter gebruik. Ek gebruik 'n gemeenskaplike microSD na SD -kaartadapter en soldeer 'n 7 -pins manlike (0,1 toonhoogte) kop aan die vergulde kontakte. Ek volg die advies van hierdie GitHub om die verbindings te maak.
Die prototipe -opstelling (met Dupont -drade) bevat nie 'n sensormodule nie, maar die afgehandelde PCB wat ek ontwerp het, maak voorsiening vir een sowel as 'n klein OLED -skerm. Besonderhede oor hoe ek die PCB ontwerp het, is deel van 'n ander Instructable.
Stap 8: sagteware
ESP8266 (ESP-NOW) toestelle
Die sagteware vir alle toestelle is geskryf met behulp van die Arduino IDE (v1.87). Elke sensorstasie werk in wese dieselfde kode. Hulle verskil slegs deur watter penne vir die I2C -kommunikasie gebruik word en met watter sensormodule hulle gekoppel is. Die belangrikste is dat hulle die identiese meetdatapakket na die ESP-Now Gateway-stasie stuur, ongeag of hulle dieselfde sensor het. Wat dit beteken, is dat sommige sensorstasies dummy -waardes vir die druk- en ligvlakmetings sal invul as hulle nie sensors het om werklike waardes te verskaf nie. Die kode vir elke stasie en die poort is aangepas uit Anthony Elder se voorbeelde op hierdie GitHub.
Die gateway -toestelkode het SoftwareSerial gebruik om met die webbediener te kommunikeer, aangesien ESP8266 slegs een volledig funksionerende hardeware UART het. Met 'n maksimum baudsnelheid van 9600 lyk dit redelik betroubaar en is dit meer as voldoende om hierdie relatief klein datapakkies te stuur. Die gateway -toestel is ook geprogrammeer met 'n privaat MAC -adres. Die rede hiervoor is dat die sensorstasies nie almal herprogrammeer moet word met die nuwe MAC-adres van die ontvanger as dit vervang moet word nie.
ESP32 (webbediener)
Elke sensorstasie stuur sy datapakket na die gateway -toestel wat dit na die webbediener stuur. Saam met die datapakket word die sensorstasie se MAC -adres ook gestuur om elke stasie te identifiseer. Die webbediener het 'n "opsoek" -tabel om die ligging van elke sensor te bepaal en die data dienooreenkomstig te sorteer. Die tydsinterval tussen metings is ingestel op 5 minute plus 'n ewekansige faktor om te voorkom dat sensors met mekaar 'bots' wanneer hulle na die gateway -toestel stuur.
Die tuis -WIFI -router sou 'n vaste IP -adres aan die webbediener toewys wanneer dit met die WIFI verbind is. Vir myne was dit 192.168.1.111. As u die adres in enige blaaier tik, sal dit met die weerstasie se webbediener verbind word, solank die gebruiker binne die WIFI -reeks van (en verbinding met) die tuisnetwerk is. As die gebruiker met die webbladsy skakel, reageer die webbediener met 'n tabel met die metings en bevat die tyd van die laaste meting van elke sensor. As 'n sensorstasie nie reageer nie, kan u dit op die tafel sien as 'n lesing meer as 5-6 minute oud is.
Die data word in individuele tekslêers op 'n SD -kaart gestoor, en dit kan ook van die webblad afgelaai word. Dit kan in Excel of enige ander toepassing ingevoer word om data op te stel
Android App
Om die plaaslike weerinligting op 'n slimfoon makliker te sien, het ek 'n relatief Android -app met Android Studio geskep. Dit is hier op my GitHub -bladsy beskikbaar. Dit gebruik die webview -klas om die webblad vanaf die bediener te laai en as sodanig beperkte funksionaliteit. Dit kan nie die datalêers aflaai nie en ek het dit in elk geval nie nodig gehad nie.
Stap 9: Resultate
Hier is uiteindelik 'n paar resultate van my weerstasie tuis. Die data is op 'n skootrekenaar afgelaai en in Matlab geplot. Ek het my Matlab -skrifte aangeheg en u kan dit ook in GNU Octave uitvoer. Die buitesensor werk al byna 4 weke op sy sonlaaier en ons het selde son gedurende hierdie tyd van die jaar. Tot dusver werk alles goed en kan almal in die gesin self die weer opsoek eerder as om my nou te vra!
Aanbeveel:
IoT-kennisgewer met ESP-12E: 7 stappe (met foto's)
IoT-kennisgewer met behulp van ESP-12E: tuis vas van u geliefde? In hierdie moeilike tyd sal hierdie prettige klein projek beslis 'n glimlag op u gesig probeer bring. In hierdie instruksies sal ek u wys hoe u kennisgewings vanaf u selfoon kan vertoon in die vorm van
Aan die slag met Esp 8266 Esp-01 Met Arduino IDE - Die installering van Esp -borde in Arduino Ide en programmering van Esp: 4 stappe
Aan die slag met Esp 8266 Esp-01 Met Arduino IDE | Installering van Esp-borde in Arduino Ide en programmering van Esp: In hierdie instruksies gaan ons leer hoe om esp8266-borde in Arduino IDE te installeer en hoe om esp-01 te programmeer en kode daarin te laai. dit en die meeste mense het 'n probleem
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer
ESP-12E en ESP-12F Programmeer- en Ontwikkelingsraad: 3 stappe (met foto's)
ESP-12E en ESP-12F Programmeer- en Ontwikkelingsraad: Die taak van hierdie bord was eenvoudig: ESP-12E- en ESP-12F-modules kan so maklik as die NodeMCU-borde geprogrammeer word (dws hoef nie op knoppies te druk nie). Het broodbordvriendelike penne met toegang tot die bruikbare IO. Gebruik 'n aparte USB om die seriële verbinding te