Differenze tra le versioni di "Gruppo Meteo/RemoteProcedure"

Da raspibo.
Jump to navigation Jump to search
Riga 83: Riga 83:
 
* integer number: pin number (pins 4,5,6,7 are supported)
 
* integer number: pin number (pins 4,5,6,7 are supported)
 
* bool status: true=on; false=off
 
* bool status: true=on; false=off
 +
{"jsonrpc": "2.0", "method": "togglepin", "params": [{"number":4,"status":true},{"number":5,"status":false}], "id": 0}
  
 
=== Moduli prototipizzati ===
 
=== Moduli prototipizzati ===

Versione delle 11:36, 7 ago 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
Programmazione

Attualmente è possibile scaricare una immagine già pronta di scheda SD nella pagina software alla voce Software pronto all'uso.

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

R-map schema.png


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

Programmazione

Utilizzare il modulo A, accedere con l'utente rmap (pass rmap).

E' presente sulla home una dir svn che contiene tutto il software:

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_master.h /home/rmap/svn/r-map-code/trunk/arduino/ino/rmap/src/rmap_config.h
ino build -m mega2560
ino upload -m mega2560
ino serial

un pò di spiegazione: nella home dell'utente rmap è presente tutto l'archivio software

con il comando svn up si aggiorna l'archivio scaricando l'utima versione dal repository

ino clean pulisce l'ambiente per la compilazione

linkiamo nello skecth la configurazione per il modulo master dato, l'unica cosa che cambia tra lo sketch del modulo master e quella del modulo satellite è questa e viene gestita cambiando il puntamento al file di configurazione

ino build compila il software per la piattaforma mega 2560

ino upload carica lo sketch su arduino

ino serial attiva il monitor seriale



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