【PB-03F-kit】简单BLE外设与OTA升级

[复制链接]
查看507 | 回复6 | 2024-12-5 19:16:14 | 显示全部楼层 |阅读模式

本帖最后由 elliottzheng 于 2024-12-5 19:16 编辑

本帖最后由 elliottzheng 于 2024-12-5 19:13 编辑

需要的材料

  • PB-03F-kit开发板
  • Phy6222 SDK(我用的phy6222_v313_0512)
  • 烧写工具 phypluskit_v2.5.2b
  • 手机App:LightBlue, PhyOTA(安卓版参照安卓版使用文档,IOS版可以直接在App Store下载)

关于基础的开发环境配置和烧写工具的使用,可以参考我上一篇文章 【PB-03F-kit】环境配置点灯与AT指令测试

简单BLE外设

打开 example\ble_peripheral\simpleBlePeripheral项目,

同样我们点击魔法棒,在C/C++选项卡下,把 CFG_SLEEP_MODE=PWR_MODE_SLEEP 改成 CFG_SLEEP_MODE=PWR_MODE_NO_SLEEP,不然容易休眠搜不着蓝牙

image.png

编译生成hex文件,编译出来的文件在项目的bin目录下,即"bin\simpleBlePeripheral.hex"

打开烧写工具,选好COM口,波特率选UXTDWU, image.png

长按板子上的reset 2s后放开进入烧写模式,log当中出现cmd>>即可,如下图

image.png

左边HEX Merge选项卡,app中选择之前编译出来的hex文件

image.png

首先点击erase擦除,然后点击write,开始烧写

image.png

烧写完成,按一下reset,程序开始运行

image.png

手机打开APP LightBlue,选择蓝牙设备 BUMBLE-XXXX,点击Connect

image.png

连接成功如图

image.png

拉到最下面可以看到有四个Attribute, 分别是 Power,Reset,NOTIFY,WT_NO_RSP,

image.png

其中 Power 变量代表的是蓝牙发射功率(TX Power)。在 BLE 协议中,TX Power 表示设备的发射功率水平,通常以 dBm 为单位。

我们点击 Power, 进入如下界面,可以看到它是可读可写的,我们把Data format改为Unsigned Littel Endian(其实就是UInt8), 点击 read again, 可以看到设备返回的值为15,

image.png

然后我们尝试更改它,我们把Value改为10,然后点击 Writeimage.png

然后点击 Read again可以看到设备返回的值已经变为10,如下图所示

image.png

蓝牙OTA

接下来我们改造simpleBlePeripheral项目,使其支持OTA,点击魔法棒,在C/C++选项卡下,添加一个预处理器定义 PHY_OTA_ENABLE=1,表示启用OTA,然后重新编译生成hex文件

image.png

PHY_OTA_ENABLE=1其实就是帮你把一些OTA相关代码启用了,具体原理可以参考园长的帖子

打开烧写软件,左边HEX Merge选项卡,

  1. app 选择simpleBlePeripheral新编译出来的hex文件,
  2. 而BOOT选择SDK当中预先编译的ota的boot hex,可以在 example\OTA\OTA_internal_flash\bin下面找到
  3. OTA模式选择 Single No FCT(意思是,升级的时候蓝牙app会暂停程序且覆盖写入)

image.png

image.png

进入烧写模式,同样是先点击erase擦除,然后点击write,开始烧写

image.png

烧写完成,这样我们的开发板就具有了OTA功能,按一下reset,程序开始运行

此时我们打开手机APP PhyOTA,扫描找到 BUMBLE-XXXX,点击确定进入设备升级界面

image.png

可以看到下面的界面,app首先会进行连接,然后会显示 特性Enable成功SBH App已准备好,就说明我们的APP已经准备好要对Bumble进行OTA升级了,接下来我们准备升级所需要的hex16文件

image.png

我们准备一个新版本的simpleBlePeripheral,只需在代码里加一个log以区分新旧版本,我们修改 simpleBLEPeripheral.c,在main函数里添加一个log

SimpleBLEPeripheral_Init函数的最后加了一行

LOG("======================THIS IS NEW OTA VERSION====================\n");

如下图所示

image.png

重新编译,生成hex文件,然后我们在烧写工具当中使用HEX Merge选项卡,app选择新编译出来的hex文件,而BOOT选择SDK当中预先编译的ota的boot hex,然后在OTA模式选择 Single No FCT 点击右侧绿色的Hex16按钮,生成hex16文件

image.png

生成的hex16文件在 simpleBlePeripheral.hex的同级目录下,名为 simpleBlePeripheral.hex16, 如下图所示

image.png

然后我们把hex16传到手机里

重点来了,在安卓系统,你必须把hex16放到手机根目录(也就是 /storage/emulated/0/)或者APP的目录下,PhyOTA才能找到。 以小米为例,你得直接放在内部存储设备下

image.png

我当时折腾了半天一直没办法选择hex16,后面查阅PhyOTA的使用文档才知道

显示如下 image.png

OK, 成功选择hex16后,点击开始OTA升级

image.png

升级完成后,我们打开串口监视器,然后点击 Reset,可以看到log当中打印出了

======================THIS IS NEW OTA VERSION====================

说明OTA升级成功

image.png

回复

使用道具 举报

大猫的鱼 | 2024-12-5 23:44:16 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-12-6 08:41:26 | 显示全部楼层
写的真不错~
用心做好保姆工作
回复 支持 反对

使用道具 举报

lazy | 2024-12-6 09:26:55 | 显示全部楼层
非常棒
回复

使用道具 举报

小小鸟 | 2024-12-6 10:19:51 | 显示全部楼层
回复

使用道具 举报

干簧管 | 2024-12-6 12:34:58 | 显示全部楼层
回复

使用道具 举报

bzhou830 | 2024-12-6 14:08:50 | 显示全部楼层
好好好
选择去发光,而不是被照亮
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则