如何刷新原生固件
SenseCAP指示灯具有两个MCU,ESP32-S3和RP2040。本教程提供了全面的指南,以帮助开发人员入门,包括刷新开箱即用的原生固件和将早期发货的设备更新到最新固件。
固件更新特别适用于两种情况:
- 如果您在2023年6月之前购买的产品没有OpenAI固件,固件版本为
1.0.0
,您可以下载并更新到包含OpenAI功能的最新固件。最新固件可从这里. - 如果您已经开发了一个应用程序并希望刷新自定义固件,您可以按照 下面提供的教程进行操作。.
简而言之,您需要本教程的原因是:
- 您有一个需要刷新到ESP32-S3或RP2040的固件。 2.您已经修改了代码,并且需要将其编译并刷新到设备上。
让我们进入这个教程。
准备工作
要开始,您只需要您的 SenseCAP Indicator和一台Windows/Mac/Linux计算机。
获取原生固件
SenseCAP Indicator的默认发货固件对于ESP32-S3和RP2040都是完全开源的。
:::提示 获取开箱即用固件有两种选项:
- 源代码: B 在刷新之前,您可以根据需要修改代码您需要一个工具链(ESP-IDF, Arduino) 来进行编译
- 固件: 直接刷新预编译的二进制文件,无需进行任何代码修改或编译。 使用类似 Esptool 和 Flash Download Tools的工具。 :::
源代码
固件
For ESP32-S3
ESP-IDF
ESP-IDF(Espressif IoT Development Framework)是由Espressif Systems提供的软件开发框架,专门用于设计其ESP32和ESP8266系列微控制器的固件和应用程序。有关更多信息,您可以参考 ESP-IDF编程指南。
如果您选择将源代码编译为固件,您将需要ESP-IDF来执行编译过程
ESP-IDF版本必须大于v5.0。如果您使用的是旧版本,您需要将其更新到最新版本。
工具链安装
- Windows
- Linux and MacOS
官方Espressif文档: Windows平台工具链标准设置
Option 1:使用离线安装程序
对于Windows用户,您可以选择直接下载ESP-IDF离线安装程序。这是直接的下载链接:🖱️下载离线安装程序 v5.1.1
Option 2: 使用推荐的脚本
转到 使用命令提示符
Official Espressif Docs: Standard Toolchain Setup for Linux and macOS
如果在Linux或MacOS上,您可以按照此指南更改git存储库的版本。
git clone --recursive https://github.com/espressif/esp-idf.git
导航到esp-idf目录:
- 运行
./install.sh esp32s3
, 以添加ESP32-S3支持( SenseCAP indicator所需 ) - 输入
./export.sh
来设置当前终端会话中的 PATH 和 IDF_PATH 变量.
如果您想在任何shell会话中调用,可以将以下行添加到您的shell配置文件(例如 ~/.bash_profile):
alias get_idf='. $HOME/esp/esp-idf/export.sh'
然后,您可以使用 get_idf
来激活环境.^引用
构建项目和烧录
如果选择将源代码编译为固件,您将需要ESP-IDF来执行编译过程。
要构建、烧录和监视您的项目,请执行以下命令:
cd <your_sdk_path>/examples/indicator_basis/
idf.py -p PORT build flash monitor
:::提示
如果没有指定 PORT
,IDF 将自动选择可用的端口
:::
到目前为止,通过输入命令 idf.py -p PORT flash
,固件已成功烧录到ESP32-S3。
Esptool
ESPtool - GitHub 是一个基于Python的开源实用程序,为与Espressif芯片中的ROM引导加载程序通信提供了一个跨平台的方式
Esptool可以作为您Python脚本的一部分。在本指南中,我们将使用Esptool发布页面. 上提供的打包软件
。选择与您计算机操作系统相对应的软件。
使用Esptool进行烧录
提供了两个脚本,展示了如何有效地利用Esptool将固件烧录到ESP32-S3微控制器上。
请注意,提供的脚本专为Windows操作系统定制。如果您使用不同的操作系统,您需要调整脚本以适应您的环境。
merge.bat脚本特别有用,因为它智能地将引导加载程序、分区表和指示灯基础二进制文件合并成一个单独的固件文件。合并后,可以使用flash.bat脚本轻松将此固件烧录到ESP32-S3上。在提示时,输入与您的设备对应的COM端口,烧录过程将启动。完整的操作可以总结如下:
esptool.exe --chip esp32s3 ^
merge_bin -o sensecap_indicator_basis_v1.0.0.bin ^ # Target file name
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin
或者,如果您喜欢烧录单独的二进制文件而不是合并文件再进行烧录,您可以直接使用 just_flash.bat
脚本:
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin
对于使用合并的固件进行简单烧录的过程:
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z 0x0 indicator_basis_v1.0.0.bin
特别是在不合并二进制文件时,要特别注意起始地址(0x0)。对于单独的二进制文件,请参阅 单独二进制文件的Flash下载工具说明. 中的说明。遵循这些指南可以确保无错误烧录。
为了使用这些脚本,将代码保存到名为merge.bat
和 flash.bat
的两个文本文件中,放在项目文件夹内。这种组织方式简化了访问和使用。
通过使用这些脚本,您可以简化固件准备和烧录阶段,从而实现更加顺畅和可靠的流程。
├── indicator_basis
│ ├── CMakeLists.txt
│ ├── build
│ ├── docs
│ ├── main
│ ├── partitions.csv
│ ├── sdkconfig
│ └── .defaults
│ └── flash.bat
│ └── merge.bat
- 合并二进制文件使用
merge.bat
. - 使用以下命令烧录合并的固件
flash.bat
.
烧录固件
要烧录固件,您可以使用提供的 flash.bat
脚本。该脚本旨在简化将固件烧录到ESP32-S3微控制器的过程。
显示flash.bat代码
二进制文件合并
提供的merge.bat
脚本可用于将必要的二进制文件合并成一个固件文件。此脚本简化了流程,确保正确合并以便成功烧录,从而允许您烧录单个 bin 文件,而不是烧录单独的文件.
Show merge.bat code
Flash Download Tools (Windows only)
Flash Download Tools 用于将固件编程或烧录到ESP8266和ESP32系列微控制器上。它们为用户提供了一个图形用户界面(GUI),以便轻松地将固件烧录到ESP微控制器上。
按照以下步骤烧录预编译的固件
下载: Flash Download Tools(仅适用于Windows))
- Step 1: 双击
.exe
文件进入工具的主界面。 - Step 2: 选择以下选项:
Option Param Chip TypeESP32-S3WorkModeDevelopLoadModeUART
Step 3: 使用USB Type-C电缆将SenseCAP Indicator连接到您的笔记本电脑。
Step 4: 在SPI Download选项卡中点击 "...",然后导航到您刚刚下载的固件文件。
- Step 5:配置SPI Flash:
Option Param SPI SPEED40MHzSPI MODEDIO
- Step 6: 配置下载面板:
- COM: 检查您的设备管理器上的端口,USB-SERIAL 是正确的端口。
(
这里我们选择COM4
) - 波特率: 921600(建议的值)
然后点击 START
开始烧录。
当显示 FINISH
时,固件烧录已完成。
用于单独的二进制文件的 Flash Download 工具
在先前提到的指南中,二进制文件 "Default_Factory_Firmware_ESP32-S3.bin" 将三个二进制文件合并为一个。
然而,如果您使用 ESP-IDF 构建固件,直接烧录一个单独的文件可能会导致错误。相反,您需要找到三个单独的二进制文件,这些文件是您构建的,并按照以下方式指定正确的地址(您可以使用自己的地址)
- bootloader.bin ----> 0x0
- partion-table.bin ----> 0x6800
- termial_demo.bin ----> 0x10000
For RP2040
通过Arduino IDE烧录
RP2040开发工具借助Arduino提升您的编码体验。
Arduino IDE是用于编写Arduino板代码的免费软件。借助其用户友好的界面,您可以轻松编写和上传代码。基于C++的简化版本,它提供了丰富的库和示例,非常适合初学者。
Download:
Step 1: 安装 Arduino IDE
Step 2: 添加Raspberry Pi Pico开发板
打开你的Arduino IDE, 并点击 Arduino IDE > Reference, 并将以下URL复制到 Additional Boards Manager URLs:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
点击Tools > Board > Board Manager.
在板管理器中搜索 "indicator" 并安装 "Raspberry Pi Pico/RP2040"
- Step 3: 添加库
- Sensirion Core: Sensirion Arduino Core library
- PacketSerial : Serial communication protoco
- Sensirion I2C SGP40 : SGP40 TVOC sensor library
- Sensirion I2C SCD4x : SCD41 CO2 sensor library
- Sensirion Gas Index Algorithm : Transfer index library
- Seeed_Arduino_AHT20 : AHT20 temperature and humidity sensor library
在Arduino IDE中,您可以在 Library Manager
中搜索它,例如 Seeed_Arduino_AHT20
,然后安装它。
点击预览离线安装
要进行 离线 安装,您可以从 GitHub下载库的存储库zip f然后导航到 Sketch -> Include Library -> Add .ZIP Library,然后选择您下载的库。
Step 4: 使用提供的USB Type-C电缆将设备连接到您的PC。
Step 5: 选择板和端口
搜索 "Indicator",选择 Seeed INDICATOR RP2040
板,并选择 usbmodem
串口
- Step 6: 打开示例代码文件
文件 -> 打开, t然后选择示例代码文件 (.ino 文件).
我们提供了一个示例代码文件,您可以根据需要修改代码。
- Step 7: 验证并上传文件。
在这里,我们已经完成了在RP2040上构建和烧录(下载)固件的过程。
烧录 .uf2 文件
- Step 1: 将设备连接到您的PC
使用针长按此内部按钮,然后通过提供的USB Type-C电缆将设备连接到您的PC,连接后释放按钮。
- Step 2: 固件烧录:
连接成功后,您的PC将显示一个磁盘。
将.uf2 文件复制到磁盘中,然后磁盘将退出。
升级将自动运行。
ESP32和RP2040使用串口通信
ESP32和RP2040使用串口通信,使用cobs 通信协议。演示中使用的命令列表如下:
命令格式包括数据包类型和数据包参数。
Resource
SenseCAP Indicator RP2040 Demo
最近的更新:
- 2023-11-17 -移除修补部分
- 2023-08-25
- 使修补部分更清晰
- 2023-07-25
- 添加使用Esptool烧录固件的内容
- 2023-05-29
- 添加修补部分
技术支持
需要帮助解决SenseCAP Indicator的问题吗?我们在这里提供协助!