Differenze tra le versioni di "Gruppo Meteo/HowToOld"

Da raspibo.
Jump to navigation Jump to search
Riga 139: Riga 139:
  
 
todo list relativa al firmware r-map:
 
todo list relativa al firmware r-map:
* sensoristica: per ora abbiamo solo la gestione di sue sesori di
+
 
        temperatura; Paolo ha un sensore di pressione uno di umidità, Mario quelli di
+
* sensore di pressione uno di umidità
        umidità e luminosità. Si potrebbero inserire nella lib
+
* umidità e luminosità
        SensorDriver
+
 
 +
Si potrebbero inserire nella lib SensorDriver
  
 
cosa bisogna collegare:
 
cosa bisogna collegare:

Versione delle 22:55, 7 lug 2014

da completare !

Quindi cosa funziona ora:

Sensoristica:

* per ora sono funzionanti i driver per due sensori di temperatura i2c
* sono gestibili sensori con misurazioni di più parametri

protocollo invio dati:

* interrogazione dei sensori con jsonrpc
* comandi modalità attuatore con jsonrpc
* mqtt su ethernet con ethernet shield e enc28j60

gestione time:

* gestione time con rtc su i2c
* ntp su ethernet

configurazione: sono configurabili runtime:

* i sensori installati, il loro indirizzo i2c e i loro metadati
* il root path mqtt
* il server mqtt
* il server ntp
* la frequenza di campionamento per mqtt
* la data e l'ora per rtc se assente ntp

i parametri sono salvati permanentemente su eeprom

Funzionamento generale: all'accesione viene verificata la presenza di una configurazione di versione corrispondente al firmware, si configura la rete con dhcp, si interroga ntp server e si sincronizza l'orologio; se presente rtc viene impostato il time su rtc. Ci si connette al broker mqtt e tramite una temporizzazione di Alarm vengono inviati ogni sampletime i dati al broker. Contemporaneamente è possibile colloquiare su porta seriale tramite jsonrpc configurando, interrogando i sensori o attivando attuatori. Il sistema dovrebbe essere fault tollerant a: fault del ntp server (con caduta su rtc) fault del brocker mqtt (con riconnessione) rinnovo periodico dei dati del dhcp


Sensori

Utilizzeremo per cominciare sensori I2C. Oltre alla versatitilità e ampia diffusione di questo bus su Raspberry la gestione di i2c e' fatta a livello hardware e non comporta carichi rilevanti per la cpu.

Iniziamo misurando la temperatura.

La sensoristica prevede sue sensori di temperatura i2c della serie tmp della TEXAS INSTRUMENTS nello specifico tmp102 o tmp275 e uno Analog Device.


se avete la breakout board per tmp102 seguite le conessioni mostrate in: http://bildr.org/2011/01/tmp102-arduino/ (l'esempio software è pero' un po' approssimativo) c'è anche questo https://github.com/tz1/sparkfun/blob/master/i2cperiph/tmp102.c


Base board

Hardware

Software

per scaricare il software r.map:

mkdir ~/svn
cd ~/svn
svn checkout svn://svn.code.sf.net/p/r-map/code/ r-map-code


su raspberry:

cd ~/svn/r-map-code/trunk/python

Modificare latitudine e longitude nello script station.py inserendo quelle della propria stazione :

lon=11.86992
lat=44.98906

Modificare anche gli indirizzi i2c dei vostri sensori

rpcaddress=0x4f
i2caddress=0x4c

Se avete dubbi potete controllare se il sensore viene visto sul bus i2c

i2cdetect -y 1
i2cdetect -y 0

Altre info sui sensori i2c nella pagina Collegare dispositivi I2C

il primo è quello collegato ad arduino il secondo è quello collegato a raspberry

eseguire il programma:

python station.py

si puo' interrompere con ctrl-c

troverete i file logrpc.txt logmqtt.txt che riportano il trace delle relative comunicazioni.

Questo un esempio di logmqtt.txt

log: Sending PUBLISH (dFalse, q1, r0, m44, 'meteo/-/1137637,4449216/generic/254,0,0/103,3000,-,-/B12101', ... (42 bytes)
log: Received PUBACK (Mid: 44)
mid: 44
log: Sending PUBLISH (dFalse, q1, r0, m45, 'meteo/-/1137637,4449216/generic/254,0,0/103,3000,-,-/B12101', ... (42 bytes)
log: Received PUBACK (Mid: 45)
mid: 45
log: Sending PUBLISH (dFalse, q1, r0, m46, 'meteo/-/1137637,4449216/generic/254,0,0/103,3000,-,-/B12101', ... (42 bytes)
log: Received PUBACK (Mid: 46)
mid: 46
log: Sending PUBLISH (dFalse, q1, r0, m47, 'meteo/-/1137637,4449216/generic/254,0,0/103,3000,-,-/B12101', ... (42 bytes)
log: Received PUBACK (Mid: 47)
mid: 47


Il broker mqtt e il data base con web service a applicazione javascript

Il tutto è implementato su raspberry con pidora 20.

Il software in fase di sviluppo è disponibile qui: http://sourceforge.net/projects/r-map/trunk/python

Ci sono una serie di dipendenze tra cui il software arduino e una serie di moduli python tra cui pyserial ... Bisogna anche installare Mosquitto tramite pacchetto e ancor meglio aggiungendo un repository facendo riferimento alla pagina: http://mosquitto.org/download/

In alternativa si può usare:

sudo apt-get install python-pip
sudo pip install mosquitto

Master board

todo list relativa al firmware r-map:

  • sensore di pressione uno di umidità
  • umidità e luminosità

Si potrebbero inserire nella lib SensorDriver

cosa bisogna collegare:

http://hobbycomponents.com/index.php/tiny-rtc-i2c-at24c32-ds1307-real-time-clock-module-with-eeprom-arm-pic.html http://www.hobbyist.co.nz/sites/default/files/docs/RTC/Tiny_RTC_schematic.pdf

Connessioni

pin nrf24 pin arduino mega
1 gnd
2 3.3
3 dio9
4 dio10
5 dio52
6 dio51
7 dio50
8 dio18
Enc28j60 Arduino Mega 2560
GND GND
3.3 3.3/5V
SO Pin50
SI Pin51
SCK Pin52
CS Pin53
rtc connettore P2 aruino mega _ gnd gnd
vcc vcc 5V (5v non 3.3)
sda sda
scl scl
ds scollegato


Software

Aprire l'ambiente di sviluppo arduino

* modificare la posizione della cartella degli sketch da File-> preferenze e impostarlo a {tua home dir}/svn/r-map-code/trunk/sketchbook

oppure copiare le cartelle sketchbook e libraries sotto {tua home dir}/sketchbook

compilare e caricare su arduino


Dai avanti ... fatevi sotto!