Gruppo Meteo/StimaOverview
Stima Overview
Stazione modulare per la misura di parametri ambientali.
Premesse
- Adeisce alla Rete di Monitoraggio Ambientale Partecipativo (R-MAP)
- Open hardware e open software
- al momento vengono gestiti parametri meteorologici
Funzionalità
Sensori
Collegamento su bus I2C
I sersori devono essere compatibili con il bus I2C. Quando sensori I2C non siano disponibili il problema viene risolto con un microcontrollore che adatta le letture (analogiche o digitali) e le elaborazioni (contatori, medie etc.) rendendole disponibili su registri interrogabili tramite I2C.
Il protocollo i2c prevede l’utilizzo di un bus formato da due linee bidirezionali. Le due linee, chiamate “scl” e “sda” rispettivamente, trasportano la tempistica di sincronizzazione (chiamata anche “clock”) e i dati. Abbiamo scelto il bus i2c in quanto:
- È diventato lo standard di fatto per una serie di integrati tra cui i sensori
- Si possono collegare fino a 127 dispositivi
- La comunicazione è bidirezionale (read e write) con velocità assolutamente sufficienti per i nostri scopi
- la lunghezza operativa dei cavi è adeguata al nostro utilizzo (anche alcune decine di metri)
Interrogazione dei sensori
I sensori possono venire interrogati a richiesta tramite remote call procedure oppure ad intervalli regolari. Quando interrogati a intervalli regolari tutti i sensori vengono interrogati "in parallelo" ossia tutti i sensori vengono mpostati e configurati all'accensione po periodicamente vengono attivati e impartita la richiesta di lettura; il driver del sensore torna il tempo di attesa necessario per avere la misura disponibile; si attente il tempo necessario per il sensore più lento; si effettuano tutte le letture. In questo modo si riescono a campionare tutti i sensori solitamente entro i 3 secondi e considerando i tempi per la loro pubblicazione sul server generalmente viene utilizzata una frequenza di campionamneto pari a una ogni 5 secondi. Tenendo i sensori normalmente in sleep si riducono anche i consumi.
Operazioni di mantenimento
Il software effettua periodicamente tutte le funzioni di mantenimento necessarie a un corretto funzionamento quali quelle relative al dhcp o alla sincronizzazione dell'orologio interno con una sorgente esterna. Tutti i firmware hanno attivo un watchdog hardware che evita blocchi permanenti dovuti a malfunzionamenti su eventi improbabili.
Orologio di riferimento
Una base dei tempi precisa è richiesta nel caso in cui sia necessario salvare i dati localmente (su SD) nel caso la connessione utilizzata per pubblicare i dati sul server (broker) non sia considerata stabile. Se invece la connessione (trasporto) viene considerato stabile (o non sia necessario recuperare i dati in caso di fault) un preciso orologio di riferimento non è necessario e il tempo di riferimento verrà aggiunto automaticamente dal server alla pubblicazione in tempo reale del dato. Ci sono diversi sistemi per avere un orologio di riferimento preciso sui moduli Stima.
Stazioni fisse o mobili
E' possibile installare sia stazioni fisse, la cui posizione non cambia nel tempo, sia stazioni mobili, sia terrestri che marine. Per aggiornare la posizioni delle stazioni mobili viene utilizzato un GPS che può essere o a bordo del modulo Stima o a bordo di un dispositivo android.
Attenzione ai consumi energetici
Attenzione è stata posta alla limitazione dei consumi. Quando possibile i microcontrollori e i sensori vengono messi in sleep e sono alcuni interrupt a risvegliare il sistema. Questo agevola l'utilizzo con batterie dei sistemi a basso consumo quali il modulo satellite che funziona con un modulo radio.
Differenti tipologie di rete
la consfigurazione della rete può essee differente a seconda delle esigenze; oltre alla classica consigurazione a stella (moduli master e base) con un broker al centro è disponibile la configurazione ad albero sia via cavo (modulo master + base) che via radio: con la possibilità di utilizzare moduli radio di maggiore potenza (~1Km in aria libera) è possibile prevedere coperture di un terriotorio con ampia superficie.
Software utente multipiattaforma
Il software che l'utente può utlizzare per la pubblicazione e visualizzazione dei dati è multipiattaforma. Fatti salvi i moduli basati su microcontrollore e vincolati all'ambiente Atmel e alcune funzioni sul server di raccolta dei dati sviluppati in ambiente Linux (distribuzioni Centos e Fedora) la visulizzazione e il monitoraggio sono multipiattaforma. Anche l'interfaccia utente grafica che permette la geolocalizzazione, autenticazione e pubblicazione dei dati sia automatica che manuale anche di dati rilevati manualmente e a vista è multipiattaforma (attualmente testata su Linux, android, ma portabile su windows, OS X, iOS
Messagistica di diagnostica
C'è la possibilità di ottenere una ampia messaggistica di diagnostica per la soluzione dei problemi
Configurazione
Le versioni delle configurazioni vengono verificate e quando il firmware non è retrocompatibile il modulo resta in attesa di una nuova configurazione. Le configurazioni vengono subito verificate: non è possibile configurare un modulo con dei sensori non corretti o non funzionanti.
Modularità hardware e software
Le configurazioni hardware sono molteplici e possono essere utilizzate differenti board; sono compatibili i moduli hardware mqggiormente diffusi e conosciuti dai makers oltre ad essere generalmente a basso costo.
Concetti base
La modularità della stazione è stata ottenuta astraendo alcuni concetti e funzioni e implementandoli nei differenti moduli hardware e software.
Trasporti
Il concetto di trasporto in Stima è simile ma non rigidamente aderente ai concetti del modello ISO-OSI. Nel caso dei trasporti passivi il suo compito è fornire un canale logico-affidabile di comunicazione end-to-end per fornire servizi al soprastante livello che in Stima è JsonRPC. Nel caso dei trasporti attivi corrisponde al protocollo (Session Layer) per la pubblicazione dei dati su un server (broker).
Passivi o attivi
In pratica i trasporti "passivi" permettono di eseguire procedure remote codificate in formato json specifiche dell'implementazione Stima; quelli attivi permettono la pubblicazione su server (broker) dei messaggi aderenti allo standard R-MAP.
Passivi
Seriale
Collegamento punto a punto tramite porta seriale.
- Principalmente per configurazione e debug
- Piccole distanze via cavo
caratterizzato da:
- Baud rate
- Device
TCP/IP
Trasporto che utilizza il tcp/ip; i supporti fisici supportati sono:
- ethernet: collegamenti tramite cavo ethernet a breve e media distanza
- GSM/GPRS: installazioni con problemi per le cablature di alimentazione e collegamento di rete
caratterizzato da:
- Name (Nome risolto dal DNS)
- Ntpserver
Bluetooth
caratterizzato da:
- Bluetooth Name
NRF24
- OSI Network Layer using nRF24L01(+) radios 2.4GHz ISM 50/150m in aria libera
- Host Addressing. Each node has a logical address on the local network.
- Message Forwarding. Messages can be sent from one node to any other, and this layer will get them there no matter how many hops it takes.
- Ad-hoc Joining. A node can join a network without any changes to any existing nodes.
RF24Network Addressing and Topology
Each node must be assigned an 15-bit address by the administrator. This address exactly describes the position of the node within the tree. The address is an octal number. Each digit in the address represents a position in the tree further from the base.
- Node 00 is the base node.
- Nodes 01-05 are nodes whose parent is the base.
- Node 021 is the second child of node 01.
- Node 0321 is the third child of node 021, an so on.
- The largest node address is 05555, so 3,125 nodes are allowed on a single channel.
Alla libreria distributia è stata aggiunta la crittografia e frammentazione e ricomposizione del payload
caratterizzato da:
- Node (Node ID for RF24 Network)
- Channel (Numero canale per RF24)
- Key (AES key)
- Iv
Attivi
MQTT
MQTT (Message Queue Telemetry Transport) è un protocollo publish/subscribe particolarmente leggero, adatto per la comunicazione M2M tra dispositivi con poca memoria o potenza di calcolo e server o message broker.
caratterizzato da:
- Mqttsampletime (intervallo in secondi per la pubblicazione)
- Mqttserver (MQTT server)
- Mqttuser (MQTT user)
- Mqttpassword (MQTT password)
AMQP
AMQP (Advanced Message Queuing Protocol) è protocollo per comunicazioni attraverso code di messaggi. Sono garantite l'interoperabilità, la sicurezza, l'affidabilità, la persistenza.
caratterizzato da:
- Amqpserver (Server AMQP)
- Exchange (Nome dell'exchange remoto AMQP)
- Queue (Nome della coda locale AMQP )
- Amqpuser (User AMQP)
- Amqppassword
JsonRPC
La chiamata di procedure remote in formato json è l'unico metodo per poter eseguire funzioni su un modulo dalla configurazione al campionamento dei sensori.
La documentazione delle procedure remote è disponibile qui Gruppo_Meteo/RemoteProcedure
JsonRPC over different transports
E' possibile fare richiesta di una procedura remota che a sua volta richiede una procedura remota; in questo modo è possibile utilizzare due trasporti differenti e usare un modulo come gateway. Ad esempio il modulo base non dispone al momento del trasporto radio RF24 ma puo' richiedere a un modulo master tramite trasporto seriale o TCP/IP di eseguire una procedura remota su un modulo satellite raggiungibile tramite trasporto RF24. Queste funzionalità sono ampiamente da testare.
Elementi hardware
board microcontroller
atmel 328p
Il più piccolo della serie può essere utilizzato per:
- modulo i2c-gps
- modulo i2c-wind
- modulo i2c-rain
implementazioni on board:
- arduino uno
- arduino nano
- microduino core
atmel 644p
Il medio della serie può essere utilizzato per:
- modulo satellite
- modulo bluetooth
- tutti i moduli relativi al 328p
implementazioni on board:
- microduino core+ 644p
altmel mega 2560/1284p
Il grande della serie può essere utilizzato per:
- modulo master
- modulo GPS/GPRS
- tutti i moduli relativi al 644p
implementazioni on board:
- arduino mega2560
- microduino core+ 1284p
board RTC
Il real time clock deve utilizzato quando quando non è possibile avere un'altra sorgente affidabile per il tempo di riferimento e al tempo stesso la pubblicazione dei dati può avvenire con tempo differito ad esempio tramite la memorizzazione su scheda SD.
board radio RF24
E' necessaria per supportare il trasporto NRF24
board ft232
E' necessario per programmare, debuggare, a volte configurare il modulo e per supportare il trasporto seriale.
board ENC28J60
Ethernet module a basso costo; è necessario lo stack tcp/ip software su microcontrollore. Serve per supportare il trasporto TCP/IP. Alternativa alla board wiznet
board wiznet W5500
Ethernet module completa dello stack tcp/ip. Serve per supportare il trasporto TCP/IP. Alternativa alla board ENC28j60
board display I2C LCD 4 linee 20 caratteri
Utilizzabile per visualizzare messaggistica di diagnostica e alcune misure quando non è disponibile un PC per debug e altre visualizzazioni.
implementazioni on board:
- YwRobot Arduino LCM1602 IIC V1
board 5V relay
5V 4/2-Channel Relay interface board; Equipped with high-current relay, AC 250V 10A / DC 30V 10A Opticalcoupler Protection Utilizzabile per aggiungere a un modulo la funzionalità di attuatore. Ogni relay può essere attivato singolarmente.
board SD
Microduino-SD aims to read and write data of a memory card. Utilizzata per memorizzare i dati in loco; necessaria quando non ci siano trasporti utili o la stabilità dei trasporti utilizzati è messa in dubbio e i dati hanno valore anche in tempo differito.
board GSM/GPRS sim800/sim900
Adopt SIM800L module to support four-band GSM/GPRS, whose working band is:GSM850, EGSM900, DCS1800 and PCS1900MHz. Utilizzabile per avere il trasporto TCP/IP quando non è disponibile una connessione ethernet. Questo modulo può funzionare sul trasporto TCP/IP in due modalità: una con delle get http tramutate dal server in publish MQTT e l'altra in una vera connessione MQTT. E' possibile utilizzare questo modulo anche cone Real Time Clock per ottenere una tempo di riferimento stabile. Si può quindi ottenere dal server rmap il tempo di riferimento e impostarlo nell'RTC di questo modulo per poi rileggerlo al bisogno in caso di non disponibilità del trasporto TCP/IP; tutto questo a scapito di stabilità e continuità di servizio. Nel caso sia importante avere un RTC affidabile si consiglia l'aggiunta di un modulo RTC o ancora meglio del modulo GPS.
board GPS Neo 6M
Questa board insieme a una board microcontrollore possono creare un modulo i2c-gps. Il modulo i2c-gps fornisce a richiesta la posizione (lat, lon, altezza) e il tempo di riferimento. Serve per istallazioni mobili o che necessitano di un tempo di riferimento particolarmente stabile.