Innholdsfortegnelse:

Yet Another Weather Station (Y.A.W.S.): 18 trinn (med bilder)
Yet Another Weather Station (Y.A.W.S.): 18 trinn (med bilder)

Video: Yet Another Weather Station (Y.A.W.S.): 18 trinn (med bilder)

Video: Yet Another Weather Station (Y.A.W.S.): 18 trinn (med bilder)
Video: CAMPI FLEGREI: ITALY'S SUPERVOLCANO PT4: ERUPTION SIMULATION IN PRESENT DAY 2024, Juli
Anonim
Yet Another Weather Station (Y. A. W. S.)
Yet Another Weather Station (Y. A. W. S.)

Dette prosjektet er min oppfatning av den alltid populære værstasjonen. Min er basert på en ESP8266, en.96”OLED -skjerm og en BME280 -miljøsensorserie. Værstasjoner ser ut til å være et veldig populært prosjekt. Mine skiller seg fra de andre ved å bruke et BME280 -sensorarray i stedet for den populære DHT22 -temperatur- og fuktighetssensoren. BME280 har en temperatur-, fuktighets- og lufttrykssensor. Den bruker også I2C -grensesnittet..96”OLED -skjermen som brukes er også I2C. Den kan kjøpes som enten I2C eller SPI eller begge deler. Jeg gikk med I2C -versjonen for å forenkle ledningene. Med både OLED -skjermen og BME280 ved bruk av I2C og 3.3V var det veldig enkelt å lage en ‘Y’ -kabel for å koble begge enhetene til ESP8266. Mens jeg utviklet dette prosjektet, kom jeg over flere værstasjonsprosjekter på Internett som bruker ESP8266, den samme OLED -skjermen og BME280. Så dette er ikke en original idé, men det er en original implementering.

BME280 gir innsidemiljødata. Utenfor værinformasjon hentes fra OpenWeatherMap.org. Du må registrere deg hos OpenWeatherMap.org for å få en nøkkel for å få tilgang til værdataene. De tilbyr en gratis tjeneste, som er det jeg brukte. Se trinnet Hvordan få en OpenWeatherMap -nøkkel for instruksjoner om hvordan du får tak i en nøkkel.

En NTP-tidsserver brukes til å få tid på dagen og ukedagen.

Vær-, klokkeslett- og miljødata vises på OLED -skjermen. Hver informasjon har sin egen formaterte skjerm. Skjermene vises i fem sekunder før du bytter til en annen. OpenWeatherMap.org åpnes hvert femtende minutt for å oppdatere værinformasjonen. BME280 leses omtrent hvert femtifem sekund. Skrifttypen som brukes på hver skjerm, justeres automatisk for å vise all informasjon i størst mulig skrift.

ESP8266 er også konfigurert til å være en webserver. All værinformasjon kan nås ved hjelp av en nettleser fra telefonen, nettbrettet. En av skjermene som vises viser IP -adressen til webserveren.

ESP8266 kommer i en rekke former og størrelser. Jeg velger et GEEKCREIT DoIt ESP12E Dev Kit V2. Denne er fullt kompatibel med NodeMCU 'standard' for frittstående ESP8266 -moduler. Den har en integrert 3.3V regulator, en CH340 som USB-til-serie bro og NodeMCU automatisk tilbakestillingskrets. Du står fritt til å bruke alle ESP8266-12-moduler du har. Bare vær oppmerksom på at du kanskje må legge til en 3.3V regulator eller andre kretser for å programmere den. Jeg bygde også en ved hjelp av en Witty Cloud ESP8266. Det tillot meg å pakke alt i en 1,5 tommers terning. Det nedre USB -brokortet kobles fra etter programmering. Jeg la til en rettvinklet headerpinne til 3.3V -hullet på Witty -brettet. Seletøyet ble laget med to fire -pins skall, ett to -pins skall og to ett -pins skall.

