INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Dit is redelik eenvoudig om so 'n JAWS te maak.
U kry u sensors, u gooi dit saam op borde, en u gebruik die biblioteke wat by die sensors kom.
Laat ons begin met die opstel van die program.
Aangesien ek Nederlands sprekend is (moedertaalspreker), is alle data en baie van die veranderlikes wat ek gebruik, in Nederlands. So nou het u die kans om 'n ander taal te leer …
Wat wil ons van JAWS hê?
Maklik: ons wil na 'n skerm kyk wat ons die werklike tyd, datum, efemides (sonop, sononder, lengte van die dag en die astronomiese middag) wys.
Daarbenewens sal dit lekker wees om die temperatuur binne en buite, die relatiewe humiditeit en dauwpunt en die lugdruk te sien.
Om dinge makliker te maak, gebruik ek sentigrades vir temperatuur en hPa (= mBar) vir druk. Niemand hoef dus terug te bereken van Fahrenheit of pond per vierkante voet nie …
Op die oomblik is slegs hierdie data beskikbaar …
In die toekoms sal ek Lugspoed, windrigting en neerslag byvoeg.
Die idee is dat ek 'n hut vir buite het en dat al die data oor die 2.4GHz na die binnenshuise eenheid gestuur sal word.
Stap 3: JAWS: sagteware
Om by ons sagteware uit te kom, kan die meeste by bestaande biblioteke gevind word.
In JAWS gebruik ek die volgende:
- SPI.h: Die oorspronklike biblioteek van Arduino vir 4 -draad protokol. Dit word gebruik vir die TFT-skild
- Adafruit_GFX.h en MCUfriend_kbv.h: beide gebruik vir die grafika en die skerm. Dit maak dit baie maklik om teks te skryf, lyne en blokkies op die TFT-skerm te teken.
- dht.h: vir ons DHT's: hierdie biblioteek kan gebruik word vir DHT11 (die blou) en DHT22.
- Wire.h: die Arduino -biblioteek om reekskommunikasie maklik te maak. Dit word gebruik vir die horlosie en die SD -kaart.
- SD.h: Weereens 'n Arduino -oorspronklike, om van die SD -kaart af te skryf en te lees.
- TimeLord.h: hierdie een gebruik ek om tyd te hou, sonsondergang of sonsopkoms uit enige geografiese posisie te bereken. Dit stel ook die klok in vir DST (somer of winter).
Kom ons begin met die klok.
As u 'n horlosie uitlees, benodig u die veranderlikes wat u uit die verskillende registers in die klokmodule kry. As ons meer as net getalle maak, kan ons die volgende reëls gebruik:
const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};
const char* maande = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};
n
Met TimeLord kry ons dit as gegewens vir my plek: (Lokeren, België)
TimeLord Lokeren; die opstel daarvan Lokeren. Position (51.096, 3.99); lengte- en breedtegraad
Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 minute
Lokeren. DstRules (3, 4, 10, 4, 60); DST vanaf 3de maand, 4de week tot 10de maand, 4de week, +60 minute
int jaar = jaar +2000;
byte sunRise = {0, 0, 12, maandag, maand, jaar}; begin elke dag vanaf 00 uur bereken
byte sunSet = {0, 0, 12, maandag, maand, jaar}; dieselfde as hierbo
byte maan = {0, 0, 12, maand, maand, jaar}; dieselfde as hierbo
dryf fase;
Van hier af word die berekeninge gedoen.
fase = Lokeren. MoonPhase (maan);
Lokeren. SunRise (sunRise);
Lokeren. SunSet (sunSet);
Lokeren. DST (sunRise);
Lokeren. DST (sonsondergang);
int ZonOpUur = sunRise [tl_hour];
int ZonOpMin = sunRise [tl_minute];
int ZonOnUur = sunSet [tl_hour];
int ZonOnMin = sunSet [tl_minute];
Dit is die voorbeeld van hoe dinge in TimeLord bereken word. Met hierdie biblioteek kry u (mooi) akkurate tye van sonsondergang en sonsopkoms.
Aan die einde sit ek die hele program saam met hierdie Instructable. Dit is redelik reguit.
Stap 4: Meer sagteware …
Meer oor die sagteware …
Ons het drie groot dele in die sagteware.
1) Ons kry rou data van ons verskillende sensors: van ons horlosie, DHT's en BMP180. Dit is ons insette.
2) Ons moet die data na (1 en 0) vertaal na iets wat sinvol is. Hiervoor gebruik ons ons biblioteke en veranderlikes.
3) Ons wil ons data lees en stoor. Dit is ons output. Vir onmiddellike gebruik het ons ons LCD-TFT, vir later gebruik, het ons ons gestoorde data op ons SD-kaart.
In ons lus () kry ons baie "GOTO's": ons spring na die verskillende biblioteke. Ons kry ons data van een van die sensors, kry die data en stoor dit in (meestal) 'n drywende datavariabele. Ons kies ons veranderlike name verstandig, nie met x of y nie, maar met name soos "tempOutside" of "druk" of sulke dinge. Om hulle meer leesbaar te maak. OK, dit maak dit 'n bietjie swaarder oor die gebruik van veranderlikes en meer geheue.
Hier kom die truuk: as ons ons veranderlikes op die skerm sigbaar maak, plaas ons dit net op die regte posisie.
Die twee biblioteke wat hier gebruik word, Adafruit_GFX.h en MCUfriend_kbv.h, het 'n goeie werkstel om kleure, lettertipes en die vermoë om lyne te trek, te gebruik. In die eerste plek het ek 'n 12864-skerm met hierdie biblioteke gebruik, later het ek dit verander in die tft-skerm. Al wat ek hoef te doen, is om bokse, reghoeke en lyne te plaas en seker te maak dat die data op die regte plek verskyn. Hiervoor kan u setCursor en tft. Write as opdrag gebruik. Maklik doen dit. Kleure kan ook as veranderlikes gestel word; daar is baie voorbeelde in die biblioteke hoe om dit te kies.
Ons benodig ook 'n paar eenvoudige truuks om op die SD-kaart te skryf.
Ons lees byvoorbeeld ons data vanaf die klok as afsonderlike ure, minute en sekondes. Temperature is DHT.temperatuur en DHTT.temperatuur, om te onderskei tussen binne of buite.
As ons dit op die SD -kaart wil plaas, gebruik ons 'n string: ons begin elke lus as 'n leë string:
variablestring = ""; Dan kan ons dit vul met al ons data:
variablestring = variabelestring + hours + ":" + minutes + ":" + seconds. Dit gee die snaar soos 12:00:00.
Aangesien ons dit as 'n TXT-lêer skryf (sien die SD.h op Arduino.cc), voeg ons 'n oortjie by vir die volgende veranderlikes, sodat dit makliker is om dit in Excel in te voer.
Ons kom dus by: variablestring = variabelestring + "\ t" + DHT.temperatuur + "\ t" + DHTT. Temperatuur.
En so aan.
Stap 5: 'n Paar skermkiekies …
Om seker te maak dat ons ons datastelle nie 'oorlaai' nie, het ek slegs elke 10 minute data geskryf. Gee ons 144 inskrywings per dag. Ek dink nie sleg nie.
En natuurlik kan u voortgaan om die data te verwerk: u kan gemiddeldes maak, u kan na maksima en minima soek, u kan vergelyk met vorige jare …
Meerkantore maak gewoonlik gemiddeldes van dag en nag, vir temperature: bedags begin om 08:00 en duur tot 20:00.
Vir wind, druk en neerslag word die gemiddeldes van middernag tot middernag geneem.
Stap 6: Klaar?
Nie regtig nie … Soos ek gesê het, wil ek uiteindelik die windsnelheids- en windrigtingsensor saam met die res van die JAWS laat werk.
Die klein konstruksie wat ek gemaak het, is ongeveer 4 m hoog. Meteoroloog kry windsnelheid van 10m hoog. Iets te hoog vir my …
Ek hoop jy het dit geniet om dit te lees!
Adafruit-GFX word hier verduidelik:
MCUFRIEND_kbv.h kan hier gevind word:
Meer oor BMP 120 (dieselfde as BMP085):
Oor DHT22: