Shield batterie per Arduino - in kit da saldare

CODICE MEPA: 012618434
BRAND: Futuranet
CODICE PRODUTTORE: 8190-BATTERYSHIELD
CODICE SKU: FE-8190-BATTERYSHIELD
Disponibilità: 10 Disponibilità (legenda)
20,93 (escl. IVA)
Descrizione completa
Shield per Arduino Uno, predisposto per ricevere in ingresso (attraverso una morsettiera) la tensione di alimentazione proveniente da una batteria (compresa tra 5 e 12 volt) e, sfruttando una particolare funzionalità del chip PCF8593T (un clock/calendar utilizzato generalmente come orologio e calendario), permette di accendere il sistema ad intervalli fissi selezionabili da software a seconda delle condizioni riscontrate. Permette al software Arduino di scegliere quando “essere risvegliato” ed, una volta acceso, attraverso lo stato di un output digitale, per quanto tempo rimanere acceso ed infine quando spegnersi. Lo shield comprende al suo interno il chip PCF8593T, quindi può essere utilizzato anche come shield RTC per fornire ad Arduino le funzionalità tipiche di un orologio e calendario. Lo shield utilizza due pin digitali (D6 e D7) per la gestione del sistema di accensione; la porta I²C per la comunicazione/programmazione del componente PCF8593T; è prevista la possibilità (tramite ponticello) di usare il pin analogico A0 per leggere la tensione di alimentazione proveniente dalla batteria in modo da identificare il relativo livello di carica. Inoltre è presente un pulsante per accendere Arduino anche durante i tempi di spegnimento previsti (chiaramente la condizione andrà prevista in fase di scrittura software) ed un jumper che, se inserito, permetterà di mantenere Arduino sempre acceso (possibilità da utilizzare per particolari casi; magari collegato a un relé proveniente da una seconda scheda per realizzare particolari applicazioni). N.B. Arduino non è compreso.




Funzionamento




il sistema è spento da un determinato istante temporale;
ad un certo punto l'orologio risveglia Arduino; quest'ultimo decide di rimanere sveglio e passa ad analizzare il proprio stato interno nonché quello di eventuali pin/sensori esterni;
terminata l'analisi degli input ed aggiornamento delle uscite, Arduino programma l'orologio indicando l'istante in cui dovrà essere risvegliato ed in seguito decide di spegnersi;
per tutto il restante tempo il sistema rimane spento ed alla riaccensione successivo tutto il meccanismo viene ripetuto.




Libreria Arduino Battery Shield



Come visto nell’articolo, per il corretto funzionamento del sistema è necessario che tutto il software venga scritto avendo in mente come viene realizzato il meccanismo di accensione e spegnimento dell’elettronica.
Per facilitare l’integrazione da parte degli utilizzatori finali abbiamo realizzato una libreria software che implementa le funzionalità basilari. Vengono definite sia le funzioni di “basso livello” tra cui inizializzazione del sistema; accensione, auto alimentazione e spegnimento di Arduino; lettura del valore analogico della tensione di alimentazione; sia quelle di “medio livello” tra cui avvio del chip PCF8593T e relativa programmazione degli istanti di accensione; sia quelle di “alto livello” tipiche di un componente orologio/calendario per cui programmazione e lettura data e ora; verifica del capodanno (incremento dell’anno); passaggio automatico dall’ora legale a solare e viceversa, ecc.
Come vedremo meglio più avanti analizzando l’esempio di programmazione, utilizzando queste funzioni il programmatore non si deve preoccupare della gestione diretta dell’hardware ma avrà una interfaccia software che se ne fa carico e nasconde tutti i relativi dettagli.
La libreria definisce un oggetto “Battery” avente i seguenti metodi pubblici (cioè utilizzabili nel programma Arduino):
- void begin(): inizializza i pin D6 e D7 come input ed output digitali ed inoltre avvia l’orologio se questo viene rilevato fermo;
- void powerON(): abbassa il pin D7 in modo che Arduino possa rimanere acceso;
- void turnOFF(): al contrario di powerON(), alza il pin D6 in modo che Arduino possa spegnersi;
- bool onFromButton(): nell’analisi dello schema hardware abbiamo visto che è presente un pulsante per accendere Arduino bypassando la programmazione dell’orologio; per distinguere se l’accensione è stata effettuata dal PCF8593T oppure dalla pressione del pulsante si utilizza il pin digitale D6 di Arduino. Richiamando la funzione onFromButton() si testa lo stato di D6 e di conseguenza si identifica se l’accensione deriva dal pulsante (risultato della funzione true) oppure dall’orologio (risultato false);
- float getBatteryVoltage(): come visto analizzando lo schema elettrico dello shield, è possibile selezionare di utilizzare il pin analogico A0 di Arduino per rilevare la tensione di alimentazione della batteria. Questa funzione può essere utilizzate per leggere tale valore; la funzione esegue già tutte le conversioni e tiene conto delle varie cadute di tensioni dovute ai diversi componenti (in particolare il diodo D15) e ritorna in formato float (numero a virgola mobile) la tensione della batteria;
- void startSecAlarmPCF8593, void startMinAlarmPCF8593, void star