Questo display da 1,3″ 240×240 tipo ST7789 gestito tramite la scheda Wemos D1 Mini è a colori e presenta un’alta risoluzione, 260 ppi (Pixel Per Inch). Il display è del tipo In-Plane Switching o IPS.
Indice
Caratteristiche principali del display
- LCD IPS da 1,3″ con ampio angolo di visione di ±80°
- Display RGB a colori
- Display 240 x 240 ad alta risoluzione – 260 PPI
- Area: 23.4×23.4mm
- Dimensioni modulo: 28x39x12 m
- Interfaccia SPI senza pin CS
- Controller display: ST7789
- Tensione di alimentazione : 3,3 V
Interfaccia SPI
Questo display incorpora un interfaccia SPI che fornisce aggiornamenti rapidi del display.
Poiché è un dispositivo di sola scrittura, non è necessario che la SPI MISO sia collegata.
L’interfaccia non è dotata del pin CS (Chip Select ) il che riduce il numero di pin, ma non permette di avere altri dispositivi SPI sullo stesso bus contemporaneamente.
Connettore del modulo
La connessione al display avviene tramite un header a 7 pin.
PIN | Descrizione |
---|---|
GND | Pin GND in comune con l'MCU. |
VCC | Pin alimentazione 3,3 V. Da MCU o da fonte esterna |
SCL | Connettere a SPI SCL (Clock) |
SDA | Connettere a SPI MOSI (Dati) |
RES | Reset per il controller LCD ST7789. Normalmente HIGH, Portare LOW per ripristinare |
DC | Dati/Comando. Determina il tipo di dati da inviare al display. HIGH= Comando, LOW = Dati |
BLK | Controllo retroilluminazione. Se scollegato è sempre attiva |
Materiale utilizzato per il test
Sotto sono riportati i componenti minimi per il test del display 240×240 ST7789 tramite la scheda Arduino.
Wemos D1 mini |
Display IPS 240×240 |
Breadboard |
Cavi di collegamento |
Collegamento del display
Il modulo display LCD da 1,3″ 240×240 tipo ST7789 funziona a 3,3 V. Il modulo non è dotato di un proprio regolatore da 3,3 V e quindi deve essere alimentato direttamente con 3,3 V.
Nel nostro caso sul modulo Wemos D1 è presente un pin che fornisce questa tensione.
Sul retro del modulo si trovano: un transistor con la sigla J3Y (S8050 – datasheet), alcuni resistori, e un condensatore che forniscono il controllo della retroilluminazione.
Il pin BLK può essere lasciato scollegato, in questo caso si lascerà sempre accesa la retroilluminazione.
Sotto è riportato lo schema dei collegamenti del display 240×240 ST7789 al modulo Wemos d1 mini
Libreria per driver ST7789
Per gestire il display si dovranno utilizzare due librerie.
- Adafruit ST7789 TFT library
- Adafruit GFX Library
La prima libreria Adafruit-ST7789 potrà essere installata tramite il gestore della libreria Arduino IDE ricercando “Adafruit-ST7789”. La libreria è compatibile anche con display che utilizzano driver ST7735. Al momento dell’installazione vi sarà chiesto di installare anche la libreria Adafruit seesaw, cliccare su Install all.
A fine installazione vi sarà data conferma
La seconda libreria è quella grafica Adafruit che può essere installata tramite il gestore della libreria Arduino IDE ricercando “gfx“.
Per informazioni su come fare, vedere l’articolo Arduino – Tutorial, come installare una libreria
Gestione del display
Nei demo della libreria ci sono vari esempi che contengono le istruzioni per i due tipi di driver e per il collegamento a varie schede di controllo. Per il collegamento con il modulo Wemos D1 mini sono sufficienti le seguente impostazioni.
I 2 file di libreria sono inclusi nel codice principale come mostrato di seguito, l’inclusione della libreria Arduino SPI è facoltativa!
1 2 3 |
#include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7789.h> // Hardware-specific library for ST7789 #include <SPI.h> |
Le connessioni dei pin del modulo TFT ST7789 sono definite come mostrato di seguito.
1 2 3 4 |
#define TFT_DC D3 // Data/Command #define TFT_RST D4 // ST7789 Reset #define TFT_MOSI D7 // SPI data pin #define TFT_SCLK D5 // SPI sclk pin |
La libreria Adafruit ST7789 viene inizializzata con questa riga:
1 |
Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST); |
Infine, il display TFT viene inizializzato utilizzando il seguente comando:
1 |
tft.init(240, 240); |
Sketch utilizzato
Sotto è riportato lo sketch utilizzato per i test.
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 |
#include <Adafruit_GFX.h> // Core graphics library by Adafruit #include <Arduino_ST7789.h> // Library for ST7789 (with or without CS pin) #include <SPI.h> #define TFT_DC D3 // Data/Command #define TFT_RST D4 // ST7789 Reset #define TFT_MOSI D7 // SPI data pin #define TFT_SCLK D5 // SPI sclk pin Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST); //for display without CS pin //=============================================================================== // Initialization //=============================================================================== void setup() { tft.init(240, 240);// initialize ST7789 chip at 240x240 pixels } //=============================================================================== // Main //=============================================================================== void loop() { // Disegna rettangoli red/green/blue tft.fillRect(0, 0 , 240, 80, RED); tft.fillRect(0, 80 , 240, 160, GREEN); tft.fillRect(0, 160 , 240, 240, BLUE); delay (1000); // Presentazione tft.fillScreen(BLACK); tft.setTextSize(3); tft.setTextColor(RED); //Imposta il colore del testo tft.setCursor(10, 10); tft.println("TEST DISPLAY"); tft.setTextColor(YELLOW); tft.setCursor(20, 50); tft.println("IPS 240x240"); tft.setTextColor(GREEN); tft.setCursor(0, 100); tft.print("Wemos D1 Mini"); tft.setTextSize(2); tft.setTextColor(WHITE); tft.setCursor(20, 150); tft.println("WWW.ADRIROBOT.IT"); delay (3000); } |
Video del test
Altri esempi di collegamento del display
Con un modulo ESP32-devkit-v1
Con una scheda Arduino UNO
Altri moduli display per Wemos D1 mini
OLED shield 0,66 ” – 64 x 48 pixel
Display OLED Shield TFT 2.4″ a colori con funzione Touch – 340×240 pixel
OLED Shield 0.49″ – 128×64 pixel
Altri moduli display
Panoramica di altre tipologie di display utilizzati nei vari progetti presenti sul sito. Dai più semplici LCD 16×2, passando per i TFT con touch screen e quelli tipo OLED.