MicroPython[ESP32]:编译ESP32-S3 (SPIRAM Octal)16外8内 固件和ESP32 LVGL

NO.1
使用场景

当ESP32使用TTF触控屏+LVGL+WIFI+MQTT时

4MB的SPIFlash和108Kb的闪存不足以运行项目

参考文章

MicroPython[ESP32]:MQTT消息订阅与发布以及断联通知

此图片的alt属性为空;文件名为image-778-1024x159.png

所以需要内存更大,算力更高,性能更好的ESP32其他开发板

这里我选择的是ESP32-S3

ESP32-S3 N16R8 (16外存8内存

此图片的alt属性为空;文件名为image-779.png

NO.2
问题汇总

ESP32-S3遇到以下问题:

  1. 无法使用Thonny编辑器刷入固件到ESP32-S3

  2. 之前的MicroPython+LVGL固件不支持ESP32-S3,只支持ESP32

  3. MicroPython官方的ESP32-S3(SPIRAM Octal)固件,只支持识别外存8M内存8M,不支持外存16M内存8M的S3

最终想要实现的效果

使用ESP32-S3(N16R8)+MicroPython+LVGL(显示屏+触控+SD存储)

NO.3
解决方案

解决ESP32-S3固件刷入问题

使用esptool刷入固件

github地址

https://github.com/espressif/esptool

安装esptool

pip install esptool

擦除闪存

CO11为要擦除的设备端口号(在设备管理器中查看)

注意:在擦除前,需要长按BOOT键,然后按一次RST键(会看到指示灯闪烁一次,进入红灯状态)

此图片的alt属性为空;文件名为image-781.png

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
NO.4
编译MicroPython

编译支持ESP32-S3 MicroPython支持外存16M内存8M的固件(不包含LVGL)

github地址

https://github.com/micropython/micropython

记得修改配置文件,然后再编译,这样才是指定匹配16M的固件

此图片的alt属性为空;文件名为image-782.png

实际测试

官网的固件

此图片的alt属性为空;文件名为image-783-1024x258.png

NO.5
编译LVGL

编译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一致了

此图片的alt属性为空;文件名为image-784.png

NO.6
待测试

找遍全网,看到一个网友制作的固件

带有lvgl(9.0.0),且支持ESP32-S3 16Mflash 8M SRAM的固件

配置参数

  1. 屏幕:3.5寸 

  2. 电容屏 480X320高清分辨率 

  3. 显示芯片:ili9488 触摸芯片:ft6x36

实测只支持外8M,内8M

此图片的alt属性为空;文件名为image-785.png

其他的要等到对应屏幕到了,再看看是否生效

名称 参数
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)
NO.7
Tips

ESP32-S3的价格比ESP32贵了一倍多,性能也提升了一倍不止

轻量的场景可使用

ESP32+MicroPython+Lvgl+ili9341驱动+xpt2046触控(电阻屏)

复杂的场景可使用

ESP32-S3+MicroPython+Lvgl+ili9488驱动+ft6x36触控(电容屏)

END