Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
I postatori più attivi del mese
Poderak
 
papat
 
Mrskizzo
 
SistemaL
 
Charade
 

Come realizzare una stazione meteo con Arduino - v1.0

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Sab Gen 23, 2016 6:25 pm


Nel video viene spiegato come realizzare una stazione meteo con Arduino v1.0. Per la realizzazione del progetto sono necessari i seguenti componenti elettronici:

  • Arduino UNO.
  • Sensore umidità e temperatura (consiglio il DHT11).
  • Display LCD 16x2 con interfaccia I2C.
  • Breadboard e cavi


Puoi acquistare questi componenti su Amazon:
- Arduino Uno: http://amzn.to/1OFaRsg
- DHT11: http://amzn.to/1lFs9uO
- Display LCD con I2C: http://amzn.to/1SDPVpa
- Breadboard: http://amzn.to/1UiQ6E7
- Cavi: http://amzn.to/1nfSKQ8

Come sensore di umidità e temperatura ho deciso di utilizzare il DHT11 dato che è un sensore "tutto fare". Esso ci permette di misurare contemporaneamente sia la temperatura e sia l'umidità. Anche se è meno preciso di altri, ho preferito questo essendo più economico e adatto per usi didattici.

Per il display LCD ho preferito utilizzare un'interfaccia I2C. In questo modo si risparmiano i PIN di Arduino. In futuro, con lo sviluppo della stazione, è possibile che ci sia la necessità di altri PIN per cui ho deciso di lasciarne liberi il più possibile. Scopri di più sul funzionamento del display LCD 16x2 con interfaccia I2C qui.

Attenzione! Prima di proseguire con il codice è necessario scaricare la libreria del DHT11 qui e la libreria del display LCD I2C qui.
Il codice della stazione meteo è il seguente:
Codice:

/* Stazione meteo Arduino v1.0
 *  Poderak - http://www.youtube.com/MartinoLutero
 */
#include <Wire.h> //libreria che consente la comunicazione con i2c                
#include <LiquidCrystal_I2C.h>  //libreria display i2c
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN A3
//////////////////////addr, en,rw,rs,d4,d5,d6,d7,bl, blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //impostazione indirizzo del display e pin del display LCD collegati all'i2c
int temp=0; //raccoglie misura temperatura
int um=0; //raccoglie misura umidità
int temp_min=0; //si ricorda della temperatura min. registrata
int um_min=0; //si ricorda dell'umidità min. registrata
int temp_max=0; //si ricorda della temperatura max. registrata
int um_max=0; //si ricorda dell'umidità min. registrata
int c1, c2; //variabili iniziali per um_min e temp_min

 void setup() {
  lcd.begin(16,2); //inizializzo il display. Il display LCD usato è 16x2
  Serial.begin(9600);
  lcd.setCursor(0,0); //scritta all'avvio di arduino
  lcd.print(" Stazione meteo ");
  lcd.setCursor(0,1);
  lcd.print("  Poderak v1.0  ");
  delay(2000);
  }

void loop() {
  lcd.clear();
  int chk = DHT.read(DHT11_PIN); //abilito lettura dht11
  temp=DHT.temperature; //raccolgo misura temperatura
  um=DHT.humidity; //raccolgo misura umidità
  //stampo valori sul display lcd  
  lcd.setCursor(0,0);
  lcd.print("Umidita' : ");       
  lcd.print(DHT.humidity,1);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temperat.: ");  
  lcd.print(DHT.temperature,1);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);
  //riempio  variabili um_min e tem_min per la misura iniziale
  if (c1==0) {
    um_min=um;
  }
  if (c2==0) {
    temp_min=temp;
  }
  
  if (temp>temp_max) {
    temp_max=temp;
  }
  
  if (um>um_max) {
    um_max=um;
  }
  
  if (um_min>=um) {
    um_min=um;
    c1++;
  }

  if (temp_min>=temp) {
    temp_min=temp;
    c2++;
  }
 //stampo statistiche: um_max, um_min, temp_max, temp_min
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. max.: ");          
  lcd.print(um_max);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. max.: ");  
  lcd.print(temp_max);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. min.: ");          
  lcd.print(um_min);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. min.: ");  
  lcd.print(temp_min);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);

  
}


Ultima modifica di Admin il Dom Feb 14, 2016 2:30 pm, modificato 2 volte (Ragione : Aggiornato link della libreria DHT11)

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Lun Feb 15, 2016 8:22 pm

Il progetto è possibile realizzarlo anche con un display LCD normale (senza moduli aggiuntivi). Il codice modificato è il seguente:
Attenzione! Se usi questo codice, non è necessario scaricare la libreria del display I2C.
Codice:

/* Stazione meteo Arduino v1.0
 *  Poderak - http://www.youtube.com/MartinoLutero
 */           
#include <LiquidCrystal.h>  //libreria display LCD
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN A3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //dichiarazione pin
int temp=0; //raccoglie misura temperatura
int um=0; //raccoglie misura umidità
int temp_min=0; //si ricorda della temperatura min. registrata
int um_min=0; //si ricorda dell'umidità min. registrata
int temp_max=0; //si ricorda della temperatura max. registrata
int um_max=0; //si ricorda dell'umidità min. registrata
int c1, c2; //variabili iniziali per um_min e temp_min

 void setup() {
  lcd.begin(16,2); //inizializzo il display. Il display LCD usato è 16x2
  Serial.begin(9600);
  lcd.setCursor(0,0); //scritta all'avvio di arduino
  lcd.print(" Stazione meteo ");
  lcd.setCursor(0,1);
  lcd.print("  Poderak v1.0  ");
  delay(2000);
  }

void loop() {
  lcd.clear();
  int chk = DHT.read(DHT11_PIN); //abilito lettura dht11
  temp=DHT.temperature; //raccolgo misura temperatura
  um=DHT.humidity; //raccolgo misura umidità
  //stampo valori sul display lcd 
  lcd.setCursor(0,0);
  lcd.print("Umidita' : ");     
  lcd.print(DHT.humidity,1);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temperat.: "); 
  lcd.print(DHT.temperature,1);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);
  //riempio  variabili um_min e tem_min per la misura iniziale
  if (c1==0) {
    um_min=um;
  }
  if (c2==0) {
    temp_min=temp;
  }
 
  if (temp>temp_max) {
    temp_max=temp;
  }
 
  if (um>um_max) {
    um_max=um;
  }
 
  if (um_min>=um) {
    um_min=um;
    c1++;
  }

  if (temp_min>=temp) {
    temp_min=temp;
    c2++;
  }
 //stampo statistiche: um_max, um_min, temp_max, temp_min
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. max.: ");         
  lcd.print(um_max);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. max.: "); 
  lcd.print(temp_max);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000); 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. min.: ");         
  lcd.print(um_min);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. min.: "); 
  lcd.print(temp_min);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);

 
}
Il circuito del display dovrà essere in questo modo:
Scopri come funziona il display LCD senza moduli (codice e circuito): qui.

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Mar Feb 16, 2016 8:34 am

Grazie, sempre celere nelle risposte con serieta' e competenza.Complimenti

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Germano il Mar Feb 16, 2016 3:20 pm

bello, penso di farlo in un giorno di questi. grazie! Smile

Germano
Livello uno
Livello uno

Messaggi Messaggi : 19
Crediti Crediti : 28
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 15.02.16
Età Età : 29
Località Località : Milano

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Mar Feb 16, 2016 4:50 pm

Germano appena lo finisci,postalo con programma e disegno

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Germano il Mar Feb 16, 2016 5:02 pm

penso di riprodurlo tale e quale quindi di usare il codice e gli schemi di poderak Smile. admin, riguardo il progetto, usciranno nuove versioni a breve?

Germano
Livello uno
Livello uno

Messaggi Messaggi : 19
Crediti Crediti : 28
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 15.02.16
Età Età : 29
Località Località : Milano

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Mar Feb 16, 2016 5:52 pm

si usciranno

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Mar Feb 16, 2016 7:26 pm

@Germano ha scritto:admin, riguardo il progetto, usciranno nuove versioni a breve?

Si, come dice @papat, usciranno diverse versioni Very Happy. Se avete suggerimenti o vostre modifiche riguardanti il progetto, proponeteli pure Wink.

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Germano il Gio Feb 18, 2016 5:08 pm

Grazie per la risposta  Razz

Germano
Livello uno
Livello uno

Messaggi Messaggi : 19
Crediti Crediti : 28
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 15.02.16
Età Età : 29
Località Località : Milano

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Sab Feb 20, 2016 8:48 pm

Prego, la versione 2.0 è imminente Very Happy!!

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Dom Feb 21, 2016 12:55 pm

bravo

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Sab Mar 05, 2016 2:26 pm

stazione meteo finita e funzionante.Solo che il sensore DHT11 ha un margine di errore non indifferenteAdesso proviamo con la versione V 2.Grazie Admin

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Sab Mar 05, 2016 3:57 pm

Grazie Ciao!! Di quanto è il margine di errore? Very Happy A me non è molto

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Sab Mar 05, 2016 4:05 pm

3gradi C°.Ecco, poiche' ero alle prese della stazione v2 ti devo chiedere:sto usando la I2 per il display acense ,ma non mi da nessuna scritta.Ho un solo dubbio,ho dovuto mettere 16 cavetti per il collegamento(entrambi erano maschi),da dove inizia il N 1 della I2,credo che il collegamento debba essere 1-1;2-2;3-3 ecc sino ad arrivare al 16-16. Le uscite sono perfettamente collegate.Attendo una risposta

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Sab Mar 05, 2016 5:28 pm

@papat, il display LCD deve essere perfettamente combaciato con i fori del display LCD.

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Sab Mar 05, 2016 5:49 pm

Forse mi sono spiegato male,il mio lcd ha i piedini maschi che fuoriescono, e anche l'I2C ha i piedini che fuoriescono ,quindi anch'esso maschio.Ho dovuto mettere dei cavetti (16) per collegarli .Ti avevo chiesto(ma e' come ho fatto io) il 1 pin del I2C dove si trova? Da come lo hai postato si trva sopra il led e quindi l'ho montato bene.Si accende il display e anche se lo regolo con il trimmer,non esce nessuna scritta.Siamo alle solite.

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Sab Mar 05, 2016 6:55 pm

Potrebbero essere le saldature. Ti consiglio di rimuovere le saldature dei piedini maschi dell'interfaccia I2C e di collegarlo con i PIN maschi del display LCD (saldando). Very Happy


Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Sab Mar 05, 2016 9:43 pm

posso usare il display lcd senza I2C.Cambia qualcosa nel programmaì?

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Dom Mar 06, 2016 9:38 am

Se vuoi usare il classico display, devi realizzare questo:

Admin ha scritto:Il progetto è possibile realizzarlo anche con un display LCD normale (senza moduli aggiuntivi). Il codice modificato è il seguente:
Attenzione! Se usi questo codice, non è necessario scaricare la libreria del display I2C.
Codice:

/* Stazione meteo Arduino v1.0
 *  Poderak - http://www.youtube.com/MartinoLutero
 */            
#include <LiquidCrystal.h>  //libreria display LCD
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN A3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //dichiarazione pin
int temp=0; //raccoglie misura temperatura
int um=0; //raccoglie misura umidità
int temp_min=0; //si ricorda della temperatura min. registrata
int um_min=0; //si ricorda dell'umidità min. registrata
int temp_max=0; //si ricorda della temperatura max. registrata
int um_max=0; //si ricorda dell'umidità min. registrata
int c1, c2; //variabili iniziali per um_min e temp_min

 void setup() {
  lcd.begin(16,2); //inizializzo il display. Il display LCD usato è 16x2
  Serial.begin(9600);
  lcd.setCursor(0,0); //scritta all'avvio di arduino
  lcd.print(" Stazione meteo ");
  lcd.setCursor(0,1);
  lcd.print("  Poderak v1.0  ");
  delay(2000);
  }

void loop() {
  lcd.clear();
  int chk = DHT.read(DHT11_PIN); //abilito lettura dht11
  temp=DHT.temperature; //raccolgo misura temperatura
  um=DHT.humidity; //raccolgo misura umidità
  //stampo valori sul display lcd  
  lcd.setCursor(0,0);
  lcd.print("Umidita' : ");      
  lcd.print(DHT.humidity,1);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temperat.: ");  
  lcd.print(DHT.temperature,1);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);
  //riempio  variabili um_min e tem_min per la misura iniziale
  if (c1==0) {
    um_min=um;
  }
  if (c2==0) {
    temp_min=temp;
  }
  
  if (temp>temp_max) {
    temp_max=temp;
  }
  
  if (um>um_max) {
    um_max=um;
  }
  
  if (um_min>=um) {
    um_min=um;
    c1++;
  }

  if (temp_min>=temp) {
    temp_min=temp;
    c2++;
  }
 //stampo statistiche: um_max, um_min, temp_max, temp_min
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. max.: ");          
  lcd.print(um_max);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. max.: ");  
  lcd.print(temp_max);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Umid. min.: ");          
  lcd.print(um_min);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("Temp. min.: ");  
  lcd.print(temp_min);
  lcd.print((char)223);
  lcd.print("C");
  delay(3000);

  
}
Il circuito del display dovrà essere in questo modo:
Scopri come funziona il display LCD senza moduli (codice e circuito): qui.

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da papat il Dom Mar 06, 2016 11:04 am

Ok avevo trovato l'errore,invece di collegare SCL al pin A4 ed SDA al pin A5,distrattamente ho collegato ai pin digitali 4 e 5.Comunque sempre grazie per l'intervento

papat
Maker

Messaggi Messaggi : 167
Crediti Crediti : 249
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 70
Località Località : montalbano ionico

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Come realizzare una stazione meteo con Arduino - v1.0

Messaggio Da Poderak il Dom Mar 06, 2016 2:26 pm

Prego Ciao!

Poderak
♔ Amministratore

Messaggi Messaggi : 4135
Crediti Crediti : 11625
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permesso di questo forum:
Non puoi rispondere agli argomenti in questo forum