INHOUDSOPGAWE:

Nog 'n IoT -weerstasie: 8 stappe
Nog 'n IoT -weerstasie: 8 stappe

Video: Nog 'n IoT -weerstasie: 8 stappe

Video: Nog 'n IoT -weerstasie: 8 stappe
Video: I Don't Want To Talk About It (from One Night Only! Rod Stewart Live at Royal Albert Hall) 2024, Julie
Anonim
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie
Nog 'n IoT -weerstasie

Die volgende was 'n verjaardaggeskenk vir my pa; geïnspireer deur 'n ander instruksies wat ek gesien het en aanvanklik bedoel was om hom as 'n self-bou-kit bewys te word. Maar toe ek saam met hom aan hierdie projek begin werk, het ek baie vinnig besef dat die aanvanklike tutoriaal wat die geskenk geïnspireer het, verouderd was en dat baie van die ander aanlyn -tutoriale 'n groot leemte in hul verduidelikings het. Daarom het ek besluit om nog 'n IoT -weerstasie te publiseer, wat hopelik maklik sou wees om van begin tot einde te volg.

Verder wys hierdie instruksie hoe u Blynk, Google Sheets of albei kan gebruik om sensorlesings te monitor en op te neem. Boonop word die Google Sheets -inskrywings direk op die blad geskryf (sonder dat u via 'n derdeparty -diens hoef te gaan).

Wat die Stevenson-skerm betref, is daar baie aanlyn beskikbaar wat 3D-gedruk kan word, bv. https://www.thingiverse.com/thing:1718334. Ek sal voortbou op hierdie een vir hierdie Instructable.

'N Stevenson -skerm is 'n "instrumenteskuiling is 'n skuiling of omhulsel vir meteorologiese instrumente teen neerslag en direkte hittebestraling van buite bronne, terwyl lug steeds vrylik om hulle kan sirkuleer." (Wikipedia).

Dele

  • Wemos LolIn - NodeMCU v3 (USD 1.43)
  • BME280 (temperatuur-, druk- en humiditeitsensor) (USD 2,40)
  • 6V 1000mA sonpaneel (USD 9,96)
  • 5V 1A Micro USB 18650 Lithium Battery Charger Board Charger Module+Beskerming Dubbele funksies TP4056 (USD 0.99)
  • 4x 1,2V NiMH herlaaibare batterye
  • Batteryhouer (4x AA, langs mekaar en van kant tot kant)
  • Micro USB -aansluiting vir manlike aansluiting
  • Kabel bande
  • 3x vleuelneute
  • Paal of besemstok
  • Epoxy en/of supergom (agteraf gesien, het silikon moontlik beter gewerk)

Sagteware

  • Blynk App
  • Google Blaaie (as u toegang tot die historiese data wil hê)
  • EasyEDA (om skematies te teken)
  • Arduino IDE

Gereedskap

  • Soldeerbout
  • Soldeer
  • Krimp buis
  • 3D -drukker
  • Plakgeweer

Stap 1: 3D -druk - Stevenson -skerm

3D -druk - Stevenson -skerm
3D -druk - Stevenson -skerm
3D -druk - Stevenson -skerm
3D -druk - Stevenson -skerm
3D -druk - Stevenson -skerm
3D -druk - Stevenson -skerm

Soos reeds genoem, laai die lêers af van https://www.thingiverse.com/thing:1718334 en druk die vereiste stukkies af. Die monteerinstruksies kan ook gevind word in die skakel hierbo. Ek het 'n paar wysigings aangebring (sien aantekeninge hieronder).

Onderdele gedruk is:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL hierbo aangeheg)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL hierbo aangeheg)

Die samestelling is:

  • Ryg die gate
  • Skroef die M3 -stawe in die skroewe met skroefdraad vas
  • Boonste deksel
  • Soliede_plaat
  • Middelringe
  • Skuif die Sensor_Grid in
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • Die My_Solar_Cell_Mounts word bo -aan die Top_Cover -epoksied geplaas

Ek het gate in die soliede plate geboor om die laadkabel van die sonpaneel aan die laaier te koppel en dan een om die kabel van die beheerder na die sensor op die Sensor_Grid te laat loop.

Nadat dit klaar was, was die sensor geprogrammeer om elke 60 minute die volgende metings te neem:

  • Temperatuur
  • Humiditeit
  • Druk

Notas

  • Ek het die sonkraghouers so aangepas dat dit beter geskik is om my sonsel te hou.
  • Ek het die elektronika tussen die Pole_Mount en Solid_Plate geïnstalleer. Dit het blykbaar geen goeie beskerming vir die elektronika gebied nie. Ek het dus op Solid_Plate gewysig sodat dit 'n romp het wat die gaping sou toemaak en sodoende die elektronika beter beskerm. Sommige van die bogenoemde foto's is geneem voordat ek hierdie verandering aangebring het.
  • My epoksie beland sonder om die sonpaneel vas te hou wat ek dan weer met supergom vasgemaak het. Ek dink ek sal beland as ek silikon moet gebruik.

Stap 2: Die stroombaan

Die stroombaan
Die stroombaan
Die stroombaan
Die stroombaan

Verbind die stroombaan soos in die skema getoon, en monteer die LoLin en BME280 op die 3D-gedrukte gaas soos op die foto.

BME280 -> LiLon

  • VCC -> 3.3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (dit is nodig om die beheerder uit die slaap te wakker, maar moet eers verbind word nadat die kode na die beheerder opgelaai is)

LET WEL

Ek het probleme ondervind om 'n geskikte LiLon -battery te kry. Ek het ook om een of ander rede geen sukses met VIN gehad nie. Ek het dus soos volg aangedryf:

  • Die uitset van die TP4056 is na die USB -aansluiting van die Male gekoppel, wat dan in die USB -aansluiting van die kaart gekoppel is.
  • B- en B+ op die TP4056 is gekoppel aan die AA-batteryhouer wat die NiMH-batterye bevat.

Stap 3: IoT - Blynk

IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk

"Blynk is 'n hardeware-agnostiese IoT-platform met aanpasbare mobiele programme, privaat wolk, reëls-enjin en analitiese dashboard vir apparaatbestuur". Dit stel u in staat om afstandsensors vanaf enige plek ter wêreld veilig via die internet te bestuur en te monitor. Alhoewel dit 'n kommersiële diens is, bevat elke rekening 2000 gratis krediete. Met krediete kan u verskillende meters, skerms, kennisgewings, ens met u sensor of sensors koppel. Alhoewel die prys vir intekeninge buite die begroting van 'n stokperdjie se begroting is, is die gratis krediete genoeg vir 'n eenvoudige projek soos hierdie.

Om die diens te begin gebruik, moet u eers die Blynk -app op u telefoon/toestel aflaai, 'n rekening skep (of aanmeld met 'n bestaande rekening) en dan 'n nuwe projek soos volg skep:

  • Kies u hardeware
  • Gee jou projek 'n naam (in hierdie geval het ek "Weerstasie" gebruik.
  • Klik op "Skep"
  • U kry dan 'n e-poskode per e-pos aan u gestuur.

U hoef nie die vereiste widgets by te voeg nie. Met my 2000 gratis krediete het ek die volgende bygevoeg:

  • 3 meters
  • 1 Superkaart

Die meters en kaarte is opgestel volgens die aangehegte foto's, en elkeen het sy eie virtuele pen wat laasgenoemde in die kode gebruik sou word.

As u klaar is met die instellings, kan u op die speelknoppie regs bo druk om die datum te versamel.

Vir meer inligting sien

docs.blynk.cc/#getting-started.

Stap 4: Kode - Voorbereiding van die Arduino IDE

Die volgende biblioteke moet by die Arduino IDE gevoeg word om hierdie projek te voltooi:

  • https://github.com/adafruit/Adafruit_BME280_Library (benodig die temperatuur-, druk- en humiditeitsensor)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (dit gee u toegang tot die ESP8266 -bord)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (die Blynk-biblioteek)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (HTTPSRedicect benodig vir verbinding met Google Sheets)

Besoek https://www.arduino.cc/en/guide/libraries vir instruksies oor die installering van biblioteke vir die Arduino IDE.

My hardeware -instellings is soos volg:

  • Bord: NodeMCU 1.0 (ESP-12E-module)
  • Oplaaisnelheid: 115200

As u die aangehegte kode in die volgende stappe gebruik, moet u altyd na die opmerkings in die kode verwys om die volgende by te voeg:

  • Wifi SID
  • Wifi wagwoord
  • Blynk magtigingsleutel
  • Google Script ID
  • Sleutel vir deel van Google Sheet

Stap 5: Kode - Blynk

Ek het eeue lank gesukkel om my BME280 -sensor te laat werk totdat ek 'n voorbeeld gevind het wat die volgende reël bevat.

status = bme.begin (0x76); // Die I2C -adres van die sensor wat ek gebruik, is 0x76

Dit blyk dat ek die sensoradres moes instel. Nadat ek dit gedoen het, het dit alles goed gewerk.

Blynk het 'n baie goeie mobiele gebruikerskoppelvlak, maar dit het egter die volgende beperkings:

  • Slegs 2000 gratis krediete, projekte wat meer as dit vereis, vereis 'n duur maandelikse intekening (tensy u u eie Blynk -bediener aanbied en onderhou).
  • Tensy u u eie Blynk -bediener huisves, kan u nie historiese data uitvoer nie.

Om bogenoemde redes het ek gekyk hoe ek my data -insamelingsproses in 'n Google -blad kan integreer. Dit word in die volgende afdeling behandel.

Stap 6: Kode - Google Blaaie

Kode - Google Blaaie
Kode - Google Blaaie
Kode - Google Blaaie
Kode - Google Blaaie
Kode - Google Blaaie
Kode - Google Blaaie

Om u lesings op te neem sodat u historiese data later kan ontleed, moet u dit in 'n databasis skryf. Met die HTTPSRedirect -biblioteek kan ons dit doen deur ons data na 'n Google -blad te skryf.

Die belangrikste beperkings met hierdie benadering is soos volg:

  • Geen goeie mobiele gebruikerskoppelvlak nie
  • 'N Google -blad kan 'n maksimum van 400 000 selle hê. Vir hierdie projek is dit nie 'n groot probleem nie, aangesien dit net meer as 11 jaar sal neem voordat hierdie limiet bereik word.

Die Google-blad is soos volg opgestel.

Skep 'n Google -blad met twee velle.

Blad 1: Data

Die gegewensblad benodig 4 kolomme, naamlik datum/tyd, temperatuur, humiditeit, druk (kolomme A tot D). Formateer die kolomme toepaslik, bv. Kolom A is "Date Time" sodat die datum en tyd in die selle verskyn.

Blad 2: Dashboard

Skep die paneelblad volgens die aangehegte foto's en voer die formules in soos hieronder gelys:

  • B2: = counta (Data! B: B) -1
  • B3: = B1+TYDWAARDE (CONCATENATE ("00:", Text (G7, "0")))
  • B6: = navraag (Data! A2: D, "Kies B -volgorde volgens A desc -limiet 1")
  • C6: = navraag (Data! A2: D, "Kies C -volgorde volgens A desc -limiet 1")
  • D6: = navraag (Data! A2: D, "Kies D -volgorde volgens A -limiet 1")
  • B8: = navraag (Data! A2: D, "Kies 'n volgorde volgens B -limiet 1")
  • C8: = navraag (Data! A2: D, "Kies 'n volgorde volgens C limiet 1")
  • D8: = navraag (Data! A2: D, "Kies 'n volgorde volgens D limiet 1")
  • B9: = navraag (Data! A2: D, "Kies B -volgorde volgens B -limiet 1")
  • C9: = navraag (Data! A2: D, "Kies C -volgorde volgens C -limiet 1")
  • D9: = navraag (Data! A2: D, "Kies D -volgorde volgens D -limiet 1")
  • B11: = navraag (Data! A2: D, "Kies A waar B nie nul volgorde is met B asc limiet 1")
  • C11: = navraag (Data! A2: D, "Kies A waar C nie 'n nietige volgorde is deur C asc limiet 1")
  • D11: = navraag (Data! A2: D, "Kies A waar D nie nul volgorde is met D asc limiet 1")
  • B12: = navraag (Data! A2: D, "Kies B waar B nie nul volgorde is met B asc limiet 1")
  • C12: = navraag (Data! A2: D, "Kies C waar C nie 'n nietige volgorde is deur C ask limiet 1")
  • D12: = navraag (Data! A2: D, "Kies D waar D nie 'n nietige volgorde is met D asc limiet 1")
  • G3: = 4+B2*4+29+17
  • G4: = (G2-G3)/G2
  • G6: = G2/4 G8: = G7*G6
  • G9: = (G8/60)/24
  • G10: = G9/365
  • G11: = ((((((G2-G3)/4)*G7)/60)/24/365)

Google Sheets kan 'n maksimum van 400 000 selle hê. Dit word gebruik, tesame met die feit dat elke lesing 4 selle gebruik om te bereken hoeveel ruimte daar oor is en wanneer dit opraak.

Dit is moontlik om hierdie formules te verbeter. Ek het hier twee dinge gedoen, naamlik om die navraagformule te leer en dan 'n formule te skryf sodat ek die logika daaragter kon onthou.

Die "Chart Editor" skermkiekie toon die basiese opstelling vir die temperatuur grafiek. Die ander grafieke is gemaak met dieselfde opset. Die enigste verskil tussen die grafieke was die minimum vertikale aswaardes (gevind onder die aanpassingsoortjie). Die aanpas -oortjie het ook die ander instellings soos toegangsname, grafietitels, ens.

Ons benodig nou 'n Google Script wat ons in staat stel om ons data te skryf deur 'n URL te noem.

Die skep van die draaiboek

Let op die sleutel tussen die "d /" en " / edit" in die URL van Google Sheet. Dit is u -Jou-Google-blad-deel-sleutel- en sal nodig wees in die onderstaande kode.

Gaan dan na Tools> Script Editor en skep die Google App Script, en plak die kode in die aangehegte GS -lêer. Dateer die var ss = SpreadsheetApp.openByUrl op ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); om u deelsleutel te weerspieël.

Publiseer nou die skrif deur na Publiseer> Implementeer as webprogram te gaan.

Kopieer die huidige webapp-URL en stoor dit êrens, aangesien u dit nodig sal hê om die GScriptID (-Your-Google-Script-ID–) te onttrek. Die GScriptID is die string tussen "s /" en " / exec?". Maak seker dat 'Almal, selfs anoniem', toegang tot die app het. Tydens hierdie proses sal u gevra word om 'n paar toestemmings te verleen. Dit is belangrik dat u hierdie toestemming verleen.

Let wel: elke keer as u u kode verander, moet u 'n 'nuwe' projekweergawe skep en dit publiseer, anders sal u steeds dieselfde ou kode kry.

U kan die skrif nou toets deur na https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12 te blaai. Elke keer as u hierdie skakel herlaai, moet 'n nuwe inskrywing by die Google -blad gevoeg word.

Bogenoemde is geneem uit die volgende tutoriaal: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Hierdie handleiding is egter verouderd, en daarom is die gepaardgaande Arduino -kode in die volgende afdeling verander om die nuutste HTTPSRedirect -biblioteke te akkommodeer.

Die Arduino -kode

Sien aangehegte kode.

Stap 7: Kode - Blynk en Google Sheets

Om die beste uit albei wêrelde te haal, kan u die kode vir Blynk en Google Sheets kombineer.

Sien aangehegte kode.

Stap 8: Laaste opmerkings

Laaste kommentaar
Laaste kommentaar
Laaste kommentaar
Laaste kommentaar

Nie een van die bogenoemde is my idees nie, maar eerder 'n projek wat gebaseer is op die idees en werk van ander. Ek het dit geniet om dit heeltemal op een plek te trek. gebruik verskillende tegnologieë en gereedskap om 'n prettige en praktiese projek te maak. Ek het veral daarvan gehou om te leer hoe om my lesings in 'n Google -blad te stoor. Hiervoor wil ek die ElectronicsGuy (Sujay Phadke) bedank.

Opdateer

Nadat ek hierdie projek voltooi het, moes ek my draadlose instellings verander. Ek werk nou op 'n ander rekenaar. Nadat die veranderinge opgelaai is, het die projek opgehou werk. Na 'n paar probleemoplossings het ek tot die gevolgtrekking gekom dat die deepsleep -funksie misluk. Ek het die projek huis toe geneem en dit daar gelaai (met dieselfde kode) en dit het gewerk. Ek het dus tot die gevolgtrekking gekom dat daar iets moes verander het in die biblioteke wat ek bygevoeg het. Ek het dus die biblioteke wat tans op my tuisrekenaar is, aan hierdie afdeling gekoppel; net ingeval iemand anders hierdie probleem ondervind.

Aanbeveel: