Sommario:

JAWS: solo un'altra stazione meteorologica: 6 passaggi
JAWS: solo un'altra stazione meteorologica: 6 passaggi

Video: JAWS: solo un'altra stazione meteorologica: 6 passaggi

Video: JAWS: solo un'altra stazione meteorologica: 6 passaggi
Video: JAWS - il Centro Impostazioni 2024, Dicembre
Anonim
JAWS: Preparare le nostre cose
JAWS: Preparare le nostre cose
JAWS: prepariamo le nostre cose
JAWS: prepariamo le nostre cose
JAWS: Preparare le nostre cose
JAWS: Preparare le nostre cose

È abbastanza semplice creare un tale JAWS.

Ottieni i tuoi sensori, li metti insieme su schede e inizi a utilizzare le librerie fornite con i sensori.

Iniziamo con la configurazione del programma.

Dato che parlo olandese (madrelingua) tutti i dati e gran parte delle variabili che uso sono in olandese. Quindi ora hai la possibilità di imparare un'altra lingua…

Cosa vogliamo da JAWS?

Facile: vogliamo guardare uno schermo che ci mostri l'ora attuale, la data, le effemeridi (sole che sorge, tramonta, lunghezza del giorno e mezzogiorno astronomico).

Oltre a ciò, sarebbe bello vedere la temperatura interna ed esterna, l'umidità relativa e il punto di rugiada e la pressione dell'aria.

Per semplificare le cose, uso i gradi centigradi per la temperatura e hPa (=mBar) per la pressione. Quindi nessuno deve calcolare indietro da Fahrenheit o libbre per stadi quadrati…

Al momento sono disponibili solo questi dati…

In futuro, aggiungerò Velocità dell'aria, direzione del vento e precipitazioni.

L'idea è che avrò una capanna meteorologica esterna e tutti i dati verranno inviati a 2,4 GHz all'unità interna.

Passaggio 3: JAWS: Software

MASCELLE: Software
MASCELLE: Software

Per arrivare al nostro software, la maggior parte può essere trovata con le librerie esistenti.

In JAWS uso i seguenti:

  1. SPI.h: La libreria originale di Arduino per il protocollo a 4 fili. Lei è usata per lo scudo TFT
  2. Adafruit_GFX.h e MCUfriend_kbv.h: entrambi utilizzati per la grafica e lo schermo. Questi rendono molto facile scrivere testo, disegnare linee e riquadri sullo schermo TFT.
  3. dht.h: per i nostri DHT: questa libreria può essere utilizzata per DHT11 (quella blu) e DHT22.
  4. Wire.h: la libreria Arduino per semplificare la comunicazione seriale. Viene utilizzato per l'orologio e la scheda SD.
  5. SD.h: Ancora un originale Arduino, per scrivere e leggere dalla scheda SD.
  6. TimeLord.h: questo lo uso per tenere il tempo, calcolare il tramonto o il sorgere del sole da qualsiasi posizione geografica. Imposta anche l'orologio per l'ora legale (estate o inverno).

Cominciamo con l'orologio.

Quando si legge un orologio, sono necessarie le variabili che si ottengono dai diversi registri all'interno del modulo orologio. Quando li rendiamo più che semplici numeri, possiamo usare le seguenti righe:

const int DS1307 = 0x68;const char* giorni = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char* mesi = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 ", "12"};

n

Con TimeLord, otteniamo questo come dati, per il mio posto: (Lokeren, Belgio)

Signore del Tempo Lokeren; impostandolo su Lokeren. Position (51.096, 3.99); longitudine e latitudine

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

Lokeren. DstRules(3, 4, 10, 4, 60); Ora legale dal 3° mese, 4° settimana al 10° mese, 4° settimana, +60 minuti

int jaar= anno +2000;

byte sunRise= {0, 0, 12, mese, mese, anno}; inizia a calcolare ogni giorno dalle ore 00

byte sunSet={0, 0, 12, mese, mese, anno}; come sopra

byte maan={0, 0, 12, mese, mese, anno}; come sopra

fase flottante;

Da qui si fanno i calcoli.

fase = Lokeren. MoonPhase(maan);

Lokeren. SunRise(sunRise);

Lokeren. SunSet(sunSet);

Lokeren. DST(alba);

Lokeren. DST(tramonto);

int ZonOpUur=alba[tl_hour];

int ZonOpMin = sorgere del sole[tl_minuto];

int ZonOnUur = sunSet[tl_hour];

int ZonOnMin = sunSet[tl_minute];

Questo è l'esempio di come vengono calcolate le cose in TimeLord. Con questa libreria, ottieni orari (piuttosto) precisi del tramonto e dell'alba.

Alla fine, metterò l'intero programma con questo Instructable. È abbastanza semplice.

Passaggio 4: più software…

Altro software…
Altro software…
Altro software…
Altro software…

Maggiori informazioni sul software…

Abbiamo tre grandi parti nel software.

1) Otteniamo alcuni dati grezzi dai nostri diversi sensori: dal nostro orologio, DHT e BMP180. Questo è il nostro contributo.

2) Dobbiamo tradurre i dati in (1 e 0) in qualcosa che abbia senso. Per questo, usiamo le nostre librerie e variabili.

3) Vogliamo leggere e archiviare i nostri dati. Questo è il nostro risultato. Per l'uso immediato, abbiamo il nostro LCD-TFT, per un uso successivo, abbiamo i nostri dati salvati sulla nostra scheda SD.

Nel nostro loop(), otteniamo molti "GOTO": saltiamo alle diverse librerie. Otteniamo i nostri dati da uno dei sensori, otteniamo i dati e li memorizziamo in (principalmente) una variabile di dati mobile. Scegliamo saggiamente i nostri nomi di variabili, non con x o y ma con nomi come "tempOutside" o "pression" o cose del genere. Per renderli più leggibili. OK, questo lo rende un po' più pesante sull'uso delle variabili e che consuma più memoria.

Ecco il trucco: quando rendi visibili le nostre variabili sullo schermo, è semplicemente posizionarle nella posizione giusta.

Le due librerie utilizzate qui, Adafruit_GFX.h e MCUfriend_kbv.h hanno un bel lavoro per usare colori, caratteri e la capacità di disegnare linee. In un primo momento, ho usato uno schermo 12864 con queste librerie, in seguito l'ho cambiato nello schermo tft. Tutto quello che dovevo fare era posizionare caselle, rettangoli e linee e assicurarmi che i dati uscissero nel posto giusto. Per questo, puoi usare setCursor e tft. Write come comando. Facile lo fa. I colori possono essere impostati anche come variabili, ci sono molti esempi in quelle librerie su come sceglierli.

Per scrivere sulla scheda SD, abbiamo anche bisogno di alcuni semplici trucchi.

Ad esempio, leggiamo i nostri dati dall'orologio come ore, minuti e secondi separati. Le temperature sono DHT.temperature e DHTT.temperature, per differenziare tra indoor e outdoor.

Quando vogliamo metterli sulla scheda SD, usiamo una stringa: iniziamo ogni ciclo come una stringa vuota:

stringavariabile=""; Quindi possiamo riempirlo con tutti i nostri dati:

stringavariabile = stringavariabile + ore+":" + minuti +":" + secondi. Questo dà la stringa come 12:00:00.

Poiché lo scriviamo come file TXT (vedi SD.h su Arduino.cc), per le prossime variabili aggiungiamo una scheda, quindi è più facile importarlo in Excel.

Quindi arriviamo a: stringavariabile = stringavariabile +" \t " + DHT.temperature + " \t" + DHTT. Temperature.

E così via.

Passaggio 5: alcuni screenshot…

Alcuni screenshot…
Alcuni screenshot…
Alcuni screenshot…
Alcuni screenshot…
Alcuni screenshot…
Alcuni screenshot…

Per essere sicuri di non "sovraccaricare" i nostri set di dati, ho scritto i dati solo una volta ogni 10 minuti. Dandoci 144 voci al giorno. Non male, credo.

E, naturalmente, puoi continuare a elaborare quei dati: puoi fare medie, puoi cercare massimi e minimi, puoi confrontare con gli anni passati…

Gli uffici del Met di solito fanno le medie del giorno e della notte, per le temperature: il giorno inizia alle 8:00 e va fino alle 20:00.

Per vento, pressione e precipitazioni, le medie sono prese da mezzanotte a mezzanotte.

Passaggio 6: finito?

Finito?
Finito?
Finito?
Finito?

Non proprio… Come ho detto, mi piacerebbe finalmente far funzionare il sensore di velocità e direzione del vento con il resto delle JAWS.

La piccola costruzione che ho realizzato è alta circa 4 m. Il meteorologo ottiene la velocità del vento da 10 m di altezza. Un po' troppo alto per me…

Spero che ti sia piaciuto leggere questo!

Adafruit-GFX è spiegato qui:

MCUFRIEND_kbv.h si trova qui:

Maggiori informazioni su BMP 120 (uguale a BMP085):

Informazioni su DHT22:

Consigliato: