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 21:14, 18 set 2014