内容提要
MicroBlocks团队计划推出BLE radio库,以便使用BLE radio构建手柄和受控小车项目。BLE radio功耗更低,适合户外使用。通过修改OctoStudio库,可以扩展信号数量。固件esp32-fixocto-20240114提高了板子之间通信的稳定性。BLE radio还支持广播分组,可以进一步扩展OctoStudio库来支持广播分组。
延伸解读
OctoStudio 库的扩展潜力与限制
OctoStudio 库原本只支持 5 种信号,这是 MIT 团队出于易用性考虑的设计,而非技术限制。通过修改下拉菜单和 _OctoInit,可以扩展到 10 个信号,满足手柄按钮映射的需求。此外,广播机制有 8 个字符位置可用,理论上能传递海量信号,但协议细节未公开,未来可能变化,因此 MicroBlocks 决定实现自己的 BLE radio 协议。
固件更新提升板间通信稳定性
官方最新固件在板子与手机之间通信稳定,但两个板子之间常丢失消息。预编译固件 esp32-fixocto-20240114 提高了板间通信稳定性,未来会合并到官方版本。只需在发送端(手柄)刷此固件,接收端可用官方固件。注意:刷此固件后,发送消息时会停止广播自身信息,导致无线连接断开后无法重新发现板子,需断电重启或有线连接。
广播分组解决多设备遥控问题
多个手柄遥控不同车辆时,需要广播分组来区分。micro:bit radio 通过不同分组解决,John 规划中的 BLE radio 也支持。OctoStudio 目前不支持分组,但可扩展:修改 vm 中 shape_id = deviceName.back() - ‘0’ 的代码,将广播消息倒数第二个数字作为分组标识(0-9 共 10 组)。这展示了 OctoStudio 广播机制的可扩展性,但需修改代码。
Q&A
MicroBlocks 的 BLE radio 库有什么特点?
BLE radio 库功耗更低,适合户外使用,续航时间更长;支持无需配对的板子之间广播消息通信,且支持任何有蓝牙的板子之间的通信,即使采用不同芯片。
如何扩展 OctoStudio 库以支持更多信号?
通过 hack OctoStudio 库的两处:下拉菜单和 _OctoInit,可以将信号数量从 5 个扩展到 10 个,适合映射手柄按钮。
为什么需要预编译固件 esp32-fixocto-20240114?
官方最新固件在板子之间通信时经常丢失消息,该固件提高了板子之间使用 OctoStudio 通信的稳定性,未来会合并到官方版本。只需在发送端(手柄)刷此固件,接收端可用官方固件。
OctoStudio 库目前支持多少种信号?为什么有限制?
OctoStudio 目前只支持 5 种不同的消息信号,这是 MIT 团队出于易用性考虑刻意做出的设计,而不是技术限制。
如何用多个手柄遥控不同的车?
可以通过广播分组解决。OctoStudio 目前支持广播分组,但需要修改 vm 中代码(关键代码:shape_id = deviceName.back() - ‘0’),将广播消息的倒数第二个数字用作分组标识(0 到 9 共 10 组)。
MicroBlocks 未来会实现自己的 BLE radio 协议吗?
是的,John 决定在 MicroBlocks 中实现自己的 BLE radio 协议,因为 MIT 团队没有公开 OctoStudio 广播消息的协议细节,且无法预知其未来变化。