Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Je docela jednoduché takový JAWS vyrobit.
Získáte senzory, hodíte je dohromady na desky a začnete používat knihovny, které jsou dodávány se senzory.
Začněme s nastavením programu.
Protože mluvím holandsky (rodilý mluvčí), všechna data a velká část proměnných, které používám, jsou v holandštině. Nyní tedy máte šanci naučit se další jazyk …
Co chceme od JAWS?
Snadné: chceme sledovat obrazovku, která nám ukazuje skutečný čas, datum, efemeridy (slunce, slunce, délka dne a astronomické poledne).
Kromě toho by bylo hezké vidět vnitřní a vnější teplotu, relativní vlhkost a rosný bod a tlak vzduchu.
Aby to bylo jednodušší, používám centigrady pro teplotu a hPa (= mBar) pro tlak. Nikdo tedy nemusí počítat zpět z Fahrenheita nebo liber na čtvereční stopu…
V současné době jsou k dispozici pouze tato data …
V budoucnu přidám rychlost vzduchu, směr větru a srážky.
Myšlenka je taková, že budu mít venkovní boudu a všechna data budou odeslána přes 2,4 GHz do vnitřní jednotky.
Krok 3: JAWS: Software
Abychom se dostali k našemu softwaru, většinu lze najít s existujícími knihovnami.
V JAWS používám následující:
- SPI.h: Originální knihovna od Arduina pro 4vodičový protokol. Používá se pro štít TFT
- Adafruit_GFX.h a MCUfriend_kbv.h: oba použité pro grafiku a obrazovku. Díky tomu je velmi snadné psát text, kreslit čáry a políčka na obrazovku TFT.
- dht.h: pro naše DHT: tuto knihovnu lze použít pro DHT11 (modrá) a DHT22.
- Wire.h: knihovna Arduino pro snadnou sériovou komunikaci. Používá se pro hodiny a kartu SD.
- SD.h: Opět originál Arduina pro zápis a čtení z karty SD.
- TimeLord.h: ten, který používám pro udržení času, výpočet západu slunce nebo východu slunce z jakékoli zeměpisné polohy. Rovněž nastavil hodiny pro letní čas (letní nebo zimní čas).
Začněme s hodinami.
Při čtení hodin potřebujete proměnné, které získáte z různých registrů uvnitř hodinového modulu. Když z nich uděláme více než jen čísla, můžeme použít následující řádky:
const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};
konstantní* měsíce = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};
n
S TimeLordem to získáváme jako data pro mé místo: (Lokeren, Belgie)
TimeLord Lokeren; nastavení Lokeren. Position (51,096, 3,99); zeměpisná délka a šířka
Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 minut
Pravidla Lokeren. DstR (3, 4, 10, 4, 60); DST od 3. měsíce, 4. týdne do 10. měsíce, 4. týden, +60 minut
int jaar = rok +2000;
byte sunRise = {0, 0, 12, měsíc, měsíc, rok}; začněte počítat každý den od 00 hodin
byte sunSet = {0, 0, 12, měsíc, měsíc, rok}; stejné jako výše
byte maan = {0, 0, 12, měsíc, měsíc, rok}; stejné jako výše
plovoucí fáze;
Odtud se provádějí výpočty.
fáze = Lokeren. MoonPhase (maan);
Lokeren. SunRise (sunRise);
Lokeren. SunSet (sunSet);
Lokeren. DST (sunRise);
Lokeren. DST (západ slunce);
int ZonOpUur = sunRise [tl_hour];
int ZonOpMin = sunRise [tl_minute];
int ZonOnUur = sunSet [tl_hour];
int ZonOnMin = sunSet [tl_minuta];
Toto je příklad toho, jak se věci počítají v TimeLord. S touto knihovnou získáte (docela) přesné časy západu a východu slunce.
Na konci vložím celý program s tímto Instructable. Je to docela přímočaré.
Krok 4: Více softwaru…
Více o softwaru…
V softwaru máme tři velké části.
1) Získáváme prvotní data z různých senzorů: z hodin, DHT a BMP180. To je náš vstup.
2) Data musíme převést na (1 a 0) na něco, co má smysl. K tomu používáme naše knihovny a proměnné.
3) Chceme číst a ukládat naše data. To je náš výstup. K okamžitému použití máme LCD-TFT, pro pozdější použití máme uložená data na naší SD kartě.
V naší smyčce () získáme spoustu „GOTO“: skočíme do různých knihoven. Získáváme data z jednoho ze senzorů, získáváme je a ukládáme je (většinou) v plovoucí datové proměnné. Názvy proměnných vybíráme moudře, nikoli pomocí x nebo y, ale podle názvů jako „tempOutside“nebo „tlak“nebo podobně. Aby byly čitelnější. Dobře, díky tomu je použití proměnných trochu náročnější a paměť náročnější.
Zde přichází trik: když zviditelňujeme naše proměnné na obrazovce, pouze je umisťujeme na správné místo.
Dvě zde použité knihovny, Adafruit_GFX.h a MCUfriend_kbv.h, mají pěknou pracovní sadu pro použití barev, písem a schopnosti kreslit čáry. Nejprve jsem s těmito knihovnami použil obrazovku 12864, později jsem to změnil na obrazovce tft. Jediné, co jsem musel udělat, bylo umístit krabice, obdélníky a čáry a ujistit se, že data vyšla na správném místě. K tomu můžete použít příkaz setCursor a tft. Write jako. Snadno. Barvy lze také nastavit jako proměnné, v těchto knihovnách je mnoho příkladů, jak je vybrat.
Pro zápis na kartu SD potřebujeme také několik jednoduchých triků.
Naše data například čteme z hodin jako oddělené hodiny, minuty a sekundy. Teploty jsou DHT. Teplota a DHTT. Teplota, pro rozlišení mezi vnitřní a venkovní.
Když je chceme vložit na SD kartu, použijeme řetězec: každou smyčku začínáme jako prázdný řetězec:
variablestring = ""; Poté jej můžeme vyplnit všemi našimi údaji:
variablestring = variablestring + hodiny + ":" + minuty + ":" + sekundy. To dává řetězci jako 12:00:00.
Protože jej zapisujeme jako soubor TXT (viz SD.h na Arduino.cc), pro další proměnné přidáme záložku, takže je snazší jej importovat do Excelu.
Dostáváme se tedy k: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.
A tak dále.
Krok 5: Některé snímky obrazovky …
Abychom si byli jisti, že své datové sady „nepřetěžujeme“, psal jsem data pouze jednou za 10 minut. Dává nám 144 záznamů denně. Myslím, že to není špatné.
A samozřejmě můžete pokračovat ve zpracování těchto dat: můžete dělat průměry, můžete hledat maxima a minima, můžete porovnávat s minulými roky…
Met kanceláře obvykle dělají průměry ve dne i v noci, pokud jde o teploty: denní doba začíná v 8:00 a trvá do 20:00.
U větru, tlaku a srážek se průměry berou od půlnoci do půlnoci.
Krok 6: Hotovo?
Ne tak úplně … Jak jsem řekl, rád bych konečně nechal pracovat snímač rychlosti a směru větru se zbytkem JAWS.
Malá konstrukce, kterou jsem vyrobil, je vysoká asi 4 m. Meteorolog zaznamenává rychlost větru od 10 metrů. Na mě trochu moc…
Doufám, že jste si čtení užili!
Adafruit-GFX je vysvětlen zde:
MCUFRIEND_kbv.h najdete zde:
Více o BMP 120 (stejné jako BMP085):
O DHT22: