Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Je úplne jednoduché vyrobiť taký JAWS.
Dostanete svoje senzory, hodíte ich dohromady na dosky a začnete používať knižnice, ktoré sú súčasťou senzorov.
Začnime s nastavením programu.
Keďže hovorím po holandsky (rodený hovoriaci), všetky údaje a veľa premenných, ktoré používam, sú v holandčine. Teraz máte šancu naučiť sa iný jazyk …
Čo chceme od JAWS?
Jednoduché: chceme sledovať obrazovku, ktorá nám ukazuje skutočný čas, dátum, efemeridy (slnko hore, slnko dole, dĺžka dňa a astronomické poludnie).
Okrem toho by bolo pekné vidieť vnútornú a vonkajšiu teplotu, relatívnu vlhkosť a rosný bod a tlak vzduchu.
Aby to bolo jednoduchšie, na teplotu používam centigrady a na tlak hPa (= mBar). Nikto teda nemusí počítať späť z Fahrenheita alebo libier na štvorec …
V súčasnosti sú k dispozícii iba tieto údaje …
V budúcnosti pridám rýchlosť vzduchu, smer vetra a zrážky.
Ide o to, že budem mať chatu vonku a všetky údaje budú do vnútornej jednotky odoslané cez 2,4 GHz.
Krok 3: JAWS: Softvér
Aby sme sa dostali k nášmu softvéru, väčšinu nájdete v existujúcich knižniciach.
V JAWS používam nasledujúce:
- SPI.h: Pôvodná knižnica od Arduina pre 4 -vodičový protokol. Používa sa na štít TFT
- Adafruit_GFX.h a MCUfriend_kbv.h: obidva sa používajú na grafiku a obrazovku. Vďaka tomu je veľmi jednoduché písať text, kresliť čiary a polia na obrazovku TFT.
- dht.h: pre naše DHT: túto knižnicu je možné použiť pre DHT11 (modrý) a DHT22.
- Wire.h: knižnica Arduino na uľahčenie sériovej komunikácie. Používa sa na hodiny a kartu SD.
- SD.h: Opäť originál Arduino, na zápis a čítanie z karty SD.
- TimeLord.h: tento používam na udržiavanie času, výpočet západu alebo východu slnka z akejkoľvek geografickej polohy. Nastavil tiež hodiny na letný alebo zimný čas.
Začnime s hodinami.
Pri čítaní hodín potrebujete premenné, ktoré získate z rôznych registrov v hodinovom module. Keď z nich urobíme viac než len čísla, môžeme použiť nasledujúce riadky:
const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};
const char* mesiace = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};
n
S TimeLordom to získavame ako údaje pre moje miesto: (Lokeren, Belgicko)
TimeLord Lokeren; nastavenie Lokeren. Position (51,096, 3,99); zemepisná dĺžka a šírka
Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 minút
Lokeren. DstRules (3, 4, 10, 4, 60); DST od 3. mesiaca, 4. týždňa do 10. mesiaca, 4. týždňa, +60 minút
int jaar = rok +2000;
byte sunRise = {0, 0, 12, mesiac, mesiac, rok}; začnite počítať každý deň od 00 hodín
byte sunSet = {0, 0, 12, mesiac, mesiac, rok}; rovnaké ako vyššie
bajt = {0, 0, 12, deň v mesiaci, mesiac, rok}; rovnaké ako vyššie
plávajúca fáza;
Odtiaľ sa vykonávajú výpočty.
fáza = Lokeren. MoonPhase (maan);
Lokeren. SunRise (sunRise);
Lokeren. SunSet (západ slnka);
Lokeren. DST (sunRise);
Lokeren. DST (západ slnka);
int ZonOpUur = sunRise [tl_hour];
int ZonOpMin = sunRise [tl_minute];
int ZonOnUur = západ slnka [tl_hodina];
int ZonOnMin = západ slnka [tl_minúta];
Toto je príklad toho, ako sa veci počítajú v TimeLord. S touto knižnicou získate (celkom) presné časy západu a východu slnka.
Na konci uvediem celý program s týmto návodom. Je to celkom priamočiare.
Krok 4: Viac softvéru…
Viac o softvéri…
V softvéri máme tri veľké časti.
1) Získavame prvotné údaje z našich rôznych senzorov: z našich hodín, DHT a BMP180. To je náš vstup.
2) Údaje musíme preložiť do (1 a 0) na niečo, čo má zmysel. Na tento účel používame naše knižnice a premenné.
3) Chceme čítať a uchovávať naše údaje. To je náš výstup. Na okamžité použitie máme LCD-TFT, na neskoršie použitie máme uložené údaje na našej SD karte.
V našej slučke () dostaneme veľa „GOTO“: skočíme do rôznych knižníc. Naše údaje získavame z jedného zo senzorov, získavame údaje a ukladáme ich (väčšinou) v pohyblivej dátovej premennej. Názvy premenných vyberáme múdro, nie pomocou x alebo y, ale názvov ako „tempOutside“alebo „tlak“alebo podobných vecí. Aby boli čitateľnejšie. OK, vďaka tomu je používanie premenných o niečo ťažšie a náročnejšie na pamäť.
Tu prichádza trik: pri zviditeľňovaní našich premenných na obrazovke ich stačí umiestniť na správne miesto.
Dve tu použité knižnice Adafruit_GFX.h a MCUfriend_kbv.h majú peknú pracovnú sadu na používanie farieb, písiem a schopnosti kresliť čiary. Najprv som s týmito knižnicami použil obrazovku 12864- neskôr som to zmenil na obrazovke tft-screen. Jediné, čo som musel urobiť, bolo umiestniť boxy, obdĺžniky a čiary a uistiť sa, že údaje vyšli na správnom mieste. Na to môžete použiť príkaz setCursor a tft. Write ako. Ľahko to zvládne. Farby je možné nastaviť aj ako premenné. V týchto knižniciach je veľa príkladov, ako ich vyberať.
Na zápis na kartu SD potrebujeme aj niekoľko jednoduchých trikov.
Naše údaje napríklad čítame z hodín ako oddelené hodiny, minúty a sekundy. Na rozlíšenie medzi vnútornou a vonkajšou teplotou sú teploty DHT.teplota a DHTT.teplota.
Keď ich chceme vložiť na kartu SD, použijeme reťazec: každú slučku začíname ako prázdny reťazec:
variablestring = ""; Potom ich môžeme vyplniť všetkými našimi údajmi:
variablestring = variablestring + hodiny + ":" + minúty + ":" + sekundy. Reťazec tak bude mať hodnotu 12:00:00.
Pretože ho píšeme ako súbor TXT (pozri SD.h na Arduino.cc), pre ďalšie premenné pridáme záložku, takže je jednoduchšie ho importovať do Excelu.
Prejdeme teda k: variablestring = variablestring + "\ t" + DHT.teplota + "\ t" + DHTT. Teplota.
A tak ďalej.
Krok 5: Niektoré snímky obrazovky …
Aby sme si boli istí, že „nepreťažujeme“naše súbory údajov, údaje som písal iba raz za 10 minút. Dáva nám 144 záznamov denne. Nie je to zlé, myslím si.
A samozrejme, môžete pokračovať v spracovaní týchto údajov: môžete vytvárať priemery, môžete hľadať maximá a minimá, môžete ich porovnávať s minulými rokmi …
Kancelárie, ktoré sa stretli, zvyčajne robia priemery vo dne aj v noci, pokiaľ ide o teploty: cez deň sa začína o 8:00 a trvá do 20:00.
Priemerné hodnoty vetra, tlaku a zrážok sa berú od polnoci do polnoci.
Krok 6: Hotovo?
Nie celkom … Ako som povedal, chcel by som konečne začať pracovať so zvyškom JAWS snímačom rýchlosti vetra a smeru vetra.
Malá konštrukcia, ktorú som vyrobil, je vysoká asi 4 m. Meteorológ dosahuje rýchlosť vetra od 10 m. Na mňa príliš vysoké …
Dúfam, že ste si to užili!
Adafruit-GFX je vysvetlený tu:
MCUFRIEND_kbv.h nájdete tu:
Viac o BMP 120 (rovnaké ako BMP085):
O DHT22: