Kazalo:

JAWS: Samo še ena vremenska postaja: 6 korakov
JAWS: Samo še ena vremenska postaja: 6 korakov

Video: JAWS: Samo še ena vremenska postaja: 6 korakov

Video: JAWS: Samo še ena vremenska postaja: 6 korakov
Video: Часть 1. Аудиокнига Герберта Уэллса «Человек-невидимка» (гл. 01–17) 2024, November
Anonim
JAWS: Priprava naših stvari
JAWS: Priprava naših stvari
JAWS: Priprava naših stvari
JAWS: Priprava naših stvari
JAWS: Priprava naših stvari
JAWS: Priprava naših stvari

Izdelavo takšnih JAWS je precej preprosto.

Dobite svoje senzorje, jih vržete skupaj na deske in začnete uporabljati knjižnice, ki so priložene senzorjem.

Začnimo z nastavitvijo programa.

Ker govorim nizozemsko (materni govornik), so vsi podatki in večina spremenljivk, ki jih uporabljam, v nizozemščini. Zdaj se imate priložnost naučiti drugega jezika …

Kaj želimo od JAWS?

Enostavno: želimo si ogledati zaslon, ki prikazuje dejanski čas, datum, efemeride (sonce gor, sonce zahod, dolžina dneva in astronomski poldnevi).

Poleg tega bi bilo lepo videti notranjo in zunanjo temperaturo, relativno vlažnost in rosišče ter zračni tlak.

Za lažje delo uporabljam stopinje za temperaturo in hPa (= mBar) za tlak. Torej nikomur ni treba izračunati nazaj po Fahrenheitu ali funtov na kvadratni odstotek…

Trenutno so na voljo samo ti podatki…

V prihodnosti bom dodal hitrost zraka, smer vetra in padavine.

Ideja je, da bom imel zunanjo vremensko kočo in vsi podatki bodo poslani preko 2,4 GHz v notranjo enoto.

3. korak: JAWS: Programska oprema

JAWS: Programska oprema
JAWS: Programska oprema

Če želite priti do naše programske opreme, lahko večino najdete v obstoječih knjižnicah.

V JAWS uporabljam naslednje:

  1. SPI.h: Izvirna knjižnica iz Arduina za 4 -žični protokol. Uporablja se za TFT-ščit
  2. Adafruit_GFX.h in MCUfriend_kbv.h: oba se uporabljata za grafiko in zaslon. Tako je zelo enostavno pisati besedilo, risati črte in polja na TFT-zaslonu.
  3. dht.h: za naše DHT: to knjižnico lahko uporabite za DHT11 (modra) in DHT22.
  4. Wire.h: knjižnica Arduino za olajšanje serijske komunikacije. Uporablja se za uro in kartico SD.
  5. SD.h: Spet izvirnik Arduino za pisanje in branje s kartice SD.
  6. TimeLord.h: ta uporabljam za merjenje časa, izračun sončnega zahoda ali sončnega vzhoda s katerega koli geografskega položaja. Prav tako je nastavil uro za poletni / zimski čas.

Začnimo z uro.

Ko berete uro, potrebujete spremenljivke, ki jih dobite iz različnih registrov znotraj modula ure. Ko jih naredimo več kot le številke, lahko uporabimo naslednje vrstice:

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

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

n

S TimeLordom dobimo to kot podatke za moje mesto: (Lokeren, Belgija)

TimeLord Lokeren; nastavitev Lokeren. Position (51.096, 3.99); zemljepisna dolžina in zemljepisna širina

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

Lokeren. DstRules (3, 4, 10, 4, 60); DST od 3. meseca, 4. tedna do 10. meseca, 4. tedna, +60 minut

int jaar = leto +2000;

bajta sunRise = {0, 0, 12, dan v mesecu, mesec, leto}; začnite računati vsak dan od 00 ur

bajt sunSet = {0, 0, 12, dan v mesecu, mesec, leto}; Enako kot zgoraj

bajt maan = {0, 0, 12, dan v mesecu, mesec, leto}; Enako kot zgoraj

plavajoča faza;

Od tu naprej se izvedejo izračuni.

faza = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sonRise);

Lokeren. SunSet (sončni set);

Lokeren. DST (sunRise);

Lokeren. DST (sunSet);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minut];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minut];

To je primer, kako se stvari izračunajo v TimeLordu. S to knjižnico dobite (precej) natančne čase sončnega zahoda in vzhoda.

Na koncu bom dal celoten program s tem Instructable. Je precej naravnost.

4. korak: Več programske opreme …

Več programske opreme…
Več programske opreme…
Več programske opreme…
Več programske opreme…

Več o programski opremi…

V programski opremi imamo tri velike dele.

1) Nekaj surovih podatkov dobimo iz različnih senzorjev: iz ure, DHT in BMP180. To je naš vložek.

2) Podatke moramo prevesti v (1 in 0) v nekaj, kar je smiselno. Za to uporabljamo naše knjižnice in spremenljivke.

3) Želimo prebrati in shraniti naše podatke. To je naš rezultat. Za takojšnjo uporabo imamo LCD-TFT, za kasnejšo uporabo pa imamo shranjene podatke na kartici SD.

V naši zanki () dobimo veliko "GOTO": skočimo na različne knjižnice. Podatke dobimo iz enega od senzorjev, jih pridobimo in shranimo v (večinoma) plavajočo podatkovno spremenljivko. Imena spremenljivk izbiramo pametno, ne z x ali y, ampak z imeni, kot sta "tempOutside" ali "pressure" ali podobne stvari. Da bodo lažje berljivi. V redu, to nekoliko oteži uporabo spremenljivk in porabi več pomnilnika.

Tu se pojavi trik: ko naše spremenljivke vidimo na zaslonu, jih preprosto postavimo na pravo mesto.

Dve knjižnici, ki se uporabljata tukaj, Adafruit_GFX.h in MCUfriend_kbv.h, imata lepo nastavljeno delo za uporabo barv, pisav in možnost risanja črt. Najprej sem uporabil zaslon 12864 s temi knjižnicami, kasneje sem to spremenil na zaslonu tft. Vse, kar sem moral storiti, je, da postavim polja, pravokotnike in črte ter poskrbim, da so podatki prišli na pravo mesto. Za to lahko uporabite setCursor in tft. Write kot ukaz. Z lahkoto. Barve lahko nastavite tudi kot spremenljivke, v teh knjižnicah je veliko primerov, kako jih izbrati.

Za pisanje na kartico SD potrebujemo tudi nekaj preprostih trikov.

Na primer, naše podatke iz ure beremo kot ločene ure, minute in sekunde. Temperature so DHT.temperatura in DHTT.temperatura za razlikovanje med notranjim ali zunanjim.

Ko jih želimo postaviti na kartico SD, uporabimo niz: vsako zanko začnemo kot prazen niz:

variablestring = ""; Nato ga lahko napolnimo z vsemi našimi podatki:

variablestring = variablestring + ure + ":" + minute + ":" + sekunde. To daje nizu kot 12:00:00.

Ker ga zapisujemo kot datoteko TXT (glej SD.h na Arduino.cc), za naslednje spremenljivke dodamo zavihek, zato ga je lažje uvoziti v Excel.

Tako smo prišli do: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

In tako naprej.

5. korak: Nekaj posnetkov zaslona …

Nekaj posnetkov zaslona…
Nekaj posnetkov zaslona…
Nekaj posnetkov zaslona…
Nekaj posnetkov zaslona…
Nekaj posnetkov zaslona…
Nekaj posnetkov zaslona…

Da ne bi »preobremenili« svojih podatkovnih nizov, sem podatke zapisal le enkrat na 10 minut. Dajte nam 144 prijav na dan. Mislim, da ni slabo.

In seveda lahko nadaljujete z obdelavo teh podatkov: lahko naredite povprečja, lahko iščete maksimume in minimume, lahko primerjate s preteklimi leti …

Pisarne običajno dobijo povprečje podnevi in ponoči za temperature: podnevi se začnejo ob 8. uri in trajajo do 20. ure.

Za veter, tlak in padavine se povprečja vzamejo od polnoči do polnoči.

6. korak: Končano?

Dokončano?
Dokončano?
Dokončano?
Dokončano?

Ne pravzaprav … Kot sem rekel, bi rad končno pripravil senzor hitrosti vetra in smeri vetra, da deluje z ostalimi JAWS.

Moja majhna konstrukcija je visoka približno 4 m. Meteorologi dosežejo hitrost vetra od 10 m visoko. Malo previsoko zame …

Upam, da ste uživali v branju tega!

Adafruit-GFX je razložen tukaj:

MCUFRIEND_kbv.h najdete tukaj:

Več o BMP 120 (enako kot BMP085):

O DHT22:

Priporočena: