Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware

Basetta sperimentale per ESP8266

Assemblare la basetta sperimentale

Download dei dati necessari per la realizzazione della basetta sperimentale



Informazioni di base:

- Come installare la IDE di Arduino
- Configurazione e piedinatura  di ESP8266
- Caricamento dei programmi
- Come caricare le librerie necessarie

Pin disponibili per  gli sketch


Programmi con libreria SS1306Wire.h

Un orologio digitale

Un orologio analogico

Un orologio analogico con 2 display


Un termometro digitale via WiFi con Dht1





Programmi con libreria U8G2.h

Controllo di uno_switch in locale

Controllo di uno switch via_WiFi

Controllo di due switch in locale

Controllo di due_switch_via WiFi

Una stazione meteo BME280 in locale


Una stazione meteo BME280 in locale con 2 display

Qualità dell'aria e temperatura con SGP30 e DHT11




Programmi con libreria Oled.h

Un termometro Dht11 in locale




Programmi con il DB Firebase




Programmi con MQTT (Mosquitto)




Programmi con LittleFS




Link utili


 















NodeMCU ESP8266
+ dispaly OLED integrato


espOled
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

espoled_pin
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
 


Questa è la libreria con più esempi e meglio documentata, che ho utilizzato nei programmi che ho scritto o - più modestamente - modificato.
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".

ssd1306wire
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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           


Una seconda libreria che gestisce il display integrato sulla scheda è U8g2lib.h, che usa dei comandi diversi rispetto alla precedente.
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"

hello
 testo

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".

icon1
icon2
Cliccando su questo link di github, si trovano oltre agli esempi, informazioni che aiutano a comprendere l'uso della libreria.
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".

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".

oled1



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:
wiew
La riga fondamentale è quella evidenziata.



u8g2.h                  


Ecco la configurazione di base degli sketch che usano questa libreria:
u8

Sarà necessario inserire la stringa "u8g2.begin();" in "void setup () {"



Oled.h                 


Ecco la configurazione di base degli sketch che usano questa libreria:
 ol
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:
ada




























Per contatti: info@ethicaldiy.org