terça-feira, 19 de julho de 2022

Display 2.4 TFT SPI 240 X 320 com touch e slot para cartão SD

Uma coletânea de links interessantes sobre o assunto com algumas anotações do meu aprendizado.

Existem diversos tipos de display de 2,4 polegadas TFT SPI, alguns bem simples como os de formato shield em que não precisa se preocupar com ligação, basta encaixar na placa e ligar, e também modelos com touch e sem, com slot para cartão SD, micro SD ou sem slot de cartão, e claro também existem outros tamanhos diferentes.


Frente do Display 2.4 TFT SPI 240 X 320 com touch e caneta


O modelo usado aqui é o Display 2.4 TFT SPI 240 X 320 com touch e slot para cartão SD. Onde TFT é Thin Film Transistor (Transistor de Película Fina), SPI é Serial Peripheral Interface e 240 x 320 é a resolução em pixels.


Verso do Display 2.4 TFT SPI 240 X 320 com touch


A documentação original deste display pode ser encontrada nesta wiki. E destacarei as informações que considero mais relevantes.


Especificações Técnicas

Especificações técnicas do display




Pinagem


O display tem 14 pinos sendo 9 de uso geral e 5 para acionamento do touch,  mais 4 pinos separados para o cartão SD. 



Pinagem do Diplay extraída diretamente do Datasheet



SD-CS: Chip select signal for SPI protocol (SD Card)
SD-MOSI: SPI bus write data signal
SD-MISO: SPI bus read data signal
SD-SCK: SPI bus clock signal



Arduino



Para entender se usar 5 V ou 3,3 V assista #154 - Display TFT ILI9341 - parte 1, neste outro vídeo tem ideias de montagem de um shield para o display #155 - Display TFT ILI9341 - parte 2







Para facilitar como deve ser feita a ligação do display usando o SPI com o Arduino, siga o esquema. 


https://capsistema.com.br/index.php/2020/11/28/como-usar-spi-no-arduino-comunicacao-entre-duas-placas-arduino/


Esquema de ligação do Arduino pelo SPI  segundo o vídeo Connect an SPI TFT with Touchscreen to your Arduino - ILI9341 LCD with XPT2046 Touch screen



A desvantagem de usar com o Arduino Uno é que é preciso usar alguns resistores.



Para meu projeto, que quero simplicidade na montagem e mais funcionalidades, acabei decidindo pelo ESP32.

ESP32



No canal XTronical explica a ligação básica no vídeo ILI9341 TFT LCD to ESP32 - Full HOW TO for display, SD card and Touch. Using TFT_eSPI driver, e mostra as bibliotecas que vai usar nos exemplos , no ®windows, no caso são TFT_eSPI antes de usar o exemplo TFT_Meters, para testar o cartão SD adicionar lib JPEGDecoder e por último para usar o touch screen usa o exemplo TFT_eSPI -> Generic -> On_Off_Button. Mais detalhes podem ser encontrados em ILI9341 TFT LCD to ESP32 – Full HOW TO.




Modelo sem touch ligado ao ESP32 Arduino-friendly 240x320 LCD Display Tutorial (ILI9341) com alguns exemplos básicos de desenho na programação. Usa as bibliotecas SPI, Adafruit_GFX e Adafruit_ILI9341.


Aqui muda o tamanho Interfacing 2.2 Inch IPS Full Color TFT Display Module with ESP32 mas os conceitos são os mesmos.

Neste caso é sem o cartão ESP32 - Touchscreen - TFT_eSPI - ILI9341.

No vídeo Displays gráficos com ESP32 e Arduino IDE 2.0 tem vários exemplos de aplicação do display TFT com o Fernando K fazendo as demonstrações, apesar de ser outro driver , no exemplo usa o  ILI9488, cita o LCD Wiki, tem uma imagem com os pinos divididos entre display, touch e cartão SD, além da tabela com ligação no ESP32.

Demonstra alguns usos da TFT_eSPI, como exemplos que podem ser acessados no Arduino IDE pelo caminho Arquivos -> Exemplos -> TFT_eSPI -> TFT_Meters,  Meter Ring, 
Cubo em 3D, 
calibração, 
Keypad_320 (verificar), 

A lib JPEGDecoder foi lenta neste exemplo, mesmo sendo ligado pelo H SPI, e explica um pouco do DrawSd Jpeg e outros códigos.


Print Screen da tabela de ligação do ESP32 ro vídeo




Para aprender a fazer interfaces simples e pouco depois dos 3 minutos tem a visão microscópica do TFT How to create a simple Touchscreen GUI || Arduino LCD & Touchscreen Tutorial
   



Visão microscópica do TFT - Prints do vídeo How to create a simple Touchscreen GUI || Arduino LCD & Touchscreen Tutorial



No canal do Ralph S Bacon além de falar que prefere o display convencional no lugar do shield, ele mostra que o display funciona corretamente com imagens em bitmap e em jpg ocorrem alguns problemas, informações retiradas do vídeo #204 TFT Touch Screen ILI9341 SPI for ESP32 (Internet Radio Research)







Se o seu for o shield recomendo estes:
Esquema de ligação do shield mcufriend 2.4 inch shield display for esp 32



Softwares


Depois de ligados os fios, primeiro precisamos identificar o chip controlador e para isso tem o programa Identificador do Brincando com ideias. não funcionou apresentou este erro

Arduino: 1.8.13 (Linux), Placa:"DOIT ESP32 DEVKIT V1, 80MHz, 921600, None"
/home/sickeira/Arduino/libraries/MCUFRIEND_kbv/MCUFRIEND_kbv.cpp:2724:30: warning: unused variable 'ILI9481_RGB_regValues' [-Wunused-variable]
         static const uint8_t ILI9481_RGB_regValues[] PROGMEM = {    // 320x480
                              ^
/home/sickeira/Arduino/libraries/MCUFRIEND_kbv/MCUFRIEND_kbv.cpp:2816:7: error: label 'common_9488' defined but not used [-Werror=unused-label]
       common_9488:
       ^
cc1plus: some warnings being treated as errors
Usando a biblioteca MCUFRIEND_kbv na versão 2.9.9-Release na pasta: /home/sickeira/Arduino/libraries/MCUFRIEND_kbv 
Usando a biblioteca Adafruit_GFX_Library na versão 1.10.13 na pasta: /home/sickeira/Arduino/libraries/Adafruit_GFX_Library 
Usando a biblioteca Adafruit_BusIO na versão 1.11.2 na pasta: /home/sickeira/Arduino/libraries/Adafruit_BusIO 
Usando a biblioteca Wire na versão 1.0.1 na pasta: /home/sickeira/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/Wire 
Usando a biblioteca SPI na versão 1.0 na pasta: /home/sickeira/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI 
exit status 1
Erro compilando para a placa DOIT ESP32 DEVKIT V1




Antes de rodar esse identificador é necessário adicionar uma biblioteca, em Ferramentas -> Gerenciador de Bibliotecas,.

Depois é preciso calibrar o display, e para isso pode usar o programa calibrador do Brincando com ideias



Medidas


Na proto board com jumpers e om o ESP32 tentando ligar o display TFT coloquei o USB Color Display Tester - parte 1 quando a tela ficava totalmente branca e os resultados em 5 V foram 0,116 A e potência de 0,582 W.








Dicas

Por usar touch resistivo, é recomendado não usar botões pequenos no display.
Vídeo sobre paleta de cores #161 - Display TFT ILI9341 - parte 3 com diversos links úteis.

Nenhum comentário:

Postar um comentário