Differenze tra le versioni di "Gruppo Meteo/RemoteProcedure"
Riga 213: | Riga 213: | ||
c'è qualcosa che non va sul bus I2C | c'è qualcosa che non va sul bus I2C | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== Configurazione ==== | ==== Configurazione ==== |
Versione delle 21:54, 18 set 2014
r-map implementation overview
MQTT e Json-rpc
Un elemento fondamentale per il concentramento di osservazioni e campionamenti è il BUS MQTT http://en.wikipedia.org/wiki/MQ_Telemetry_Transport . E' su questo che vengono convogliati tutti i dati dei sensori; r-map definisce uno standard per pubblicare i dati nel root path rmap.
I moduli propedeutici alla pubblicazione MQTT sono connessi tramite 3 differenti trasporti:
- porta seriale (USB)
- TCP/IP
- radiofrequenza con modulo RF24Network
Sopra questi trasporti transitano remote procedure call in formato Json, rpc-json versione 2.0 http://en.wikipedia.org/wiki/JSON-RPC. Tutte le operazioni che vengono richieste ai moduli, o che i moduli richiedono ad altri moduli sono rpc-json.
Il trasporto RF24Network include crittografia AES, messaggi multipacchetto con topologia ad albero (http://it.wikipedia.org/wiki/Topologia_di_rete#Topologia_ad_albero).
I moduli possono essere così caratterizzati dal trasporto supportato, se eseguono RPC, se richiedono RPC, se pubblicano su MQTT.
I tre moduli prototipati in r-map sono coì demoninati e caratterizzati:
att/pas | Seriale | TCP/IP | radio RF24Network | pubblish on MQTT | funzioni server | |
Modulo Base | attivo | Si | Si | da svilupare | Si | Si |
Modulo master | attivo/passivo | Si | Si | Si | Si | No |
Modulo satellite | passivo | Si | No | Si | No | No |
procedure supportate
Ogni comando/risposta Jsonrpc sarebbe meglio rimanesse entro i 144 caratteri.
configure
configura il modulo.
parametri:
- bool reset: riporta le configurazioni ai valori di default
- char mqttrootpath: prima parte del path di pubblicazione su MQTT
- int mqttsampletime: intervallo tra le minure in secondi
- char mqttserver: server MQTT
- char mqttuser: MQTT user
- char mqttpassword: MQTT password
- int[16] key: AES key
- int[16] iv: AES CBC iv
- char ntpserver: server MQTT
- int[6] date: date and time [2014,2,10,18,45,18]
- bool save: salva le configurazioni permanentemente
- long int thisnode: RF24Network node address
- int channel: RF 24 channel
- byte mac[6]= ethernet mac address; use (0,0,0,0,0,1) for master1, use (0,0,0,0,0,2) for master2
relativi a un sensore:
- char mqttpath: seconda parte del path di pubblicazione su MQTT
- char driver: driver locale del sensore
- int node: RF24Network node
- char type: driver remoto
- int address: address I2C
getvalues
torna i valori di una o più osservazione/campionamento.
parametri:
- char driver: driver locale del sensore
- int node: RF24Network node
- char type: driver remoto
- int address: address I2C
rf24rpc
Esegue una procedura remota su un altro nodo tramite trasporto RF24Network. In pratica incapula una RPC in una RPC.
- node": nodo su cui eseguire la remote call procedure
- tutti parametri standard di una json-rpc del tipo
"jsonrpc":"2.0","method":"configure","params":{"reset":true},"id":0},"id":0
toggleled
Attuatore che accende e spegne un led.
parametri:
- integer number: pin number (pins 4,5,6,7 are supported)
- bool status: true=on; false=off
{"jsonrpc": "2.0", "method": "togglepin", "params": [{"number":4,"status":true},{"number":5,"status":false}], "id": 0}
Moduli prototipizzati
le opzioni sono 3, i prezzi solo indicativi:
- modulo base
- modulo base+master
- modulo base+master+satellite
- Il modulo base acquisisce dai sensori con un task temporizzato al fine di pubblicare dati sul bus MQTT , svolge funzioni di archiviazione, calcolo, composizione report e invio all'acentratore tramite AMQP e molt altre cose
- Il modulo master acquisisce dai sensori con un task temporizzato al fine di pubblicare dati sul bus MQTT
- Il modulo satellite è a bassissimo consumo e appartiene a una rete radio sui 2Ghz ad albero nRF24Network
Modulo base
Il modulo A richiede alimentazione 220V (o in alternativa qui non prevista power over ethernet) e cavo ethernet
Hardware
(approssimativamente 75 E):
- raspberry B
- sdcard
- alimentatore
- connettore gpio
- breadboard
- sensori
- hub usb alimentato
- chiavetta wifi
- hard disk usb (opzionale, ma consigliato), con una partizione etx4 ed etichetta "rmap"
Modulo master
Il modulo B richiede cavo ethernet con power over ethernet.
hardware
(approssimativamente 65 E)
- arduino mega 2560
- breadborad
- modulo RTC
- modulo mini ethernet ENC60
- modulo radio RF24
- cavo power over ethernet
- stabilizzatore dcdc switched
- sensori
|
Schema
Verifiche hardware
La prima verifica da fare ovviamente è di non aver fatto cortocircuiti sull'alimentazione.
Poi si può iniziare a controllare che tutto si accenda sia arduino che il led sulla scheda di rete che quello sul convertitore dc/dc.
Conviene verificare da subito se i sensori I2C vengono visti, questo è necessario per la configurazione del modulo.
C'è uno schech già pronto all'uso nel repository:
cd /home/rmap/svn/r-map-code/trunk/arduino/ino/i2cscanner ino build -m mega2560 ino upload -m mega2560 ino serial
Perciò
[rmap@pidora i2cscanner]$ ino serial Guessing serial port ... /dev/ttyACM0 picocom v1.7 port is : /dev/ttyACM0 flowcontrol : none baudrate is : 9600 parity is : none databits are : 8 escape is : C-a local echo is : no noinit is : no noreset is : no nolock is : yes send_cmd is : sz -vv receive_cmd is : rz -vv imap is : omap is : emap is : crcrlf,delbs, Terminal ready I2CScanner ready! starting scanning of I2C bus from 1 to 7F...Hex addr: 1 addr: 2 addr: 3 addr: 4 addr: 5 addr: 6 addr: 7 addr: 8 addr: 9 addr: A addr: B addr: C addr: D addr: E addr: F addr: 10 addr: 11 addr: 12 addr: 13 addr: 14 addr: 15 addr: 16 addr: 17 addr: 18 addr: 19 addr: 1A addr: 1B addr: 1C addr: 1D addr: 1E addr: 1F addr: 20 addr: 21 addr: 22 addr: 23 addr: 24 addr: 25 addr: 26 addr: 27 addr: 28 addr: 29 addr: 2A addr: 2B addr: 2C addr: 2D addr: 2E addr: 2F addr: 30 addr: 31 addr: 32 addr: 33 addr: 34 addr: 35 addr: 36 addr: 37 addr: 38 addr: 39 addr: 3A addr: 3B addr: 3C addr: 3D addr: 3E addr: 3F addr: 40 addr: 41 addr: 42 addr: 43 addr: 44 addr: 45 addr: 46 addr: 47 addr: 48 found! <<< questo è il sensore di temperatura TMP102 (può essere trovato anche all'indirizzo 40 a seconda di come è collegato il pin ADD0, va aggiornata anche la conf) addr: 49 addr: 4A addr: 4B addr: 4C addr: 4D addr: 4E addr: 4F addr: 50 found! <<<< modulo RTC ci deve essere addr: 51 addr: 52 addr: 53 addr: 54 addr: 55 addr: 56 addr: 57 addr: 58 addr: 59 addr: 5A addr: 5B addr: 5C addr: 5D addr: 5E addr: 5F addr: 60 addr: 61 addr: 62 addr: 63 addr: 64 addr: 65 addr: 66 addr: 67 addr: 68 addr: 69 addr: 6A addr: 6B addr: 6C addr: 6D addr: 6E addr: 6F addr: 70 addr: 71 addr: 72 addr: 73 addr: 74 addr: 75 addr: 76 addr: 77 addr: 78 addr: 79 addr: 7A addr: 7B addr: 7C addr: 7D addr: 7E addr: 7F done
Per uscire: CTRL+A e CTRL+X
Thanks for using picocom
Lo scan dovrebbe durare pochi secondi se rimane piantato così:
starting scanning of I2C bus from 1 to 7F...Hex
c'è qualcosa che non va sul bus I2C
Configurazione
aggiornare le info sul file usando l'interfaccia web
cd /home/rmap/svn/r-map-code/trunk/python python rmap-configure.py
per forzare il caricamento della configurazione avviare arduino con il pin 8 collegato a massa
Modulo satellite
Il modulo C richiede batterie con stabilizzatore (e pannellino solare con regolatore di corrente)
hardware
(approssimativamente 45 E)
- moulo microduino core+ (ATmega644p@5V 16MHz)
- modulo microduino RF24 con antenna
- modulo microduino seriale USB FT232R
- sensori
Programmazione
E' simile a quella del modulo master si cambia solo il link al file di configurazione con un link simbolico ed il modello della scheda per compilazione ed upload
cd /home/rmap/svn/r-map-code/trunk svn up cd arduino/ino/rmap ino clean ln -sf /home/rmap/svn/r-map-code/trunk/arduino/ino/rmap/src/rmap_satellite.h /home/rmap/svn/r-map-code/trunk/arduino/ino/rmap/src/rmap_config.h ino build -m 644pa16m ino upload -m 644pa16m ino serial
Configurazione
aggiornare le info sul file usando l'interfaccia web, controllare che sia presente anche il modulo satellite
cd /home/rmap/svn/r-map-code/trunk/python python rmap-configure.py
per forzare il caricamento della configurazione avviare arduino con il pin 8 collegato a massa
Visualizzazione dei dati in formato grafico
I grafici vengono visualizzati su graphite seguire le istruzioni su questa pagina