Turinys:

JAWS: Tiesiog kita orų stotis: 6 žingsniai
JAWS: Tiesiog kita orų stotis: 6 žingsniai

Video: JAWS: Tiesiog kita orų stotis: 6 žingsniai

Video: JAWS: Tiesiog kita orų stotis: 6 žingsniai
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Lapkritis
Anonim
JAWS: Ruošiame savo daiktus
JAWS: Ruošiame savo daiktus
JAWS: Ruošiame savo daiktus
JAWS: Ruošiame savo daiktus
JAWS: Ruošiame savo daiktus
JAWS: Ruošiame savo daiktus

Padaryti tokį žandikaulį yra gana paprasta.

Jūs gaunate savo jutiklius, sudedate juos ant lentų ir pradedate naudotis bibliotekomis, pateiktomis kartu su jutikliais.

Pradėkime nuo programos sąrankos.

Kadangi aš kalbu olandiškai (gimtoji), visi duomenys ir didžioji dalis mano naudojamų kintamųjų yra olandų kalba. Taigi dabar jūs turite galimybę išmokti kitą kalbą …

Ko mes norime iš JAWS?

Lengva: norime žiūrėti ekraną, kuriame rodomas tikrasis laikas, data, efemeridai (saulė pakilo, saulė nusileido, dienos ilgumas ir astronominis vidurdienis).

Be to, būtų malonu pamatyti vidaus ir išorės temperatūrą, santykinę drėgmę ir rasos tašką bei oro slėgį.

Kad būtų lengviau, aš naudoju temperatūros laipsnius, o slėgiui - hPa (= mBar). Taigi niekas neturi skaičiuoti atgal nuo Farenheito ar svarų už kvadratą …

Šiuo metu yra tik šie duomenys …

Ateityje pridėsiu oro greitį, vėjo kryptį ir kritulius.

Idėja yra ta, kad turėsiu lauko orų namelį ir visi duomenys bus siunčiami į 2,4 GHz dažnį į vidinį įrenginį.

3 žingsnis: JAWS: programinė įranga

JAWS: programinė įranga
JAWS: programinė įranga

Norėdami patekti į mūsų programinę įrangą, daugumą jų galima rasti esamose bibliotekose.

JAWS naudoju šiuos:

  1. SPI.h: originali „Arduino“biblioteka, skirta 4 laidų protokolui. Jis naudojamas TFT skydui
  2. „Adafruit_GFX.h“ir „MCUfriend_kbv.h“: abu naudojami grafikai ir ekranui. Tai leidžia labai lengvai rašyti tekstą, nubrėžti linijas ir langelius TFT ekrane.
  3. dht.h: mūsų DHT: ši biblioteka gali būti naudojama DHT11 (mėlyna) ir DHT22.
  4. Wire.h: „Arduino“biblioteka, skirta palengvinti nuoseklųjį ryšį. Jis naudojamas laikrodžiui ir SD kortelei.
  5. SD.h: vėl „Arduino“originalas, skirtas rašyti ir skaityti iš SD kortelės.
  6. TimeLord.h: šį aš naudoju laikydamas laiką, skaičiuodamas saulėlydį ar saulėtekį iš bet kurios geografinės padėties. Taip pat nustatomas DST (vasaros ar žiemos) laikrodis.

Pradėkime nuo laikrodžio.

Skaitant laikrodį, jums reikia kintamųjų, kuriuos gaunate iš skirtingų registrų laikrodžio modulyje. Kai sudarome daugiau nei tik skaičius, galime naudoti šias eilutes:

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

Su „TimeLord“mes gauname tai kaip duomenis apie mano vietą: (Lokerenas, Belgija)

TimeLord Lokeren; nustatant „Lokeren. Position“(51.096, 3.99); ilgumos ir platumos

„Lokeren. TimeZone“(+1*60); GMT +1 = +1 x 60 minučių

Lokeren. DstRules (3, 4, 10, 4, 60); DST nuo 3 mėnesio, 4 savaitės iki 10 mėnesio, 4 savaitė, +60 minučių

int jaar = metai +2000;

baitas sunRise = {0, 0, 12, mėnuo, mėnuo, metai}; pradėkite skaičiuoti kiekvieną dieną nuo 00 val

baitas sunSet = {0, 0, 12, mėnuo, mėnuo, metai}; tas pats kaip aukščiau

baitas maan = {0, 0, 12, mėnesis, mėnuo, metai}; tas pats kaip aukščiau

plūdės fazė;

Iš čia atliekami skaičiavimai.

fazė = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sunRise);

Lokeren. SunSet (saulėlydis);

Lokeren. DST (saulėtekis);

Lokeren. DST (saulėlydis);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Tai pavyzdys, kaip viskas apskaičiuojama „TimeLord“. Naudodami šią biblioteką gausite (gana) tikslų saulėlydžio ir saulėtekio laiką.

Pabaigoje aš įdėsiu visą programą su šia instrukcija. Tai gana tiesiai.

4 žingsnis: daugiau programinės įrangos …

Daugiau programinės įrangos…
Daugiau programinės įrangos…
Daugiau programinės įrangos…
Daugiau programinės įrangos…

Daugiau apie programinę įrangą…

Programinėje įrangoje turime tris dideles dalis.

1) Mes gauname neapdorotus duomenis iš įvairių jutiklių: iš savo laikrodžio, DHT ir BMP180. Tai mūsų indėlis.

2) Turime išversti duomenis į (1 ir 0) į kažką prasmingo. Tam naudojame savo bibliotekas ir kintamuosius.

3) Mes norime skaityti ir saugoti savo duomenis. Tai yra mūsų produkcija. Jei norite nedelsdami naudoti, mes turime LCD-TFT, kad vėliau naudotume, išsaugotus duomenis SD kortelėje.

Mūsų cikle () gauname daug „GOTO“: pereiname prie skirtingų bibliotekų. Mes gauname duomenis iš vieno iš jutiklių, gauname duomenis ir saugome juos (dažniausiai) plaukiojančiame duomenų kintamajame. Mes protingai pasirenkame savo kintamųjų pavadinimus ne su x ar y, o su tokiais pavadinimais kaip „tempOutside“arba „pressure“ar panašiai. Kad jie būtų lengviau skaitomi. Gerai, tai šiek tiek apsunkina kintamųjų naudojimą ir atima daugiau atminties.

Čia ir yra triukas: kai kintamieji matomi ekrane, jie tiesiog pateikiami tinkamoje vietoje.

Dvi čia naudojamos bibliotekos - „Adafruit_GFX.h“ir „MCUfriend_kbv.h“- turi gražų darbą, kuriame naudojamos spalvos, šriftai ir galimybė nubrėžti linijas. Pirmiausia naudoju 12864 ekraną su šiomis bibliotekomis, vėliau pakeičiau jį tft ekrane. Viskas, ką turėjau padaryti, tai sudėti dėžutes, stačiakampius ir linijas ir įsitikinti, kad duomenys buvo pateikti tinkamoje vietoje. Norėdami tai padaryti, galite naudoti setCursor ir tft. Write kaip komandą. Lengva tai daro. Spalvas taip pat galima nustatyti kaip kintamuosius, tose bibliotekose yra daug pavyzdžių, kaip jas pasirinkti.

Norėdami rašyti SD kortelėje, mums taip pat reikia paprastų gudrybių.

Pavyzdžiui, mes skaitome savo duomenis iš laikrodžio kaip atskiras valandas, minutes ir sekundes. Temperatūra yra DHT.temperatūra ir DHTT.temperatūra, kad būtų galima atskirti patalpų ar lauko temperatūrą.

Kai norime juos įdėti į SD kortelę, naudojame eilutę: kiekvieną ciklą pradedame kaip tuščią eilutę:

variablestring = ""; Tada galime užpildyti visus savo duomenis:

variablestring = variablestring + hours + ":" + minutes + ":" + sekundės. Tai suteikia eilutę kaip 12:00:00.

Kadangi rašome jį kaip TXT failą (žr. SD.h „Arduino.cc“), kitiems kintamiesiems pridedame skirtuką, todėl jį lengviau importuoti „Excel“.

Taigi prieiname prie: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

Ir taip toliau.

5 veiksmas: kai kurios ekrano nuotraukos…

Kai kurios ekrano kopijos…
Kai kurios ekrano kopijos…
Kai kurios ekrano kopijos…
Kai kurios ekrano kopijos…
Kai kurios ekrano kopijos…
Kai kurios ekrano kopijos…

Kad būtume tikri, kad „neperkrauname“savo duomenų rinkinių, duomenis rašiau tik kartą per 10 minučių. Pateikiame 144 įrašus per dieną. Manau, kad nėra blogai.

Ir, žinoma, galite toliau tvarkyti šiuos duomenis: galite sudaryti vidurkius, ieškoti maksimumų ir minimumų, palyginti su praėjusiais metais …

Meto biurai paprastai apskaičiuoja dienos ir nakties temperatūros vidurkius: dieną prasideda 8 val. Ir tęsiasi iki 20 val.

Vėjo, slėgio ir kritulių vidurkiai imami nuo vidurnakčio iki vidurnakčio.

6 žingsnis: baigta?

Baigta?
Baigta?
Baigta?
Baigta?

Tikrai ne … Kaip sakiau, norėčiau pagaliau, kad vėjo greičio ir vėjo krypties jutiklis veiktų su likusiais JAWS.

Mano pagaminta nedidelė konstrukcija stovi apie 4 m aukščio. Meteorologas vėjo greitį pasiekia nuo 10 metrų aukščio. Man truputį per aukšta…

Tikiuosi, kad jums patiko tai skaityti!

„Adafruit-GFX“paaiškinta čia:

MCUFRIEND_kbv.h rasite čia:

Daugiau apie BMP 120 (tas pats kaip BMP085):

Apie DHT22:

Rekomenduojamas: