La matrice a Led e un orario... atomico!
Riassunto delle puntate precedenti
Se avete seguito i post precedenti del progetto, sapete che finora abbiamo visto come leggere i valori dal sensore DHT11 e inviarli ad un servizio cloud.
Oggi facciamo un altro salto in avanti sulla parte... "estetica": renderemo il nostro dispositivo più intelligente facendogli capire da solo che ore sono e useremo la matrice LED per mostrare i dati localmente in modo più dinamico.
Ecco qui di seguito le due principali novità di questo aggiornamento.
Mai più orologi da regolare: Arriva l'NTP
Vi è mai capitato di dover impostare l'ora a mano nel codice? È una seccatura, inoltre ogni volta che togliete corrente l'Arduino ricomincia a contare da zero perdendo la regolazione precedente.
Nella nuova versione dello sketch questo problema è risolto usando il protocollo NTP (Network Time Protocol).
Subito dopo che Arduino si connette al WiFi, si esegue una chiamata via rete ad un server dedicato alla sincronizzazione dell'ora (come quelli dell'INRiM di Torino) e allinea l'orologio interno (RTC) del microcomputer.
Il vantaggio? Una volta impostato, l'Arduino saprà sempre la data, l'ora esatta, i minuti e i secondi senza che sia necessario nessun altro intervento.
La precisione dell'orario è inoltre garantita dalla fonte temporale esterna dei server di sincronizzazione, che in genere è un orologio atomico.
L'ora esatta in Italia, ad esempio, è definita da un particolare orologio atomico installato presso l'Istituto Nazionale di Ricerca Metrologica di Torino.
La base di riferimento sfrutta la frequenza di risonanza di isotopi di cesio-133 mantenuti a temperature bassissime (89° K).
La sua precisione è talmente elevata (2x 10E-16) da renderlo uno degli strumenti di misura più accurati mai realizzati al mondo. Per curiosità, una base tempi del genere perde o guadagna 1 secondo ogni 158 milioni di anni.
![]() |
| Fontana al Cesio dell'INRiM di Torino |
![]() |
| Server dell'INRim per la disseminazione della scala di tempo |
La Matrice LED
Passiamo ora ad un argomento più pratico: invece di mostrare solo icone fisse, ora sfruttiamo la matrice LED 12x8 dell'R4 WiFi per far scorrere il testo.
Grazie alle librerie Arduino_LED_Matrix e ArduinoGraphics, possiamo far leggere intere frasi. Quali sono le due caratteristiche più interessanti di questa nuova funzione?
- Effetto scorrimento: Le informazioni (Data, Ora, Temperatura) scorrono da destra verso sinistra, questo permette di leggere stringhe lunghe anche su uno schermo così piccolo.
- Visualizzazione: Abbiamo aggiunto una funzione che formatta l'ora correttamente quando ora, minuti o secondi sono minori di dieci (ovvero "09:05" in sostituzione di risultato un poco estetico come "9:5").
Organizzazione del codice (Clean Code)
Per non fare confusione, è stata eseguita un po' di pulizia (rifattorizzazione) del codice nello sketch.
Una nuova funzione specifica, chiamata getUtcDateTime(), fa tutto il lavoro per:
- Leggere l'ora dall'orologio interno.
- Controllare il giorno, il mese e l'anno.
- Preparare una stringa pronta per essere stampata sulla matrice LED o inviata a ThingSpeak.
Cosa è stato aggiunto
Le librerie necessarie per queste nuove funzionalità sono:
- NTPClient: per recuperare l'ora da internet.
- WiFiUdp: per utilizzare User Datagram Protocol (UDP), un protocollo di rete per comunicazioni veloci e senza connessione, ideale per applicazioni sensibili al tempo di trasmissione come la connessione al server NTP.
- ArduinoGraphics e Arduino_LED_Matrix: per scrivere sulla matrice LED inviando anche informazioni complesse, come un testo scorrevole.
Il risultato finale
Ecco come Arduino R4 aggiorna la matrice Led.



Commenti
Posta un commento