CARATTERISTICHE:
E' un display LCD TFT da 320x480, 3,5 pollici, con driver ILI9488 e interfacciamento SPI. L'LCD può essere collegato al bus SPI di Arduino. Ha bisogno di un numero minimo di 4 pin porta.
Il display LCD TFT è basato su controller ILI9488. Rispetto al più popolare modello da 2,4" (ILI9341), l'area attiva dello schermo è praticamente raddoppiata. Così come la risoluzione.
La comunicazione con lo schermo avviene tramite l'interfaccia SPI. Questo è un grande vantaggio rispetto all'interfaccia parallela. Per la comunicazione è necessario un minor numero di pin del microcontrollore. Sul retro del display è presente uno slot per schede di memoria SD.
I modelli disponibili sono 2:
- MSP3521 Senza Touch
- MSP3520 Con Touch
COME LAVORA:
Il controller grafico del display è il driver della ILITEK ILI9488. La trasmissione dei dati avviene con il collegamento ad un microcontrollore tramite l'interfaccia SPI. SPI (Serial Peripheral Interface) è un'interfaccia di comunicazione seriale a 4 fili che consente a due dispositivi di scambiare i dati. I quattro canali sono: MOSI (Master Out, Slave In), MISO (Master In, Slave Out), SCK (Serial Clock) e CS (Chip Select). Il dispositivo che inizia la comunicazione è chiamato "master" e gli altri dispositivi collegati sono chiamati "slave". Il master genera il clock e controlla quando i dati vengono trasmessi sul canale MOSI e ricevuti sul canale MISO, mentre gli slave rispondono solo quando sono selezionati dal master tramite il segnale CS. L'interfaccia SPI consente una comunicazione bidirezionale tra due o più dispositivi tramite un clock sincrono e un segnale di selezione slave.
Specifiche:
- Driver IC: ILI9488
- Risoluzione: 480*320 (Pixel)
- Module Interface: 4-wire SPI interface
- Active Area: 48.96x73.44(mm)
- Dimensione PCB: 56.34x98(mm)
- Temperatura di Operatività: -20℃~60℃
- VCC power voltage: 3.3V~5V
- Logic IO port voltage: 3.3V (TTL)
ESEMPIO DI UTILIZZO CON PLATFORMIO E ARDUINO IDE:
Per maggiori informazioni su PlatformIO.
Dispositivi utilizzati per l’esempio:
- Microcontrollore ESP32 DevKitC 38 PIN
-
ILI9488 Display LCD TFT 3.5" 320x480 65K colori
- ESP32 DevKitC 38 PIN Screw Terminal Board o Breadboard
In alternativa all' ESP32 DevKitC 38 PIN Screw Terminal Board è possibile utilizzare:
Qui è possibile consultare ulteriori esempi sui display:
- https://ziotester.github.io/code/tft-espi/
- https://ziotester.github.io/code/lvgl/
- https://ziotester.github.io/retrogaming/nesp32/
Collegamenti:
- Pin Vcc display ➞ 3.3V Esp32
- Pin GND display ➞ GND Esp32
- Pin CS display ➞ GPIO 22 Esp32
- Pin Reset display ➞ GPIO 17 Esp32
- Pin DC display ➞ GPIO 21 Esp32
- Pin SDI(MOSI) display ➞ GPIO 23 Esp32
- Pin SCK display ➞ GPIO 18 Esp32
- Pin LED display ➞ GPIO 5 Esp32
- Pin SDO(MISO) display ➞ GPIO 19 Esp32
Codice:
Platformio.ini:
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino monitor_speed = 115200 upload_speed = 921600 monitor_filters = esp32_exception_decoder lib_deps = bodmer/TFT_eSPI @ ^2.5.0
Per l’esempio abbiamo aggiunto ed utilizzato la libreria: https://github.com/Bodmer/TFT_eSPI.
Main.cpp:
//Selezionare il driver e specificare i collegamenti dei pin in User_Setup.h parte esp32 #include <Arduino.h> #include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI();
void setup() { tft.init(); } void loop() { tft.init(); tft.setRotation(3); tft.setCursor(49,30); tft.setTextColor(0xFFFF); tft.setTextSize(5); tft.fillScreen(0xFC00); delay(1000); tft.print("Z"); delay(300); tft.print("I"); delay(300); tft.print("O"); delay(300); tft.print(" "); delay(300); tft.print("T"); delay(300); tft.print("E"); delay(300); tft.print("S"); delay(300); tft.print("T"); delay(300); tft.print("E"); delay(300); tft.print("R"); delay(300); tft.print("."); delay(300); tft.print("I"); delay(300); tft.println("T"); delay(500);
tft.drawRect(85,87,147,20,0xFFFF);tft.fillRect(85,87,147,20,0xFFFF); tft.drawChar(90,90,0x50,0xFC00,0xFFFF,2);delay(200);//P tft.drawChar(100,90,0x4C,0xFC00,0xFFFF,2);delay(200);//L tft.drawChar(110,90,0x41,0xFC00,0xFFFF,2);delay(200);//A tft.drawChar(120,90,0x54,0xFC00,0xFFFF,2);delay(200);//T tft.drawChar(130,90,0x46,0xFC00,0xFFFF,2);delay(200);//F tft.drawChar(140,90,0x4F,0xFC00,0xFFFF,2);delay(200);//O tft.drawChar(150,90,0x52,0xFC00,0xFFFF,2);delay(200);//R tft.drawChar(160,90,0x4D,0xFC00,0xFFFF,2);delay(200);//M tft.drawChar(170,90,0x49,0xFC00,0xFFFF,2);delay(200);//I tft.drawChar(180,90,0x4F,0xFC00,0xFFFF,2);delay(200);//O tft.drawChar(190,90,0x2E,0xFC00,0xFFFF,2);delay(200);//. tft.drawChar(200,90,0x69,0xFC00,0xFFFF,2);delay(200);//i tft.drawChar(210,90,0x6E,0xFC00,0xFFFF,2);delay(200);//n tft.drawChar(220,90,0x69,0xFC00,0xFFFF,2);delay(200);//i delay(1000); tft.setCursor(25,150); tft.print("T");delay(250);tft.print("F");delay(250);tft.print("T");delay(250);tft.print(" ");tft.print("L");delay(250);tft.print("C");delay(250);tft.print("D");delay(250);tft.print(" ");tft.print("I");delay(250);tft.print("L");delay(250);tft.print("I");delay(250);tft.print("9");delay(250);tft.print("3");delay(250);tft.print("4");delay(250);tft.print("1");delay(250); tft.setCursor(200,230);tft.print("2");delay(250);tft.print(".");delay(250);tft.print("4");delay(250);tft.setTextSize(2.5);tft.print("''"); delay (2000); tft.fillScreen(0xFFFF); delay(1000); }