小玩具:ESP32——刷固件與亮屏
去年開始大模型火爆后也帶動了ESP32芯片的爆發出圈帶動股票暴漲。各種AI玩具層出不窮。ESP32的低門檻再加上B站UP的帶動,光開源的小智AI兩月就帶動了10萬AI設備,當然這和原來的智能音箱如小愛同學比只能算是毛毛雨,而且門檻很低智能音箱廠商發個OTA或新出個版本也就接入大模型了,而且大廠生態更完整,小米智能家居就是國內獨一份的存在。
AI玩具或許是個大市場,三五十塊錢大部分買了小孩子估計也就玩個半月就吃灰,但市場足夠大。還有就是像筆者這樣的愛好者折騰個幾個月哪天忘了也就吃灰了。
ESP32模組
CPU 和片上存儲器
? 內置 ESP32-S3 系列芯片,Xtensa? 雙核 32 位 LX7 微處理器 (支持單精度浮點運算單元),支持 高達 240 MHz 的時鐘頻率
? 384 KB ROM
? 512 KB SRAM
? 16 KB RTC SRAM
? 最大 16 MB PSRAM
? GPIO、SPI、LCD、Camera 接口、UART、I2C、I2S等
單買新品目前38塊左右,從去年底爆火漲價了。你直接買芯片還沒法直接用,還需要自己去打板比較麻煩。普通玩家直接買ESP32開發板就好了,目前市面上各種各樣的ESP32開發板,或直接買樂鑫的開發板,當然價格自然也不是三十多塊。要成本更低還可以使用更低端的芯片。
燒錄
ESP32燒錄固件非常方便直接使用USB將開發板連接到電腦即可通過串口燒錄固件。燒錄固件有多種方式,除了可以使用官方提供的flash_download_tool與esptool固件燒錄工具還可以使用如Thonny、esp-launchpad等第三方燒錄工具,這里使用esptool燒錄固件。
現在買的很多開發板都內置了小智的固件,這里刷的是MicroPython 固件。
安裝esptool
pip install esptool

ESP32開發板連接到電腦后在Windows的設備管理器中可以看如下信息,端口(COM和LPT)處可看到連接的串口設備USB-SERIAL CH340(COM4)使用的端口為COM4。此處的端口需要記住,下面刷固件需要用到此端口。
下載 ESP32S3 的 MicroPython 固件
https://micropython.org/download/ESP32_GENERIC_S3/
在Linux中端口是這種形式:/dev/ttyUSB或/dev/ttyACM0,這里是windows所以--port 值是 COM4
讀取ESP32芯片信息,可以看到芯片的PSRAM、頻率、支持WIFI、藍牙、MAC地址等數據。
esptool --chip esp32s3 -p COM4 chip_id

esptool.py v4.8.1
Serial port COM4
Connecting.....
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: d8:3b:da:6e:cb:0c
Uploading stub...
Running stub...
Stub running...
Warning: ESP32-S3 has no Chip ID. Reading MAC instead.
MAC: d8:3b:da:6e:cb:0c
Hard resetting via RTS pin...
讀取設備SPI flash信息
esptool --chip esp32s3 --port COM4 flash_id
esptool.py v4.8.1
Serial port COM4
Connecting.....
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: d8:3b:da:6e:cb:0c
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4018
Detected flash size: 16MB
Flash type set in eFuse: quad (4 data lines)
Flash voltage set by eFuse to 3.3V
Hard resetting via RTS pin...
在刷固件前先清除板內原有固件
Esptool --chip esp32s3 --port COM4 erase_flash
如有需要還可先備份固件:read_flash <起始地址> <結束地址或大小> <完整備份文件路徑> ALL:自動檢測閃存大小
esptool --chip esp32s3 --port COM3 read_flash 0x0 ALL C:\path\to\backup\firmware_backup.bin

亮屏
在https://github.com/AntonVanke/MicroPython-uFont下載中文字體上傳到ESP32中,按SSD1306驅動芯片方法輕松點亮屏幕,需要注意的是scl與sda的接線引腳,以及屏幕的分辨率,分辨率對不上可能會導致顯示異常。
亮屏僅僅是第一步,后續怎么能把ESP32玩出花樣才是關鍵。作為所謂AI物聯網神器能做的太多。
參考資料:
https://docs.espressif.com/projects/esptool/en/latest/esp32s3/esptool/
浙公網安備 33010602011771號