软件
- esp-iot-solution\examples\bluetooth\ble_ota 例程
- BLE OTA 组件库:espressif/ble_ota
默认组件库支持 ESP32、ESP32C3、ESP32H2、ESP32S3 系列产品的测试。
硬件
- ESP board
用于 BLE OTA 测试的手机 APP
-
安卓版本:esp-ble-ota-android
-
IOS 版本: esp-ble-ota-ios
扫描完成后,系统提示输入密码,密码为"esp"
1. 首先,准备一个 hello-world.bin
,用于 OTA 固件测试
- 基于 esp-idf-v5.0.2\examples\get-started\hello_world 例程,使用如下指令,直接编译,获取
hello-world.bin
idf.py set-target esp32c3
idf.py build
2. 将 hello-world.bin
导入到手机中,为后续 OTA 固件做准备
- 在安卓手机中,将
hello-world.bin
放到Android/data/com.espressif.bleota.android/files/BLE-OTA/
路径下
- 在 IOS 手机中,将
hello-world.bin
放到手机 --> esp-ble-ota --> 文件 --> 拖入要升级的文件
路径下
3. 下载 esp-iot-solution\examples\bluetooth\ble_ota 例程
-
在安卓手机上,如果使用的是 Bluedroid 协议栈进行
BLE-OTA
测试,需要进行如下设置:→ Component config → Bluetooth → Bluetooth → Host
→ Component config → Bluetooth → Bluedroid Options
-
然后编译、下载
idf.py build idf.py -p COM* flash monitor
4. 打开 APP 进行 OTA 测试
-
如果设置的是 Bluedroid 协议栈,对应的设备名称是
ESP&C919
,参见 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/ble_ota.c-
软件配置设置协议栈类型
→ Component config → Bluetooth → Bluetooth → Host
-
设备广播名称
-
如果要修改 BLE OTA 设备的广播名称,在 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/ble_ota.c 中修改 BLE 广播数据即可,如下:
-
BLE OTA 例程默认使用的是 GATT Server 协议,如果要改成 SPP Server ,那么也是修改 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/ble_ota.c 中的代码。
-
-
如果设置的是 Nimble 协议栈,对应的设备名称是
nimble-ble-ota
,参见 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/nimble_ota.c→ Component config → Bluetooth → Bluetooth → Host
-
选择要 OTA 的固件,进行 BLE-OTA
- 如果要修改 nimble ota 设备名称,也是修改 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/nimble_ota.c 中的广播数据,如下:
- 如果要修改 nimble ota 设备名称,也是修改 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/src/nimble_ota.c 中的广播数据,如下:
-
OTA 完成
5. 检查固件运行日志
6、如果要适配更多产品,例如 ESP32-C2 ,需要基于 esp-idf v5.0 及以上版本的 SDK ,并在 ble_ota 组件库中增加要适配的产品型号,例如:
- 在 esp-iot-solution/components/bluetooth/ble_profiles/esp/ble_ota/idf_component.yml 文件中增加
esp32c2