På bildet ovenfor er kortet som ESP8266 -modulen er koblet til, et kretskort som jeg utviklet som et breakout -kort for ESP8266 og ESP32. Den godtar NodeMCU -kompatible ESP8266 -kort med smal kropp, The Witty Cloud ESP8266 -kort eller et ESP32 -kort fra GEEKCREIT. Alle tilgjengelige GPIO -pinner er brutt ut i overskrifter for enkel tilgang. Jeg har funnet ut at de fleste utviklingsbrett aldri har nok strøm- og bakkepinner. Hver gang du vil feste noe, trenger du minst en bakkenål og de fleste ganger en pinne for å drive enheten. Hver rad med GPIO -pinner er ledsaget av en 3.3V strømnål og en jordet pinne. Jeg bruker samme oppsett som First Robotics bruker, strøm i midten. Jeg liker denne oppsettet fordi hvis du kobler noe inn bakover slipper du ikke den magiske røyken. Brettet har et par statister, en IR-sensor, en trykknappbryter og en trefarget LED. Gensere kan brukes til å koble til noen av disse funksjonene. Hvis du er interessert i et av disse ESPxx breakout boards, så kontakt meg.

Trinn 1: Det du trenger:

Hva du trenger
Hva du trenger
Hva du trenger
Hva du trenger
Hva du trenger
Hva du trenger

1 - BME280 I2C Temperatur-, fuktighets- og trykksensorkort

Jeg kjøpte min på Ebay fra Kina for rundt $ 1,25 med gratis frakt. Også tilgjengelig fra Adafruit eller Sparkfun

1 -.96”, 128x64, I2C OLED -skjerm med SSD1306 -driver

Jeg kjøpte min på Ebay fra Kina for rundt $ 4,00. Min er hvit. Du kan finne blått og hvitt med et område med gult på toppen. Noen selges som SPI og I2C. Du må kanskje flytte noen motstander for å velge I2C -drift. Den viktige delen er at den bruker SD1306 -driverbrikken. Også tilgjengelig fra Adafruit.

1-NodeMCU ESP8266-12 med CH340

Du kan bruke hvilken som helst ESP8266-12-modul du ønsker. Jeg foretrekker de med CH340 USB-til-seriell bro. Det var utslett av falske FTDI og SI bridge chips for noen år siden, så jeg stoler ikke lenger på noe annet enn CH340.

2 - DuPont 4 -pins, 0,1 tommer (2,54 mm) pitch -skall

2 - DuPont 2 -pins, 0,1 tommer (2,54 mm) pitch -skall

12-DuPont kvinnelige krymper for 22-28 awg wire

Jeg får min på Ebay. Du kan også bruke Molex eller et hvilket som helst merke du foretrekker. Pressede pins eller IDC Valget er ditt. Vær forsiktig med at du kjøper riktige pinner for skjellene dine. De er ikke bland og match. Du kan også bare lodde ledningene til platene og eliminere kontaktene. Hvis du bruker de krympede pinnene, trenger du en presse. Ikke prøv å krympe med en tang. Det fungerer ikke.

1 - 5V, 1A minimum veggstrømforsyning.

Disse er billige og tilgjengelig på Ebay. Få en med en mikro -USB -kontakt eller hva som helst med ESP8266 -kortet.

Du trenger også åtte stykker 22-28 awg-ledning for å koble alt sammen. Eller du kan bare koble det hele til et stykke perf -brett. Det er opp til deg.

Jeg har tatt med et bilde av det som ble brukt til å bygge værstasjonen ved hjelp av en Witty Cloud ESP8266. Ett bilde beskriver hvor du skal legge til en rettvinklet topptekst til pickupen 3.3V. En av de to pinneskallene erstattes av to enpinneskall. Jord og 3,3V ledninger er proppet inn i de ene pinneskallene.

Følg denne lenken for å få kildekodefilene fra GitHub -depotet; ESP8266-Værstasjon. ZIP -mappen eller den klonede mappen vil ha en WeatherStation -mappe som inneholder WeatherStation.ino og BME280.h. Dette er kildekodefilene. Det er også flere pdf -filer. PDF -filene har omtrent den samme informasjonen som denne instruerbare.

Trinn 2: Verktøy:

Verktøy
Verktøy
Verktøy
Verktøy

Etter å ha prøvd mange merker av crimpers, fant jeg ut at den japanske ingeniøren PA-21 eller PA-09 fungerer best for DuPont mannlige og kvinnelige crimps. Den er tilgjengelig på Ebay eller Amazon. Enten vil fungere for DuPont -pinnene. PA-09 vil også gjøre pinnene for JST-kontaktene som vanligvis brukes på LiPo-batterier. Her er en lenke til en video om hvordan du bruker Engineer crimpers med DuPont crimps; Hvordan bruke PA-21 Crimpers

Instructables hadde nylig en flott opplæring i bruk av Weierli Tools SN-28B pressere med DuPont pins og skall. Du kan se den her; Lag en god Dupont Pin-Crimp HVER GANG!

Trinn 3: Lag selen:

Lag selen
Lag selen
Lag selen
Lag selen

Ledningsnettet er nøkkelen til dette prosjektet. Det er en grunnleggende firetråds Y -kabel. Over er et bilde av selen jeg lagde. OLED -skjermen og BME280 -sensormatrisen har samme pinout. Dette betyr at de to firpinneskallene er identiske etter at de krympede ledningene er satt inn. Jeg lagde selen min med de to krympede ledningene som gikk inn i de to pinneskallene som festes til ESP8266 -kortet. Du kan i stedet velge å stappe de dobbelte krympede ledningene inn i en av de fire pinneskallene, noe som gjør det til en tusenfryd kjedeforbindelse. Enten vil fungere.

  1. Klipp alle ledningene dine i lengde. Jeg liker å bruke forskjellige farger for hver ledning; rød for 3.3V, svart for bakken, gul for SCL og grønn for SDA.
  2. Strip den ene enden av hver ledning ca 0,1 tommer.
  3. Vri trådene sammen og legg til en hunnkrymp.
  4. Når alle ledningene har en krympe i den ene enden, fjerner du alle ledningene omtrent 0,2 tommer.
  5. Vri trådene til to ledninger i samme farge sammen.
  6. Når den er vridd, klipp til ca. 0,1 tommer og legg til en hunnkrymp.
  7. Når alle trådparene er krympet, er det på tide å sette de krympede endene inn i skallene.
  8. De to firepinneskallene er fylt, fra venstre til høyre, med rød, svart, gul, grønn eller 3.3V, Gnd, SCL, SDA.
  9. En av de to pinneskallene får de røde og svarte ledningene.
  10. Det andre topinneskallet får de gule og grønne ledningene.

Trinn 4: Tips:

Tips
Tips
Tips
Tips
Tips
Tips

Jeg fant ut at når jeg bruker 28 awg wire med krympestiftene, har de en tendens til å falle av. Det jeg gjør for å forhindre dette er å fjerne enden av ledningen dobbelt så lenge som normalt. Vri de eksponerte ledningene sammen. Brett deretter den vridde ledningen for å doble tykkelsen. Når jeg krymper den, er tråden tykk nok til å holde godt.

Trinn 5: Koble alt sammen:

Koble alt sammen
Koble alt sammen
Koble alt sammen
Koble alt sammen
Koble alt sammen
Koble alt sammen
  1. Koble de fire pinneskallene til OLED -skjermen og BME280 -kortene.
  2. Juster den røde ledningen med Vcc- og 3V3 -pinnene.
  3. Plugg det to -pins røde/svarte skallet på et par 3V3 (3.3V) og GND -pinner på ESP8266 -kortet. Det er tre steder på brettet hvor 3V3- og GND -pinner er forskjellige. Unngå Vin (5V) og GND -pinnene, da disse frigjør den magiske røyken fra OLED- og BME280 -kortene. Sørg for at den røde ledningen er koblet til 3V3 -pinnen.
  4. Plugg det gule/grønne to -pinners skallet på D1 og D2 på ESP8266 -kortet. Den gule ledningen (SCL) skal stå på D1.

Dobbeltsjekk forbindelsene dine. Hvis alt ser bra ut, er du klar til å slå på ESP8266 -kortet.

Trinn 6: Hvordan få en OpenWeatherMap -nøkkel

Slik får du en OpenWeatherMap -nøkkel
Slik får du en OpenWeatherMap -nøkkel

Du trenger en API -nøkkel for å få tilgang til OpenWeatherMap.org -nettstedet for å få gjeldende værinformasjon. De neste trinnene beskriver hvordan du registrerer deg med OpenWeatherMap.org og får en API -nøkkel.

Følg denne lenken til OpenWeatherMap.org.

Klikk på API nær midten av toppen av websiden.

Trinn 7: Hvordan få en OpenWeatherMap -nøkkel, abonner

Hvordan få en OpenWeatherMap -nøkkel, abonner
Hvordan få en OpenWeatherMap -nøkkel, abonner

Klikk på Abonner -knappen under Gjeldende værdata på venstre side.

Trinn 8: Hvordan få en OpenWeatherMap -nøkkel, Få API -nøkkel

Hvordan få en OpenWeatherMap -nøkkel, Få API -nøkkel
Hvordan få en OpenWeatherMap -nøkkel, Få API -nøkkel

Klikk på Get APIkey og Start i gratis -kolonnen.

Trinn 9: Slik får du en OpenWeatherMap -nøkkel, registrering

Slik får du en OpenWeatherMap -nøkkel, registrering
Slik får du en OpenWeatherMap -nøkkel, registrering

Klikk på Registrering -knappen under Hvordan få API -nøkkel (APPID).

Trinn 10: Hvordan få en OpenWeatherMap -nøkkel, opprett konto

Hvordan få en OpenWeatherMap -nøkkel, opprett konto
Hvordan få en OpenWeatherMap -nøkkel, opprett konto

Fyll ut alle feltene. Når du er ferdig, merker du av for Jeg godtar vilkårene for bruk og personvern. Klikk deretter på Opprett konto -knappen.

Sjekk e -posten din for en melding fra OpenWeatherMap.org. E -posten inneholder API -nøkkelen din. Du må kopiere API -nøkkelen til kildekoden for værstasjonen for å få det gjeldende været.

OpenWeatherMap.org gratis tjeneste har noen begrensninger. Det viktigste er at du ikke får tilgang til det oftere enn en gang hvert tiende minutt. Dette bør ikke være et problem fordi været ikke endrer seg så raskt. De andre begrensningene har å gjøre med hvilken informasjon som er tilgjengelig. Alle betalte abonnementer vil gi mer detaljert værinformasjon.

Trinn 11: Konfigurer Arduino IDE:

Sett opp Arduino IDE
Sett opp Arduino IDE

Programutvikling ble gjort ved hjelp av Arduino IDE versjon 1.8.0. Du kan laste ned den nyeste Arduino IDE her; Arduino IDE. Arduino -nettstedet har gode instruksjoner for hvordan du installerer og bruker IDE. Støtte for ESP8266 kan installeres i Arduino IDE ved å følge instruksjonene fra denne lenken: ESP8266 Addon to Arduino. Klikk på "Klon eller nedlasting" -knappen på nettsiden og velg "Last ned zip". ReadMe.md -filen har instruksjoner for hvordan du legger til ESP8266 -støtten til Arduino IDE. Det er en ren tekstfil som du kan åpne med hvilken som helst tekstredigerer.

ESP8266-kortene kommer i alle størrelser, former og bruker forskjellige USB-til-serielle brobrikker. Jeg foretrekker brettene som bruker CH340 bridge chip. For noen år siden ble FTDI, SI og andre lei av billige kloner som påsto å være deres deler. Chipprodusentene endret driverkoden til å bare fungere med sine egne originale deler. Dette resulterte i mye frustrasjon da folk oppdaget at USB-til-serie-broene ikke lenger fungerte. Nå om dagen holder jeg meg bare til de CH340-baserte USB-til-serie-broene for å unngå å kjøpe brett som kanskje fungerer eller ikke fungerer. Uansett må du finne og installere riktig driver for brobrikken som brukes på brettet ditt. Dette er en lenke til det offisielle nettstedet for CH340 -driverne; CH341SER_EXE.

ESP8266 har ikke dedikert I2C -maskinvare. Alle I2C-drivere for ESP8266 er basert på bit-banging. Et av de bedre ESP8266 I2C -bibliotekene er brzo_I2C -biblioteket. Den ble skrevet på monteringsspråk for ESP8266 for å gjøre den så rask som mulig. OLED -skjermbiblioteket jeg bruker bruker brzo_I2C -biblioteket. Jeg la til kode for å få tilgang til BME280 sensor array ved hjelp av brzo_I2C biblioteket.

Du kan få OLED-biblioteket her: ESP8288-OLED-SSD1306 Library.

Du kan få brzo_I2C -biblioteket her: Brzo_I2C -biblioteket.

Begge bibliotekene må installeres i Arduino IDE. Arduino -nettstedet har instruksjoner om hvordan du installerer zip -biblioteker i IDE her: Slik installerer du zip -biblioteker.

Tips: Etter at du har installert ESP8266-kortpakken og bibliotekene, lukker du Arduino IDE og åpner den igjen. Dette vil sikre at ESP8266 -tavlene og bibliotekene dukker opp i IDE.

Trinn 12: Velg brettet ditt:

Velg ditt styre
Velg ditt styre

Åpne Arduino IDE. Hvis du ikke har gjort det ennå, installerer du ESP8266 -tillegg, brzo_i2c -bibliotek og OLED -driverbibliotek.

Klikk på "Verktøy" på den øverste menylinjen. Rull ned rullegardinmenyen der det står "Board:". Skyv over til rullegardinmenyen "Styreleder" og rull ned til; "NodeMCU 1.0 (ESP-12E Module)". Klikk på den for å velge den. La den andre innstillingen stå på standardverdien.

Trinn 13: Velg serieporten:

Velg serieporten
Velg serieporten

Klikk på "Verktøy" på den øverste menylinjen. Rull ned rullegardinmenyen der det står "Port". Velg porten som passer for datamaskinen din. Hvis porten din ikke dukker opp, er enten brettet ditt ikke plugget inn, eller du har ikke lastet inn driveren for brobrikken, eller så er brettet ikke plugget inn da du åpnet Arduino IDE. Enkel løsning er å lukke Arduino IDE, koble til kortet, last inn eventuelle drivere og åpne Arduino IDE igjen.

Trinn 14: WeatherStation.ino

Du kan enten bruke Last ned -knappene ovenfor eller følge denne lenken til GitHub for å få kildekoden; ESP8266-Værstasjon.

Filene WeatherStation.ino og BME280.h må være i samme mappe. Mappenavnet må samsvare med navnet på.ino -filen (uten filtypen.ino). Dette er et Arduino -krav.

Trinn 15: Rediger WeatherStation.ino

Klikk på "File" på den øverste menylinjen. Klikk på "Åpne". Finn WeatherStation -mappen i dialogboksen Filåpning og velg den. Du bør se to faner, en for WeatherStation og en for BME280.h. Hvis du ikke har begge kategoriene, åpnet du feil mappe, eller du lastet ikke ned begge filene, eller du lagret dem ikke i riktig mappe. Prøv igjen.

Du må redigere WeatherStation.ino -filen for å legge til SSID og passord for WiFi -nettverket. se rundt linje 62 for følgende;

