当ESP32使用TTF触控屏+LVGL+WIFI+MQTT时
4MB的SPIFlash和108Kb的闪存不足以运行项目
参考文章
《MicroPython[ESP32]:MQTT消息订阅与发布以及断联通知》
所以需要内存更大,算力更高,性能更好的ESP32其他开发板
这里我选择的是ESP32-S3
ESP32-S3 N16R8 (16外存8内存)
ESP32-S3遇到以下问题:
-
无法使用Thonny编辑器刷入固件到ESP32-S3
-
之前的MicroPython+LVGL固件不支持ESP32-S3,只支持ESP32
-
MicroPython官方的ESP32-S3(SPIRAM Octal)固件,只支持识别外存8M内存8M,不支持外存16M内存8M的S3
最终想要实现的效果
使用ESP32-S3(N16R8)+MicroPython+LVGL(显示屏+触控+SD存储)
解决ESP32-S3固件刷入问题
使用esptool刷入固件
github地址
https://github.com/espressif/esptool
安装esptool
pip install esptool
擦除闪存
CO11为要擦除的设备端口号(在设备管理器中查看)
注意:在擦除前,需要长按BOOT键,然后按一次RST键(会看到指示灯闪烁一次,进入红灯状态)
esptool --chip esp32s3 --port CO11 erase_flash
刷入固件
GENERIC_S3_SPIRAM_OCT-20230426-v1.20.0.bin是MicroPython官网ESP32-S3(SPIRAM Octal)固件
官方固件下载地址
https://micropython.org/download/GENERIC_S3_SPIRAM_OCT/
如果是其他的固件,切换为对应的固件名(带路径)即可
esptool --chip esp32s3 --port COM11 write_flash -z 0x0000 GENERIC_S3_SPIRAM_OCT-20230426-v1.20.0.bin
编译支持ESP32-S3 MicroPython支持外存16M内存8M的固件(不包含LVGL)
github地址
https://github.com/micropython/micropython
记得修改配置文件,然后再编译,这样才是指定匹配16M的固件
实际测试
官网的固件
编译ESP32-S3 LVGL MicroPython
github地址
https://github.com/lvgl/lv_micropython
目前LVGL lv_micropython官方不支持ESP32-S3,只支持ESP32,所以暂时没有对应的固件
但是有网友自己改了底层编译,可以编译ESP32-S3+MicroPython+LVGL固件,能够正常运行,暂时没发现一些问题
参考内容
https://github.com/lvgl/lv_binding_micropython/issues/227
自己按照文档编译了一天也全是报错,即费时,也达不到效果(报错的原因是)
最后成功编译了一份支持ESP32+MicroPython+LVGl的固件
参考文章
《MicroPython[ESP32]:使用lvgl设置温度仪表盘动画》
这里面的参数问题和scale = meter.add_scale()方法是由于固件LVGL版本不同造成的
当我用了最新自己制作的固件时,发现和官网的API一致了
找遍全网,看到一个网友制作的固件
带有lvgl(9.0.0),且支持ESP32-S3 16Mflash 8M SRAM的固件
配置参数
-
屏幕:3.5寸
-
电容屏 480X320高清分辨率
-
显示芯片:ili9488 触摸芯片:ft6x36
实测只支持外8M,内8M
其他的要等到对应屏幕到了,再看看是否生效
名称 | 参数 |
SKU | |
尺寸 | 3.5(inch) |
类型 | TFT |
驱动芯片 | 屏幕ILI9488-触摸FT6236 |
分辨率 | 480*320 (Pixel) |
模块接口 | 4-wire SPI interface |
有效显示区域(AA区) | 48.96×73.44(mm) |
模块PCB底板尺寸 | 55.1×96.18(mm) |
VCC电源电压 | 3.3V~5V |
逻辑IO口电压 | 3.3V(TTL) |
功耗 | 约为90mA |
产品重量 | 30(g) |
ESP32-S3的价格比ESP32贵了一倍多,性能也提升了一倍不止
轻量的场景可使用
ESP32+MicroPython+Lvgl+ili9341驱动+xpt2046触控(电阻屏)
复杂的场景可使用
ESP32-S3+MicroPython+Lvgl+ili9488驱动+ft6x36触控(电容屏)
END