Innehållsförteckning:

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

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

Video: Yet Another Weather Station (Y.A.W.S.): 18 steg (med bilder)
Video: CAMPI FLEGREI: ITALY'S SUPERVOLCANO PT4: ERUPTION SIMULATION IN PRESENT DAY 2024, Juli
Anonim
Ännu en väderstation (Y. A. W. S.)
Ännu en väderstation (Y. A. W. S.)

Detta projekt är min uppfattning om den alltid populära väderstationen. Min är baserad på en ESP8266, en.96”OLED -skärm och en BME280 miljösensormatris. Väderstationer verkar vara ett mycket populärt projekt. Mine skiljer sig från de andra genom att använda en BME280 sensor array istället för den populära DHT22 temperatur- och fuktighetssensorn. BME280 har en temperatur-, luftfuktighets- och lufttryckssensor. Det använder också I2C -gränssnittet..96”OLED -skärmen som används är också I2C. Den kan köpas som antingen I2C eller SPI eller båda. Jag gick med I2C -versionen för att förenkla kabeldragningen. Med både OLED -skärmen och BME280 med I2C och 3.3V var det väldigt enkelt att göra en ‘Y’ -kabel för att ansluta båda enheterna till ESP8266. När jag utvecklade detta projekt stötte jag på flera väderstationsprojekt på Internet som använder ESP8266, samma OLED -skärm och BME280. Så detta är inte en originalidé, men det är en originalimplementering.

BME280 tillhandahåller inre miljödata. Utanför väderinformation hämtas från OpenWeatherMap.org. Du måste registrera dig med OpenWeatherMap.org för att få en nyckel för att komma åt väderdata. De erbjuder en gratis tjänst, vilket är vad jag använde. Se steget Hur man får en OpenWeatherMap -nyckel för instruktioner om hur man skaffar en nyckel.

En NTP-tidsserver används för att få tid på dagen och i veckodagen.

Väder, tid och miljödata visas på OLED -displayen. Varje information har sin egen formaterade skärm. Skärmarna visas i fem sekunder innan du byter till en annan. OpenWeatherMap.org öppnas var femtonde minut för att uppdatera väderinformationen. BME280 läses ungefär var femtiofem sekund. Teckensnittet som används på varje skärm justeras automatiskt för att visa all information med största möjliga teckensnitt.

ESP8266 är också konfigurerad för att vara en webbserver. All väderinformation kan nås med en webbläsare från din telefon, surfplatta. En av skärmarna som visas visar webbserverns IP -adress.

ESP8266 finns i en mängd olika former och storlekar. Jag väljer en GEEKCREIT DoIt ESP12E Dev Kit V2. Den här är helt kompatibel med NodeMCU -standarden för fristående ESP8266 -moduler. Den har en integrerad 3.3V regulator, en CH340 som USB-till-seriell brygga och NodeMCU auto-reset-kretsen. Du är fri att använda vilken ESP8266-12-modul som helst. Tänk bara på att du kan behöva lägga till en 3.3V regulator eller andra kretsar för att programmera den. Jag byggde också en med ett Witty Cloud ESP8266. Det tillät mig att packa allt i en 1,5 tums kub. Det nedre USB -bryggkortet kopplas bort efter programmering. Jag lade till en rätvinklig huvudstift till 3.3V -hålet på Witty -brädet. Selen gjordes med två skal med fyra stift, ett skal med två stift och två skal med en stift.

På bilden ovan är kortet som ESP8266 -modulen är anslutet till ett kretskort som jag utvecklade som ett brytkort för ESP8266 och ESP32. Den accepterar de NodeMCU -kompatibla ESP8266 -korten med smal kropp, The Witty Cloud ESP8266 -kortet eller ett ESP32 -kort från GEEKCREIT. Alla tillgängliga GPIO -stift bryts ut till rubriker för enkel åtkomst. Jag har upptäckt att de flesta utvecklingsbrädor aldrig har tillräckligt med ström- och markstift. Varje gång du vill fästa något behöver du minst en marknål och oftast en nål för att driva enheten. Varje rad med GPIO -stift åtföljs av 3,3V strömstift och ett jordat stift. Jag använder samma layout som First Robotics använder, kraft i mitten. Jag gillar den här layouten för om du kopplar in något bakåt släpper du inte den magiska röken. Kortet har ett par tillbehör, en IR-sensor, en tryckknappsbrytare och en trefärgad LED. Jumpers kan användas för att ansluta till någon av dessa funktioner. Om du är intresserad av någon av dessa ESPxx breakout boards, kontakta mig.

Steg 1: Vad du behöver:

Vad du kommer att behöva
Vad du kommer att behöva
Vad du kommer att behöva
Vad du kommer att behöva
Vad du kommer att behöva
Vad du kommer att behöva

1 - BME280 I2C Temperatur-, fukt- och trycksensorkort

Jag köpte min på Ebay från Kina för cirka 1,25 dollar med gratis frakt. Finns även hos Adafruit eller Sparkfun

1 -.96”, 128x64, I2C OLED -skärm med SSD1306 -drivrutin

Jag köpte min på Ebay från Kina för cirka $ 4,00. Min är vit. Du kan hitta blått och vitt med ett gult område ovanpå. Vissa säljs som SPI och I2C. Du kan behöva flytta några motstånd för att välja I2C -drift. Den viktiga delen är att den använder SD1306 -drivrutinschipet. Finns även hos Adafruit.

1-NodeMCU ESP8266-12 med CH340

Du kan använda vilken ESP8266-12-modul du vill. Jag föredrar de med CH340 USB-till-seriell brygga. Det var utslag av falska FTDI och SI bridge chips för några år sedan så jag litar inte längre på något annat än CH340.

2 - DuPont 4 -stifts, 0,1 tum (2,54 mm) tonhöjdsskal

2 - DuPont 2 -stifts, 0,1 tum (2,54 mm) pitchskal

12-DuPont hona-crimps för 22-28 awg tråd

Jag får min på Ebay. Du kan också använda Molex eller vilket märke du vill. Pressade stift eller IDC Valet är ditt. Var noga med att du köper rätt stift för dina skal. De är inte mix och match. Du kan också bara löda trådarna på brädorna och eliminera kontakterna. Om du använder de krympade stiften behöver du en press. Försök inte att krympa med en tång. Det fungerar inte.

1 - 5V, 1A minimum väggaggregat.

Dessa är billiga och finns på Ebay. Skaffa en med en mikro -USB -kontakt eller vad som helst som passar ditt ESP8266 -kort.

Du behöver också åtta bitar 22-28 awg-tråd för att ansluta allt. Eller så kan du bara koppla det hela till en bit perfbräda. Det är upp till dig.

Jag har inkluderat en bild av vad som användes för att bygga väderstationen med ett Witty Cloud ESP8266. En bild beskriver var man ska lägga till en rätvinklad huvudstift till pickupen 3.3V. En av de två stiftskalarna ersätts av två en -stifts skal. Jord- och 3.3V -ledningar stoppas i enstiftskålarna.

Följ den här länken för att hämta källkodfilerna från GitHub -förvaret; ESP8266-Weather-Station. Zip -mappen eller den klonade mappen kommer att ha en WeatherStation -mapp som innehåller WeatherStation.ino och BME280.h. Det här är källkodfilerna. Det finns också flera pdf -filer. PDF -filerna har ungefär samma information som denna instruerbara.

Steg 2: Verktyg:

Verktyg
Verktyg
Verktyg
Verktyg

Efter att ha provat många märken av crimpers, fann jag att den japanska ingenjören PA-21 eller PA-09 fungerar bäst för DuPont hane och hona. Den är tillgänglig på Ebay eller Amazon. Antingen fungerar för DuPont -stiften. PA-09 kommer också att göra stiften för JST-kontakterna som vanligtvis används på LiPo-batterier. Här är en länk till en video om hur du använder Engineer -pressarna med DuPont -crimps; Hur man använder PA-21 Crimpers

Instructables hade nyligen en bra handledning om hur man använder Weierli Tools SN-28B pressare med DuPont-stift och skal. Du kan se den här; Gör en bra Dupont Pin-Crimp VARJE gång!

Steg 3: Gör selen:

Gör selen
Gör selen
Gör selen
Gör selen

Ledningsnätet är nyckeln till detta projekt. Det är en grundläggande Y -kabel med fyra ledare. Ovan är en bild på selen jag gjorde. OLED -skärmen och BME280 -sensoruppsättningen har samma pinout. Detta innebär att de två fyra stifts skalen är identiska efter att de krympade trådarna har satts in. Jag gjorde min sele med de dubbla krympade trådarna som gick in i de två stiftskålarna som fästs på ESP8266 -kortet. Du kan istället välja att stoppa de dubbla krympade trådarna i en av de fyra stiftskalarna, vilket gör det som en daisy chain -anslutning. Antingen kommer att fungera.

  1. Klipp alla dina ledningar i längd. Jag gillar att använda olika färger för varje tråd; röd för 3.3V, svart för mark, gul för SCL och grön för SDA.
  2. Ta bort ena änden av varje tråd ca 0,1 tum.
  3. Vrid ihop trådarna och lägg till en honkrympning.
  4. När alla trådar har en krympning i ena änden, ta bort alla trådar ca 0,2 tum.
  5. Vrid ihop trådarna i två trådar av samma färg.
  6. När den är vriden, trimma till cirka 0,1 tum och lägg till en honkrympning.
  7. När alla trådpar är krympade är det dags att sätta in de krympade ändarna i skalen.
  8. De två fyra stifts skalen är fyllda, från vänster till höger, med rött, svart, gult, grönt eller 3.3V, Gnd, SCL, SDA.
  9. En av de två stiftskalarna får de röda och svarta trådarna.
  10. Det andra tvåpinneskalet får de gula och gröna trådarna.

Steg 4: Tips:

Dricks
Dricks
Dricks
Dricks
Dricks
Dricks

Jag upptäckte att när jag använder 28 awg -tråd med crimpstiften tenderar de att falla av. Vad jag gör för att förhindra detta är att ta bort änden av tråden dubbelt så länge som normalt. Vrid de exponerade trådarna ihop. Vik sedan den tvinnade tråden för att fördubbla tjockleken. Nu när jag krymper den är tråden tillräckligt tjock för att hålla tätt.

Steg 5: Anslut allt tillsammans:

Anslut allt tillsammans
Anslut allt tillsammans
Anslut allt tillsammans
Anslut allt tillsammans
Anslut allt tillsammans
Anslut allt tillsammans
  1. Anslut de fyra stiftskalarna till OLED -skärmen och BME280 -korten.
  2. Rikta in den röda tråden med Vcc- och 3V3 -stiften.
  3. Anslut det tvåpinniga röda/svarta skalet till ett par 3V3 (3.3V) och GND -stift på ESP8266 -kortet. Det finns tre platser på tavlan där 3V3- och GND -stift är anmärkningsvärda. Undvik Vin (5V) och GND -stiften eftersom dessa släpper ut den magiska röken från dina OLED- och BME280 -kort. Se till att den röda tråden är ansluten till 3V3 -stiftet.
  4. Anslut det gul/gröna tvåpinniga skalet till D1 och D2 på ESP8266 -kortet. Den gula tråden (SCL) ska vara på D1.

Dubbelkolla dina anslutningar. Om allt ser bra ut är du redo att slå på ESP8266 -kortet.

Steg 6: Så här får du en OpenWeatherMap -nyckel

Så här får du en OpenWeatherMap -nyckel
Så här får du en OpenWeatherMap -nyckel

Du behöver en API -nyckel för att komma åt OpenWeatherMap.org -webbplatsen för att få aktuell väderinformation. De närmaste stegen beskriver hur du registrerar dig med OpenWeatherMap.org och får en API -nyckel.

Följ den här länken till OpenWeatherMap.org.

Klicka på API nära mitten av toppen av webbsidan.

Steg 7: Så här får du en OpenWeatherMap -nyckel, prenumerera

Så här får du en OpenWeatherMap -nyckel, prenumerera
Så här får du en OpenWeatherMap -nyckel, prenumerera

Klicka på knappen Prenumerera under Aktuella väderdata till vänster.

Steg 8: Hur man får en OpenWeatherMap -nyckel, Skaffar API -nyckel

Hur man får en OpenWeatherMap -nyckel, Skaffar API -nyckel
Hur man får en OpenWeatherMap -nyckel, Skaffar API -nyckel

Klicka på Get APIkey och starta i den gratis kolumnen.

Steg 9: Så här får du en OpenWeatherMap -nyckel, registrering

Hur man får en OpenWeatherMap -nyckel, registrering
Hur man får en OpenWeatherMap -nyckel, registrering

Klicka på knappen Registrera under Hur man får API -nyckel (APPID).

Steg 10: Så här får du en OpenWeatherMap -nyckel, skapa konto

Så här får du en OpenWeatherMap -nyckel, skapa konto
Så här får du en OpenWeatherMap -nyckel, skapa konto

Fyll i alla fält. Markera kryssrutan Jag godkänner användarvillkoren och sekretesspolicyn när du är klar. Klicka sedan på knappen Skapa konto.

Kontrollera din e -post för ett meddelande från OpenWeatherMap.org. E -postmeddelandet innehåller din API -nyckel. Du måste kopiera API -nyckeln till källkoden för väderstationen för att få det aktuella vädret.