// legg inn SSID og passord for WiFi -nettverket ditt her

const char* ssid = "yourssid"; const char* passord = "passord";

Erstatt "yourssid" med SSID for WiFi -nettverket.

Erstatt "passord" med passord for WiFi -nettverket.

Du må også legge til OpenWeatherMap -nøkkelen og postnummeret der du bor. Se rundt linje 66 for følgende;

// legg din OpenWeatherMap.com -nøkkel og postnummeret her

const char* owmkey = "din nøkkel"; const char* owmzip = "yourzip, land";

Erstatt "din nøkkel" med nøkkelen hentet fra OpenWeatherMap.org.

Erstatt "ditt postnummer, land" med postnummer og land. Postnummeret ditt bør følges av et komma og ditt land ("10001, oss").

Deretter må du angi tidssonen og aktivere/deaktivere sommertid (DST). Se rundt linje 85 for følgende;

// Råtiden som er returnert er i sekunder siden 1970. For å justere for tidssoner trekker du fra

// antall sekunders forskjell for tidssonen din. Negativ verdi vil // trekke fra tid, positiv verdi vil legge til tid #definere TZ_EASTERN -18000 // antall sekunder på fem timer #definere TZ_CENTRAL -14400 // antall sekunder på fire timer #definere TZ_MOUTAIN -10800 // antall sekunder i tre timer #define TZ_PACIFIC -7200 // antall sekunder på to timer

// Juster tiden for tidssonen din ved å endre TZ_EASTERN til en av de andre verdiene.

#define TIMEZONE TZ_EASTERN // endre dette til tidssonen din

Det er en gruppe #define -setninger som definerer tidsforskyvningen for forskjellige tidssoner. Hvis tidssonen din er der, erstatt "TZ_EASTERN" i definisjonen "TIMEZONE". Hvis tidssonen din ikke er oppført, må du opprette en. NTP -serveren gir tid som Greenwich Mean Time. Du må enten legge til eller trekke fra et antall timer (i sekunder) for å komme til din lokale tid. Bare kopier en av "#define TZ_XXX" -uttalelsene, og endre deretter navnet og antall sekunder. Endre deretter "TZ_EASTERN" til din nye tidssone.

Du må også bestemme deg for å bruke sommertid eller ikke. For å deaktivere sommertid, erstatt "1" med "0" på følgende linje;

#define DST 1 // satt til 0 for å deaktivere sommertid

Når den er aktivert, vil DST automatisk gå frem eller forsinke tiden med en time når det er aktuelt.

Trinn 16: Last opp koden til ESP8266

Last opp koden til ESP8266
Last opp koden til ESP8266

Klikk på det sirkulære høyre pilikonet som er like under "Rediger" i den øverste menylinjen. Dette vil kompilere koden og laste den opp til brettet ditt. Hvis alt kompileres og lastes opp som det skal, etter noen sekunder, skal OLED -skjermen lyse og den tilkoblede meldingen vises.

Trinn 17: Slik viser du værdata -nettstedet

Slik viser du værdata -nettstedet
Slik viser du værdata -nettstedet

Bildet ovenfor viser nettsiden som værstasjonen betjener. Du får tilgang til den med PC, telefon eller nettbrett. Bare åpne en nettleser og skriv inn IP -adressen til værstasjonen som URL. IP -adressen til værstasjonen vises på en av skjermene til værstasjonen. Klikk på Oppdater side for å oppdatere informasjonen.

Trinn 18: Gratulerer, du er ferdig

Det er det. Du bør nå ha en fungerende værstasjon. Det neste trinnet ditt kan være å designe og lage et etui for værstasjonen din. Eller kanskje du vil legge til noen flere skjermer for å vise vindkjøling, duggpunkt, soloppgangs- eller solnedgangstider eller en graf over barometriske trykkendringer eller forutsi været ved hjelp av barometrisk trykk. Ha det gøy og nyt.

Anbefalt: