Innholdsfortegnelse:

En annen IoT værstasjon: 8 trinn
En annen IoT værstasjon: 8 trinn

Video: En annen IoT værstasjon: 8 trinn

Video: En annen IoT værstasjon: 8 trinn
Video: NOKIOS 2018 1A Innovasjon i offentlig sektor - Egil Bredgaten 2024, Juli
Anonim
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon
Nok en IoT værstasjon

Følgende var en bursdagsgave til min far; inspirert av en annen instruerbar som jeg så og opprinnelig hadde til hensikt å bli bevist for ham som et selvbyggingssett. Men da jeg begynte å jobbe med dette prosjektet med ham, innså jeg veldig raskt at den første opplæringen som inspirerte gaven var utdatert, og at mange av de andre online -opplæringsprogrammene hadde betydelige hull i forklaringene. Jeg bestemte meg derfor for å publisere enda en IoT værstasjon som forhåpentligvis ville være lett å følge fra start til slutt.

Denne instruksjonen viser deg også hvordan du bruker Blynk, Google Sheets eller begge for å overvåke og registrere sensoravlesninger. Dessuten skrives Google Sheets -oppføringene direkte til arket (uten å måtte gå via en tredjepartstjeneste).

Når det gjelder Stevenson-skjermen, er det mange tilgjengelige på nettet som kan 3D-skrives ut f.eks. https://www.thingiverse.com/thing:1718334. Jeg vil bygge videre på denne for denne Instructable.

En Stevenson -skjerm er et "instrumently er et ly eller et kabinett for meteorologiske instrumenter mot nedbør og direkte varmestråling fra eksterne kilder, samtidig som luften kan sirkulere fritt rundt dem." (Wikipedia).

Deler

  • Wemos LolIn - NodeMCU v3 (USD 1,43)
  • BME280 (temperatur-, trykk- og fuktighetssensor) (USD 2,40)
  • 6V 1000mA solcellepanel (USD 9,96)
  • 5V 1A Micro USB 18650 litiumbatteri laderkortmodul+beskyttelse to funksjoner TP4056 (USD 0,99)
  • 4x 1,2V NiMH oppladbare batterier
  • Batteriholder (4x AA, side om side og ende til ende)
  • Micro USB hannkontakt
  • Kabelbindere
  • 3x vingemutter
  • Stang eller kosteskaft
  • Epoxy og/eller superlim (i ettertid kan silisium ha fungert bedre)

Programvare

  • Blynk App
  • Google Regneark (hvis du vil ha tilgang til de historiske dataene)
  • EasyEDA (for å tegne skjematisk)
  • Arduino IDE

Verktøy

  • Loddejern
  • Lodding
  • Krympeslange
  • 3D -skriver
  • Limpistol

Trinn 1: 3D -utskrift - Stevenson -skjerm

3D -utskrift - Stevenson -skjerm
3D -utskrift - Stevenson -skjerm
3D -utskrift - Stevenson -skjerm
3D -utskrift - Stevenson -skjerm
3D -utskrift - Stevenson -skjerm
3D -utskrift - Stevenson -skjerm

Som allerede nevnt, last ned filene fra https://www.thingiverse.com/thing:1718334 og skriv ut de nødvendige bitene. Monteringsinstruksjoner finnes også i lenken ovenfor. Jeg har gjort noen endringer (se notater nedenfor).

Delene som skrives ut er:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL vedlagt ovenfor)
  • 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 vedlagt ovenfor)

Monteringsordren er:

  • Tre hullene
  • Skru M3 -stengene inn i de gjengede stikkontaktene
  • Toppdekselet
  • Solid_Plate
  • Midterringer
  • Skyv inn Sensor_Grid
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • My_Solar_Cell_Mounts epoxies til toppen av Top_Cover

Jeg boret hull i de solide platene slik at ladekabelen fra solcellepanelet kan kobles til laderen og deretter en slik at kabelen kan løpe fra kontrolleren til sensoren på Sensor_Grid.

Når den var fullført, ble sensoren programmert til å ta følgende avlesninger hvert 60. minutt:

  • Temperatur
  • Luftfuktighet
  • Press

Merknader

  • Jeg tilpasser solcellefestene til å være bedre egnet til å holde solcellen min.
  • Jeg installerte elektronikken mellom Pole_Mount og Solid_Plate. Dette så ikke ut til å gi god beskyttelse for elektronikken. Jeg endret derfor på Solid_Plate slik at den hadde et skjørt som deretter ville lukke gapet og derved gi bedre beskyttelse for elektronikken. Noen av bildene ovenfor ble tatt før jeg gjorde denne endringen.
  • Epoksyen min landet og holdt ikke solcellepanelet som jeg deretter festet igjen med superlim. Jeg tror jeg kommer til å lande med å måtte bruke silisium.

Trinn 2: Kretsen

Kretsen
Kretsen
Kretsen
Kretsen

Koble til kretsen som vist på skjemaet, og monter LoLin og BME280 på det 3D-trykte nettverket som vist på bildet.

BME280 -> LiLon

  • VCC -> 3,3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (dette er nødvendig for å vekke kontrolleren fra dyp søvn, men må bare kobles til etter at koden er lastet opp til kontrolleren)

MERK

Jeg hadde utfordringer med å få et passende LiLon -batteri. Av en eller annen grunn hadde jeg heller ingen suksess med å kjøre via VIN. Jeg drev derfor som følger:

  • Utgang fra TP4056 ble koblet til USB -kontakten for mann, som deretter ble plugget inn i USB -kontakten for å få strøm fra den.
  • B- og B+ på TP4056 ble koblet til AA-batteriholderen som inneholdt NiMH-batteriene.

Trinn 3: IoT - Blynk

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

"Blynk er en maskinvare-agnostisk IoT-plattform med tilpassbare mobilapper, privat sky, regelmotor og enhetsstyringsanalysebord." I utgangspunktet lar den deg sikkert administrere og overvåke eksterne sensorer fra hvor som helst i verden via Internett. Selv om det er en kommersiell tjeneste, har hver konto 2000 gratis kreditter. Med studiepoeng kan du knytte forskjellige målere, skjermer, varsler osv. Til sensoren eller sensorene. Selv om abonnementsprisene er utenfor rekkevidden til en amatørs budsjett, er gratiskredittene nok for et enkelt prosjekt som dette.

