La scheda ESP8266 + Oled leggermente ingrandita |
Ho trovato questa scheda quasi per caso, dando un'occhiata alle offerte di Aliexpress. Questa scheda era venduta (ottobre 2024) a 3,41 €, con spedizione rapida e gratuita se si faceva un acquisto superiore a 10 €! Quando è arrivata, l'ho osservata con curiosità, e ho subito cercato in Internet alcuni programmi già testati, per verificarla immediatamente. Ho trovato veramente poco materiale, e la maggior parte dei video su Youtube illustravano semplicemente la configurazione essenziale, al più visualizzando sullo schermo il solito "Hello world!". Non voglio sminuire ciò che trovai, è stato sicuramente utile. Una precisazione: il pinout è del tutto compatibile con le schede standard (le dimensioni sono quelle della scheda ESP8266 con chip CH340C, quindi può alloggiare sulla scheda sperimentale e utilizzare senza modifiche tutti i programmi per ESP8266, tranne quelli che usano il display integrato, perchè si collega su altre porte e usa diverse librerie rispetto al display SSD1306 stand alone. |
Il
pinout della scheda |
La disposizione dei piedini della nostra scheda. Come si può notare, il dispaly Oled usa le porte GPIO12 (SDA) e GPIO14 (SCL ). Mentre il display standalone SSD1306 usa le "solite" porte per il protocollo I2C, ovvero GPIO4 per SDA (dati) e GPIO5 per SCL (clok). Vedi ESP8266 per confronto. |
Attenzione:
non tutti i programmi scritti per ESP8266 "standard", ovvero
senza display integrato, funzionano su questa versione, sia
per l'uso di diverse per la gestione del display Oled, ma
anche perchè quest'ultimo occupa due porte GPIO4
per SDA (dati) e GPIO5 per SCL (clok) che ovviamente non
possono essere utilizzate per altri scopi. Quindi quando si trasportano programmi da un modello all'altro, tenere conto di queste restrizioni, eventualmente usando altre porte per sensori/attuatori, se queste sono disponibili. Cercheremo di inserire qualche programma di esempio. |
Le librerie
disponibili per il display integrato |
Per poter utilizzare il dispaly Oled integrato, è necessario caricare la libreria adeguata. Nel caso si abbia difficoltà a caricare una libreria, consultare la pagina dedicata. Per questa scheda, ho trovato tre librerie diverse, che utilizzano anche comandi differenti. Si possono usare alternativamente in base agli sketch che si vogliono utilizzare, oppure in base alle proprie preferenze. |
SSD1306Wire.h |
|
I programmi che si trovano a corredo della libreria illustrano vari aspetti. Purtroppo, come sempre in questi casi, gli sketch non sono commentati, così dedico alcune righe a ognuno. SSD1306ClokDemo mostra sullo schermo un orologico, alternativamente analogico (un quadrante con lancette che si muovono) o digitale. Purtroppo l'ora di base è sempre la stessa, e quindi serve solo come dimostratzione. SSD1306DrawingDemo disegna sullo schermo una serie di righe e figure geometriche. SSD1306OTADemo mostra l'indirizzo IP della scheda (richiede che si inserisca la SSID e la password della propria rete. SSD1306ScrollVerticalDemo mostra delle scritte che scorrono verticalmente sullo schermo. SSD1306SimpleDemo appaiono varie schermate che si susseguono senza scroll. Appaiono scritte, icone, una barra che si incrementa con il tempo e un contatore che si incrementa velocemente. SSD1306TwoScreenDemo indica come usare due schermi contemporaneamente (quello integrato e un display Oled collegato esternamente). SS1306UIDemo . mostra alcune schermate che scorrono in orizzontale (icone e testo), mentre un contatore si incrementa al passare del tempo. Questa libreria può essere scaricata direttamente dalla IDE di Arduino da Schetch/#includi libreria/Gestione librerie digitando nel campo di ricerca "esp8266 oled" e selezionare "ESP8266 and ESP32 OLED driver for SSD1306 displays". Attenzione: inizialmente ho scaricato l'ultima versione della libreria, ma seguendo gli esempi su youtube, il mio schermo appariva desolatamente nero. Poi ho provato a installare una libreria più vecchia, la versione 4.4.0 e tutto si è messo a funzionare alla perfezione! Probabilmente c'era una incompatibilità con la mia scheda o il sistema operativo. Da questo link a github si possono trovare alcune informazioni sulla libreria. |
|
U8g2lib.h
|
Caricando la libreria si trova un solo schetch di esempio, se ne trovano veramente molti. Però suggerirei di cominciare a caricare questo sketchn non compreso nella lista degli esempi che per quanto semplice, da utili indicazioni su alcuni aspetti fondamentali della configurazione: Hello che come suggerisce il testo, mostra semplicemente una scritta (fissa) sullo schermo. Puoi scaricarlo qui in formato compresso ".zip"
Comincerei
a sperimentare gli esempi presenti nella libreria dalla
cartella "full buffer", che tuttavia richiedono di
aggiungere alcune righe di codice, copiandole dallo sketch
"Hello". Questo link invece, conduce ad una pagina che illustra dettagliatamente i comandi presenti in questa libreria, corredandoli con esempi. Inoltre questa libreria permette un uso di decine e decine di fonts di caratteri diversi. Da questo link potrai trovare la lista completa. In ogni caso, digitando su di un motore di ricerca "u8g2" si trova una ricca documentazione. Questa libreria può essere scaricata direttamente dalla IDE di Arduino da Schetch/#includi libreria/Gestione librerie digitando nel campo di ricerca "esp8266 oled" e selezionare "u8g2". |
|
OLED.h
|
La terza libreria che ho testato per questa scheda, è "OLED.h". Il nome completo della libreria è "ESP8266-OLED Dispaly Library" per la quale si trova, all'interno di esempi, l'unico sketch "example.ino". E' forse la libreria per cui ho trovato meno informazioni. In questa repository Github puoi trovare la libreria e alcune informazioni. Purtroppo non sono riuscito a trovare la lista completa dei comandi. Anche questa libreria può essere scaricata direttamente dalla IDE di Arduino da Schetch/#includi libreria/Gestione librerie digitando nel campo di ricerca "ESP8266-OLED Dispaly Library". |
|
Confronto
della configurazione del display tra le varie librerie In
questo spazio vorrei mostrare la differenza della
configurazione iniziale, fondamentale per il corretto
funzionamento dello sketch, tra le tre librerie appena
trattate, e anche con la Adafruit_SSD1306.h, la libreria
comunemente usata per gestire il display Oled 128x64
esterno alla scheda, come accade nella stragrande
maggioranza dei progetti che includono una ESP8266 (anche
ESP32) e un display Oled.
Questo può servire per adeguare i programmi per la nostra ESP8266 con il display integrato. Purtroppo questo non è sufficiente, in quanto è necessario cambiare anche il nome dei comandi, e a volte anche parzialmente la sintassi. |
SSD1306Wire.h |
Ecco
la configurazione di base degli sketch che usano questa
libreria: La riga fondamentale è quella evidenziata. |
|
u8g2.h
|
Ecco la configurazione di base degli sketch che usano questa libreria: Sarà necessario inserire la stringa "u8g2.begin();" in "void setup () {" |
|
Oled.h
|
Ecco la configurazione di base degli sketch che usano questa libreria: Sarà necessario inserire la stringa "display.begin();" in "void setup () {" |
|
Adafruit_SSD1306.h |
Ecco
la configurazione di base degli sketch che usano la libreria
per la gestione di un diaplay Oled esterno alla scheda, un
po' più strutturata che le precedenti: |