01/09/2010

Weather Shield 1: il tempo per Arduino

Filed under: — admin @ 18:32

EtherMania ha ideato, progettato e realizzato un primo prototipo di shield che permettera’ a tutti gli appassionati di Arduino e domotica di leggere tre parametri ambientali: temperatura, pressione ed umidita’ relativa.

La foto qui sotto mostra il prototipo “a cavallo” di una Arduino ed uno shield Ethernet, componenti essenziali per realizzare un semplice ma strepitoso oggetto in grado di pubblicare su una pagina web le informazioni lette dallo WeatherShield1.

WeatherShield1 Prototype for Arduino

WeatherShield1 Prototype - Weather Shield for Arduino

Per semplificare l’utilizzo dello WeatherShield, e’ stata realizzata una libreria liberamente scaricabile ed alcuni esempi di utilizzo della libreria stessa.

Il weathershield1_comm, piu’ semplice e che non richiede l’utilizzo dello shield Ethernet, e’ in grado di visualizzare temperatura, pressione ambientale ed umidita’ relativa attraverso la connessione USB a cui Arduino e’ collegato.

Il weathershield1_ethernet, invece, e’ in grado di interagire con lo shield Ethernet e di visualizzare i tre valori letti dallo WeatherShield1. La figura qui sotto mostra la pagina web resa disponibile dal prototipo attraverso lo sketch fornito d’esempio.

Arduino and the WeatherShield1 acting as a real time web server

The web page hosted by the Arduino displaying the values read by the WeatherShield1

Il terzo esempio dimostra come sia possibile interfacciarsi al server Pachube per pubblicare i dati di temperatura, umidita’ e pressione ambientali rilevati dallo WeatherShield1. Per poterlo utilizzare occorre creare un feed presso Pachube e modificare i parametri relativi al feed stesso all’interno dello sketch. WeatherShield_Pachube puo’ essere scaricato qui.

Lo WeatherShield1 e’ un add-on compatibile con la scheda Arduino 2009 e si installa direttamente su di essa senza necessita’ di effettuare cablaggi e/o saldature. Esso monta un piccolo microcontrollore della serie PIC12 che si occupa di leggere ad intervalli predefiniti (e programmabili dall’utente) i valori forniti dai tre sensori di cui e’ dotata (temperatura, pressione ambientale ed umidita’ relativa), di effettuare una media mobile degli ultimi 8 valori ed una compensazione di temperatura delle letture nonche’ di fornire ad Arduino il risultato della conversione direttamente in gradi Celsius, kPa e %.

In vendita solo su www.EtherMania.com nella sezione “Elettronica”

Qui sotto potete vedere i valori che il prototipo sta inviando tramite ethernet a pachube. I valori sono rilevati all’esterno della nostra sede.

<script src=”http://www.gmodules.com/ig/ifr?url=http://apps.pachube.com/google_gadget/p.xml&amp;up_feedID=10299&amp;synd=open&amp;w=400&amp;h=500&amp;title=Weather+shield+for+Arduino+sends+pachube+feeds&amp;border=%23ffffff%7C0px%2C1px+solid+%23004488%7C0px%2C1px+solid+%23005599%7C0px%2C1px+solid+%230077BB%7C0px%2C1px+solid+%230088CC&amp;output=js”></script>

18 Comments

  1. Salve ho acquistato la Weather Shield e ho caricato sull’Arduino 2009 i codici. Il primo per il semplice USB funziona perfettamente, mentre il secondo per la scheda Ethernet mi da un errore in fase di verifica e poi in fase di compilazione
    ‘WeatherData’ was not declared in this scope
    Saprebbe indicarmi come mai non funziona??
    Grazie in anticipo dell’aiuto.

    Comment by Sergio La Rosa — 05/02/2011 @ 12:27

  2. Buongiorno.
    Il problema sembra verificarsi solo con l’ultima versione dell’IDE di sviluppo di Arduino (0022) mentre compila correttamente con la versione 0018.
    La classe WeatherData viene utilizzata per instanziare un oggetto che serve da contenitore per i dati letti dallo WeatherShield. Mentre la versione 0018 “digeriva” la definizione della classe WeatherData all’interno dello sketch, la versione 0022 esige che tale classe venga dichiarata e definita in file esterni.
    Qui di seguito trova una nuova versione compilabile anche con l’ultimo tool di sviluppo di Arduino (0022).

    WeatherShield1_Ethernet.zip

    Comment by admin — 05/02/2011 @ 12:56

  3. Salve, il codice per interfacciare la weather station a pachube e leggere i dati direttamente da la dove posso trovarlo? Grazie

    Comment by filippo — 08/02/2011 @ 11:57

  4. E’ stato appena rilasciato.
    Puo’ scaricarlo da questo link: WeatherShield1_Pachube
    Per poterlo utilizzare deve modificare alcuni parametri del codice quali, ad esempio, il numero del feed Pachube, nonche’ la chiave assegnata al suo feed.

    Comment by admin — 09/02/2011 @ 18:21

  5. Ho modificato i parametri relativi a API key e numero feed. Tuttavia non funziona quando mi collego a pachube e se accedo alla shield con l’ip 192.168.0.150 il browser mi informa che la pagina non esiste… Mi chiedevo è forse un problema di datastreams cioè devo cambiare il valore 1 a 3 (temp, umidità e pressione) ? O pachube necessita di modifiche particolari?

    Comment by filippo — 10/02/2011 @ 16:29

  6. Ha provato a vedere che cosa viene scritto da Arduino sul monitor della seriale? E’ normale che con il browser puntato sull’indirizzo IP di Arduino non si veda niente: lo sketch non implementa alcun server HTTP ma solo il protocollo di comunicazione con Pachube.

    Comment by admin — 10/02/2011 @ 16:37

  7. mi porta Connection failed nel seriale… da cosa può dipendere?

    Comment by filippo — 10/02/2011 @ 16:42

  8. Mah. Sembra piu’ un problema legato alla rete. Ha la possibilita’ di verificare che cosa transita sulla rete ethernet?
    Nel normale funzionamento il monitor seriale dovrebbe riportaare questo:

    =====
    reset ethernet
    setup complete
    Data sampled from Weather Shield
    Connecting…
    98.5,21.50,31.22
    GET request to retrieve
    finished GET now PUT, to update
    finished PUT: disconnecting.
    =====

    Comment by admin — 10/02/2011 @ 17:23

  9. Ho appena adesso provato con due reti e due indirizzi ip diversi, ho provato a connettermi e rimane l’errore connection fail :(

    Comment by Filippo — 10/02/2011 @ 20:41

  10. Per quanto posso capire il problema potrebbe essere legato alla configurazione di rete o ad un errato assegnamento dell’IP di Arduino.
    Ad esempio:
    1. L’indirizzo IP associato ad Arduino e’ compatibile con la sua sottorete?
    2. L’indirizzo del default gateway finisce con un .1? Se non e’ cosi’ occorre specificare il default gateway durante l’inizializzazione della libreria associata all’ethernet shield.
    Forse conviene che ci si senta per e-mail, telefono o skype. Mi scriva, per cortesia, all’indirizzo di supporto di ethermania, specificando un suo recapito.

    Comment by admin — 11/02/2011 @ 11:31

  11. Grazie dell’aiuto ma ho risolto in un altro modo utilizzando il Php e le librerie grafiche invece di Pachube :) Comunque la scheda e il codice per il server web funzionano alla grande e sono soddisfatto dell’acquisto :) volevo solo chiederle se gli schemi della Weather sono sotto licenza Open oppure sono suoi marchi registrati? Semplice curiosità perchè un giorno vorrei riuscire a riprodurre “artigianalmente” il sistema.. Inoltre mi chiedevo a cosa serve il pic12F683 sulla scheda? funziona da ADC/DAC forse? Grazie in anticipo dell’attenzione :)

    Comment by Filippo — 15/02/2011 @ 13:06

  12. Bene. Sono contento!
    Gli schematici dello WeatherShield non sono chiusi ma ho intenzione di rilasciarli di pubblico dominio… appena avro’ un po’ di tempo libero per pubblicarli.
    Il PIC a bordo dello shield si prende cura di leggere il sensore di temperatura tramite I2C, di eseguire le conversioni AD sul sensore di pressione ed umidita’. Inoltre gestisce la comunicazione seriale bidirezionale con l’Arduino.
    Il firmware e’ stato scritto in C e non penso che verra’ rilasciato pubblico, per ora.

    Comment by admin — 15/02/2011 @ 15:28

  13. Bene grazie, ho capito tutto :) grazie del supporto! :)

    Comment by Filippo — 24/03/2011 @ 15:19

  14. Si possono collegare anche altri sensori esterni (tipo anemometro, pluviometro ecc)?

    Comment by paolo — 03/05/2012 @ 01:52

  15. Non direttamente allo shield. Rimane l’opportunita’ di collegare tali sensori direttamente ad uno o piu’ pin di Arduino/Netduino poiche’ lo WeatherShield utilizza soltanto due pin per le comunicazioni con Arduino/Netduino, lasciando liberi tutti gli altri.

    Comment by admin — 03/05/2012 @ 09:36

  16. Buongiorno, ho da poco acquistato lo weathershield dell’articolo soprastante, premetto che non ho alcuna esperienza con arduino, pertanto ho utilizzato gli sketch proposti.

    Constatato che il tutto funziona a dovere tramite comunicazione usb, mi chiedo se e quanto siano precisi i sensori.

    Tralasciando per il momento pressione e umidità più difficili da controllare senza una adeguata strumentazione, mi pare che il valore di temperatura abbia un errore medio (nel mio caso) di +5°C, un pò troppo perchè ser non erro il produttore del chip indica un errore di +- 1°C

    mi chiedevo se potesse essere un problema derivante dall’alimentazione pertanto sucessivamente ho alimentato arduino con un trasformatore esterno a 12v, ma il risultato non differisce.

    è pertanto normale avere discrepanze di questo ordine?
    avete svolto dei test verificando la precisione dei dati ottenuti ?
    da cosa potrebbe dipendere alimentazione o errori nel calcolo del software?

    grazie

    Davide

    Comment by Davide — 23/08/2012 @ 08:18

  17. Buongiorno Davide.

    Lo weathershield monta due tipologie di sensori. Umidita’ e pressione hanno una uscita analogica e il PIC a bordo dello shield effettua una conversione A/D del loro segnale, provvedendo successivamente al calcolo del relativo valore e alla rappresentazione in una forma piu’ facilmente fruibile da Arduino.
    Il sensore di temperatura, invece, viene tarato in fabbrica e ha a bordo un convertitore A/D a 10bit. Il PIC ha “solo” il compito di leggere il valore digitale fornito dal sensore, mediarlo, e applicare una relazione non lineare per limitare l’errore statistico di taratura, come riportato nel datasheet del sensore stesso.
    La precisione ottenuta da questo sensore, quindi, e’ superiore rispetto a quella degli altri due, proprio perche’ la conversione digitale viene fatta dal sensore stesso e non e’ affetta, quindi, da parametri esterni. L’applicazione della relazione non lineare, inoltre, riduce gli errori statistici di calibrazione, incrementando la precisione del sensore. Maggiori informazioni puo’ trovarle cercando tra le application notes di Microchip per il sensore stesso.

    Tuttavia occorre precisare che il sensore di temperatura e’ collegato fisicamente al circuito stampato dello shield e misura, quindi, la temperatura del circuito stampato. Questa potrebbe essere piu’ elevata rispetto all’aria circostante a causa di molti fattori. La causa principale e’ senza dubbio la presenza di componenti elettronici che riscaldano quali, ad esempio, i regolatori lineari presenti su Arduino. Aumentare la tensione di alimentazione peggiora la situazione in quanto maggiore energia verra’ dissipata dai regolatori sotto forma di calore. Ulteriori contributi provengono da eventuali shield posti al di sotto dello weathershield quali, ad esempio, uno shield ethernet.
    Si consideri che l’aria calda prodotta dai componenti sottostanti allo weathershield tende a “salire”. Cio’ comporta un innalzamento della temperatura del circuito stampato, rilevata poi dal sensore.

    Una soluzione per limitare questi contributi e’ quella di utilizzare un sottile strato isolante al di sotto dello weathershield. CIo’ puo’ essere fatto tramite un piccolo pezzo di polistirolo. Si consiglia, inoltre, di posizionare l’intero stack Arduino+shield perpendicolarmente al piano di appoggio. Questa posizione favorisce lo scambio d’aria per “effetto camino”.

    Una soluzione piu’ radicale potrebbe essere quella di separare fisicamente lo shield da Arduino collegando i 4 piedini necessari al suo funzionamento (Vin + GND + Dati + Clock) con dei fili di lunghezza variabile. Utilizzando un normale cavetto ethernet e’ possibile separare lo weathershield da Arduino anche di qualche metro.

    Se volesse verificare il corretto calcolo della temperatura da parte dello weathershield, puo’ prelevare gli ultimi campionamenti come forniti dal sensore (formato “raw”). In questo modo bypasserebbe completamente l’algoritmo presente all’interno del PIC a bordo dello weathershield. Trova maggiori informazioni su come richiedere dati raw all’interno del manuale utente.

    Infine, rimane sempre la possibilita’ di applicare un offset alla misura letta. Tale offset andra’ stabilito sperimentalmente tramite il confronto con un termometro posto nelle vicinanze dello shield e terra’ conto dell’influenza dei parametri esterni al sensore.

    Comment by admin — 23/08/2012 @ 10:15

  18. Grazie mille della risposta molto esaustiva, provvederò a fare alcune prove

    Comment by Davide — 23/08/2012 @ 12:03

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.