Tartalomjegyzék:

JAWS: Csak egy másik meteorológiai állomás: 6 lépés
JAWS: Csak egy másik meteorológiai állomás: 6 lépés

Videó: JAWS: Csak egy másik meteorológiai állomás: 6 lépés

Videó: JAWS: Csak egy másik meteorológiai állomás: 6 lépés
Videó: REVAN - THE COMPLETE STORY 2024, November
Anonim
JAWS: Készen állunk a dolgainkra
JAWS: Készen állunk a dolgainkra
JAWS: Készen állunk a dolgainkra
JAWS: Készen állunk a dolgainkra
JAWS: Felkészítjük dolgainkat
JAWS: Felkészítjük dolgainkat

Egy ilyen JAWS elkészítése nagyon egyszerű.

Megkapja az érzékelőit, összerakja őket a táblákra, és elkezdi használni az érzékelőkhöz tartozó könyvtárakat.

Kezdjük a program beállításával.

Mivel hollandul beszélek (anyanyelvű), minden adat és a használt változók nagy része hollandul van. Tehát most lehetősége van megtanulni egy másik nyelvet …

Mit akarunk a JAWS -től?

Egyszerű: olyan képernyőt szeretnénk nézni, amely megmutatja a tényleges időt, dátumot, efemeridákat (nap fel, le, nap, a nap hossza és a csillagászati dél).

Ezenkívül jó lenne látni a külső és belső hőmérsékletet, a relatív páratartalmat és harmatpontot, valamint a légnyomást.

Hogy megkönnyítsem a dolgokat, a hőmérsékletet fokozattal, a nyomást pedig hPa -val (= mBar) használom. Tehát senkinek sem kell Fahrenheit-ből vagy négyzetenkénti fontból számolnia…

Jelenleg csak ezek az adatok állnak rendelkezésre…

A jövőben hozzáadom a légsebességet, a szélirányt és a csapadékot.

Az ötlet az, hogy lesz egy külső időjárási kunyhóm, és minden adat 2,4 GHz -en keresztül kerül elküldésre a beltéri egységre.

3. lépés: JAWS: Szoftver

JAWS: Szoftver
JAWS: Szoftver

Szoftverünk eléréséhez a legtöbb megtalálható a meglévő könyvtárakban.

A JAWS -ban a következőket használom:

  1. SPI.h: Az Arduino eredeti könyvtára 4 vezetékes protokollhoz. Ezt a TFT pajzshoz használják
  2. Adafruit_GFX.h és MCUfriend_kbv.h: mind a grafika, mind a képernyő. Ezek nagyon megkönnyítik a szöveg írását, vonalak és dobozok rajzolását a TFT-képernyőn.
  3. dht.h: DHT -k esetében: ez a könyvtár használható a DHT11 (a kék) és a DHT22 számára.
  4. Wire.h: az Arduino könyvtár, amely megkönnyíti a soros kommunikációt. Az órához és az SD -kártyához használják.
  5. SD.h: Ismét egy Arduino eredeti, írni és olvasni az SD -kártyáról.
  6. TimeLord.h: ezt használom az idő tartására, a napnyugta vagy a napfelkelte kiszámítására bármely földrajzi helyzetből. Ezenkívül beállította a DST (nyári vagy téli) órát.

Kezdjük az órával.

Az óra kiolvasásakor szüksége van az óra modulban található különböző regiszterekből kapott változókra. Ha nem csak számokat készítünk, akkor a következő sorokat használhatjuk:

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

A TimeLord segítségével ezt az adatot kapjuk a helyemről: (Lokeren, Belgium)

TimeLord Lokeren; a Lokeren. Position beállítása (51.096, 3.99); hosszúság és szélesség

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

Lokeren. DstRules (3, 4, 10, 4, 60); DST 3. hónap, 4. hét - 10. hónap, 4. hét, +60 perc

int jaar = év +2000;

byte sunRise = {0, 0, 12, hónap, hónap, év}; kezdje el a számítást minden nap 00 órától

byte sunSet = {0, 0, 12, hónap, hónap, év}; ugyanaz, mint fent

byte maan = {0, 0, 12, hónap, hónap, év}; ugyanaz, mint fent

úszó fázis;

Innentől kezdődnek a számítások.

fázis = 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];

Ez a példa arra, hogyan számítják ki a dolgokat a TimeLordban. Ezzel a könyvtárral (szép) pontos napnyugta és napfelkelte időpontját kapja.

A végén az egész programot ezzel az utasítással töltöm fel. Elég egyenes.

4. lépés: További szoftverek…

További szoftverek…
További szoftverek…
További szoftverek…
További szoftverek…

További információ a szoftverről…

Három nagy része van a szoftvernek.

1) Nyers adatokat kapunk különböző érzékelőinkből: az óránkból, a DHT -kből és a BMP180 -ból. Ez a mi bevitelünk.

2) Az adatokat le kell fordítanunk (1 és 0) -ra valami értelmesre. Ehhez használjuk könyvtárainkat és változóinkat.

3) El akarjuk olvasni és tárolni az adatainkat. Ez a kimenetünk. Azonnali használathoz megvan az LCD-TFT, későbbi használatra az SD-kártyán tárolt adataink.

A ciklusunkban () sok "GOTO" -t kapunk: ugrunk a különböző könyvtárakba. Adatainkat az egyik érzékelőből nyerjük, megkapjuk és (többnyire) egy lebegő adatváltozóban tároljuk. A változóneveket bölcsen választjuk, nem x vagy y, hanem olyan nevekkel, mint a "tempOutside" vagy a "pressure", vagy ilyesmi. Hogy olvashatóbbak legyenek. OK, ez kissé megnehezíti a változók használatát és memóriaigényesebb.

Itt jön a trükk: amikor változóinkat láthatóvá tesszük a képernyőn, akkor csak a megfelelő helyre kell őket helyezni.

Az itt használt két könyvtár, az Adafruit_GFX.h és az MCUfriend_kbv.h szép munkakészletet tartalmaz a színek, betűtípusok és a vonalak rajzolásának használatához. Először 12864-es képernyőt használtam ezekkel a könyvtárakkal, később ezt módosítottam a tft-képernyőn. Csak annyit kellett tennem, hogy dobozokat, téglalapokat és vonalakat helyezek el, és meg kell győződnöm arról, hogy az adatok a megfelelő helyre kerültek. Ehhez használhatja a setCursor és a tft. Write parancsokat. Könnyű csinálja. A színek változóként is beállíthatók, ezekben a könyvtárakban sok példa található a kiválasztásukra.

Az SD-kártyára íráshoz néhány egyszerű trükkre is szükségünk van.

Például adatainkat az órából külön órák, percek és másodpercek formájában olvassuk le. A hőmérséklet DHT.hőmérséklet és DHTT.hőmérséklet, hogy különbséget tegyen beltéri vagy kültéri között.

Amikor az SD -kártyára akarjuk helyezni őket, egy karakterláncot használunk: minden ciklust üres karakterláncként kezdünk:

variablestring = ""; Ezután feltölthetjük az összes adatunkkal:

variablestring = variable string + hours + ":" + minutes + ":" + seconds. Így a karakterlánc 12:00:00.

Mivel TXT-fájlként írjuk (lásd az SD.h-t az Arduino.cc-en), a következő változókhoz egy lapot adunk hozzá, így könnyebb importálni az Excelbe.

Tehát a következőhöz érkezünk: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

Stb.

5. lépés: Néhány képernyőkép …

Néhány képernyőkép…
Néhány képernyőkép…
Néhány képernyőkép…
Néhány képernyőkép…
Néhány képernyőkép…
Néhány képernyőkép…

Annak érdekében, hogy ne "terheljük túl" az adathalmazainkat, csak 10 percenként írtam adatokat. Naponta 144 bejegyzést ad nekünk. Nem rossz, azt hiszem.

És természetesen folytathatja az adatok feldolgozását: átlagokat készíthet, maximumokat és minimumokat kereshet, összehasonlíthatja az elmúlt évekkel…

A Met irodák általában nappal és éjszaka átlagát adják a hőmérséklethez: a nappali reggel 8 órakor kezdődik és este 8 óráig tart.

A szél, a nyomás és a csapadék esetében az átlagokat éjféltől éjfélig veszik.

6. lépés: Kész?

Befejezett?
Befejezett?
Befejezett?
Befejezett?

Nem igazán … Ahogy mondtam, szeretném végre működtetni a szélsebesség- és szélirány-érzékelőt a JAWS többi részével.

Az általam készített kis konstrukció körülbelül 4 m magas. A meteorológus 10 m magas szélsebességet kap. Kicsit túl magas nekem…

Remélem, élvezte ezt olvasni!

Az Adafruit-GFX magyarázata itt található:

Az MCUFRIEND_kbv.h itt található:

További információ a BMP 120-ról (ugyanaz, mint a BMP085):

A DHT22 -ről:

Ajánlott: