Gruppo Meteo/HowToOld

Da raspibo.
Jump to navigation Jump to search

Analisi per l'implementazione:

Proveremo a misurare la temperatura.

Per questo esempio utilizzeremo un raspberry e un arduino Uno La sensoristica prevede sue sensori di temperatura i2c della serie tmp della TEXAS INSTRUMENTS nello specifico tmp102 o tmp275.

Sensoristica Utilizzeremo 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.

  • Dato che il sensore tmp102 e' di tipo smd si puo' acqusitare anche gia' saldato su basetta lo vende ad esempio sparkfun

Procederemo a sperimentare anche:


Esistono anche:

  • MCP9808 prodotto da Microchip (l'accuratezza di questo sensore è al limite della accettabilità)
  • LM75A by NXP (questo sensore è inaccurato e dovrebbe essere evitato in condizioni operative)

il broker mqtt e il data base con web service a applicazione javascript

Il tutto è implementato su raspberry con pidora 18. Per il momento basta sapere che è disponibile su http:pat1.bisognodipace.org

Predisposizione software

Il software in fase di sviluppo è disponibile qui: http://sourceforge.net/projects/r-map/

Su Raspberry Pi:

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

per scaricare il software r.map:

mkdir ~/svn
cd ~/svn
svn checkout svn://svn.code.sf.net/p/r-map/code/ r-map-code

Installare su arduino 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

installazione hardware

installazione su raspberry

installazione su arduino

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

Al termite collegate raspberry a arduino tramite il cavo USB

semplice esempio di software di campionamento

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

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.

I risultati, sempre che il serverino sia acceso, http://pat1.bisognodipace.org:8000/



news Direi che il firmware r-map per arduino si stia avvicinando alla versione 1.0.

Abbiamo testato il firmaware su arduino mega2560 e abbiamo goduto dell'ampia disponibilità di memoria. Stiamo riportando bug e facendo test con gli sviluppatori di arduino_uip e siamo riusciti ad avere i primi instabili funzionamenti con enc28j60 https://github.com/ntruchsess/arduino_uip/issues/47

superati i problemi relativi al buffer sulla seriale e la gestione

dell'rtc.

Quindi cosa funziona ora: due firmware per arduino uno:

 a) configurazione e dati con jsonrpc su seriale
 b) mqtt su ethernet

un unico firmaware per arduino mega2560

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 su seriale con jsonrpc
* comandi modalità attuatore su seriale con jsonrpc
* mqtt su ethernet con ethernet shield e alpha version su 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

todo list relativa al firmware r-map

     * verifica mqtt con arduino_uip per enc28j60; i problemi paiono
       dovuti a incompatibilità con versioni più nuove di gcc;
       utilizziamo gcc 4.8 mentre gli sviluppatori il 4.3; qualcuno
       potrebbe prendere il semplice esempio mqtt e testarlo con
       aurduino_uip utilizzando gcc 4.3 (credo sia la versione su
       windows o su mac)
     * sensoristica: per ora abbiamo solo la gestione di sue sesori di
       temperatura; Paol ha un sensore di pressione uno di umidità, Mario quelli di
       umidità e luminosità. Si potrebbero inserire nella lib
       SensorDriver
     * comucazione radio: abbiamo selezionato 3 chip rx/tx; 2 li
       abbiamo disponibili, il terzo è da procurare. Bisognerebbe
       iniziare a fare dei test di trasmissio/ricezionecon le relative
       librerie.
     * protocollo mqtt-sn; questo è il protocollo mqtt per trasmissione
       radio; ci sono già alcune lib da cui partire:
       https://bitbucket.org/MerseyViking/mqtt-sn-arduino
       https://github.com/TomoakiYAMAGUCHI ; un forum di
       riferimento:https://groups.google.com/forum/#!forum/mqtt
     * gestione batterie e eventuale pannellino solare per la versione
       via radio; firmware a bassissimo consumo con l'utilizzo delle
       apposite librerie
     * prototipizzazione: si potrebbe provare ad utilizzare questa
       board:https://www.sparkfun.com/products/10743 scatole e
       scatoline stampate 3D ?

abbiamo poi da integrare il nostro arduino col resto del sistema; con Giacomo dobbiamo terminare l'interfacciamento con emon-cms; dovremmo anche avere a disposizione tra poco un server dove installare tutti gli specifici software che avevamo già parzialmente testato e per quanto riguarda raspberry in questi giorni sta per essere rilasciata pidora 2014 (fedora 20).

Dai avanti ... fatevi sotto!