Differenze tra le versioni di "Gruppo Meteo/Pluviometro"

Da raspibo.
Jump to navigation Jump to search
Riga 1: Riga 1:
 
= Note di progettazione di un pluviometro con interfaccia I2C =
 
= Note di progettazione di un pluviometro con interfaccia I2C =
  
Se rimaniamo nell'ambito del "Tipping
+
Se rimaniamo nell'ambito del "Tipping bucket rain gauge"  
bucket rain gauge" ([http://it.wikipedia.org/wiki/Pluviometro#Pluviografi_a_doppia_vaschetta_basculante pluviometro a bascula]) tutti i modelli mettono a disposizione uno switch per
+
([http://it.wikipedia.org/wiki/Pluviometro#Pluviografi_a_doppia_vaschetta_basculante pluviometro a bascula]) tutti i modelli mettono a disposizione uno switch per
 
il conteggio delle "basculate" e trasformarlo in un pluviometro I2C non è critico.
 
il conteggio delle "basculate" e trasformarlo in un pluviometro I2C non è critico.
  
Bisognerebbe parametrizzare superficie dell'imbuto e volume dello scatto
+
Maggiore attenzione alle funzioni antirimbalzo fa fatta per gli interruttori reed piuttosto che quelli a effetto di hall.
come parametri a compilation time
 
  
Qui pensavamo di utilizzare un piccolo microcontroller (arduino nano o
+
Qui abbiamo utilizzato un piccolo microcontroller (arduino nano o
simili) con batteria in tampone per effettuare il conteggio (con
+
microduino o simili) per mettere a disposizione i dati su bus I2C.
attenzione alle funzioni "antirimbalzo") e mettere a disposizione i dati
 
su bus I2C.
 
L'host dovrebbe quindi fare due operazioni tramite I2C:
 
# richiedere il conteggio da ultimo reset (le parole da ultimo reset sono importanti: no reset, no dati)
 
# richiedere il reset del conteggio fino al momento dell'operazione 1.
 
  
questa sequenza per non perdere nessun evento considerando quindi 1. e 2.
+
L'host ha a disposizione queste operazioni tramite I2C:
come una singola transazione
+
* START    : reset del contatore di basculate (da effettuare all'avvio)
 +
* STOP      : prepara alla lettura del contatore rendendo disponibile l'ultimo stato nel buffer di lettura
 +
* STARTSTOP : effettua uno START e uno STOP in modo atomico
  
In questo modo la cumulata sarebbe sempre garantita vista la presenza
+
Una sequenza di lettura vede quindi:
della batteria tampone.
+
al boot:
 +
* START (setup)
 +
 
 +
per ogni lettura per valore incrementale parziale:
 +
* STARTSTOP    (prepare)
 +
* lettura del conatore (get)
 +
 
 +
in alternativa
 +
 
 +
per ogni lettura per valore incrementale totale:
 +
* STOP    (prepare)
 +
* lettura del conatore (get)
 +
 
 +
Questa sequenza permette di non perdere nessun evento.
 +
In questo modo la cumulata sarebbe sempre garantita particolrmente se verrà prevista la presenza
 +
di una batteria tampone.
 +
 
 +
L'alimentazione può essere fatta tramite lo stesso cavo quadripolare I2C
 +
 
 +
Una funzione interessante da implementare potrebbe essere quella di calibrazione del pluviometro tutta da sviluppare con parametri da salvare in eeprom.
  
 
L'utilizzo di un RTC locale e un firmware leggermente più sofisticato
 
L'utilizzo di un RTC locale e un firmware leggermente più sofisticato
Riga 30: Riga 45:
 
Alcuni RTC hanno una batteria in tampone che potrebbe essere utilizzata anche per
 
Alcuni RTC hanno una batteria in tampone che potrebbe essere utilizzata anche per
 
alimentare il microcontroller.
 
alimentare il microcontroller.
 
L'alimentazione potrebbe essere fatta tramite il cavo quadripolare I2C
 
  
 
Una evoluzione ancora piu' sofisticata per la gestione energetica potrebbe essere quella di mettere il microcontroller in modalità sleep di risparmio energetico risvegliato dall'interrupt del contatto del pluviometro o dall'alimentazione sul bus I2C; in questo modo i consumi potrebbero essere minimi e permettere lunghi periodi di funzionamento stand alone.
 
Una evoluzione ancora piu' sofisticata per la gestione energetica potrebbe essere quella di mettere il microcontroller in modalità sleep di risparmio energetico risvegliato dall'interrupt del contatto del pluviometro o dall'alimentazione sul bus I2C; in questo modo i consumi potrebbero essere minimi e permettere lunghi periodi di funzionamento stand alone.
 
In una fase iniziale di sviluppo invece dell'interfaccia di comunicazione I2C potrebbe essere utilizzata la porta seriale con jsonrpc molto piu' facile da consifurare e diagnosticare.
 

Versione delle 13:18, 15 giu 2015

Note di progettazione di un pluviometro con interfaccia I2C

Se rimaniamo nell'ambito del "Tipping bucket rain gauge" (pluviometro a bascula) tutti i modelli mettono a disposizione uno switch per il conteggio delle "basculate" e trasformarlo in un pluviometro I2C non è critico.

Maggiore attenzione alle funzioni antirimbalzo fa fatta per gli interruttori reed piuttosto che quelli a effetto di hall.

Qui abbiamo utilizzato un piccolo microcontroller (arduino nano o microduino o simili) per mettere a disposizione i dati su bus I2C.

L'host ha a disposizione queste operazioni tramite I2C:

  • START : reset del contatore di basculate (da effettuare all'avvio)
  • STOP : prepara alla lettura del contatore rendendo disponibile l'ultimo stato nel buffer di lettura
  • STARTSTOP : effettua uno START e uno STOP in modo atomico

Una sequenza di lettura vede quindi: al boot:

  • START (setup)

per ogni lettura per valore incrementale parziale:

  • STARTSTOP (prepare)
  • lettura del conatore (get)

in alternativa

per ogni lettura per valore incrementale totale:

  • STOP (prepare)
  • lettura del conatore (get)

Questa sequenza permette di non perdere nessun evento. In questo modo la cumulata sarebbe sempre garantita particolrmente se verrà prevista la presenza di una batteria tampone.

L'alimentazione può essere fatta tramite lo stesso cavo quadripolare I2C

Una funzione interessante da implementare potrebbe essere quella di calibrazione del pluviometro tutta da sviluppare con parametri da salvare in eeprom.

L'utilizzo di un RTC locale e un firmware leggermente più sofisticato potrebbe permettere di gestire su host un DB direttamente ad eventi o comunque un rain rate molto più risolto. Per non bruciare la eeprom il DB dovrebbe essere tutto in memoria ram e potrebbe essere utile l'uso di un round robin dove memorizzare time stamp e contatore.

Alcuni RTC hanno una batteria in tampone che potrebbe essere utilizzata anche per alimentare il microcontroller.

Una evoluzione ancora piu' sofisticata per la gestione energetica potrebbe essere quella di mettere il microcontroller in modalità sleep di risparmio energetico risvegliato dall'interrupt del contatto del pluviometro o dall'alimentazione sul bus I2C; in questo modo i consumi potrebbero essere minimi e permettere lunghi periodi di funzionamento stand alone.