ORbit16™ – Calendario elettronico da tavolo con indicazione Santo del giorno, Compleanni, Temperatura e raccolta differenziata
Questo nuovo progetto su cui lavoro da molto tempo permette di realizzare un calendario da tavolo con ORbit16™ con su montato il PIC24FJ64GB002. Non si tratta di un calendario “banale” ma lo ritengo qualcosa di molto innovativo, dal momento che mostra anche altre informazioni molto utili. Le caratteristiche principali di questo calendario da tavolo sono:
- Indicazione della data estesa, completa di giorno della settimana
- Indicazione orario con secondi
- Indicazione temperatura ambiente in °C
- Santo del giorno
- Indicazione raccolta differenziata del giorno successivo
- Utilizzo del modulo RTCC interno
- Settaggio data/ora con 3 pulsanti (SET, SU, GIU)
- Indicazione giorno di Pasqua mediante algoritmo di Gauss
Ci tengo a sottolineare che la lista dei Santi del giorno mi ha richiesto molto tempo per essere realizzata, calendari vari alla mano e notepad++ dall’altro per creare un array da memorizzare nella flash del pic. La lista, risiedendo in un file a parte, può essere facilmente modificata per poterla adattare alle proprie esigenze ed inserire magari compleanni, anniversari, scadenze o quello che ritenete più opportuno, sempre tenendo conto che il codice è stato realizzato per utilizzare un display LCD a caratteri HD44780 compatibile da 20 colonne. La frase da mostrare, quindi, non deve essere più lunga di 20 caratteri.
Anche se non dovrebbe essere necessario dirlo: non usate caratteri “strani” o accentati, dovreste aver imparato cosa significa lavorare con un display HD44780
Lo schema è molto semplice: abbiamo da un lato una piccola schedina, realizzabile tramite millefori, che serve a pilotare il display con il modulo I2C del PIC, attraverso un IO Expander PCF8574.
Dall’altro lato abbiamo quindi ORbit16™ al quale dobbiamo collegare una manciata di componenti: 3 pulsantini e una sonda di temperatura LM35 (datasheet):
I 3 pulsanti non richiedono resistenze di pullup dal momento che li ho collegati a 3 ingressi dotati di Change Notification, per cui viene impostata la resistenza di pullup integrata. La sonda LM3 viene alimentata a 5V e l’uscita va collegata all’ingresso analogico A0 di ORbit16™.
Anche se la sonda viene alimentata a 5V, la sua uscita rientra sempre nei limiti dei 3.3V richiesti dagli ingressi analogici. Ricordo difatti che questo sensore di temperatura fornisce sull’uscita analogica 10mV per ogni grado centigrado per cui potendo arrivare massimo a 150°C l’uscita non supera gli 1.5V. Lato PIC, invece, leggendo questa uscita con un modulo ADC funzionante a 3.3V non avremo più una risoluzione di 5mV/bit (che ci fornisce letture di temperatura a passi di 0.5°) come eravamo abituati ai PIC funzionanti a 5V, bensì di 3,2 mV/bit, per cui ora sul display non leggeremo più le temperature a passi di mezzo grado ma con una risoluzione più alta (anche se del tutto inutile dato che la sonda ha comunque una risoluzione di mezzo grado!).
La lista dei Santi, dicevo, viene quindi caricata nella ROM. Con tutto ciò e con tutto il bootloader e la versione LITE di MPLAB C30, la memoria programma occupata è di circa il 31%, che lascia ampio spazio ad altre personalizzazioni. Ricordo che dovete editare il main per cambiare l’indicazione della raccolta differenziata per poterla adattare al vostro paese: sul display viene mostrata la raccolta che avverrà il giorno successivo a quello attuale.
Il codice sorgente fornisce una quantità interminabile di esempi che non voglio nemmeno stare qui ad elencare perchè penso ve ne siate resi conto. Questo video mostra come avviene l’impostazione di data/ora con i pulsanti:
Premendo il pusante SET si entra in modalità impostazione e si scorre lungo gli elementi da modificare. L’elemento selezionato lampeggia e si regola verso l’alto o verso il basso tramite i pulsanti up/down. Se si tiene selezionato un elemento per troppo tempo senza regolarlo, si esce in automatico dalla modalità impostazione e si perdono le regolazioni eventualmente eseguite. Vedete che man mano che si regola, cambiano anche le indicazioni del santo del giorno e della raccolta differenziata.
Il progetto fa uso del bootloader, quindi potete anche caricare l’hex direttamente con la connessione USB e il programma apposito. In aggiunta, utilizzando il modulo RTCC interno, dovete ricordarvi di montare, qualora non l’aveste già fatto, il quarzetto da 32,768KHz (Q2) e due condensatori ceramici (C12 e C13) con un valore intorno ai 12pF.
Proposte di miglioramento:
- Inventarsi un sistema di Backup che non faccia perdere l’orario senza scaricare la batteria (un sensing sull’alimentazione principale: appena viene a mancare, il pic continua a funzionare ma il display viene spento)
- Integrare le librerie RTCC per poter sfruttare anche le funzioni di allarme
Il progetto è disponibile agli utenti di ORbit16™ nell’apposita pagina dedicata ai progetti finiti.