domenica 18 gennaio 2015

Stazione Meteo v.103

Stazione Meteo con Arduino UNO

In questo post pubblico lo sketch che riunisce i precedenti relativi alla stazione meteo.
Gli sketch sono stati revisionati ed integrati fra loro.
Questa non è la versione definitiva ed alcune parti dello sketch sono state scritte pensando alla prossima versione.
In ogni caso lo sketch è funzionante.

La scheda pronta al centro BMP180 e DHT22





Qui sono riunite le seguenti funzioni:

Misura temperatura ed umidità con DHT22.

Misura pressione e temperatura con BMP180.

Misura velocità del vento con anemometro a coppette.

Pluviometro.

Direzione del vento.

E' sta aggiunta una visualizzazione sul display LCD 20x2 con rotazione delle misure effettuate.
-------------------------------------------------------------------------------------------------------------------

Materiale occorrente:

Arduino UNO
DHT22 
BMP180 

Sensore pluviometro.

Sensore direzione vento.

Anemometro a coppette.

Per questi sensori consultate i singoli post su questo stesso blog.

2) condensatori ceramici da 100 nF 6,3V.
4) resistenze da 10 Kohm.
2) resistenze da 100 ohm.
1) Trimmer da 10 Kohm.
1) display LCD 20x2
3) morsetti due poli per il collegamento dei sensori.
Filo per collegamento, breadboard o basetta mille fori.
Minuteria e contenitore.

In particolare se volete autocostruire la banderuola consultate il blog occorrono:

1) resistenza da 10K
1) resistenza da 56K
1) resistenza da 15K
1) resistenza da 8,2k
1) resistenza da 33K
4) ampolle reed
1) piccolo magnete.



vedi post anemometro


vedi post pluviometro



Qui sotto lo schema della stazione completa.



(corretto schema 16/3/2016)

Ai morsetti saranno collegati i sensori anemometro, pluviometro, direzione vento.




In questo modo la stazione meteo è in grado di rilevare e mostrare a rotazione sul display le misure effettuate.

Per un lavoro più completo si dovrebbe aggiungere un orologio ed una registrazione delle misure, vedrò di procurarmi il materiale necessario e di completare il lavoro.

Non posto qui lo sketch in quanto già presentato e spiegato nelle precedenti sezioni, in ogni caso nei commenti dovreste trovare tutte le spiegazioni sul funzionamento.

Scaricate lo sketch Stazione Meteo v.103

Qui trovate la libreria per il BMP180

 Se avete dubbi o domande consultatemi lasciando un commento. ( Indicate un nome od un Nickname)


Qui sotto un breve filmato

Nel filmato si vedono dei valori a zero o nulli, in quanto non sono stati collegati i sensori relativi.










Grazie per l'attenzione

Sergio

38 commenti:

  1. Ciao, volevo chiederti dove posso trovare la libreria per il DHT22
    Nicholas

    RispondiElimina
    Risposte
    1. Ciao!
      Per il dht22 ci sono più librerie, ne abbiamo provate alcune e vanno bene.
      Ho messo un link sul blog per quella che noi abbiamo utilizzato.
      Nel post dedicato al sensore DHT22 ( gennaio 2014)
      http://avventurarduino.blogspot.it/2014/01/stazione-meteo-con-arduino-weather.html
      Non dovresti aver problemi a risolvere la cosa.
      In ogni caso facci sapere come va...
      Sergio

      Elimina
  2. Salve Sergio,
    Sto portando una stazione meteo per l'esame di maturità. Attualmente mi mancano per finire il progetto: l'anemometro, il pluviometro e la banderuola.

    Per l'anemometro acquisto questo:
    http://www.robot-domestici.it/joomla/component/virtuemart/robotica-domotica/sensori/sensori-di-vento/sensore-vento-trasparente

    Per il pluviometro questo:
    http://www.ebay.it/itm/pluviometro-per-La-Crosse-2300-replacement-rain-collector-/171561807464?pt=LH_DefaultDomain_101&hash=item27f1e16e68

    O questo:
    http://www.ebay.it/itm/Pluviometro-Per-WS-2300-WS-2305-WS-2308-Sensore-Radio-Ricambio-/281350187419?pt=LH_DefaultDomain_101&hash=item4181c7299b

    Vanno bene questi sensori?

    Per la banderuola non so cosa fare. Si trova in rete giá costruito? O sarebbe meglio costruirselo?

    Grazie del suo aiuto,
    Cordiali saluti

    RispondiElimina
  3. Si per quanto riguarda l'anemometro è esattamente quello che ho usato, per il pluviometro sono del tutto simili.
    Per quanto riguarda la banderuola in commercio non ho trovato pezzi staccati ho quindi costruito come indicato nel blog, ma non sono completamente soddisfatto dei risultati.
    Ho in preparazione qualcosa di più interessante ma è ancora allo stadio di progetto (fermo) in attesa....
    Prova a costruirlo con le ampolle reed come indicato non costano molto e per un esame dovrebbe reggere
    Auguri.
    Sergio.

    RispondiElimina
  4. Salve Sergio,non riesco a trovare la libreria SFE_BMP180.Potresti fornirmi il link da dove la hai scaricata,oppure fornirmela in qualche modo.Grazie

    RispondiElimina
    Risposte
    1. Ciao! Ho aggiunto il file zip della libreria, non ricordo bene ma probabilmente era sul sito della SparkFun.

      Grazie per il commento e fammi sapere se va tutto bene.
      Auguri di buon anno
      Sergio

      Elimina
  5. Sergio, sto utilizzando il tuo progetto per farlo fare ad una mia scolaresca di terza media. Dal momento che ho difficoltà a reperire il materiale per produrre la banderuola per la rivelazione del vento, eliminando questo elemento, quindi collegando solo il pluviometro e l'anemometro, lo scketch complessivo, rimane lo stesso i va modificato?
    Grazie, Fabrizio

    RispondiElimina
    Risposte
    1. Puoi lasciare tutto come da progetto, ma ti consiglierei di cablare il tutto come da schema, la banderuola esegue solamente il collegamento a resistenze diverse, che in serie alla resistenza da 10 k danno sul punto "a" collegato al pin A0 una diversa tensione al pin analogico.
      Il programma in base al valore stabilisce la direzione, se lasci il tutto scollegato si avrà come risultato dei valori causali della direzione del vento.
      Potresti inserire una sola resistenza da 10 k e quindi avresti sul punto "a" che va sul pin A0 un valore fisso di 2,5V che ti indicherà una direzione fissa.
      Potresti modificare lo sketch non facendo visualizzare quel valore.
      Questo ti darà la possibilità in futuro di aggiungere la banderuola senza molte modifiche.
      Va bene anche lasciando lo sketch così come è e non cablare la parte dedicata alla banderuola, come ti ho detto si presenteranno dei valori direzione vento casuali.
      Grazie per il commento.
      Se risolvi o ai altri problemi non esitare a contattarmi.
      Cordiali saluti
      Sergio

      Elimina
    2. Grazie per la risposta (la leggo solo oggi perché era tempo che non andavo sul tuo blog). Vorrei chiederti un'altra cosa: dallo schema elettrico mi sembra di capire che il sensore di temperatura/umidità abbia tre piedini di collegamento, mentre quello che ho acquistato io (è comunque un DHT22) ne ha quattro. Come devo comportarmi per il collegamento? Tieni conto che sto facendo assemblare il tutto con cavetti jumper ed una breadboard della stessa dimensione che tu riporti nello schema elettrico allegato al progetto. Grazie ancora per la cortesia.
      Fabrizio

      Elimina
    3. Si in effetti anche il mio ha 4 fili, ed infatti nel collegamento si può vedere che il piedino num 3 non è collegato.
      i collegamenti sono:
      1 = vdd
      2 = data
      3 = null
      4 = Gnd
      puoi verificare anche sul post pubblicato sul blog relativo al dht22
      http://avventurarduino.blogspot.it/2014/01/stazione-meteo-con-arduino-weather.html#more
      Cordiali saluti e fammi sapere se i tuoi allievi sono interessati.
      Sergio

      Elimina
  6. Grazie a te, inizio a capirci qualche cosa, complimenti...cerchero' di seguire il blog.
    Biagio

    RispondiElimina
    Risposte
    1. Grazie per il commento.
      Come ho già detto anche io cerco di conoscere meglio questo affascinante settore dell'elettronica che incontra ed interagisce con il mondo esterno.
      Ho visto che i commenti, le richieste, le domande dei lettori sono utili per approfondire e chiarire tutti gli aspetti.
      Se posso cerco infatti di rispondere a tutti i commenti lasciati sul blog.
      Cordiali saluti
      Sergio

      Elimina
  7. Sergio, ho ancora un paio di domande: vedo sulla schema che hai fatto con Fritzing che ci sono tre componenti di forma quadrata (mi sfugge il nome tecnico, il primo è tutto sulla sinistra dello schema appena sopra il primo cavo che porta al pluviometro) che sembrano impegnare solo due piedini, mentre quelli in mio possesso ne hanno tre. Inoltre volevo capire un po' meglio l'alimentazione: vedo che usi una batteria da 9V che si aggancia a quello che sarebbe l'ingresso per un alimentatore; fisicamente, che componenti hai usato?

    RispondiElimina
    Risposte
    1. Ciao.
      I componenti a forma quadrata sono semplicemente i morsetti come si trovano su friz.
      Su friz si può selezionare il numero dei poli 2,3,4 ecc..
      Come puoi vedere nella foto iniziale io ho usato fisicamente due morsetti da tre poli, in realtà nell'elenco materiale ho indicato 3 morsetti da due ma ne avevo solo quelli da tre.
      I morsetti servono per portare fuori dalla scatola i fili per anemometro, pluviometro, banderuola. ( E' solo un aspetto pratico non influisce sul funzionamento).
      Per le prove utilizzo una batteria a 9V inserita con apposito adattatore nella alimentazione di Arduino, si vede nella foto è sotto alla basetta millefori che di fatto realizza quanto indicato sulla bb con fritzing.
      Per una stazione meteo funzionante per tempi lunghi conviene alimentarla con un piccolo adattatore da rete.
      In ogni caso non ci sono componenti con forte assorbimento.
      Si potrebbe prevedere un pulsante o interruttore che tolga alimentazione al display, e accenderlo solo quando si desidera.
      Come ho indicato questa stazione meteo non è una versione definitiva completa ma solo un esempio ed una guida per costruirsene una.
      Ricontrolla tutti i post relativi alla meteo che descrivono i singoli passaggi.
      Questo post è riassuntivo ma alcuni dettagli in più li puoi avere dai singoli post.
      ho aggiunto nel blog la casella "cerca nel blog", se non hai già letto questi post puoi approfondire la lettura cercando queste parole:
      "BMP180, Pluviometro, Banderuola, Anemometro, DHT22, Psicrometro, LM35"
      Buona lettura.
      Sergio

      Elimina
  8. Salve, mi sto' avvicinando al mondo Arduino da poco proprio perche' vorrei realizzare una stazione meteo da zero. La mia idea è quella di prevedere una unità esterna (Temperatura, umidità, pluviometro, velocità e direzione vento) ed una interna (Temperatura, umidità e pressione) per poi inviare il tutto sul web. E' possibile utilizzare la versione Nano (dovrebbe consumare di meno - un pensiero ad un pannello solare) anzichè Uno per entrambi o almeno per l'unità esterna? Invece della banderuola a contatti reed si può utilizzare una con sensore angolare a tre fili che forisce a seconda della posizione una tensione in uscita da 0,25 a 4,75 V? Grazie

    RispondiElimina
    Risposte
    1. Ciao, grazie per il commento, si penso che Arduino nano vada bene ma se usi un pannello solare per alimentazione inserirai anche una batteria che accumuli energia per le ore notturne.
      Per quanto riguarda il consumo non ci dovrebbero essere molti problemi in quanto i dati puoi registrarli con cadenza piu o meno frequente, Arduino quindi lavorera solo nei tempi da te programmati.
      Per quanto riguarda la temperatura usando 2 BMP180 avrai temperatura e pressione sia interna che esterna.
      Per quanto riguarda la banderuola sono perfettamente d'accordo con te quella da me realizzata all'esterno ha dato problemi, e quindi anche io ho pensato di sostituirla con altro... ma ancora non ho deciso.
      Se puoi indicare la sigla o un link al sensore da te indicato te ne sarei grato.
      Saluti ed auguri.

      Elimina
    2. Ciao la banderuola, cosi chiamata volgarmente, in mio possesso è una INSPEED VORTEX VISUAL VANE http://www.inspeed.com/anemometers/Visual%20Vane.asp munita di sensore angolare a tre fili della novotechnik RFA 4001-636-211-401 http://www.novotechnik.com/pdfs/RFA4000.pdf. Grazie a te e auguri

      Elimina
  9. Ciao. complimenti per l'ottimo progetto soprattutto ben fatto. avrei delle richieste da fare. ho uno schermo lcd 20x4. cosa va cambiato dallo sketch per poter visualizzare 4 righe e non due solo? non avendo competenze in materia riusciresti ad integrare allo sketch esistente anche la possibilità di trasmettere dati tx 433 e uno con lettura dati rx e visualizzazione su lcd? vorrei fare la stazione ( gia costruita in modo completo con i cavi) ma senza fili. spero tu possa soddisfare le mie richieste ringraziandoti fin da subito. Gabri.

    RispondiElimina
    Risposte
    1. Ciao. Grazie per la lettura ed il commento.
      Le modifiche per utilizzare un LCD 20x4 sono molto semplici, posso fare una appendice al post.
      Dovrai solo avere un poco di pazienza perché in questo periodo sono molto occupato da altri progetti e non ho sottomano un lcd 20x4.
      Mi procurerò l'oggetto ci dovrebbe essere una fiera di elettronica a Firenze nel mese di Febbraio e penso di andarci.
      Se riesco a farlo pubblicherò l'appendice al post oppure un post apposito.
      Altra cosa è trasmettere i dati con un tx a 433Mhz.
      La cosa è fattibile ma non ho materiale per prove ed esperimenti.
      L'idea è comunque ottima ed anzi data la posizione esterna della capannina meteo è chiaro che la possibilità di trasmettere i dati via radio è l'evoluzione più utile per raccogliere dati in luogo centralizzato dove elaborarli ed utilizzarli.
      In ogni caso ci studierò sopra.
      Saluti
      Sergio

      Elimina
    2. Ciao, sei riuscito a creare lo sketch con LCD 20X4?

      Elimina
    3. Ciao!
      Mi scuso per la lunga attesa, non ho avuto tempo da dedicare ad Arduino.
      Nella mia precedente risposta Ti avevo detto che mi sarei procurato un lcd 20x4 ma non sono potuto andare per fiere sempre a causa di impegni e lavoro.
      Finalmente sono riuscito a procurarmi il pezzo.
      Mi sono messo a studiare la possibilità di creare uno sketch per display 20x4
      In realtà non occorreva proprio di avere il display perchè i cambiamenti da fare sono solo allo sketch.
      1) - cambiare questa funzione:
      void setup_LCD()
      {
      lcd.begin(20, 4); // si indica (20 righe, 4 colonne)
      }

      Fatto questo il tutto funziona già ma dovrai modificare le stampe su lcd a tuo piacimento dipende da quali dati vuoi esporre.
      Purtroppo la cosa non è semplice perchè occorre riscrivere tutte le funzioni di stampa.
      Non ho il tempo materiale per fare questo lavoro, le varie stampe adesso sono scritte su due righe.
      Potresti utilizzare la terza e quarta riga per visualizzare l'ora dell'ultima misura, modificando la funzione seguente:

      void print_ora_stato()
      {
      // lcd.clear(); // non cancelliamo le altre righe
      lcd.setCursor(0, 2);//si posiziona nella terza riga
      lcd.print("Ora corrente : ");
      lcd.print(seconds(), 1);
      lcd.setCursor(0, 3); // si posiziona nella quarta riga
      lcd.print("Ultima misura: ");
      lcd.print(0, 1);
      }
      Non è molto ma con molta pazienza puoi fare le modifiche necessarie.
      Un consiglio **** valido sempre **** fai una modifica per volta e prova il programma segna tutte le modifiche per poter tornare indietro in caso di mal funzionamento.
      In ogni caso rimango disponibile per altri consigli.
      Saluti
      Sergio

      Elimina
    4. grazie mille. Avrei un' ultima richiesta gia espressa. la trasmissione dati 433 mhz. non ho la possibilità di usarla via cavo e ora che ho acquistato tutti i componenti vorrei sfruttarla. spero che tu possa soddisfare anche questa mia richiesta. grazie mille ancora !!!!

      Elimina
    5. Avrei un' altra richiesta. Ho visto sul tuo blog che avevi iniziato a realizzare l'anemometro a ultrasuoni. E' un progetto a cui ambisco molto e vorrei realizzare. Riusciresti a continuare lo studio di esso tempo permesso?
      Grazie mille.
      Hai qualche contatto che potresti darmi per poterti scrivere in privato?

      Elimina
    6. Grazie per il commento.
      Per quanto riguarda la trasmissione 433 Mhz non ho materiale:
      Scrivi quanto più possibile sul materiale e vedo di trovare qualcosa di simile ma non posso prometterti tempi certi.
      Indica modello costruttore, dove lo hai acquistato magari un link ai dati tecnici.
      Sia del trasmettitore che del ricevitore.

      Per quanto riguarda l'anemometro ad ultrasuoni ho provato e cercato.
      La conclusione almeno fino ad oggi è che arduino e comunque sensori economici non sono in grado di dare risultati attendibili.
      Farlo è possibile esistono anche apparati commerciali su barche e navi ma è un progetto fuori dalle mie possibilità.
      Ho invece individuato un altro tipo di anemometro che è più alla portata dei mie mezzi ma per adesso è uno dei tanti progetti nel cassetto ... chissà.

      Per quanto riguarda il contatto privato puoi mettere un commento con nome e cognome un email io non pubblicherò il commento ma ti contatterò.
      Cordiali saluti Sergio

      Elimina
  10. ciao, tutto bene? ho visto in internet che le banderuole professionali usano un piccolo componente, un encooder magnetico AS5040. è molto piu preciso e affidabile delle ampolle, ora, sempre che tu abbia voglia e tempo, potresti integrare allo sketch esistente quello dell AS5040 eliminando quello ad ampolle? penso sia un'opportunità per migliorare un progetto ottimo ma soprattutto copiato da molti. grazie.

    RispondiElimina
  11. Salve Sergio, inanzitutto, complimenti per questo interessante progetto e dal momento, poi, che ne sono particolarmente interessato, tanto da essermi procurato gran parte dei componenti, ho da chiederti la gentilezza di ripristnare la pagina dello sketch finale (Stazione Meteo v. 103), visto che non è più attiva. E' possibile ripubblicarla? Purtroppo io non ne sono capace e senza, non mi sarà possibile testare il lavoro che dovrei portare a termine. Grazie

    RispondiElimina
    Risposte
    1. La pagina è normalmente attiva, il file è su Google Drive ed è condiviso, c'è anche la libreria usata per il BMP180.

      Se non riesci a scaricarlo puoi scrivere un commento ed inserire una email io ti scriverò allegando i file che ti interessano, non pubblicherò la mail.
      Ti risponderò appena possibile.

      Chiedo a te e comunque a tutti coloro che risolvono i problemi riscontrati un commento di soluzione del problema.
      In questo modo è possibile non dover ripetere problemi già risolti.
      Cordiali saluti Sergio

      Elimina
  12. Ciao. riusciresti a modificare lo sketch inserendo al posto dell'anemometro con contatto reed, l'anemometro con uscita da 0-5V? Ci ho provato molte volte ma senza riuscire a farlo funzionare. Ti allego uno sketch che ho trovato in internet e che funziona. Possiedo una banderuola con potenziometro multi giri ma quella funziona comunque. grazie e a presto



    void setup ()
    {
    Serial.begin (9600);
    }

    void loop ()
    {
    int sensorValue = analogRead (A0);
    float outvoltage = sensorValue * (5.0 / 1023.0);
    Serial.print ("outvoltage =");
    Serial.print (outvoltage);
    Serial.println ( "V");
    int Level = 6 * outvoltage; // Il livello della velocità del vento è proporzionale alla tensione di uscita.
    Serial.print ("velocita vento");
    Serial.print (Level);
    Serial.println ("livello ora")
    Serial.println ();
    delay (500);
    }

    RispondiElimina
    Risposte
    1. Ciao. Grazie per il commento. Dovresti darmi il modello marca, o altri riferimenti per capire che anemometro stai utilizzando, come lo hai collegato.
      Saluti

      Elimina
  13. Il sensore è SEN0170 dfrobot. Sensore con uscita 0-5 v

    RispondiElimina
    Risposte
    1. Il tuo sensore è ANALOGICO lo puoi collegare ad arduino ad uno dei pin analogici
      vedi al seguente link https://wiki.dfrobot.com/Wind_Speed_Sensor_Voltage_Type_0-5V__SKU_SEN0170

      Scusami per il ritardo ma ho avuto problemi e solo in questi giorni ho ripreso a controllare il blog
      Sergio.

      Elimina
  14. È il sensore che vorrei acquistare, range di lettura 0/30 ms al secondo o in alternativa 0/60 ms.

    RispondiElimina
    Risposte
    1. Dovrai adattare il programma di lettura da digitale ad analogico vedi link
      https://wiki.dfrobot.com/Wind_Speed_Sensor_Voltage_Type_0-5V__SKU_SEN0170

      Elimina
    2. Nel commento del 3 maggio 2020 ho postato una possibile soluzione con l'utilizzo del pin analogico.
      Guarda se può fare per il tuo caso
      Saluti

      Elimina
  15. Vedo che qualcuno ha già richiesto la versione con trasmissione 433 MHz. Per caso è stata creata? Grazie ancora.

    RispondiElimina
    Risposte
    1. Mi dispiace ma solo ora ho letto questo post
      Non non è stata realizzata una versione a 433Mhz
      Saluti

      Elimina
  16. Mi pare di aver capito che per scaricare il file mi necessita una Vs. autorizzazione.
    Grazie
    Alberto

    RispondiElimina
    Risposte
    1. Scusami ma solo ora leggo il tuo problema.
      La difficoltà che hai trovato dipende da google che ha cambiato le modalità di condivisione.
      Ho aggiornato e dovresti poter scaricare il file tranquillamente se non riesci ricontattami nei prossimi giorni controllo anche io.
      Saluti
      PS. se riesci a scaricare il file posta un commento per segnalare la cosa.

      Elimina

Vi ringrazio per la lettura e vi invito al prossimo post.
Se il post vi è stato utile, vi è piaciuto oppure no, scrivete un commento.

Un saluto a tutti.
Sergio

Copyright - Condizioni d’uso - Disclaimer
http://avventurarduino.blogspot.it/2012/10/inizia-lavventura-arduino-12-settembre.html