Innholdsfortegnelse:

JAWS: Just Another Weather Station: 6 trinn
JAWS: Just Another Weather Station: 6 trinn

Video: JAWS: Just Another Weather Station: 6 trinn

Video: JAWS: Just Another Weather Station: 6 trinn
Video: I work at the Private Museum for the Rich and Famous. Horror stories. Horror. 2024, November
Anonim
JAWS: Gjør tingene våre klare
JAWS: Gjør tingene våre klare
JAWS: Gjør tingene våre klare
JAWS: Gjør tingene våre klare
JAWS: Gjør tingene våre klare
JAWS: Gjør tingene våre klare

Det er ganske enkelt å lage en slik JAWS.

Du får sensorene dine, du kaster dem sammen på tavler, og du begynner å bruke bibliotekene som følger med sensorene.

La oss starte med oppsettet av programmet.

Siden jeg er nederlandsktalende (morsmål) er alle dataene og mye av variablene jeg bruker på nederlandsk. Så nå har du sjansen til å lære et annet språk …

Hva vil vi ha fra JAWS?

Enkelt: vi vil se på en skjerm som viser oss den faktiske tiden, datoen, efemerider (sol opp, sol ned, lengden på dagen og den astronomiske middagen).

Ved siden av det ville det være fint å se innvendig og utvendig temperatur, den relative fuktigheten og duggpunktet, og lufttrykket.

For å gjøre ting enklere bruker jeg centigrader for temperatur og hPa (= mBar) for trykk. Så ingen trenger å beregne tilbake fra Fahrenheit eller pund per kvadratmeter …

For øyeblikket er bare disse dataene tilgjengelige …

I fremtiden vil jeg legge til Lufthastighet, vindretning og nedbør.

Tanken er at jeg skal ha en værhytte utenfor, og alle dataene blir sendt over 2,4 GHz til innendørsanlegget.

Trinn 3: JAWS: Programvare

JAWS: Programvare
JAWS: Programvare

For å komme til programvaren vår, kan de fleste bli funnet med eksisterende biblioteker.

I JAWS bruker jeg følgende:

  1. SPI.h: Det originale biblioteket fra Arduino for 4 -tråds protokoll. Den brukes til TFT-skjoldet
  2. Adafruit_GFX.h og MCUfriend_kbv.h: begge brukt til grafikk og skjerm. Disse gjør det veldig enkelt å skrive tekst, tegne linjer og bokser på TFT-skjermen.
  3. dht.h: for våre DHT -er: dette biblioteket kan brukes til DHT11 (den blå) og DHT22.
  4. Wire.h: Arduino -biblioteket for å gjøre seriell kommunikasjon enkel. Den brukes til klokken og SD -kortet.
  5. SD.h: Igjen en Arduino -original, for å skrive og lese fra SD -kortet.
  6. TimeLord.h: denne bruker jeg til å holde tid, beregne solnedgang eller soloppgang fra enhver geografisk posisjon. Det satte også klokken for sommertid (sommer eller vinter).

La oss starte med klokken.

Når du leser ut en klokke, trenger du variablene du får fra de forskjellige registerene inne i klokkemodulen. Når vi gjør dem til mer enn bare tall, kan vi bruke følgende linjer:

const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char* måneder = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};

n

Med TimeLord får vi dette som data for mitt sted: (Lokeren, Belgia)

TimeLord Lokeren; sette den opp Lokeren. Position (51.096, 3.99); lengdegrad og breddegrad

Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 minutter

Lokeren. DstRules (3, 4, 10, 4, 60); Sommertid fra 3. måned, 4. uke til 10. måned, 4. uke, +60 minutter

int jaar = år +2000;

byte sunRise = {0, 0, 12, månededag, måned, år}; begynne å beregne hver dag fra 00 timer

byte sunSet = {0, 0, 12, månedsdag, måned, år}; samme som ovenfor

byte maan = {0, 0, 12, månededag, måned, år}; samme som ovenfor

flytefase;

Herfra blir beregningene gjort.

phase = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sunRise);

Lokeren. SunSet (sunSet);

Lokeren. DST (sunRise);

Lokeren. DST (sunSet);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Dette er et eksempel på hvordan ting blir beregnet i TimeLord. Med dette biblioteket får du (ganske) nøyaktige tider med solnedgang og soloppgang.

På slutten legger jeg hele programmet med denne Instructable. Det er ganske rett frem.

Trinn 4: Mer programvare …

Mer programvare …
Mer programvare …
Mer programvare …
Mer programvare …

Mer om programvaren …

Vi har tre store deler i programvaren.

1) Vi får noen rådata fra våre forskjellige sensorer: fra klokken, DHT og BMP180. Det er vårt innspill.

2) Vi må oversette dataene til (1 og 0) til noe som er fornuftig. For dette bruker vi våre biblioteker og variabler.

3) Vi ønsker å lese og lagre dataene våre. Det er vår produksjon. For umiddelbar bruk har vi vår LCD-TFT, for senere bruk har vi lagrede data på SD-kortet.

I loop () får vi mange "GOTO's": vi hopper til de forskjellige bibliotekene. Vi henter dataene våre fra en av sensorene, får dataene og lagrer dem i (for det meste) en flytende datavariabel. Vi velger våre variabelnavn med omhu, ikke med x eller y, men med navn som "tempOutside" eller "press" eller lignende. For å gjøre dem mer lesbare. OK, dette gjør det litt tyngre når det gjelder bruk av variabler og mer minnekrevende.

Her kommer trikset: når vi gjør våre variabler synlige på skjermen, er det bare å plassere dem på riktig posisjon.

De to bibliotekene som brukes her, Adafruit_GFX.h og MCUfriend_kbv.h har et fint arbeidssett for å bruke farger, fonter og evnen til å tegne linjer. I første omgang brukte jeg en 12864-skjerm med disse bibliotekene, senere endret jeg det i tft-skjermen. Alt jeg måtte gjøre, er å plassere esker, rektangler og linjer, og sørge for at dataene kom ut på riktig sted. For det kan du bruke setCursor og tft. Write som kommando. Lett gjør det. Farger kan også angis som variabler. Det er mange eksempler på disse bibliotekene hvordan du velger dem.

For å skrive på SD-kortet trenger vi også noen enkle triks.

For eksempel leser vi dataene våre fra klokken som separate timer, minutter og sekunder. Temperaturene er DHT. Temperatur og DHTT. Temperatur, for å skille mellom innendørs eller utendørs.

Når vi vil sette dem på SD -kortet, bruker vi en streng: Vi starter hver sløyfe som en tom streng:

variablestring = ""; Deretter kan vi fylle den med alle våre data:

variablestring = variablestring + timer + ":" + minutter + ":" + sekunder. Dette gir strengen som 12:00:00.

Siden vi skriver den som en TXT-fil (se SD.h på Arduino.cc), legger vi til en fane for de neste variablene, så det er lettere å importere den i Excel.

Så vi kommer til: variablestring = variablestring + "\ t" + DHT.temperatur + "\ t" + DHTT. Temperatur.

Og så videre.

Trinn 5: Noen skjermbilder …

Noen skjermbilder …
Noen skjermbilder …
Noen skjermbilder …
Noen skjermbilder …
Noen skjermbilder …
Noen skjermbilder …

For å være sikker på at vi ikke "overbelaster" datasettet vårt, skrev jeg data bare hvert 10. minutt. Å gi oss 144 oppføringer per dag. Ikke verst, tror jeg.

Og selvfølgelig kan du fortsette å behandle disse dataene: du kan lage gjennomsnitt, du kan se etter maksima og minima, du kan sammenligne med tidligere år …

Møttekontorer lager vanligvis gjennomsnitt av dag og natt, for temperaturer: dagtid starter kl. 08.00 og går til 20.00.

For vind, trykk og nedbør tas gjennomsnittene fra midnatt til midnatt.

Trinn 6: Ferdig?

Ferdig?
Ferdig?
Ferdig?
Ferdig?

Ikke egentlig … Som jeg sa, vil jeg endelig få vindhastighets- og vindretningssensoren til å fungere med resten av JAWS.

Den lille konstruksjonen jeg lagde er omtrent 4 meter høy. Meteorologen får vindhastighet fra 10 meter høy. Litt for høyt for meg …

Jeg håper du likte å lese dette!

Adafruit-GFX forklares her:

MCUFRIEND_kbv.h finner du her:

Mer om BMP 120 (samme som BMP085):

Om DHT22:

Anbefalt: