
Con i consigli forniti in questo articolo impareremo a dotare ESPertino di una importante unità di visualizzazione attiva e a colori, grazie al collegamento con un display a matrice attiva OLED. Grazie ad esso, il nostro sistema di sviluppo potrà interagire con il mondo esterno con maggiore efficacia e flessibilità, attraverso disegni, messaggi ed immagini. Il cablaggio elettronico risulta estremamente semplice, un po' meno la gestione della comunicazione software.
Introduzione
Con un collegamento di un display grafico ad ESPertino, i sistemi creati con esso diventano, in un colpo solo, perfetti. La possibilità di visualizzare le informazioni ed le immagini a colori, infatti, aumenta di tanto la duttilità dei progetti realizzati con il nostro sistema di sviluppo. La sua indipendenza da qualsiasi altro sistema di visualizzazione (vedi il monitor seriale dell'IDE di Arduino) diventa pressoché totale. E questa esigenza si fa sempre più sentire, man mano che le applicazioni si fanno più importanti e professionali.
Il modulo OLED
Per le nostre prove e per i vari esperimenti abbiamo utilizzato il famoso modulo uOLED-32028-P1, prodotto dalla 4D Systems, azienda leader nella ricerca e nella produzione di soluzioni grafiche intelligenti. Tale modulo è visibile in figura 1. Esso è caratterizzato da una risoluzione di 240 x 320 pixel. In realtà, qualsiasi altro modulo può essere utilizzato utilmente, a patto di apportare alcune modifiche al listato sorgente e, soprattutto, alla modalità di invio dei codici di comando e di controllo, verso il display.
Schema elettrico
Il semplice schema elettrico è rappresentato in figura 2. Per il suo funzionamento di base e minimale occorrono semplicemente tre collegamenti, in quanto si implementa una comunicazione seriale tra le due unità, disattivando le altre caratteristiche "intelligenti" del display e "trasferendole" al nostro ESPertino. Il modulo OLED, infatti, fungerà da semplice slave ed è configurato in modalità SPE, come vedremo tra poco. I soli tre canali elettrici sul display utilizzati sono i seguenti:
- Vin, ossia il collegamento dell'alimentazione, pari a 5V. Essa è prelevata dallo stesso ESPertino;
- Gnd, ossia la massa comune del sistema;
- Rx, ossia la linea seriale di ricezione dei dati. Si consiglia di effettuare tale collegamento interponendo una resistenza di circa 1000 ohm tra le due unità.
Opzionalmente si potrebbe utilizzare anche il pin di reset, per il quale è sufficiente prevedere l'invio di un breve impulso a livello logico basso, dalla durata di almeno 20ms, al fine di resettare, appunto, il modulo di visualizzazione. Tale collegamento si può effettuare ad una qualsiasi porta di output dell'ESP32. Se, inoltre, si vogliono far transitare dei dati dal display ad ESPertino, si può utilizzare anche la linea Tx.
Il cablaggio
Seguendo lo schema di cui sopra è possibile ricavarne il relativo semplice cablaggio. La linea seriale può essere realizzata mediante un diretto e semplice filo elettrico ma è preferibile, come detto prima, interporre un resistore di circa 1000 ohm. La figura 3 mostra i tre collegamenti da realizzare tra le due unità.
Come inviare un comando al display
Il modulo in questione ha la possibilità di lavorare in modalità "programmazione seriale" attraverso il supporto SPE (Serial Programming Environment). Esso consente di utilizzare il display come semplice terminale non intelligente. L'invio di particolari sequenze di bytes abilita l'esecuzione di comandi di visualizzazione e di impostazione grafica. Il supporto SPE deve essere attivato utilizzando il Workshop4 IDE e caricando il relativo modulo accedendo al menù "Tools". Alcuni display di più recente concezione dispongono di un ponticello sullo stesso circuito, per effettuare tale abilitazione. Dopo questa operazione il display non dispone più di vita propria e attende la ricezione dei comandi, via comunicazione seriale, per poter effettuare le varie visualizzazioni grafiche sul proprio schermo.
Specifiche dei comandi seriali
Abbandoniamo adesso la parte hardware del sistema e passiamo a descrivere la modalità con cui si creano e si implementano i comandi grafici da inviare al modulo. Ogni comando, in realtà, è una sequenza di caratteri, o bytes, che devono essere inviati da ESPertino, via linea seriale. Un esempio chiarirà subito l'idea di tale filosofia, mostrando la modalità del disegno di un cerchio sullo schermo del display. La sequenza di bytes da inviare è la seguente:
FFC3 0078 00A0 0014 07E0
[...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2515 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Con la trasmissione seriale è possibile pilotare display grafici di qualsiasi dimensione. L’importante è di spezzare sempre in due parti i dati numerici richiesti in MSB e LSB.
Ottimo articolo. Vi ricordo che per avere ESPertino gratis basta clicca qui 🙂 http://it.emcelettronica.com/espertino-la-nuova-scheda-per-liot-in-omaggio-ai-nuovi-abbonati
Dove trovare il summenzionato display? Possibile che costi sui 200 euro o dollari?
Consiglio di usare anche i più aggiornati prodotti. La 4D Systems sforna nuovi display continuamente.
Dopo una ricerca su Google, molto puoi trovare su RS, Anche che non trovi lo stesso identico modello, le procedure son quelle.
Saluti
Giovanni
SOno riuscito a collegare Espertino alla IDE di Arduino e a programmarlo.
Sto cercando di far funzionare Espertino con un display OLED basato su SSD1306. Utilizzo un programma di esempio che su Arduino funziona perfettamente, mentre su espertino no (il display rimane nero). Più in generale come si fa ad interfacciare un dispositivo i2c? io ho collegato il display ai piedini SDA e SCL di Espertino senza uccesso.
Ecco il listato:
#include
#include
#include
// OLED display TWI address
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(-1);
#if (SSD1306_LCDHEIGHT != 64)
#error(“Height incorrect, please fix Adafruit_SSD1306.h!”);
#endif
void setup() {
// initialize and clear display
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.display();
// display a pixel in each corner of the screen
display.drawPixel(0, 0, WHITE);
display.drawPixel(127, 0, WHITE);
display.drawPixel(0, 63, WHITE);
display.drawPixel(127, 63, WHITE);
// display a line of text
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(27,30);
display.print(“Hello, world!”);
// update display with all of the above graphics
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
}
Ciao Ezio.
Prova i seguenti passi.
1) Dall’IIDE di Arduino installa le librerie del display. Si trovano su https://github.com/ThingPulse/esp8266-oled-ssd1306
2) Per fortuna questo display può lavorare a 3.3V. QUindi collega i seguenti pin:
– Gnd con Gnd
– 3.3V (ESPertino) a Vcc (Display)
– GPIO21 (SDA) (ESPertino) a SDA DIsplay
– GPIO22 (SCL) (ESPertino) a SCL Display
Questo è lo schema generale di qualsiasi altro tipo di collegamento
3) E’ tutto. Adesso il codice lo basi sulle seguenti righe:
#include “SSD1306.h”
#include
SSD1306 display(0x3c, 21, 22);
display.init();
display.drawString(0, 0, “Ciao a tutti”);
display.display();
Prova anche a inserire una pausa iniziale di 1 secondo prema dell’INIT.
Ciao