Differenze tra le versioni di "Gruppo Meteo/Pluviometro"
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. | ||
− | + | Maggiore attenzione alle funzioni antirimbalzo fa fatta per gli interruttori reed piuttosto che quelli a effetto di hall. | |
− | |||
− | Qui | + | Qui abbiamo utilizzato un piccolo microcontroller (arduino nano o |
− | simili) | + | microduino o simili) per mettere a disposizione i dati su bus I2C. |
− | |||
− | 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 | ||
− | In questo modo la cumulata sarebbe sempre garantita | + | 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 | 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. | ||
− | |||
− | |||
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. | ||
− | |||
− |
Versione delle 12: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.