For å begynne å bruke tjenesten må du først laste ned Blynk -appen til telefonen/enheten, opprette og opprette en konto (eller logge på med eksisterende konto) og deretter opprette et nytt prosjekt som følger:

  • Velg maskinvare
  • Gi prosjektet ditt et navn (i dette tilfellet brukte jeg "Weather Station".
  • Klikk "Opprett"
  • Du får deretter en Auth-kode sendt til deg.

Du trenger ikke å legge til nødvendige widgets. Med mine 2000 gratis studiepoeng la jeg til følgende:

  • 3 målere
  • 1 Super Chart

Målerne og diagrammene ble satt opp i henhold til de vedlagte bildene, og hver ble tildelt sin egen virtuelle pin som skulle brukes sistnevnte i koden.

Når du er ferdig med innstillingene, kan du trykke på spillknappen øverst til høyre for å begynne å samle dato.

For mer informasjon se

docs.blynk.cc/#getting-started.

Trinn 4: Kode - Forberedelse av Arduino IDE

Følgende biblioteker må legges til i Arduino IDE for å fullføre dette prosjektet:

  • https://github.com/adafruit/Adafruit_BME280_Library (behov for temperatur-, trykk- og fuktighetssensor)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (dette gir deg tilgang til ESP8266 -kortet)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (Blynk-biblioteket)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (HTTPSRedicect er nødvendig for å koble til Google Sheets)

For instruksjoner om installering av biblioteker for Arduino IDE, besøk

Mine maskinvareinnstillinger er som følger:

  • Brett: NodeMCU 1.0 (ESP-12E-modul)
  • Last opp hastighet: 115200

Når du bruker den vedlagte koden i de følgende trinnene, vennligst henvis alltid til kommentarene i koden for å legge til følgende:

  • Wifi SID
  • Wifi -passord
  • Blynk autorisasjonsnøkkel
  • Google Script ID
  • Nøkkel for deling av Google -ark

Trinn 5: Kode - Blynk

Jeg kjempet i evigheter for å få min BME280 -sensor til å fungere til jeg fant et eksempel som inneholdt følgende linje.

status = bme.begin (0x76); // I2C -adressen til sensoren jeg bruker er 0x76

Det ser ut til at jeg måtte angi sensoradressen. Når jeg hadde gjort dette fungerte alt helt fint.

Blynk har et veldig fint mobilt brukergrensesnitt, men det har imidlertid følgende begrensninger:

  • Bare 2000 gratis kreditter, prosjekter som krever mer enn det krever et dyrt månedlig abonnement (med mindre du er vert for og vedlikeholder din egen Blynk -server).
  • Med mindre du er vert for din egen Blynk -server, kan du ikke eksportere historiske data.

Av de ovennevnte grunnene så jeg på hvordan jeg kunne integrere datainnsamlingsprosessen i et Google -ark. Dette dekkes i neste avsnitt.

Trinn 6: Kode - Google Regneark

Kode - Google Regneark
Kode - Google Regneark
Kode - Google Regneark
Kode - Google Regneark
Kode - Google Regneark
Kode - Google Regneark

For å registrere avlesningene dine slik at du kan analysere historiske data på et senere tidspunkt, må du skrive dem til en slags database. HTTPSRedirect -biblioteket lar oss gjøre dette ved å skrive dataene våre til et Google -ark.

De viktigste begrensningene med denne tilnærmingen er som følger:

  • Ingen hyggelig mobil brukergrensesnitt
  • Et Google -ark kan ha maksimalt 400 000 celler. For dette prosjektet er dette ikke et stort problem, da det vil ta litt over 11 år før denne grensen er nådd.

Google-arket er konfigurert som følger.

Lag et Google -ark med to ark.

Ark 1: Data

Dataarket trenger 4 kolonner, dvs. dato/klokkeslett, temperatur, fuktighet, trykk (kolonner A til D). Formater kolonnene passende f.eks. Kolonne A skal være "Dato tid" slik at dato og klokkeslett vises i cellene.

Ark 2: Dashboard

Lag dashbordarket i henhold til de vedlagte bildene, og skriv inn formlene som vist nedenfor:

  • B2: = counta (Data! B: B) -1
  • B3: = B1+TIMEVALUE (CONCATENATE ("00:", Text (G7, "0")))
  • B6: = spørring (Data! A2: D, "Velg B -rekkefølge etter A desc limit 1")
  • C6: = spørring (Data! A2: D, "Velg C -rekkefølge etter A desc limit 1")
  • D6: = spørring (Data! A2: D, "Velg D -rekkefølge med A desc limit 1")
  • B8: = forespørsel (Data! A2: D, "Velg en ordre etter B desc limit 1")
  • C8: = spørring (Data! A2: D, "Velg en ordre etter C desc limit 1")
  • D8: = spørring (Data! A2: D, "Velg en ordre etter D desc limit 1")
  • B9: = forespørsel (Data! A2: D, "Velg B -rekkefølge etter B -grense 1")
  • C9: = forespørsel (Data! A2: D, "Velg C rekkefølge etter C desc limit 1")
  • D9: = forespørsel (Data! A2: D, "Velg D -rekkefølge etter D -grense 1")
  • B11: = spørring (Data! A2: D, "Velg A der B ikke er null rekkefølge ved B asc limit 1")
  • C11: = spørring (Data! A2: D, "Velg A der C ikke er null rekkefølge etter C asc -grense 1")
  • D11: = spørring (Data! A2: D, "Velg A der D ikke er null rekkefølge etter D asc limit 1")
  • B12: = spørring (Data! A2: D, "Velg B hvor B ikke er null rekkefølge ved B asc limit 1")
  • C12: = spørring (Data! A2: D, "Velg C der C ikke er null rekkefølge etter C asc -grense 1")
  • D12: = spørring (Data! A2: D, "Velg D der D ikke er null rekkefølge etter D asc limit 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 Regneark kan ha maksimalt 400 000 celler. Dette brukes, sammen med det faktum at hver avlesning bruker 4 celler, for å beregne hvor mye plass som er igjen og når den går tom.

Det kan være mulig å forbedre disse formlene. Jeg gjorde to ting her, dvs. å lære om spørreformelen og deretter skrive en formel på en slik måte at jeg kunne huske logikken bak dem.

Skjermbildet "Chart Editor" viser det grunnleggende oppsettet for temperaturgrafen. De andre grafene ble laget med samme oppsett. Den eneste forskjellen mellom grafene var minimumsverdiene for vertikale akser (finnes under fanen Tilpass). Tilpass -fanen har også andre innstillinger som tilgangsnavn, graftitler, etc.

Vi trenger nå et Google -skript som gjør at vi kan skrive dataene våre ved å ringe en URL.

Opprette skriptet

Noter deg nøkkelen mellom "d /" og " / edit" i nettadressen til Google Sheet. Dette er din -Your-Google-Sheet-Sharing-Key– og vil være nødvendig i koden nedenfor.

Gå deretter til Verktøy> Skriptredigerer og opprett Google App Script, og lim inn koden i den vedlagte GS -filen. Oppdater var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); for å gjenspeile delingsnøkkelen din.

Publiser nå manuset ved å gå til Publiser> Distribuer som webapp.

Kopier gjeldende webapp-URL og lagre den et sted, da du trenger den for å trekke ut GScriptID (-Din-Google-Script-ID–). GScriptID er strengen mellom "s /" og " / exec?". Sørg for at "Alle, til og med anonyme" har tilgang til appen. Under denne prosessen vil du bli bedt om å gi noen tillatelser. Det er viktig at du gir disse.

Merk: Hver gang du endrer koden, må du opprette en "ny" prosjektversjon og publisere den, ellers vil du fortsatt treffe den samme gamle koden.

Du kan nå teste skriptet ved å gå til https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12. Hver gang du oppdaterer denne lenken, bør en ny oppføring legges til i Google -arket.

Dette ovenfor er hentet fra følgende opplæring: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Denne opplæringen er imidlertid utdatert, og derfor har den tilhørende Arduino -koden i den neste delen blitt endret for å imøtekomme de nyeste HTTPSRedirect -bibliotekene.

Arduino -koden

Se vedlagt kode.

Trinn 7: Kode - Blynk og Google Sheets

For å få det beste ut av begge verdener, kan man kombinere koden for både Blynk og Google Sheets.

Se vedlagt kode.

Trinn 8: Avsluttende kommentarer

Sluttkommentarer
Sluttkommentarer
Sluttkommentarer
Sluttkommentarer

Ingen av de ovennevnte er mine ideer, men snarere et prosjekt bygget på andres ideer og arbeid. Jeg har likt å trekke den helt til ett sted. ved hjelp av forskjellige teknologier og verktøy for å lage et morsomt og praktisk prosjekt. Jeg likte spesielt godt å lære å lagre avlesningene mine i et Google -ark. For dette vil jeg takke ElectronicsGuy (Sujay Phadke).

Oppdater

Etter å ha fullført dette prosjektet måtte jeg endre de trådløse innstillingene mine. Jeg jobbet nå på en annen datamaskin. Etter å ha lastet opp endringene, sluttet prosjektet å fungere. Etter litt feilsøking konkluderte jeg med at deepsleep -funksjonen mislyktes. Jeg tok prosjektet hjem og lastet det opp der (ved hjelp av samme kode) og det fungerte. Jeg har derfor konkludert med at noe må ha endret seg på bibliotekene som jeg la til. Jeg har derfor knyttet bibliotekene som for øyeblikket er på datamaskinen min til denne delen; bare hvis noen andre skulle støte på dette problemet.

Anbefalt: