• Meetings e Workshop
    l'associazione organizza workshop e meeting periodici

  • HowTo e manuali
    come costruire da te gadget elettronici e come programmarli

  • Hacking della PS3
    howto su come installare linux ed effettuare altri hack

  • Una comunità organizzata
    entra a far parte di una associazione organizzata e attiva

  • Strumenti di supporto
    per mantenersi in contatto e favorire la cooperazione

beginner - arduino + LM35DZ + pachube PDF Stampa E-mail
Scritto da Carlo Denaro - Blackout   
Carlo Denaro - Blackout

Quest'oggi un bel articolo corposo su come inviare i dati acquisiti da Arduino (dai sensori) in un servizio di aggregazione apposito (pachube). Acquisire dati alla fine è molto semplice, basta creare un polling temporizzato che si preoccupi di recuperare i dati via seriale.

La parte invece più divertente è quella di creare il feed csv o eeml o xml per pachube. Questo ci permette di condividere i nostri dati col mondo e/o di usarli in maniera smart e standard.

 

Ingredienti

  • arduino
  • LM35DZ [ datasheet ]
  • wire vari
  • calcolatore elettronico con porta USB e connessione a internet

Let's go

 

La prima cosa da fare è fare i semplicissimi collegamenti.

 

 

La seconda cosa da fare è inserire il seguente sketch sul nostro amato Arduino

 

int pin = 0; // analog pin
 int tempc = 0;
 int samples[3]; // variables to make a better precision
  int i;
 
 void setup()
 {
 Serial.begin(9600); // start serial communication
 }
 
 void loop()
 { 
 for(i = 0;i< =2;i++){ // gets 3 samples of temperature
 samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
 tempc = tempc + samples[i];
 delay(1000);
 }
 
 tempc = tempc/3.0; // better precision
 Serial.println(tempc,DEC);
delay(1000); // delay before loop
 }

Come potete vedere questo semplicissimo sketch si occupa di recuperare il dato dall'Analogica 0 e di trattarlo al fine di portarlo in gradi Celsius. Vengono presi 3 samples e viene fatta la media per una maggiore accuratezza (anche se c'è un bug di fondo, vediamo chi lo trova). Questo dato temperatura media viene sparato nella seriale con Serial.println.

Il calcolatore

 

Lato calcolatore invece, con il nostro buon python, ci occupiamo di ascoltare ogni X minuti la seriale e di recuperare il dato che ci passa arduino/lm35dz.

Lo script che si preoccupa di fare questo è il seguente.

import serial
import eeml
from time import strftime

API_KEY = 'XXXXXXX'
API_URL = 'http://api.pachube.com/v2/feeds/YYYYYY.xml'
ser = serial.Serial('/dev/ttyUSB0', 9600)
celsius = 0
while celsius <= 0:
 celsius = ser.readline()
#--file-csv-pachube
handle = open("/PATH/temp.csv","w")
logline = []
logline.append( '25201;0;' + strftime("%Y-%m-%d %H:%M") + ';' + celsius )
handle.write((" ".join(logline)) )
handle.close()
#--put-on-pachube
pac = eeml.Pachube(API_URL, API_KEY)
pac.update([eeml.Data(0, celsius, unit=eeml.Celsius()), ])
pac.put()

Questo codice è di semplicissima comprensione. Vengono importate le lib seriale e eeml.

Vengono settate le variabili API di pachube (fornite quando vi registrate al servizio).

Viene letto dalla seriale il dato con ser.readline() e infine questo viene salvato in un file csv accessibile e pushato a pachube con le librerie eeml.

Per fare in modo che ogni tot minuti avvengano le letture, basta usare il nostro amato demone cron. Modificando il crontab potete aggiungere un job ogni tot minuti. Se avete problemi casomai inserisco un'appendice a questo articolo.

Conclusioni

 

Avete gettato le basi per il vostro sistema distribuito di sensori! Adesso libero sfogo alla fantasia. Potete collegare sensori di umidità, di rilevamento gas, di luminosità, contatori geiger, ... c'è spazio per ogni cosa immaginabile!

A giorni inserisco il download degli sketch e del file sorgente python pronto da scaricare.

Download

 

(prossimamente in questi giorni)

  • sketch arduino lettura sensori
  • script python

 

Commenti  

 
+1 #1 back 2011-10-29 07:20 @bug Array troppo lungo…è sufficiente samples[2] Citazione
 
 
+1 #2 Elio 2014-07-29 03:20 proprio interessante un lavoro ben fatto ,semplice e con possibilità di dr sfogo alla fantasia
Bravo
Citazione
 
 
#3 Blac]{out 2014-08-10 07:27 grazie elio! Citazione
 

Aggiungi commento


Codice di sicurezza
Aggiorna


grayhats.org, Powered by Joomla!; Joomla templates by SG web hosting
valid xhtml valid css