Manual
do
Maker
.
com
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.
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.
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.
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.
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
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.
As configurações da placa devem ser definidas como nessa tabela:
Setting | Value |
---|---|
Board | ESP32 S3 Dev Module |
USB CDC On Boot | Enabled |
CPU Frequency | 240MHz (WiFi) |
Core Debug Level | None |
USB DFU On Boot | Enabled |
Events Run On | Core 1 |
Flash Mode | QIO 80MHz |
Flash Size | 16MB (128Mb) |
JTAG Adapter | Integrated USB JTAG |
Arduino Runs On | Core 1 |
USB Firmware MSC On Boot | Disabled |
Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
PSRAM | OPI PSRAM |
USB Mode | Hardware CDC and JTAG |
Se estiver usando PlatformIO, procure por Espressif 32 e selecione o firmware correspondente.
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 é.
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.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.