Questa lezione include i seguenti argomenti:
1: Introduzione al display OLED
Prima di muoverti prima, dobbiamo sapere cos'è un display OLED. OLED (Dispositivi di emissione di luce organica) vengono utilizzati come alternativa ai LCD. I LED OLED vengono utilizzati per produrre display leggeri sugli schermi OLED. Lo schermo LCD utilizza la retroilluminazione per illuminare i suoi pixel mentre i display OLED hanno i loro LED emissivi. Ci sono centinaia di LED auto-aluminanti. Per visualizzare immagini e la luminosità del testo di questi LED può essere controllata pixel da pixel.
Ora, come conosciamo alcune basi relative al display OLED. Il prossimo passo è collegare ESP32 con un modulo di visualizzazione OLED.
2: Modulo di visualizzazione OLED di cablaggio su ESP32
Il display OLED viene fornito principalmente con due diversi protocolli di comunicazione. I due protocolli sono I2C e SPI. L'interfaccia periferica seriale (SPI) è generalmente più veloce di I2C, ma abbiamo preferito il protocollo I2C rispetto al protocollo SPI in quanto richiedeva meno numero di pin.
La seguente immagine illustra il diagramma di connessione ESP32 con 128 × 64 pixel (0.96 ") display OLED.
Di seguito è riportata la tabella di connessione:
Una volta che ESP32 è interfacciato con un display OLED, il passaggio successivo nell'elenco è installare tutte le librerie richieste per la programmazione ESP32 utilizzando Arduino IDE.
3: installazione delle librerie richieste
Librarie multiple sono disponibili in Arduino IDE per programmare ESP32 con un display OLED. Qui useremo due librerie di Adafruit: SSD1306 e GFX Library.
Ora nell'Arduino IDE Open Library Manager e cerca la libreria OLED SSD1306. Installa la libreria SSD1306 di Adafruit dalla barra di ricerca.
In alternativa, si può anche andare a: Schizzo> Includi la libreria> Gestisci le biblioteche
La prossima libreria che dobbiamo installare è il Libreria GFX di Adafruit.
Dopo che entrambe le librerie sono state installate correttamente, il passo successivo è verificare l'indirizzo I2C in cui ESP32 è connesso.
4: Controlla l'indirizzo I2C display OLED
I2C sta per la comunicazione del circuito inter-integrato. Usando i2c possiamo interfacciarsi più dispositivi su 2 fili. Tuttavia, mentre li collega ogni dispositivo I2C deve utilizzare un indirizzo I2C separato. Questo indirizzo varia da 0 a 127. Ad esempio, se abbiamo due diversi dispositivi I2C che utilizzano lo stesso indirizzo I2C non possono essere collegati sulla stessa linea I2C.
È importante controllare prima l'indirizzo I2C. Per controllare l'indirizzo I2C del display OLED connesso collegato ESP32 con PC, caricare il codice indicato nell'articolo Controlla l'indirizzo I2C utilizzando Arduino IDE.
Dopo il caricamento del codice, verrà visualizzato il seguente output. Qui nel nostro caso il display OLED è collegato all'indirizzo I2C (0x3C).
Useremo l'indirizzo I2C menzionato per il display OLED nel codice Arduino.
5: Visualizza il codice QR sullo schermo OLED con ESP32 utilizzando Arduino IDE
Il primo passo necessario per visualizzare qualsiasi codice QR su uno schermo OLED è convertire l'immagine del codice QR in un codice esadecimale. Usando qualsiasi immagine online a convertitore esagonale possiamo ottenere codice esadecimale contro un'immagine.
Ma prima di prima dobbiamo creare un codice QR di esempio.
1: creazione di un codice QR
Per la creazione del codice QR sono disponibili più strumenti gratuiti online. Ecco un testo gratuito al generatore di codice QR.
Utilizzando questo strumento qualsiasi testo o collegamento può essere convertito in codice QR. Qui abbiamo creato un codice QR per l'indirizzo del sito Web Linuxhint.
2: conversione del codice QR in codice esadecimale
Per convertire qualsiasi codice QR in codice esadecima. Ora segui i passaggi per ottenere il codice esadecimale per la tua immagine del codice QR.
Passo 1: Clicca qui per visitare il convertitore Image2CPP gratuito.
Passo 2: Seleziona l'immagine del codice QR che vogliamo visualizzare su OLED.
Passaggio 3: Dopo aver selezionato l'immagine del codice QR, fare clic su Apri.
Passaggio 4: Nell'impostazione dell'immagine imposta le dimensioni su 128 x 64. La luminosità può essere impostata in base al numero di immagine consigliato da qualche parte intorno a 150.
Ridimensionare l'immagine del codice QR in base alla dimensione e per riferimento consultare l'anteprima dell'output.
Passaggio 5: Ora imposta il formato di output del codice nel codice Arduino e nel prefisso come bitmap. Dopo questo clic su Genera codice. Il codice esagonale di output può essere copiato dalla finestra di output.
Sostituisci il codice esagonale copiato in Arduino IDE SEMPLIC CODE indicato di seguito.
3: codice
Ora apri l'IDE Arduino e incolla il codice seguente. Ricorda di sostituire il codice esadecimale con quello per l'immagine del codice QR che è necessario visualizzare su uno schermo OLED.
/****** Linuxhint.Com ********/
#includere
#includere
#includere
#define screen_width 128
#define screen_height 64
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
static const uint8_t image_hex_array [1024] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x80, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x18, 0x03, 0xe1, 0x0c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xf8, 0x63, 0x1c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe0, 0xfc, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF
;
void setup ()
Seriale.Inizia (115200); // TAUD TAUD per la comunicazione seriale
Se(!Schermo.inizio (ssd1306_switchcapvcc, 0x3c))
Seriale.println (f ("allocazione SSD1306 non riuscita"));
per(;;);
ritardo (2000); // ritardo 2 sec
Schermo.clearDisplay (); // Cancella buffer di display
Schermo.DrawbitMap (0, 0, Image_hex_array, 128, 64, 1);
Schermo.Schermo();
void loop ()
Codice avviato importando le librerie necessarie che abbiamo installato in precedenza. Due librerie includono la libreria di filo e adafruit. Le librerie di fili ci consentono di utilizzare i2c mentre Adafruit aiuta a visualizzare il testo scritto sullo schermo.
Il prossimo comando seguente è scritto:
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
Contiene il Screen_width E Screen_height variabili. Usando queste variabili, abbiamo definito la dimensione del display OLED. Qui stiamo usando un display OLED da 128 × 64. Dopo di che &Filo L'oggetto è definito per la visualizzazione.
L'ultimo parametro contiene (-1), Questo display che la schermata OLED che stiamo usando non ha un pulsante di ripristino esterno. Nel caso in cui abbiamo un pulsante di ripristino sul display OLED. Passeremo questo parametro a un pin GPIO. Dopo aver premuto il pulsante di ripristino, lo schermo OLED visualizzerà il testo.
Nel mezzo del codice, abbiamo incluso il codice HEX per l'immagine del codice QR e successivamente inizializzava la comunicazione I2C all'indirizzo I2C (0x3c) è definito che abbiamo trovato in precedenza usando il codice scanner I2C.
Nelle ultime righe di codice, l'array esadecimale viene stampato su OLED usando la funzione bitmap.
4: Esempio di codice Arduino per la visualizzazione dell'immagine del codice QR
Ecco un codice indicato per l'interfaccia con OLED con ESP32. Devi sostituire il codice esadecimale dell'immagine del codice QR che si desidera visualizzare sullo schermo.
/****** Linuxhint.Com ********/
#includere
#includere
#includere
#define screen_width 128
#define screen_height 64
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
static const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Incolla il codice esadecimale per l'immagine qui]
*******
*******
*******/
;
void setup ()
Seriale.Inizia (115200); // TAUD TAUD per la comunicazione seriale
Se(!Schermo.inizio (ssd1306_switchcapvcc, 0x3c))
Seriale.println (f ("allocazione SSD1306 non riuscita"));
per(;;);
ritardo (2000); // ritardo 2 sec
Schermo.clearDisplay (); // Cancella buffer di display
Schermo.DrawbitMap (0, 0, Image_hex_array, 128, 64, 1);
Schermo.Schermo();
void loop ()
5: output
Qui nell'output, possiamo vedere il codice QR visualizzato sullo schermo OLED. Questo è lo stesso codice QR che abbiamo convertito in codice esadecimale prima.
Abbiamo visualizzato correttamente un'immagine del codice QR su un display I2C OLED. Utilizzando gli stessi passaggi qualsiasi codice QR con proporzione corretta può essere visualizzato su uno schermo OLED.
6: scansione del codice QR dal display OLED
Una volta visualizzato il codice QR, l'ultimo passaggio è verificare se funziona o meno per lo smartphone da utilizzare. La maggior parte degli smartphone viene fornita con uno scanner di codice QR preinstallato se non disponibile, può essere facilmente scaricato dall'App Store.
Ora posiziona la fotocamera sul codice QR.
Se verrà visualizzato con successo il seguente testo. Questo è lo stesso identico testo che abbiamo salvato durante la creazione del codice QR.
Conclusione
Un display OLED è un ottimo modo per mostrare output senza necessità di un monitor seriale o un PC. I display OLED sono dotati di due diversi protocolli I2C e SPI. I display I2C OLED sono preferiti a causa di un numero minore di fili. Il display OLED può essere utilizzato per la visualizzazione di informazioni sullo schermo come il codice QR o il codice a barre utilizzando. Questa lezione fornisce tutti i passaggi richiesti nella visualizzazione di un'immagine del codice QR su un display I2C OLED con ESP32 utilizzando l'IDE Arduino.