Gratis tjänsten OpenWeatherMap.org har vissa begränsningar. Det främsta är att du inte kan komma åt det oftare än en gång var tionde minut. Detta borde inte vara ett problem eftersom vädret inte förändras så snabbt. De andra begränsningarna har att göra med vilken information som är tillgänglig. Alla betalda prenumerationer kommer att ge mer detaljerad väderinformation.

Steg 11: Konfigurera Arduino IDE:

Ställ in Arduino IDE
Ställ in Arduino IDE

Programutveckling gjordes med Arduino IDE Version 1.8.0. Du kan ladda ner den senaste Arduino IDE här; Arduino IDE. Arduinos webbplats har utmärkta anvisningar om hur man installerar och använder IDE. Stöd för ESP8266 kan installeras i Arduino IDE genom att följa instruktionerna från denna länk: ESP8266 Addon to Arduino. Klicka på knappen "Klona eller ladda ner" på webbsidan och välj "Ladda ner zip". ReadMe.md -filen har anvisningar om hur du lägger till stödet ESP8266 till Arduino IDE. Det är en vanlig textfil som du kan öppna med valfri textredigerare.

ESP8266-kort finns i alla storlekar, former och använder olika USB-till-seriella bryggchips. Jag föredrar brädorna som använder CH340 bridge chip. För några år sedan tröttnade FTDI, SI och andra på billiga kloner som påstod att de var deras delar. Chiptillverkarna ändrade sin förarkod till att bara fungera med sina egna äkta delar. Detta resulterade i mycket frustration när människor upptäckte att USB-till-seriella broar inte längre fungerade. Nu för tiden håller jag mig bara till de CH340-baserade USB-till-seriella broarna för att undvika att köpa brädor som kanske fungerar eller inte fungerar. I vilket fall som helst måste du hitta och installera rätt drivrutin för det bridge -chip som används på ditt kort. Detta är en länk till den officiella webbplatsen för CH340 -drivrutinerna. CH341SER_EXE.

ESP8266 har ingen dedikerad I2C -hårdvara. Alla I2C-drivrutiner för ESP8266 är baserade på bit-banging. Ett av de bättre ESP8266 I2C -biblioteken är brzo_I2C -biblioteket. Det var skrivet på monteringsspråk för ESP8266 för att göra det så snabbt som möjligt. OLED -displaybiblioteket jag använder använder brzo_I2C -biblioteket. Jag lade till kod för att komma åt BME280 sensor array med hjälp av brzo_I2C biblioteket.

Du kan hämta OLED-biblioteket här: ESP8288-OLED-SSD1306 Library.

Du kan få brzo_I2C -biblioteket här: Brzo_I2C -biblioteket.

Båda biblioteken måste installeras i din Arduino IDE. Arduinos webbplats har anvisningar om hur du installerar zip -bibliotek i IDE här: Så här installerar du zip -bibliotek.

Tips: När du har installerat ESP8266-kortpaketet och biblioteken stänger du Arduino IDE och öppnar det igen. Detta kommer att säkerställa att ESP8266 -kort och -bibliotek kommer att dyka upp i IDE.

Steg 12: Välj din styrelse:

Välj din styrelse
Välj din styrelse

Öppna Arduino IDE. Om du inte har gjort det ännu, installera ESP8266 -tillägget, brzo_i2c -biblioteket och OLED -drivrutinsbiblioteket.

Klicka på "Verktyg" i den övre menyraden. Rulla ner rullgardinsmenyn där det står "Board:". Skjut över till rullgardinsmenyn "Board Manager" och rulla ner till; "NodeMCU 1.0 (ESP-12E-modul)". Klicka på den för att välja den. Lämna alla andra inställningar till standardvärdet.

Steg 13: Välj seriell port:

Välj serieporten
Välj serieporten

Klicka på "Verktyg" i den övre menyraden. Rulla ner rullgardinsmenyn där det står "Port". Välj den port som är lämplig för din dator. Om din port inte dyker upp är antingen ditt kort inte inkopplat eller så har du inte laddat drivrutinen för ditt bridgechip eller så var ditt kort inte anslutet när du öppnade Arduino IDE. Enkel fix är att stänga Arduino IDE, koppla in ditt kort, ladda eventuella saknade drivrutiner och öppna sedan Arduino IDE igen.

Steg 14: WeatherStation.ino

Du kan antingen använda nedladdningsknapparna ovan eller följa denna länk till GitHub för att få källkoden; ESP8266-Weather-Station.

Filerna WeatherStation.ino och BME280.h måste finnas i samma mapp. Mappnamnet måste matcha namnet på.ino -filen (utan.ino -tillägget). Detta är ett Arduino -krav.

Steg 15: Redigera WeatherStation.ino

Klicka på "File" i den övre menyraden. Klicka på "Öppna". I dialogrutan Öppna fil hittar du WeatherStation -mappen och väljer den. Du bör se två flikar, en för WeatherStation och en för BME280.h. Om du inte har båda flikarna öppnade du fel mapp eller laddade du inte ner båda filerna eller sparade dem inte i rätt mapp. Försök igen.

Du måste redigera WeatherStation.ino -filen för att lägga till SSID och lösenord för ditt WiFi -nätverk. titta runt rad 62 för följande;

// lägg SSID och lösenord för ditt WiFi -nätverk här

const char* ssid = "yourssid"; const char* password = "lösenord";

Ersätt "yourssid" med SSID för ditt WiFi -nätverk.

Ersätt "lösenord" med lösenordet för ditt WiFi -nätverk.

Du måste också lägga till din OpenWeatherMap -nyckel och postnummer där du bor. Titta runt rad 66 för följande;

// lägg din OpenWeatherMap.com -nyckel och postnummer här

const char* owmkey = "din nyckel"; const char* owmzip = "yourzip, land";

Ersätt "din nyckel" med nyckeln från OpenWeatherMap.org.

Ersätt "ditt postnummer, land" med ditt postnummer och land. Ditt postnummer ska följas av ett komma och ditt land ("10001, oss").

Därefter måste du ställa in din tidszon och aktivera/inaktivera sommartid (DST). Titta runt rad 85 för följande;

// Återställd rå tid är i sekunder sedan 1970. Justera för tidszoner subtrahera

// antalet sekunders skillnad för din tidszon. Negativt värde kommer // subtrahera tid, positivt värde lägger till tid #definiera TZ_EASTERN -18000 // antal sekunder på fem timmar #definiera TZ_CENTRAL -14400 // antal sekunder på fyra timmar #definiera TZ_MOUTAIN -10800 // antal sekunder i tre timmar #define TZ_PACIFIC -7200 // antal sekunder på två timmar

// Justera tiden för din tidszon genom att ändra TZ_EASTERN till ett av de andra värdena.

#define TIMEZONE TZ_EASTERN // ändra detta till din tidszon

Det finns en grupp #define -satser som definierar tidsförskjutningen för olika tidszoner. Om din tidszon är där, ersätt "TZ_EASTERN" i definitionen "TIMEZONE". Om din tidszon inte är listad måste du skapa en. NTP -servern ger tid som Greenwich Mean Time. Du måste antingen lägga till eller subtrahera ett antal timmar (i sekunder) för att komma fram till din lokala tid. Kopiera bara en av "#define TZ_XXX" -uttrycken och ändra sedan namn och antal sekunder. Ändra sedan "TZ_EASTERN" till din nya tidszon.

Du måste också bestämma dig för att använda sommartid eller inte. För att inaktivera sommartid, ersätt "1" med ett "0" på följande rad;

#define DST 1 // ställs in på 0 för att inaktivera sommartid

När den är aktiverad kommer DST automatiskt att gå framåt eller fördröja tiden med en timme när så är lämpligt.

Steg 16: Ladda upp koden till din ESP8266

Ladda upp koden till din ESP8266
Ladda upp koden till din ESP8266

Klicka på den cirkulära högerpilen som ligger precis under "Redigera" i den övre menyraden. Detta kommer att sammanställa koden och ladda upp den till ditt kort. Om allt kompileras och laddas upp korrekt, efter några sekunder, ska OLED -displayen tändas och det anslutande meddelandet ska visas.

Steg 17: Så här visar du väderdatas webbplats

Hur man visar väderdatas webbplats
Hur man visar väderdatas webbplats

Bilden ovan visar webbsidan som tillhandahålls av väderstationen. Du kan komma åt den med din dator, telefon eller surfplatta. Öppna bara en webbläsare och skriv in IP -adressen för väderstationen som URL. Väderstationens IP -adress visas på en av väderstationens skärmar. Klicka på Uppdatera sida för att uppdatera informationen.

Steg 18: Grattis, du är klar

Nu räcker det. Du bör nu ha en fungerande väderstation. Ditt nästa steg kan vara att designa och skapa ett fodral för din väderstation. Eller kanske du vill lägga till några fler skärmar för att visa vindkylning, daggpunkt, soluppgångs- eller solnedgångstider eller en graf över barometriska tryckförändringar eller förutsäga vädret med hjälp av barometertryck. Ha kul och njut.

Rekommenderad: