Come appare l'orario sul display OLED |
Ci
sono due modi per ottenere l'ora con ESP01 (che al suo
interno non possiede un modulo orologio): 1 - collegarlo con un modulo RTC, quale un DS-1307, che lavorando con protocollo I2C è compatibile con il nostro ESP01. Tuttavia in questo caso è necessario un ulteriore modulo, il quale però può nel tempo non essere del tutto preciso; 2 - collegarsi a un server NPT, che fornisce l'ora esatta a tutta una serie di apparati che si collegano alla rete, quali server, cellulari, ecc. In questo caso, non avremo bisogno di ulteriori moduli, ma dovremo essere collegati a Internet a mezzo WiFi, cosa alquanto semplice, poichè ESP01 ha questa funzione nativa. |
DS-1307
|
I progetti con un server NTCIn questa pagina, vorremmo preentare due progetti, con la stessa base: nel primo, il nostro ESP01 si collega a un server NTP, e la data, l'ora e il giorno della settimana verrà visualizzato sul monitor seriale. In questo modo, lo sketch può essere integrato in uno più complesso, in cui per esempio è necessario sapere l'ora esatta in cui succede un determinato evento; nel secondo, l'ora, ecc. viene visualizzata su di un display OLED, trasformando il nostro ESP01 in un perfetto orologio digitale. |
Il primo progetto: l'ora esatta con un server NTP |
Per
prima cosa, sarà necessario installare le librerie
necessarie, nel caso non fossero ancora presenti nella
cartella di Arduino. Esse sono: ESP8266WiFi.h NTPClient.h WiFiUdp.h Se non fosseroro già presenti nell'archivio delle librerie, la prima opzione sarà di tentare di scaricarle per mezzo della IDE di Arduino (Sketch/Include library/Manage libraries). N.b.: provare sempre a scaricare le librerie dalla IDE di Arduino, in quanto avrai sempre accesso alle ultime versioni e solo in caso negativo utilizzare quelle inserite in questa pagina. Clicca qui per visualizzare il programma Clicca qui
per scaricare scaricare il file in formato ".zip". Nota:
ricordati di inserire nello sketch il nome e la password
della tua rete WiFi. |
Ecco
come appaiono i dati sul serial monitor.
|
Ecco
una breve spiegazione, dei dati che si riceveranno, per
quanto siano piuttosto intuitivi: Epoch time: è un calcolo convenzionale dei secondi trascorsi dal 01/01/1970 al momento in cui si verifica la misura del tempo Formatted time: restituisce l'ora attuale nel formato hh:mm:ss Week day: il giorno della settimana Curent date: la data odierna nel formato dd/mm/yyyy Oltre all'ora e alla data formattata, si ricevono anche i singoli dati relativi a ore, minuti, secondi, ecc. Nota: per vedere i dati sul monitor seriale, ricordarsi di impostare il baud rate a 115200 bps. |
Il secondo progetto: visualizzazione dell'ora e data su di un display OLED |
Il
secondo programma presentato in questa pagina ricalca
fedelmente il precedente; solamente sono state inserite
alcune righe del programma per potersi interfacciare con un
display OLED SSD1306 128x64 dot, che mostra la data, il
giorno della settimana e l'ora esatta, e si aggiorna ogni
secondo. In questo modo si può creare un orologio digitale molto preciso in uno spazio veramente esiguo. Oltre alle librerie necessarie per il primo programma, sono necessarie anche le seguenti, per poter gestire il display OLED: Wire.h; Adafruit_SSD1306; Adafruit_GFX; Inoltre si è utilizzato un diverso font di caratteri, che troverete nella libreria Adafruit_GFX modificata per l'occasione. Se invece si usa la libreria scaricata dalla IDE di Arduino, sarà necessario integrare, inserendo manualmente il font di caratteri nella cartella "Fonts" della libreria "Adafruit_GFX, naturalmente dopo averlo scompattato: FreeSerif9pt7b.h Se si usa la basetta sperimentale, illustrata nella pagina relativa, il dislay OLED andrà inserto nel connettore I2C3, rispettando la polarità. |
Clicca
qui per visualizzare il programma Clicca qui per scaricare scaricare il file in formato ".zip". Se si desiderano informazioni più dettagliate sui programmi presentati in questa pagina, aprire questo link (esterno al nostro sito): https://randomnerdtutorials.com/esp8266-nodemcu-date-time-ntp-client-server-arduino/ Ai curatori di "Randomnerdtutorials" va tutta la mia gratitudine per la quantità, varietà e sopratutto per la qualità dei progetti offerti. Il primo programma di questa pagina è stato integralmente copiato da quello presentato sul loro sito e poi leggermente modificato per adattarlo alla nostra lingua; l'integrazione del display oled nel progetto invece é (quasi del tutto) originale. :-D |