MicroBlocks 编程案例: 扩展 OctoStudio 库

MicroBlocks 编程案例: 扩展 OctoStudio 库

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

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 广播消息的协议细节,且无法预知其未来变化。

🏷️

标签

➡️

继续阅读