Differenze tra le versioni di "Gruppo Meteo/HowToOld"

Da raspibo.
Jump to navigation Jump to search
(Pagina svuotata)
Riga 1: Riga 1:
= 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.
 
* Dato che il sensore tmp102 e' di tipo smd si puo' acqusitare anche gia' saldato su basetta lo vende ad esempio [https://www.sparkfun.com/products/9418 sparkfun]; questi i dati del tmp27 http://www.ti.com/lit/ds/symlink/tmp275.pdf
 
* [http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf ADT7420] un sensore di precisione anche questo smd e prodotto da Analog; anche questo disponibile su basetta, ma un po' costosa: http://au.element14.com/digilent/pmodtmp2/adt7420-temp-sensor-16bit-pmod/dp/2290114
 
 
 
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 ===
 
 
* Un esempio di misura della temperatura con sensore TMP102 sul sito [http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/26/is-it-done-yet-temperature-sensing-with-the-raspberry-pi element14], in questo esempio viene anche interfacciato un chip DS1307 real time clock utile se c'e' la possibilita' perdita di connettvita' verso un server ntp.
 
* questo un altro how to http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
 
* questo un esempio di collegamento http://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/wiring-the-rtc
 
 
=== 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
 
 
Se avete trovato questa pagina cercando gli errori qui sotto, avete il sensore non collegato correttamente o l'indirizzo sbagliato sul bus I2C.
 
 
Per controllare usate i2cdetect come sopra.
 
 
[rmap@pidora python]$ python station.py
 
terminated with error
 
Traceback (most recent call last):
 
  File "station.py", line 54, in <module>
 
    t=i2c.tmp(address=i2caddress)
 
  File "/home/rmap/svn/r-map-code/trunk/python/i2c.py", line 31, in __init__
 
    self.bus.write_word_data(self.address,0x01,self.resolution | 0x1)
 
IOError: [Errno 5] Input/output error
 
 
 
 
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:
 
* arduino mega2560
 
*  nRF24L01P http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P (con un condensatore sull'alimentazione)
 
* ENC28J60 Ethernet LAN / Network Module  http://hobbycomponents.com/index.php/enc28j60-ethernet-lan-network-module-for-arduino.html?SID=4553643ad13151d3fce1062a1f877f32
 
* Tiny RTC I2C AT24C32 DS1307 Real Time Clock Module with EEPROM ARM PIC
 
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
 
* connettore I2C (4 fili)
 
* connettore Jtag http://www.raspibo.org/wiki/index.php/Gruppo_Meteo/HowTo/DebugAVR#Collegamenti
 
 
'''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 || 5V (funziona anche a 3.3, ma assorbe troppo)
 
|-
 
| SO || Pin50
 
|-
 
| SI || Pin51
 
|-
 
| SCK || Pin52
 
|-
 
| CS || Pin53
 
|}
 
 
{|
 
| rtc connettore P2 || arduino 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!
 

Versione delle 22:14, 18 set 2014