公司动态
109、Arduino Nano 33 BLE Sense的OTA更新案例
109、Arduino Nano 33 BLE Sense的OTA更新案例从一次现场升级翻车说起去年秋天帮朋友调试一批部署在温室大棚里的环境监测节点,用的是Nano 33 BLE Sense。设备装好了,跑了三天,突然发现温度传感器的滤波算法有个边界条件没处理好——当温度骤降超过15度时,输出会跳一个毛刺。问题不大,但数据不好看。我心想,不就是改几行代码嘛,拿USB线挨个插一遍就完事了。结果那天大棚里湿度85%,我蹲在垄沟边上,笔记本电池只剩40%,第一个设备刚连上,USB口接触不良,刷到一半断开了。设备变砖。第二个设备更绝,固件刷进去了,但蓝牙名称没改,两个节点在手机APP里显示同一个名字,根本分不清谁是谁。那天晚上我坐在回城的车上就想,必须把OTA(Over-The-Air)更新搞通。Nano 33 BLE Sense这块板子,nRF52840主控,蓝牙5.0,自带OTA能力,但官方文档写得像天书,示例代码里藏着好几个坑。今天这篇笔记,就把我踩过的坑和最终跑通的方案,原原本本写出来。硬件准备:别被“BLE Sense”这个名字骗了Nano 33 BLE Sense和普通版Nano 33 BLE,核心都是nRF52840,区别只在于Sense多了几颗传感器(麦克风、温湿度、气压、手势识别)。OTA功能两者完全一样。但有一个关键点:板载的2MB Flash,Bootloader占掉一部分,用户程序可用空间大约1.8MB。如果你的固件编译出来超过这个