Cuprins:

FALSURI: Doar o altă stație meteo: 6 pași
FALSURI: Doar o altă stație meteo: 6 pași

Video: FALSURI: Doar o altă stație meteo: 6 pași

Video: FALSURI: Doar o altă stație meteo: 6 pași
Video: 12 lucruri nocive pe care i le faci câinelui tău fără să-ți dai seama 2024, Noiembrie
Anonim
FALĂ: Pregătirea lucrurilor noastre
FALĂ: Pregătirea lucrurilor noastre
FALSURI: Pregătirea lucrurilor noastre
FALSURI: Pregătirea lucrurilor noastre
FALĂ: Pregătirea lucrurilor noastre
FALĂ: Pregătirea lucrurilor noastre

Este destul de simplu să faci un astfel de JAWS.

Îți iei senzorii, îi arunci împreună pe plăci și începi să folosești bibliotecile care vin împreună cu senzorii.

Să începem cu configurarea programului.

Întrucât vorbesc olandeză (vorbitor nativ), toate datele și multe dintre variabilele pe care le folosesc sunt în olandeză. Deci, acum aveți șansa de a învăța o altă limbă …

Ce vrem de la JAWS?

Ușor: vrem să urmărim un ecran care ne arată ora, data, efemeridele reale (soare sus, soare apus, lungimea zilei și amiaza astronomică).

Apoi, ar fi bine să vedem temperatura interioară și exterioară, umiditatea relativă și punctul de rouă și presiunea aerului.

Pentru a ușura lucrurile, folosesc centigradi pentru temperatură și hPa (= mBar) pentru presiune. Deci nimeni nu trebuie să calculeze înapoi din Fahrenheit sau lire sterline pe pătrat …

În acest moment, doar aceste date sunt disponibile …

În viitor, voi adăuga viteza aerului, direcția vântului și precipitațiile.

Ideea este că voi avea o cabană meteorologică exterioară și toate datele vor fi trimise pe unitatea interioară de peste 2,4 GHz.

Pasul 3: JAWS: Software

JAWS: Software
JAWS: Software

Pentru a accesa software-ul nostru, majoritatea pot fi găsite cu bibliotecile existente.

În JAWS le folosesc pe următoarele:

  1. SPI.h: Biblioteca originală de la Arduino pentru protocolul cu 4 fire. Ea este folosită pentru scutul TFT
  2. Adafruit_GFX.h și MCUfriend_kbv.h: ambele utilizate pentru grafică și ecran. Acestea facilitează scrierea textului, desenarea liniilor și a casetelor pe ecranul TFT.
  3. dht.h: pentru DHT-urile noastre: această bibliotecă poate fi utilizată pentru DHT11 (cea albastră) și DHT22.
  4. Wire.h: biblioteca Arduino pentru a facilita comunicarea în serie. Este folosit pentru ceas și cardul SD.
  5. SD.h: Din nou un original Arduino, pentru a scrie și citi de pe cardul SD.
  6. TimeLord.h: acesta îl folosesc pentru a păstra timpul, pentru a calcula apusul soarelui sau răsăritul soarelui din orice poziție geografică. De asemenea, setează ceasul pentru ora de vară (vară sau iarnă).

Să începem cu ceasul.

Când citiți un ceas, aveți nevoie de variabilele pe care le obțineți din diferitele registre din interiorul modulului de ceas. Când le facem mai mult decât numere, putem folosi următoarele rânduri:

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

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

n

Cu TimeLord, obținem acest lucru ca date, pentru locul meu: (Lokeren, Belgia)

TimeLord Lokeren; configurarea Lokeren. Position (51.096, 3.99); longitudine și latitudine

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

Lokeren. DstRules (3, 4, 10, 4, 60); DST de la a 3-a lună, a 4-a săptămână la a 10-a lună, a 4-a săptămână, + 60 de minute

int jaar = anul +2000;

octet sunRise = {0, 0, 12, lună, lună, an}; începe calculul în fiecare zi de la 00 ore

octet sunSet = {0, 0, 12, lună, lună, an}; la fel ca mai sus

octet maan = {0, 0, 12, lună, lună, an}; la fel ca mai sus

faza de plutire;

De aici se fac calculele.

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];

Acesta este exemplul modului în care lucrurile sunt calculate în TimeLord. Cu această bibliotecă, veți obține ore (destul de) precise de apus și răsărit.

La final, voi pune întregul program cu acest instructabil. Este destul de simplu.

Pasul 4: Mai multe programe …

Mai multe programe software …
Mai multe programe software …
Mai multe programe software …
Mai multe programe software …

Mai multe despre software …

Avem trei părți mari în software.

1) Obținem câteva date brute de la diferiții noștri senzori: de la ceasul nostru, DHT-uri și BMP180. Aceasta este opinia noastră.

2) Trebuie să traducem datele în (1 și 0) în ceva care are sens. Pentru aceasta, folosim bibliotecile și variabilele noastre.

3) Vrem să citim și să stocăm datele noastre. Acesta este rezultatul nostru. Pentru utilizare imediată, avem LCD-TFT, pentru o utilizare ulterioară, avem datele salvate pe cardul nostru SD.

În bucla noastră (), obținem o mulțime de „GOTO”: sărim la diferite biblioteci. Obținem datele de la unul dintre senzori, le obținem și le stocăm într-o variabilă de date plutitoare. Ne alegem numele variabilelor cu înțelepciune, nu cu x sau y, ci cu nume precum „tempOutside” sau „pressure” sau altele de genul acesta. Pentru a le face mai lizibile. OK, acest lucru îl face puțin mai greu în ceea ce privește utilizarea variabilelor și consumă mai multă memorie.

Aici vine trucul: atunci când facem variabilele noastre vizibile pe ecran, este doar plasarea lor în poziția corectă.

Cele două biblioteci utilizate aici, Adafruit_GFX.h și MCUfriend_kbv.h au un set de lucru frumos pentru a utiliza culori, fonturi și capacitatea de a desena linii. Într-o primă instanță, am folosit un ecran 12864 cu aceste biblioteci, ulterior l-am schimbat în ecranul tft. Tot ce trebuia să fac este să plasez cutii, dreptunghiuri și linii și să mă asigur că datele au ieșit la locul potrivit. Pentru aceasta, puteți utiliza setCursor și tft. Write ca comandă. Ușor o face. Culorile pot fi setate și ca variabile, există multe exemple în acele biblioteci cum să le alegeți.

Pentru a scrie pe cardul SD, avem nevoie și de câteva trucuri simple.

De exemplu, ne citim datele din ceas ca ore, minute și secunde separate. Temperaturile sunt temperatura DHT și temperatura DHTT, pentru a face diferența între interior sau exterior.

Când vrem să le punem pe cardul SD, folosim un șir: începem fiecare buclă ca un șir gol:

variablestring = ""; Apoi îl putem completa cu toate datele noastre:

variablestring = variablestring + ore + ":" + minute + ":" + secunde. Acest lucru oferă șirul ca 12:00:00.

Deoarece îl scriem ca fișier TXT (consultați SD.h pe Arduino.cc), pentru următoarele variabile adăugăm o filă, deci este mai ușor să îl importăm în Excel.

Așa că ajungem la: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

Si asa mai departe.

Pasul 5: Unele capturi de ecran …

Unele capturi de ecran …
Unele capturi de ecran …
Unele capturi de ecran …
Unele capturi de ecran …
Unele capturi de ecran …
Unele capturi de ecran …

Pentru a fi siguri că nu „supraîncărcăm” seturile noastre de date, am scris date doar o dată la 10 minute. Oferindu-ne 144 de intrări pe zi. Nu este rău, cred.

Și, desigur, puteți continua să prelucrați aceste date: puteți face medii, puteți căuta maxime și minime, puteți compara cu anii trecuți …

Birourile Met fac de obicei medii de zi și noapte, pentru temperaturi: ziua începe la 8 dimineața și merge până la 8 PM.

Pentru vânt, presiune și precipitații, mediile sunt luate de la miezul nopții până la miezul nopții.

Pasul 6: Terminat?

Terminat?
Terminat?
Terminat?
Terminat?

Nu chiar … După cum ți-am spus, aș vrea să obțin în cele din urmă senzorul de viteză și direcție a vântului care lucrează cu restul JAWS.

Construcția mică pe care am făcut-o are o înălțime de aproximativ 4m. Meteorologul obține viteza vântului de la 10m înălțime. Un pic prea sus pentru mine …

Sper că ți-a plăcut să citești asta!

Adafruit-GFX este explicat aici:

MCUFRIEND_kbv.h se găsește aici:

Mai multe despre BMP 120 (la fel ca BMP085):

Despre DHT22:

Recomandat: