LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

GUIDA PER CREARE DA SOLO UNA SEMPLICE STAZIONE METEO DOMESTICA

Se il computer è acceso tutto il giorno o anche 24 ore su 24, può essere utilizzato per gestire una stazione meteorologica domestica. L'obiettivo è creare una stazione meteorologica semplice ed economica che utilizzi un personal computer (PC). Il PC funge da lettore, processore e mittente dei dati meteorologici misurati al sito Meteopost. La comunicazione tra il computer e l'unità di misura verrà effettuata tramite una rete 1-Wire.

Composizione del complesso di misura
1. Personal computer Con sistema operativo Windows XP e versioni successive e la presenza di una porta COM libera.
2. Adattatore per porta COM (1 filo - convertitore RS232)
3. Cavo Ethernet a 4 conduttori a doppino intrecciato, la lunghezza dovrebbe essere sufficiente dalla porta COM all'unità di misurazione
4. Alimentazione 5V DC con una buona stabilizzazione della tensione
5. Unità di misura (installata all'esterno)
6. Software per PC - Applicazione "Stazione meteorologica".

OPZIONE N. 1 - UN SENSORE

Innanzitutto, consideriamo l'opzione più semplice: una stazione meteorologica con un sensore di temperatura. Ciò non richiede un'alimentazione aggiuntiva (elemento 4). E il sistema è molto semplificato. L'adattatore per la porta COM (elemento 2) può essere realizzato secondo questo schema. L'adattatore è composto da due diodi Zener da 3,9 V e 6,2 V, due diodi Schottky e un resistore.

Schema adattatore per porta COM


Adattatore nell'alloggiamento D-SUB

Il punto in cui vengono saldati il ​​cavo e il sensore di temperatura, compresi i terminali del sensore, deve essere ben protetto dall'umidità. È meglio usare colla a base di poliuretano.


Cavi sensore impermeabilizzanti

Questo sistema fornirà il monitoraggio della temperatura con una precisione di decimi di grado. In questo caso, nella finestra dell'applicazione sarà visibile un grafico della temperatura dell'aria in funzione del tempo e l'icona nella barra delle applicazioni mostrerà sempre la temperatura attuale. L'applicazione consente di impostare l'intervallo di misurazione.

COSTO DELLE PARTI RADIO - non più di 50 UAH.

OPZIONE N. 2 - QUATTRO SENSORI

Una stazione meteorologica più complessa con quattro sensori: temperatura, umidità, luce, pressione. Poiché solo il sensore di temperatura sarà digitale e il resto sarà analogico, il sistema utilizza un ADC ds2450 a quattro canali. Questo ADC supporta il protocollo a 1 filo. Il circuito richiede una fonte di alimentazione aggiuntiva. La fonte di alimentazione deve fornire stabilità all'alta tensione. Ma poiché il circuito dell'adattatore sopra descritto presenta uno svantaggio: l'impossibilità di collegare una fonte di alimentazione esterna ai sensori a causa della mancanza di terra reale (-), utilizziamo un circuito adattatore diverso. Questo adattatore si inserisce anche nell'alloggiamento del connettore della porta COM D-SUB. Ora ci sono tre fili nel cavo: terra (-), +5 V e dati.


Circuito adattatore per porta COM con alimentazione esterna

Il circuito dell'unità di misura può essere facilmente realizzato anche su breadboard. Devi solo dare particolare attenzione contatti impermeabilizzanti. Il modo più semplice è sciogliere la paraffina e applicarla con un pennello su tutti i punti nudi della tavola. Se la scheda non è protetta dall'acqua si verificheranno perdite di tensione e molti errori di misurazione. Nel nostro caso anche i centesimi di Volt influiscono notevolmente sui risultati.


Schema a blocchi di misura

L'unità di misura deve essere collocata in un alloggiamento tale che la scheda ed i sensori siano protetti dall'esposizione diretta alle precipitazioni e alle radiazioni solari. Una scatola di plastica espansa densa è adatta a questi scopi. Nelle pareti della scatola (fondo e parete sul lato ombra) è necessario realizzare più fori per la ventilazione. Si consiglia di rivestire le pareti interne della scatola con un foglio di alluminio protezione aggiuntiva da radiazione infrarossa, altrimenti si verificherà un errore nella misurazione della temperatura. Tutti i sensori, ad eccezione della luce, sono posizionati direttamente sulla scheda. Il sensore di luce (fotoresistore) viene rimosso dalla scheda tramite fili e installato nel foro nella parte inferiore dell'alloggiamento in schiuma. In modo che la superficie del sensore sia rivolta verso il basso. In questo caso le precipitazioni non cadranno sul sensore e, soprattutto in inverno, questo lo proteggerà dalla formazione di ghiaccio. Per l'impermeabilizzazione, il sensore di luce deve essere trattato, ad esempio, con colla trasparente a base poliuretanica (il sigillante siliconico non ha superato il test, perdeva corrente). Trattare inclusivamente (!) la zona fotosensibile della fotoresistenza. Riempire i cavi del sensore con la colla e inserirli in un tubo isolante. Saldare le estremità dei cavi su una piccola scheda. E saldare i fili dall'unità di misurazione a questa scheda. Riempire le aree di saldatura con paraffina. Altrimenti, in caso di forte pioggia e vento, la stazione meteorologica potrebbe diventare inutilizzabile e sarà necessario smontarla e asciugare tutto. L'unità può essere collegata al cavo tramite un connettore. Ma è necessario utilizzare uno speciale connettore resistente all'umidità: il sistema funzionerà in condizioni meteorologiche difficili.

Se è necessario posizionare la custodia fuori dalla finestra di un grattacielo (non è possibile installarla su un supporto vicino al suolo), la scatola deve essere rimossa il più possibile dal muro della casa, su una staffa. Diversamente, riscaldare l'aria dalla parete fornisce dati di temperatura molto distorti. In una casa privata, ovviamente, è meglio realizzare una vera cabina meteorologica. Dobbiamo fare attenzione che l'alloggiamento sia fissato saldamente, altrimenti forti raffiche di vento possono strappare la nostra struttura.


Unità di misura su staffa

La tensione di uscita dell'alimentatore (PSU) deve essere compresa tra 4,8 e 5,3 V. Funzionerà anche la ricarica da un vecchio telefono. Tuttavia, se l'alimentatore non dispone di uno stabilizzatore, è necessario aggiungerlo all'alimentatore, perché Per la precisione della misurazione è molto importante la presenza di una tensione stabile. Puoi almeno verificare con un tester se cambiano decimi o centesimi di volt all'uscita dell'alimentatore. Non sono ammessi salti di decimi di volt. Schema semplice Lo stabilizzatore da 5 V è mostrato di seguito. L'ingresso dell'alimentazione può variare da 7 a 17V. L'uscita sarà di circa 5V. Successivamente è necessario collegare il nostro cavo (che va all'unità di misurazione) all'alimentazione e misurare la tensione con un tester all'altra estremità del cavo. Questa tensione può essere leggermente inferiore rispetto a quella direttamente all'uscita dell'alimentatore a causa della resistenza del cavo. Questa tensione misurata deve essere inserita nelle impostazioni dell'applicazione come “Tensione di alimentazione del sensore”.


Tipico circuito del regolatore di tensione

COSTO DEI COMPONENTI PER LA STAZIONE METEO

Costo approssimativo dei componenti radio (prezzi 2015 in negozio).
1. Sensore di temperatura ds18b20 - 25 UAH
2. ADC ds2450 - 120 UAH
3. Fotoresistore LDR07 - 6 UAH
4. Sensore di umidità HIH-5030 - 180 UAH
5. Sensore di pressione MPX4115A - 520 UAH.
TOTALE: 850 UAH o 37$

Gli elementi rimanenti in totale non costano più di 50 UAH; l'alimentazione può essere presa, ad esempio, da un vecchio "caricabatterie" per il telefono.


Marcatura di elementi radio

SOFTWARE PER STAZIONE METEO

Abbiamo sviluppato un'applicazione per Windows che forniremo gratuitamente a chiunque voglia costruire una stazione meteorologica di questo tipo. Ti permetterà di monitorare il meteo sul tuo PC.


Finestra dell'applicazione per PC

La barra delle applicazioni visualizza la temperatura dell'aria

L'applicazione può inviare tutti i dati misurati al nostro server “Meteopost” e su una pagina speciale (esempio) è possibile visualizzare tutti i dati meteorologici dal browser del PC. La pagina è adattata anche per il browser del cellulare.


Schermata del browser del telefono cellulare

CONCLUSIONE
Puoi risparmiare sul costo dei ricambi se li acquisti dai cinesi su AliExpress. È possibile montare una stazione meteorologica senza alcun sensore, ad eccezione del sensore di temperatura. Il nostro ADC ha un ingresso libero rimasto, quindi può anche ricevere un segnale dal sensore del vento. Ma poiché siamo in città, semplicemente non abbiamo un posto dove installare e testare un sensore del genere. Nelle aree urbane non ci sarà una misurazione adeguata della velocità e della direzione del vento. Metodi Fai da te I sensori della velocità del vento sono descritti dettagliatamente da molti appassionati in rete. Il sensore di fabbrica è piuttosto costoso.

Un radioamatore con competenze medie può assemblare una stazione meteorologica del genere. Per rendere le cose ancora più semplici, non è necessario diluire circuito stampato e assemblare mediante montaggio montato su una breadboard. Testato: funziona.

Abbiamo cercato di creare una stazione meteorologica accessibile ed economica. A questo scopo nel sistema viene utilizzato in particolare un computer. Se lo escludi, dovrai creare un'unità di visualizzazione aggiuntiva, un'unità di trasmissione dati alla rete, ecc., Che aumenterà in modo significativo il prezzo. Ad esempio, l’ormai popolare “Stazione meteorologica Netatmo” con parametri misurati simili costa circa 4.000 UAH (200 dollari).

Siamo pronti ad aiutare chiunque voglia realizzare una stazione meteorologica di questo tipo con consulenze. Forniremo anche il necessario software e collega la tua stazione al nostro sito web.

Stazione meteo fai da te.

Era sera; non c'era niente da fare dopo il Capodanno. Come al solito, durante le vacanze invernali di Capodanno voglio occupare la testa e le mani con qualcosa di utile e creativo. Durante queste vacanze di Capodanno ho deciso di realizzare una stazione meteorologica con le mie mani. Ho iniziato a prepararmi in anticipo, ho acquistato e assemblato tutti i componenti prima del nuovo anno e ho eseguito la programmazione principale durante le vacanze.

(ci sono un sacco di foto sotto il taglio!)

Innanzitutto, esaminerò i componenti; non fornirò collegamenti, poiché su eBay (in conto personale) la merce è stata archiviata. Ho acquistato molti componenti tranquillamente su eBay. Ho provato un'asta per la prima volta prima compravo sempre “compralo subito”. Cosa posso dire, se non ti affretti a fare acquisti, puoi acquistare alcuni componenti a un prezzo inferiore (la differenza a volte è doppia).

Sensore di pressione VMR085
Questo è il sensore principale. Quando l'ho visto su eBay, sapevo che volevo costruire una stazione meteorologica domestica.
Il sensore è arrivato in una normale busta, ricoperta con pluriball all'interno.

All'interno della busta c'erano il biglietto da visita del venditore e un sensore, confezionati in una busta antistatica e avvolti in un altro strato di pluriball.

La borsa antistatica è stata sigillata in modo che l'umidità durante il volo non minacciasse il sensore

Tiriamo fuori il sensore. Da un lato si trova una linea di contatti saldati, che sono stati inseriti nella schiuma per evitare che si pieghino. Dall'altro lato c'è il sensore stesso e i contrassegni dei contatti.




Andrebbe tutto bene, ma i segni di contatto vengono applicati in un'immagine speculare.
Il sensore è collegato tramite il bus I2C ed è alimentato a 3,3 V. Cioè, per il normale funzionamento sono necessari 4 fili (+, -, SDA, SCL)
È possibile interrogare il sensore in 2 modi: tramite la libreria o utilizzando le funzioni direttamente nello schizzo.
Programma di esempio:

#includere

#define BMP085_ADDRESS 0x77 // Indirizzo I2C di BMP085

Const carattere senza segno OSS = 0; // Impostazione del sovracampionamento

// Valori di calibrazione
int ac1;
int ac2;
intero ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
intero b1;
intero b2;
intmb;
int mc;
int md;

Breve temperatura;
lunga pressione;

Configurazione nulla()
{
Serial.begin(9600);
Filo.begin();
bmp085Calibrazione();
}

ciclo vuoto()
{
temperatura = bmp085GetTemperature(bmp085ReadUT());
pressione = bmp085GetPressure(bmp085ReadUP());
Serial.print("Temperatura: „);
Stampa.seriale(temperatura/10.0, DEC);
Serial.println("C");
Serial.print("Pressione: „);
Stampa.seriale(pressione/133.322, DEC);
Serial.println(“mm Hg”);
Serial.println();
ritardo(1000);
}

Non valido bmp085Calibrazione()
{
ac1 = bmp085ReadInt(0xAA);
ac2 = bmp085ReadInt(0xAC);
ac3 = bmp085ReadInt(0xAE);
ac4 = bmp085ReadInt(0xB0);
ac5 = bmp085ReadInt(0xB2);
ac6 = bmp085ReadInt(0xB4);
b1 = bmp085ReadInt(0xB6);
b2 = bmp085ReadInt(0xB8);
mb = bmp085ReadInt(0xBA);
mc = bmp085ReadInt(0xBC);
md = bmp085ReadInt(0xBE);
}

Breve bmp085GetTemperature(unsigned int ut)
{
lungo x1, x2;
x1 = (((lungo)ut - (lungo)ac6)*(lungo)ac5) >> 15;
x2 = ((lungo)mc<< 11)/(x1 + md);
b5 = x1 + x2;

Ritorno ((b5 + 8)>>4);
}

Lungo bmp085GetPressure(unsigned long up)
{
lungo x1, x2, x3, b3, b6, p;
b4, b7 lungo senza segno;
b6 = b5 - 4000;
// Calcola B3
x1 = (b2 * (b6 * b6)>>12)>>11;
x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = ((((((lungo)ac1)*4 + x3)<>2;
// Calcola B4
x1 = (ac3 * b6)>>13;
x2 = (b1 * ((b6 * b6)>>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;
b7 = ((unsigned long)(up - b3) * (50000>>OSS));
se (b7< 0x80000000)
p = (b7<<1)/b4;
altro
p = (b7/b4)<<1;
x1 = (p>>8) * (p>>8);
x1 = (x1 * 3038)>>16;
x2 = (-7357 * p)>>16;
p += (x1 + x2 + 3791)>>4;
restituire p;
}

// Leggi 1 byte dal BMP085 all'"indirizzo"
char bmp085Read(indirizzo carattere senza segno)
{
dati di carattere non firmati;

Wire.write(indirizzo);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
while(!Wire.disponibile())
;
return Filo.read();
}

Int bmp085ReadInt(indirizzo carattere senza segno)
{
carattere senza segno msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(indirizzo);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
while(Wire.disponibile()<2)
;
msb = Filo.read();
lsb = Filo.read();
ritorno (int) msb<<8 | lsb;
}

// Legge il valore della temperatura non compensato
unsigned int bmp085ReadUT()
{
unsigned int ut;
// Scrive 0x2E nel registro 0xF4
// Ciò richiede una lettura della temperatura
Wire.beginTransmission(BMP085_ADDRESS);
Filo.scrittura(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
// Attendi almeno 4,5 ms
ritardo(5);
// Legge due byte dai registri 0xF6 e 0xF7
ut = bmp085ReadInt(0xF6);
ritorno;
}

// Legge il valore della pressione non compensata
bmp085ReadUP() lungo senza segno
{
carattere senza segno msb, lsb, xlsb;
lungo senza segno = 0;
// Scrivi 0x34+(OSS<<6) into register 0xF4
// Richiedi una lettura della pressione con l'impostazione del sovracampionamento
Wire.beginTransmission(BMP085_ADDRESS);
Filo.scrittura(0xF4);
Filo.scrittura(0x34 + (OSS<<6));
Wire.endTransmission();
// Attende la conversione, il tempo di ritardo dipende dall'OSS
ritardo(2 + (3<// Leggi il registro 0xF6 (MSB), 0xF7 (LSB) e 0xF8 (XLSB)
Wire.beginTransmission(BMP085_ADDRESS);
Filo.scrittura(0xF6);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 3);
// Attendi che i dati diventino disponibili
while(Wire.disponibile()< 3)
;
msb = Filo.read();
lsb = Filo.read();
xlsb = Filo.read();
su = (((unsigned long) msb<< 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS);
tornare su;
}


Inoltre, il sensore dispone di un proprio sensore termico per la compensazione della pressione e di un altimetro

Arduino Nano v3.0
Questo è il cuore dell'intera stazione meteorologica. In poche parole, il controller è di dimensioni miniaturizzate.
Ho comprato
Non parlerò in dettaglio del controller, poiché questo è già stato fatto prima di me:


Il pacchetto lightake era prefabbricato, il controller è arrivato in una confezione contenente un cavo USB e un Arduino in una busta antistatica sigillata.

Per stimare le dimensioni, ho posizionato una moneta da 1 rublo accanto all'Arduino.

Primo piano della scheda controller



Il cavo USB è buono, con anello in ferrite. L'Arduino è alimentato tramite un cavo USB. L'ambiente di sviluppo può essere scaricato (pagina download). Il linguaggio è simile al "C", non ci sono stati problemi a padroneggiarlo, dato che ci programmo molto al lavoro.

Schermo LCD
Al lavoro ho trovato nella spazzatura uno schermo LCD 1602 compatibile. Ho dovuto armeggiare con la connessione, poiché non sono riuscito a trovare una scheda tecnica. Di conseguenza, il display LCD ha iniziato a funzionare.

Ma dopo un breve periodo di utilizzo, ho notato che questa schermata non mi bastava e non sarebbe stato possibile visualizzare più dati, dato che ha solo 2 righe di 16 caratteri ciascuna. All'inizio sembra che questi parametri siano sufficienti, ma quando inizi a programmare, ti rendi conto che il massimo che puoi inserire è 3-4 parametri. E se crei un menu (stavo pensando di creare un menu su questa schermata), rimangono solo 1-2 parametri rimasti nello spazio libero.
Di conseguenza, ho iniziato a cercare un altro schermo. All'inizio ho guardato attentamente lo schermo grafico del Nokia 3310 e ho anche partecipato all'asta su eBay per acquistarlo, ma non ha funzionato (di cui sono molto felice), quindi ho dovuto rinunciare a questo schermo. Ora capisco che sarebbe troppo piccolo per i miei scopi, poiché c'è qualcosa con cui confrontarmi.
Mentre guardavo casualmente gli scudi su Arduino, mi sono imbattuto in uno schermo grafico 12864 su un controller ST7920. Questo schermo ha le dimensioni giuste e una buona risoluzione per le mie esigenze (128x64). Cioè, puoi facilmente inserire 6-7 righe di 20 caratteri in un carattere normalmente leggibile. Poiché lo schermo è grafico, oltre al testo, la grafica può essere inserita in diversi caratteri. In breve, è proprio quello di cui avevo bisogno, era tutto presente su questo schermo, quindi non ho resistito e l'ho ordinato.
Il pacco è arrivato velocemente ed era imballato come standard: una busta di pluriball, all'interno c'era un altro strato di pluriball e uno schermo in una busta antistatica:






Per stimare la dimensione, ho posizionato una moneta da 1 rublo accanto al display LCD.




Per collegare velocemente lo schermo ad Arduino, ho saldato una linea di contatti ai pin del display LCD. Il display LCD può essere collegato tramite un bus seriale o un bus parallelo. Ho scelto la prima opzione, dato che ci sono già pochi contatti Arduino liberi.
Collegamento (preso dal web):

- Il pin 1 (GND) è collegato al bus comune
- Il pin 2 (VCC) è collegato al bus di alimentazione +5 V e il consumo di corrente è relativamente ridotto e il display può essere alimentato dallo stabilizzatore Arduino integrato.
- I pin 4, 5 e 6 si collegano alle uscite digitali di Arduino, formando l'interfaccia seriale SPI:
pin 4 – (RS) – corrisponde alla linea CS (ad esempio 7)
pin 5 – (RW) – corrisponde alla linea MOSI (ad esempio 8)
pin 6 – (E) – corrisponde alla linea SCK (ad esempio 3)
I numeri di contatto di Arduino possono essere qualsiasi cosa, l'importante è non dimenticare di indicarli correttamente nel testo del programma durante l'inizializzazione del display.
- Il pin 15 (PSB) è collegato al bus comune.
- I contatti 19 (A) e 20 (K) sono l'alimentazione della retroilluminazione (+5 V e GND, rispettivamente). Per regolare la luminosità della retroilluminazione, è possibile utilizzare un resistore variabile da 10 kOhm collegato tra il bus di alimentazione e GND. La tensione dal suo motore viene fornita al pin 19 del display.
Secondo queste istruzioni, ho collegato tutto tranne la retroilluminazione. Ho usato Arduino PWM per alimentare la retroilluminazione.
Per connettere a livello di codice l'LCD ad Arduino, viene utilizzata la libreria u8glib. Puoi scaricarlo. Se ci sono problemi con il download, posso caricare la libreria su narod.ru.
La libreria in sé non è complicata e ti consente di visualizzare testo in diversi caratteri, tracciare una linea, disegnare forme geometriche semplici (rettangolo, cerchio) e visualizzare le tue immagini preparate in modo speciale. In linea di principio, questo strumento è sufficiente per la maggior parte dei compiti.
Ecco il risultato di un semplice programma:

Il programma stesso:

#include "U8glib.h"

U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE); // SPI E = 3, RW = 9, RS = 8

// Subroutine per determinare la memoria libera
int freeRam() (
extern int __heap_start, *__brkval;
intero v;
return (int) &v - (__brkval == 0? (int) &__heap_start: (int) __brkval);
}

Impostazione vuoto(vuoto) (
u8g.setFont(u8g_font_6x10); // carattere
u8g.setRot180(); //Capovolgi lo schermo
analogWrite(6, 115); // Imposta la luminosità dello schermo (anodo di retroilluminazione a 6 pin)
}

Ciclo vuoto(vuoto) (
u8g.primaPagina();
Fare (

u8g.setPrintPos(1, 12); // posizione
u8g.print("Ciao!!!"); // testo in uscita
u8g.drawBox(0,22,128,9); // Dipingi il rettangolo di bianco
u8g.setColorIndex(0); // inchiostro bianco, sfondo nero
u8g.setPrintPos(1, 30); // posizione
u8g.print("Parola..."); // testo in uscita

U8g.setColorIndex(1); // inchiostro bianco, sfondo nero
u8g.setPrintPos(1, 50); // posizione
u8g.print("Dopo l'avvio="); // testo in uscita
u8g.setPrintPos(85, 50); // posizione
u8g.print(millis() / 1000); // restituisce il numero di secondi dopo l'avvio
u8g.setPrintPos(1, 64); // posizione
u8g.print(freeRam()); // mostra quanta memoria è occupata
) mentre(u8g.nextPage());

Ritardo(200);
}

Orologio in tempo reale DS1307
Un altro componente per la mia stazione meteorologica. Questo scudo implementa un orologio in tempo reale. Li ho ordinati su eBay. Il venditore ha inviato la sciarpa dell'orologio in una scatola irrealisticamente grande


All'interno della scatola c'erano due fogli A4 pubblicitari e un fazzoletto da orologio avvolti nel cellophane


Vorrei sottolineare che la tariffa non supera i 2 rubli. moneta e la scatola misurava 13x15x5 cm.
La tavola era imballata in una borsa antistatica

Scialle da vicino



Ho dovuto armeggiare con questo modulo. Innanzitutto c'erano difficoltà di connessione. E in secondo luogo, su questa tavola non c'è quarzo. Se avessi saputo che avrei dedicato così tanto tempo al modulo, molto probabilmente lo avrei assemblato da solo, dato che Internet è piena di diagrammi. Il circuito più semplice contiene 4-5 componenti.
Per quanto riguarda la connessione. Ho trovato una libreria che dice che l'interfaccia I2C può essere collegata non ai soliti ingressi analogici di Arduino (A4 e A5), ma a qualsiasi discreto. L'ho fatto come era scritto. All'inizio non funzionava nulla, ma dopo una lunga danza con il tamburello l'orologio si è messo in moto. Bene, ho pensato, basta, i problemi sono finiti, ma dopo aver provato a collegare lo stesso modulo ad un altro Arduino, le danze con il tamburello sono continuate. Ho passato molto tempo a cercare una soluzione a questo problema e quasi ovunque veniva segnalata o una connessione errata oppure l'assenza di resistenze di pull-up sui contatti SCL e SDA. Volevo già entrare nella scheda con un saldatore, ma su un forum mi sono imbattuto per caso in un codice in cui si diceva che SCL e SDA sarebbero collegati alle porte I2C standard di Arduino. Dopo una connessione standard, tutto ha funzionato immediatamente.
Ora riguardo al quarzo. Non so che tipo di quarzo abbiano messo lì i cinesi, ma gli orologi con tale quarzo scappavano di 10-11 secondi al giorno. Questo errore è di 5 minuti al mese e 1 ora all'anno. Non c'è bisogno di un orologio come questo. Ho dovuto andare di nuovo online e cercare come risolvere questo bug. La prima soluzione che si presenta dice che è necessario mettere a terra il quarzo. L'ho fatto: il risultato è stato zero. Ho anche scoperto da qualche parte che devo trovare una vecchia scheda madre e rimuovere il quarzo dell'orologio da lì. L'ho fatto: c'è un risultato. Ora l'orologio non corre di 10-11 secondi, ma di 1,5 secondi al giorno. Diciamo solo che è migliorato, ma è tutt'altro che ideale. Poiché non ho più voglia di armeggiare con un saldatore, si è deciso di regolare l'orologio in modo programmatico, ovvero di regolare l'orologio sul valore richiesto una volta al giorno. Dopo 10 giorni, l'orologio si è fermato di non più di un secondo. Il metodo è buono, ma solo quando il dispositivo di sincronizzazione di Arduino è collegato all'alimentazione, altrimenti l'orologio funziona a batteria e scappa comunque.
Un piccolo programma di prova:

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // SDA A4, SCL A5

Byte decToBcd(byte val)
{
ritorno ((val/10*16) + (val%10));
}

Byte bcdToDec(byte val)
{
ritorno ((val/16*10) + (val%16));
}

Void setDateDs1307(byte secondo, // 0-59
byte minuto, // 0-59
byte-ora) // 0-99
{

Filo.scrittura(0);
Wire.write(decToBcd(secondo));
Wire.write(decToBcd(minuti));
Wire.write(decToBcd(ora));
Wire.endTransmission();
}

Void getDateDs1307(byte *secondo,
byte *minuto,
byte *ora)
{

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Filo.scrittura(0);
Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 3);

*secondo = bcdToDec(Wire.read());
*minuto = bcdToDec(Wire.read());
*ora = bcdToDec(Wire.read());
}

Configurazione nulla()
{
byte secondo, minuto, ora;
Filo.begin();
Serial.begin(9600);

Secondo = 45;
minuto = 5;
ora = 16;

SetDateDs1307(secondo, minuto, ora);
}

ciclo vuoto()
{
byte secondo, minuto, ora;

GetDateDs1307(&secondo, &minuto, &ora);
Serial.print(ora, DEC);
Serial.print(:");
Serial.print(minuti, DEC);
Serial.print(:");
Serial.println(secondo, DEC);

Ritardo(1000);
}


La libreria non viene utilizzata qui e le funzioni per leggere e scrivere il tempo sono troncate.

Sensore di temperatura e umidità DHT11
Non c'è niente da dire su questo sensore. Non lo userei nemmeno se l'umidità non fosse necessaria. Sfortunatamente non ho scattato una foto quando l'ho ricevuto, quindi non ci saranno foto. Di seguito puoi vedere le foto del sensore, dove l'ho collegato ad Arduino. Il collegamento del sensore è semplice (+, uscita digitale, -). Tipicamente i sensori sono realizzati con quattro pin. Con questo fattore di forma, il terzo pin non è collegato a nulla.
Puoi usare la libreria per connetterti ad Arduino. Puoi scaricarlo.
Un piccolo programma di test con visualizzazione delle informazioni sul display LCD 1602:

// includi il codice della libreria:
#includere
#includere

// Dichiara oggetti
dht11 DHT11;
LCD a cristalli liquidi (12, 11, 6, 5, 4, 3);

#definire DHT11PIN 7
int io;

Configurazione nulla()
{
lcd.inizio(16, 2);
lcd.print("Stato: „);
io=0;
}

ciclo vuoto()
{
int chk = DHT11.read(DHT11PIN);
lcd.setCursore(8, 0);
interruttore (chk)
{
caso 0: lcd.print(“OK „); break;// lcd.setCursor(11, 0); lcd.print(millis()/2000); rottura;
caso -1: lcd.print(“Errore di checksum”); mErr(); rottura;
caso -2: lcd.print("Errore di timeout"); mErr(); rottura;
predefinito: lcd.print("Errore sconosciuto"); mErr(); rottura;
}
ritardo(500);
lcd.setCursore(15, 0);
interruttore(i)
{
caso 0: lcd.print("^"); lcd.setCursore(15, 1); lcd.print(" ");interruzione;
caso 1: lcd.print("v"); lcd.setCursore(15, 1); lcd.print(" ");interruzione;
predefinito: lcd.setCursor(15, 1); lcd.print("E"); rottura;
}
io=io+1;
se (i>1) i=0;
lcd.setCursore(0, 1);
lcd.print("H=");
lcd.setCursore(2, 1);
lcd.print((float)DHT11.umidità, 0);
lcd.setCursore(4, 1);
lcd.print("%");
lcd.setCursore(8, 1);
lcd.print("T=");
lcd.setCursore(10, 1);
lcd.print((float)DHT11.temperatura, 0);
lcd.setCursore(12, 1);
lcd.print("C");

Vuoto mErr()
{
lcd.setCursore(2, 1);
lcd.print("**");
lcd.setCursore(10, 1);
lcd.print("**");
io=5;
}


Il sensore presenta alcuni svantaggi: i dati provenienti dal sensore sono solo numeri interi e la portata è debole.

Sembra che io abbia scritto di tutti i componenti. Non resta che raccogliere tutto in un unico insieme.
Ops, quasi dimenticavo! Per assemblare il dispositivo, è necessaria una custodia. Ho anche ordinato la custodia su Ebay. Si è scoperto che il venditore veniva dall'Inghilterra. Il pacco è arrivato velocemente, ma non ho fatto foto. Tutte le foto del caso sono qui sotto.

Per prima cosa ho assemblato tutto sul tavolo utilizzando un cablaggio speciale. Ho scritto un programma di test e l'ho caricato sul controller.



In effetti, il colore blu della retroilluminazione è molto più luminoso. Anche alla luminosità minima (Luminoso=5), la cornice è illuminata.

Per assemblare tutto in modalità wireless, si è deciso di realizzare una mini scheda madre e sui connettori sono state inserite schede e schermature Arduino. Se succede qualcosa, possono essere rimossi rapidamente e facilmente. Ho anche deciso di collegare lo schermo LCD e i pulsanti di controllo ai connettori, solo per saldare il sensore di temperatura sui fili.
Ecco come è venuta fuori la sciarpa



Nell'ultima foto non ho completamente lavato via il flusso. Ho incollato della gomma porosa sotto gli scudi accanto ai connettori in modo che ci fosse almeno un supporto. Anche se in effetti gli scudi nei connettori sui contatti reggono bene.

Scheda madre con Shield installati e scheda Arduino.

Ecco come appare una connessione completa alla scheda madre


Invece dei pulsanti, ho usato uno scudo fatto in casa saldato su una breadboard. Ho usato i pulsanti dei vecchi topi come pulsanti.
Come puoi vedere, il numero di fili è diminuito.

Il problema principale del posizionamento nella custodia è ritagliare una scanalatura liscia per lo schermo LCD. Non importa quanto ci provassi, non funzionava ancora perfettamente. In alcuni punti gli spazi erano leggermente superiori a 1 mm. Per far sembrare tutto in ordine, ho preso del sigillante nero per acquari e ho riempito tutte le fessure, allo stesso tempo ho attaccato lo schermo a questo sigillante. Dopo che il sigillante si è asciugato, ho tagliato l'eccesso dall'esterno. In piena luce, il sigillante è visibile, ma in luce normale tutto si fonde con il corpo.
Questo è l'aspetto del case dall'interno con uno schermo LCD e una scheda madre installati.

Ecco come appare dall'esterno in piena luce (mi spiace per le impronte digitali, le ho viste mentre sistemavo le foto).

Ho pensato a lungo a come inserire i pulsanti nella custodia e, soprattutto, quali pulsanti utilizzare...
Nei negozi di radioelettronica piaceva il pulsante con un perno lungo e le punte che si adattavano a questo perno. Questi pulsanti vengono utilizzati per la saldatura alla scheda. Andrebbe tutto bene, ma hanno un aspetto negativo: la corsa pressante è molto piccola e rumorosa.
Abbiamo dovuto posizionare i pulsanti in due fasi: la prima consisteva nel posizionare i pulsanti sulla lavagna, la seconda era montare questa lavagna su un'altra lavagna. E poi metti tutto questo nel corpo sulle guide.

Ecco come appare una sciarpa con bottoni:



Ecco come si presenta la scheda portaoggetti:


Qui puoi vedere le guide in cui è inserita la scheda con i pulsanti. Alcuni elementi sono stati saldati per dare rigidità alla tavola.

Ora mettiamo tutto nel corpo
Senza collegare i pulsanti:


Con collegamento a pulsante:

Chiudi la custodia e accendila. Funziona tutto alla grande, i pulsanti funzionano come dovrebbero.

Alla fine pubblico un breve video del funzionamento del dispositivo in diverse modalità:
http://www.youtube.com/watch?v=KsiVaUWkXNA&feature=youtu.be
Per coloro che non vedono il video qui, ecco il link

È ora di terminare la recensione.
Scriverò qualcosa sul programma e poi alcune brevi conclusioni. Quando ho scritto il programma, non pensavo che avrei raggiunto molto presto il limite di 30.720 byte.


Ho dovuto ottimizzare il codice. Ho spostato molti pezzi di codice nelle subroutine. Non avrei mai pensato che un'istruzione switch...case in forma compilata occupasse più spazio di diverse istruzioni if...else. Anche la corretta dichiarazione delle variabili consente di risparmiare spazio. Se dichiari un array lungo, sebbene sia del tutto possibile ottenerlo per byte, il sovraccarico della memoria raggiunge i 500 byte, a seconda della dimensione dell'array. Quando scrivi un programma, non ci pensi, e solo dopo, quando analizzi il programma, ti accorgi di aver sbagliato alcune cose, e inizi a ottimizzare il codice. Dopo che i problemi con le dimensioni del programma sono stati risolti, ho riscontrato una limitazione della RAM. Ciò è stato espresso nel fatto che il programma ha iniziato a bloccarsi dopo il caricamento. Ho dovuto introdurre una subroutine per il calcolo della RAM libera. Di conseguenza, sono stato costretto ad abbandonare un algoritmo di previsione del tempo, poiché deve visualizzare le icone sullo schermo. L'algoritmo stesso funziona, ma è stato necessario registrare l'output delle icone. Ho ancora idee su come ottimizzare il codice, ma nel prossimo futuro lascerò il dispositivo in funzione così com'è per valutarne le prestazioni e identificare tutti i bug.

Ora alcune conclusioni
Contro
1) Prezzo. La giustificazione di questo svantaggio è che un hobby non è mai economico.

Pro
1) Ottima funzionalità del dispositivo
2) L'aumento delle funzioni è limitato solo dal controller utilizzato e dai propri desideri
3) Piacere estetico dalla contemplazione e soddisfazione morale dal fatto di aver finalmente assemblato e completato questo dispositivo

Ho intenzione di acquistare +86 Aggiungi ai preferiti Mi è piaciuta la recensione +137 +304

Scuola secondaria MBOU dell'insediamento rurale di Selikhinsky

Argomento del progetto

"Stazione meteorologica a casa"

Completato:

Puvis Rainis, studente di quinta elementare.

Supervisore:

Immortale O.A.

2016

Soggetto : “Stazione meteorologica a casa.”

Ipotesi: È possibile realizzare una stazione meteo in casa?

Bersaglio: Realizzare una stazione meteorologica a casa e monitorare i cambiamenti meteorologici.

Compiti:

    Scopri cos'è una stazione meteorologica.

    Studia la storia della fenologia.

    Studiare la struttura di una stazione meteorologica.

    Realizza una stazione meteorologica a casa;

    Osservare il tempo e registrare i risultati delle osservazioni in una tabella;

Metodi di ricerca:

    ricerca (raccolta di informazioni su un argomento)

    osservazioni

    pratico (realizzazione di dispositivi)

    analitico (confronto dei risultati)

    Introduzione.

Durante lo studio dell'argomento "Tempo e osservazioni meteorologiche" in una lezione di geografia, ci è stato assegnato il compito di realizzare uno strumento meteorologico a casa e di effettuare osservazioni meteorologiche secondo questo strumento. Avevo una domanda: "È possibile creare una stazione meteorologica a casa e utilizzarla per condurre osservazioni meteorologiche?"

Il nostro lontano antenato dipendeva fortemente dalle vicissitudini del tempo. Non comprendeva l'essenza e gli schemi dei fenomeni naturali e spiegava tutto ciò che era incomprensibile con la presenza di una forza soprannaturale e “divina”. Per “volontà degli dei”, il sole sorse, piovve, i fiumi si seccarono e soffiò il vento.

Tutti i popoli hanno divinizzato il Sole, la Luna, il vento, il fulmine e il tuono. Gli slavi orientali, prima di adottare il cristianesimo, veneravano in particolare Perun: il dio dell'agricoltura, il donatore di pioggia, il creatore di fulmini e tuoni, che aveva il potere di creare vegetazione primaverile sulla terra e sugli alberi. Avendo accettato la nuova fede, i nostri antenati iniziarono a onorare Ilya il Tuono.

Molti popoli consideravano il Sole la principale fonte di vita sulla Terra. Lo chiamavano "il principe della terra e il re del cielo". Luna era venerata come una principessa.

Prima dell'avvento di strumenti speciali, le previsioni meteorologiche si basavano esclusivamente sull'osservazione visiva dei fenomeni atmosferici, che consentivano di stabilire determinati schemi già nell'antichità. L'esperienza acquisita ha continuato a svilupparsi e ad accumularsi ed è stata tramandata di generazione in generazione per molti secoli.

    Dalla storia della fenologia.

Fenologia - la scienza dei modelli di sviluppo stagionale della natura. Lo sviluppo della fenologia è determinato dalle esigenze della pratica (agricoltura, pesca, caccia, silvicoltura, conservazione della natura, sanità, ecc.).

La fenologia consente di prevedere i fenomeni stagionali e di pianificare le attività economiche (misure ambientali, tempistica dei lavori agricoli, ecc.) in funzione della tempistica di tali fenomeni.

(№1.)

Ci sono prove che i popoli più antichi della terra - i cinesi e gli egiziani - nella loro pratica agricola sapevano monitorare lo sviluppo stagionale della natura. I fenomeni stagionali si riflettevano in numerose opere di autori antichi (ad esempio, il filosofo greco Teofrasto (372-287 a.C.) e lo scrittore romano Plinio il Giovane (62-114 d.C.)).

Nel Medioevo, negli annali e nelle cronache russe e straniere, a volte venivano conservati documenti sui tempi dell'inizio dei fenomeni stagionali più importanti (ad esempio, nel monastero di Cracovia dal 1490 al 1527, nel palazzo del giapponese Mikado dal 812, ecc.). Tuttavia, questi materiali sono rimasti senza sistematizzazione ed elaborazione scientifica.

In Russia, il più antico è considerato un calendario scritto a mano, datato 1670, e il primo calendario stampato dovrebbe essere considerato “Santi o calendario, pubblicato da Kopievskij ad Amsterdam e datato 1702.

La prima idea sulla necessità di osservare i fenomeni naturali stagionali in Russia apparteneva a Pietro I.

Nel 1721, Pietro I scrisse da Mosca a San Pietroburgo d.C. Menishkov: "Quando gli alberi cominciano ad allargarsi, ordina loro di inviarci notizie di loro, settimanalmente, incollandole su carta con numeri firmati, per scoprire dove è iniziata prima la primavera." E con il decreto del sovrano, emesso il 28 marzo 1722, all'ammiraglio Kruys fu ordinato di tenere registri sistematici sullo stato del tempo a San Pietroburgo.

Nella seconda metà del XVIII secolo, le guardie alle mura del Cremlino dovevano annotare lo stato del gelo, l'inizio di una tempesta di neve, lo spessore del manto nevoso, la natura del vento, la grandine, i temporali e altri indicatori meteorologici.

Dal 1864 cominciò ad essere pubblicato il “Calendario popolare di Kiev” con le previsioni del tempo per ogni mese. Il suo obiettivo era “dare alla gente la conoscenza in forma popolare attraverso articoli rigorosamente presentati scientificamente e in un dipartimento di riferimento adattato ai bisogni delle persone”. Ora questo compito è la meteorologia, la scienza del tempo. Prende il nome dalla parola greca "meteora" - "qualcosa nel cielo".

Dopo la rivoluzione del 1917, la meteorologia continuò a migliorare. Attualmente il servizio idrometeorologico dispone di migliaia di stazioni di osservazione, numerosi osservatori e numerosi istituti di ricerca. Gli operatori dei servizi meteorologici si impegnano a fornire informazioni non solo a breve termine, ma anche a lungo termine.

№2.

    Il concetto di stazione meteorologica, la sua composizione.

Una stazione meteorologica è una raccolta di vari strumenti per misurazioni meteorologiche (osservazioni meteorologiche).

In senso stretto, una stazione meteorologica è un'istituzione che effettua osservazioni meteorologiche. Alle principali stazioni meteorologiche ufficiali del mondo sono assegnati indici sinottici. In Russia, la maggior parte delle stazioni meteorologiche sono gestite da Rosidromet. A seconda del volume stabilito di osservazioni, le stazioni meteorologiche hanno una determinata categoria. I dati delle stazioni meteorologiche dell'URSS sono stati pubblicati nel Meteorological Monthly.

Esistono stazioni meteorologiche analogiche e digitali.

La classica stazione meteorologica (analogica) ha:

1.Termometro per misurare la temperatura dell'aria e del suolo.

2. Barometro per la misurazione della pressione.

3. Anemometro per la direzione del vento.

4. Pluviometro (pluviografo) per la misurazione delle precipitazioni.

5. Igrometro per la misurazione dell'umidità dell'aria

6. Staffa per la misurazione della neve - staffa progettata per misurare lo spessore del manto nevoso durante le osservazioni meteorologiche.

7. Termografo: un registratore che registra continuamente la temperatura dell'aria.

№3.

4.Strumenti meteorologici:

Termometro (Greco θέρμη - calore; μετρέω - misura) - un dispositivo per misurare la temperatura dell'aria, del suolo, dell'acqua e così via. Esistono diversi tipi di termometro: liquido; meccanico; elettronico;

Barometro (greco antico βάρος - "pesantezza" e μετρέω - "misuro") - un dispositivo per misurare la pressione atmosferica. Il barometro a mercurio fu inventato dal matematico e fisico italiano Evangelista Torricelli nel 1644. Era una piastra con mercurio versato al suo interno e una provetta (fiaschetta) posta con il foro rivolto verso il basso; Quando la pressione atmosferica aumentava, il mercurio nella provetta aumentava e quando diminuiva, il mercurio diminuiva. A causa dell'inconveniente, questo design cessò di essere utilizzato e lasciò il posto al barometro aneroide, ma il metodo con cui fu realizzato tale barometro iniziò ad essere utilizzato nei termometri.

A.A. Letiagigina. Geografia. Corso primario: 5° elementare: libro di testo per studenti di istituti di istruzione generale/A.A. Letiagigina; modificato da V.P. Dronova.-3a edizione, rivista. e aggiuntivi - M.: Ventana-Graf, 2015 - 160 p.

In questo progetto creerai una stazione meteorologica desktop da interni fai-da-te. Potresti pensare che ci siano già stati molti progetti simili, ma questo progetto sarà basato sul nuovo chip ESP32, sarà anche dotato di un nuovo sensore BME280, questo sensore misura la temperatura, l'umidità e la pressione atmosferica.

Quando la stazione meteorologica da tavolo è accesa, si connetterà al WiFi e richiederà le ultime previsioni meteo per l'area specificata. Lo visualizzerà quindi, insieme ai dati del sensore, sul display da 3,2″. I dati del sensore verranno aggiornati ogni 2 secondi e i dati meteorologici verranno aggiornati ogni ora. Come puoi vedere, in questo progetto utilizzeremo la tecnologia più recente oggi disponibile. Se hai esperienza nel fai da te, il progetto ti richiederà solo 5 minuti.

Se sei un principiante, guarda il video che spiega le sfumature dell'assemblaggio.

Passaggio 1: componenti della stazione

Per costruire la nostra stazione, avremo bisogno di:

  • Scheda ESP32 (link)
  • Sensore I2C BME280 (collegamento)
  • Display Nextion da 3,2” (link)
  • Piccola scheda di sviluppo (link)
  • Alcuni fili (link)

Il costo del progetto varierà intorno ai 30 dollari.

Puoi utilizzare il chip ESP8266 più economico al posto del modulo ESP32, ma ho deciso di utilizzare l'ESP32 per farmi un'idea di questo nuovo modulo e vedere come funziona.

Passaggio 2: ESP32


Questo è il primo progetto che ho realizzato utilizzando un chip ESP32. Se non lo conosci, il chip ESP32 è la prossima generazione del popolare chip ESP8266. L'ESP32 fornisce due core da 32 processi che funzionano a 160 MHz, una grande quantità di memoria, WiFi, Bluetooth e molte altre funzionalità. E costa solo 7 dollari.

Guarda il video con la mia descrizione dettagliata di questa tavola. Ti aiuterà a capire perché questo chip cambierà il modo in cui creiamo le cose.

Passaggio 3: visualizzazione Nextion

Questo è anche il primo progetto in cui ho utilizzato un display touchscreen Nextion. Si tratta di un nuovo tipo di display dotato di un proprio processore ARM, che consente di personalizzare il display e creare un'interfaccia grafica. Quindi possiamo usarlo con qualsiasi microcontrollore e ottenere buoni risultati.

Passaggio 4: sensore BME280


Il sensore BME280 è l'ultimo sensore Bosch. Può misurare la temperatura, l'umidità e la pressione atmosferica. Abbiamo bisogno di un solo sensore per assemblare un'intera stazione meteorologica.

Inoltre, questo sensore è molto piccolo e facile da usare. Il sensore è controllato tramite l'interfaccia I2C, quindi l'interazione con Arduino sarà molto semplice: per un funzionamento stabile dovremo alimentarlo e saldare solo un paio di fili.

Esistono anche molte librerie sviluppate per questo sensore, quindi possiamo utilizzarne una qualsiasi nel nostro progetto.

Nota: abbiamo bisogno di un sensore BME280. C'è anche un sensore BMP280 che non misura l'umidità dell'aria. Controlla il nome prima di acquistare il sensore.

Passaggio 5: mettere insieme i pezzi





Il collegamento dei moduli è abbastanza semplice, potete vederlo nello schema allegato.

Poiché il sensore BME280 utilizza un'interfaccia I2C, abbiamo solo bisogno di due fili per collegarlo all'ESP32. Ho collegato il sensore ai pin 26 e 27. In teoria, ogni pin digitale della scheda ESP32 può essere utilizzato per interfacciarsi con le periferiche che funzionano su I2C. In pratica ho riscontrato che alcuni pin non funzionano perché riservati ad altri scopi. I pin 26 e 27 funzionano senza interruzioni.

Per inviare i dati al display, dobbiamo collegare un filo al pin TX0 dell'ESP32. Ho dovuto piegare il pin di 90 gradi per collegarlo al display poiché la scheda ESP32 era troppo grande per una breadboard.

Dopo aver assemblato tutte le parti, dobbiamo caricare il codice sull'ESP32 e anche caricare l'interfaccia sul display Nextion. Se riscontri difficoltà nel flashare il firmware ESP32, tieni premuto il pulsante BOOT subito dopo aver premuto il pulsante di download nell'IDE di Arduino.

Per caricare l'interfaccia sul display, copiare il file WeatherStation.tft allegato di seguito su una scheda SD vuota. Posiziona la scheda nello slot situato sul retro del display. Dopo aver collegato l'alimentazione, l'interfaccia verrà caricata sul display: puoi spegnerla e rimuovere la scheda, quindi riaccenderla.

Dopo aver scaricato con successo il codice, la stazione si connetterà al WiFi, richiederà i dati meteo da openweathermap.org e visualizzerà anche i dati dal sensore. Consideriamo ora la parte software del progetto.

Passaggio 6: codice del progetto



Per analizzare i dati meteorologici, abbiamo bisogno di una libreria JSON per Arduino. Abbiamo anche bisogno di una libreria per il sensore.

Diamo un'occhiata al codice. Per prima cosa dobbiamo inviare l'SSID e la password della nostra rete WiFi. Successivamente dobbiamo inserire la chiave API da operweathermap.org. Per creare la propria chiave è necessario registrarsi al sito. Ottenere il meteo attuale è gratuito, ma il sito offre più servizi se vuoi pagarli. Quindi dobbiamo trovare il nostro ID di posizione. Trova la tua località e copia il suo ID dall'URL.

Quindi copia il tuo ID nella variabile CityID. Copia anche l'altitudine sul livello del mare della tua località. Ciò è necessario affinché il barometro mostri dati accurati.

Const char* ssid = "tuoSSID"; const char* password = "tuaPassword"; String ID città = "253394"; //Sparta, Grecia String APIKEY = "yourAPIkey"; #define ALTITUDE 216.0 // Altitudine a Sparta, Grecia

Riceveremo la risposta in formato JSON. Prima di inviare i dati alla libreria JSON, ho rimosso manualmente alcuni caratteri che causavano problemi. Successivamente, la libreria accetta tranquillamente i dati e possiamo salvarli in variabili. Dopo aver memorizzato i dati in variabili, non dobbiamo fare altro che visualizzarli sul display e attendere che vengano aggiornati un'ora dopo. Ho mostrato solo le previsioni del tempo sul display, ma puoi visualizzare più informazioni se lo desideri: tutto è salvato in variabili. Quindi leggiamo le informazioni su temperatura, umidità, pressione dal sensore e le inviamo anche al display.

Per aggiornare le informazioni sul display è sufficiente inviare dei comandi alla porta seriale:

Void showConnectingIcon() ( Serial.println(); String command = "weatherIcon.pic=3"; Serial.print(command); endNextionCommand(); )

L'interfaccia del display Nextion è composta da uno sfondo, blocchi di testo e un'immagine che cambia a seconda del tempo. Controlla il manuale del tuo display per saperne di più sulle sue capacità. Puoi progettare rapidamente la tua interfaccia se desideri che il display mostri più dati.

Oppure puoi semplicemente utilizzare il mio codice incluso in questo tutorial.

File

Passaggio 7: considerazioni finali e miglioramenti

Come puoi vedere, oggi una persona sofisticata può assemblare cose straordinarie con le proprie mani in poche ore e scrivendo solo poche righe di codice. Progetti di questo livello erano inimmaginabili anche due anni fa.

Naturalmente questo è solo l’inizio del progetto. Vorrei aggiungergli molti miglioramenti, come la grafica, la funzionalità touch, magari sostituire il display con uno più grande. Vorrei anche stampare in 3D una bellissima custodia. Progetterei anche un'interfaccia e delle icone più interessanti. E ho già alcune nuove idee da realizzare per le stazioni meteorologiche interne!

Questo progetto è concepito come una stazione meteorologica automatica alimentata da batterie solari. L'obiettivo era costruire una stazione meteorologica piccola e compatta con i seguenti requisiti:

  • Alimentazione solare, con batteria per funzionamento notturno
  • Di dimensioni compatte, facile da installare
  • Possibilità di caricare dati sulla rete WeatherUnderground
  • Misurazione di temperatura, umidità, pressione atmosferica, radiazioni ultraviolette

Durante il processo di sviluppo, la maggior parte di questi requisiti sono stati risolti. Attualmente la stazione meteorologica è dotata di termometro, igrometro, raggi UV e sensore di pressione. Parte della rete WeatherUnderground, la stazione meteorologica aiuta a prevedere il meteo locale. Ecco uno schema completo della stazione meteorologica, che potrai ingrandire salvandolo sul tuo PC:

La stazione meteorologica consuma 1 milliampere. La batteria di riserva qui è solo 1000 m/h: una batteria ai polimeri di litio. Rispetto alle vecchie stazioni meteorologiche, dove le batterie erano sigillate al piombo con una capacità di 5 A/h, questo è un progresso. Le dimensioni del circuito stampato sono 100 mm x 75 mm ed ecco come appariva quando tutto è stato fatto sulla breadboard, e la foto seguente è nella forma finita:

L'unità a 433 MHz fornisce la comunicazione wireless per lo scambio di dati. Attualmente, il dispositivo è collegato direttamente al tetto e carica i dati su WeatherUnderground ogni 11 minuti.

Il circuito è alimentato utilizzando un regolatore di tensione MAX604. Questo regolatore era piuttosto costoso ($ 7,00) ma aveva una caduta di tensione molto bassa che lo rendeva molto efficiente. Questo regolatore viene utilizzato qui per convertire una batteria Li-po da 3,7-4,2 volt in una batteria ideale da 3,3 volt.

Per caricare la batteria è installato il modulo TP4056. Questo modulo è molto efficiente ed è in grado di funzionare con una potenza di ingresso di 5 V. C'era anche un piccolo pannello solare da 5 V in grado di caricare la batteria tramite il TP4056 anche in condizioni di scarsa illuminazione.

Per caricare i dati sulla rete, ho dovuto scrivere un'applicazione speciale per il computer. Il software è stato scritto in C# utilizzando Visual Studio. È possibile scaricare i file di progetto in formato .

LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam