Manual

do

Maker

.

com

LilyGo T-HMI

LilyGo T-HMI

A LilyGo sempre surpreende. Suas placas vão além da prototipagem, dando oportunidade para estar à margem de um produto. É o caso do T-HMI, uma poderosa placa com ESP32-S3, um gigantesco display ST7789V LCD de 8 bits paralelo, touch e SD card. Isso é só a entrada.

Recursos da T-HMI

Além dos recursos citados, 3 conexões laterais expõe os GPIO 15 e 16, 17 e 18, 43 e 44. Perfeito para conectar periféricos atuadores. Na entrada de alimentação temos 3 opções, sendo a USB-C, entrada para conector de alimentação 5VDC de 2 pinos e o mesmo conector para bateria. Possui conector para antena externa, para melhorar a qualidade do sinal WiFi. Na parte superior estão dispostos (além do SD card) 3 botões, sendo um para modo de boot, um para reset e um para uso geral, configurado com o firmware padrão para alternar telas.

Desenvolvimento na T-HMI

O primeiro ponto de atenção para quem desenvolve é avaliar a curva de aprendizado para desenvolver um produto. Pode ser excelente, mas se for algo complexo e fora do padrão, pode não valer o esforço. Bem, comecemos com o reconhecimento da placa.

Upload para a placa T-HMI

Ela é um pouco diferente do padrão, mas tem uma boa razão para isso. A porta USB é utilizada como JTAG para o upload. Para exibir informação na USB-serial, as configurações de CDC_ON_BOOT precisam ser habilitadas. Se a porta USB for utilizada para outras funções, então será necessário entrar no modo de boot manualmente, segurando o botão de boot, então apertando e soltando o botão de reset. Clica-se em upload e então ao iniciar o upload, solta-se o botão de boot. Esse é um procedimento comum em algumas placas com ESP32, não tem muita novidade aqui.

Configurar a T-HMI na IDE do Arduino

Para utilizá-la na IDE do Arduino em vez do SDK da Espressif, deve-se adicionar a URL da placa em Preferências. Esse é um procedimento que estamos habituados também, então nada que incomode.

A URL que deve ser inserida é essa:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Compatibilidade

Não é um processo transparente o desenvolvimento, em relação ao acesso dos recursos. Isso porque ela já tem algumas modificações devidamente configuradas nas bibliotecas de seu repositório. Claro que podemos configurar tudo do zero, mas para evitar a perda de tempo com configurações iniciais, copie o conteúdo desse repositório para o diretório libraries da IDE do Arduino.

Configurações

As configurações da placa devem ser definidas como nessa tabela:

SettingValue
BoardESP32 S3 Dev Module
USB CDC On BootEnabled
CPU Frequency240MHz (WiFi)
Core Debug LevelNone
USB DFU On BootEnabled
Events Run OnCore 1
Flash ModeQIO 80MHz
Flash Size16MB (128Mb)
JTAG AdapterIntegrated USB JTAG
Arduino Runs OnCore 1
USB Firmware MSC On BootDisabled
Partition SchemeHuge APP (3MB No OTA/1MB SPIFFS)
PSRAMOPI PSRAM
USB ModeHardware CDC and JTAG

Se estiver usando PlatformIO, procure por Espressif 32 e selecione o firmware correspondente.

Dicas

Do próprio repositório indicado, a sugestão é que inicialmente se faça o teste da placa como está. Apertando o botão de alternar telas, haverá um lugar para o touch em um editor de desenho e uma tela de calibração do touch. Em seguida, faça upload, então o código será executado na placa. Desconecte e conecte novamente e a placa não fará nada. Esse é um comportamento padrão para essa placa.

Segundo, experimente a placa. Depois aperte o botão de boot e, enquanto o botão de boot é pressionado, conecte o cabo USB ao computador. Solte o botão de boot e suba o sketch. O código não iniciará corretamente e nada acontecerá. Nesse caso, desconecte a placa e reconecte. O programa agora deve iniciar. Desconecte da USB mais uma vez e conecta uma fonte extenra. Novamente o programa deve iniciar.

E por que essas recomendações estranhas? - Justamente pelo modo de upload. Se procurar aí na caixa de Busca rápida por debug e jtag, verá diversos artigos (com vídeos referidos) mostrando o uso de JTAG rodando o código na placa "sem" gravar ela de fato. Daí começará a fazer mais sentido esse comportamento que "parece" bug, mas não é.

Bibliotecas

Normalmente eu configuro o touch com a TFT_eSPI e, quando é um projeto com uso de widgets, uso LVGL. Você pode procurar por lvgl na caixa de busca rápida, assim como dar uma olhada na playlist de LVGL do canal.

Em breve veremos uma implementação nessa placa, assim como uma outra série com a nova LVGL.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.