L ‘OLED shield V2.1.0 per Wemos D1 è un piccolo display monocromatico, con una misura in diagonale di 0,66 ” con una risoluzione di 64 x 48 pixel. Il display è concepito principalmente per essere collegato al modulo Wemos D1 Mini o Wemos Pro.
Questa è la versione aggiornata del precedente modello OLED Shield V1.1.0, la novità riguarda tra l’altro la presenza di due piccoli pulsanti posti ai lati del display.
Per altri shield specifici per Wemos D1 mini vedere l’articolo Wemos D1 mini – Raccolta Shield disponibili
Indice
Descrizione
La tipologia OLED (Organic Light Emitting Diode) indica che non solo il display è molto luminoso e chiaro con un elevato rapporto di contrasto, ma ha un consumo energetico molto inferiore rispetto ad altri display o tecnologie come l’LCD retroilluminato, è anche molto visibile sia in condizioni di oscurità totale che di luce intensa.
Per interfacciare il modulo, il display utilizza un’interfaccia seriale I2C che richiede solo due pin D1-SCL e D2-SDA.
Il circuito di reset è a bordo e significa che non è necessario un pin di reset aggiuntivo.
Sebbene il modulo sia progettato per essere utilizzato con le mini schede Wemos D1 Mini o Wemos Pro, il display OLED con il controller di visualizzazione SSD1306, può essere impiegato come modulo di visualizzazione con altre schede a microcontrollore come Arduino.
Caratteristiche del modello V2.1.0
Dimensione schermo | : 128x64 pixel 0.49" |
Tensione di funzionamento | : 3,3Vcc |
Driver IC: | : SSD1306 |
Interfaccia | : I2C |
Indirizzi I2C | : 0x3C o 0x3D |
2 pulsanti I2C | : indirizzo personalizzabile, predefinito: 0x31 |
Foto delle due versioni del modulo
Differenze tra le due versioni del modulo display
Come visibile dalle foto sottostanti, nella nuova versione sono presenti due piccoli pulsanti posti ai lati del display indicati con le lettere [A] e [B]. La loro gestione è affidata a uno specifico integrato pilotato tramite lo stesso bus I2C. Quello che cambia sono gli indirizzi diversi per il display e per i tasti.
Dove acquistare l’OLED shield per Wemos
l’OLED shield può essere acquistato sul sito Homotix codice WEOLED
Se al momento dell’ordine inserirete il codice sconto “ADRIROBOT” avrete diritto a uno sconto.
il kit del modulo comprende inoltre 2 header x 8 pin maschio-maschio, per il loro montaggio è richiesta la saldatura, permettono al modulo di essere facilmente inserito nel Mini header Wemos D1.
Schema elettrico
Il circuito elettrico del modulo (pdf del circuito) può essere diviso in due parti, una relativa alla gestione del display e l’altra per la gestione dei due tasti.
Schema gestione display
Il display che misura in diagonale di 0,66 ” con una risoluzione di 64 x 48 pixel è gestito dal driver SSD1306 (datasheet).
Sul PCB sono presenti alcune piazzole SJ1, che permettono se cortocircuitate di variare l’indirizzo I2C. Questo può essere quello di default 0x3C, oppure spostando la goccia di stagno impostato come 0x3D
Schema gestione tasti
Per la gestione dei due tasti è stato inserito uno specifico microcontrollore U2.
Sono presenti due porte: UART e JTAG per la programmazione del microcontrollore a montaggio avvenuto
Pin utilizzati per la gestione del modulo
Sotto sono evidenziati i pin utilizzati per la gestione del OLD Shield: +3.3V, GND, D1-SCL e D2-SDA
Libreria di gestione
Per utilizzare il display OLED è necessario installare le apposite librerie.
Una è relativa alla gestione del display e la seconda ai due trasti presenti. Sul sito del costruttore sono riportati i link dove recuperare le librerie
- Libreria per il display – Adafruit_SSD1306_Library (Add support by @mcauser)
- Libreria per la gestione dei tasti – LOLIN I2C Button library
Sono inoltre disponibili degli esempi per testare l’utilizzo dei pulsanti, questi sono presenti come esempi della libreria relativa ai tasti o da questo link
In caso di problemi per l’installazione delle librerie vedere l’articolo Arduino – Tutorial, come installare una libreria
Test del modulo
Per il test dell’OLED Shield V2.0.1 si è utilizzato oltre al display stesso, un modulo Wemos D1 Mini PRO V3.1.0, un RGB LED SHIELD montati su una Tripler Base.
Sotto è riportato lo schema equivalente, anche se non sarà necessario utilizzare dei cavi in quanto i collegamenti saranno eseguiti tramite la Tripler Base
Codice del programma di test
Sotto è riportato il codice utilizzato per i test. Oltre alle due librerie per la gestione del display e dei pulsanti è necessaria quella per la gestione dei led RGB presenti sul modulo RGB LED.
Alla pressione di uno dei pulsanti, sarà indicato sul display il tasto premuto e sul modulo RGB LED si accenderà una coppia di led di colore BLU per il pulsante [A] e una coppia di led ROSSI per il pulsante [B].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/* Test OLED VERSIONE V2.1.0 */ #include <Wire.h> #include <LOLIN_I2C_BUTTON.h> //Libreria Button #include <Adafruit_SSD1306.h> // Libreria OLED #include <Adafruit_NeoPixel.h> #define PIN D4 #define LED_NUM 7 #define OLED_RESET -1 Adafruit_SSD1306 display(OLED_RESET); I2C_BUTTON button(DEFAULT_I2C_BUTTON_ADDRESS); //I2C Address 0x31 Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //I2C Address 0x3C leds.begin(); //Si inizializza la libreria NeoPixel. leds.setBrightness(100); //Si regola la luminosità colorWipe(leds.Color(0, 0, 0), 50); //Spegne tutti i led delay(1000); } void loop() { display.clearDisplay(); display.setTextSize(1); display.setCursor(0, 0); display.setTextColor(WHITE); //Spegne tutti i led colorWipe(leds.Color(0, 0, 0), 50); if (button.get() == 0) // Button press { if (button.BUTTON_A) { display.setCursor(0, 0); display.println("Pulsante A"); display.print(" BLU"); display.setCursor(5, 30); display.print("ADRIROBOT"); //Accende i led 5 e 6 con il colore BLU leds.setPixelColor(5, leds.Color(0, 0, 255)); leds.setPixelColor(6, leds.Color(0, 0, 255)); leds.show(); // Aggiorna colore } if (button.BUTTON_B) { display.setCursor(0, 0); display.println("Pulsante B"); display.print(" ROSSO"); display.setCursor(5, 30); display.print("ADRIROBOT"); //Accende i led 2 e 3 con il colore ROSSO leds.setPixelColor(2, leds.Color(255, 0, 0)); leds.setPixelColor(3, leds.Color(255, 0, 0)); leds.show(); // Aggiorna colore } display.display(); } delay(1000); } // Riempie uno dopo l'altro i led con un colore void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < leds.numPixels(); i++) { leds.setPixelColor(i, c); leds.show(); delay(wait); } } |
Video del test del display
Wemos D1 mini – Raccolta Shield disponibili
Oltre al Display OLED, per la scheda Wemos D1 mini, prodotta dalla WEMOS/LOLIN sono disponibili vari shield che appartengono a varie categorie: Display & Interactive Shield, Environment, Power, Control, Others.
Per l’elenco vedere articolo Wemos D1 mini – Raccolta Shield disponibili