前言

破解 OctoStudio 过程中,我发现, 在电脑上构建 OctoStudio 信号桥接器,不令人满意,原因有 3 点:

  1. 电脑通常被认为是蓝牙客户端,而不被认为是蓝牙外设(提供某种蓝牙服务), 这导致使用电脑发送蓝牙广播(OctoStudio beam 基于这个原理)会遇到各种烦人问题。
  2. 即便只是将电脑作为蓝牙客户端接收 OctoStudio 发出的信号,依然有不确定的延迟
  3. 无法脱离电脑使用,这限制了在户外使用的可能性。

更好的方向是,在支持蓝牙的微控制器(如 ESP32)上构建 OctoStudio 收发器。

如果你想让电脑上的软件与 OctoStudio 交互,可以让支持蓝牙的微控制器给电脑中转消息,后文会细说。

MicroBlocks 中的 OctoStudio 库

通过 MicroBlocks OctoStudio 库,我们可以在编程板与手机之间进行双向通信,可以在离线的情况下使用它. 而且多个手机与多个编程板之间可以任意交互。与朋友一起,带去你们的户外秘密基地里玩吧!

玩些什么呢?一种有助于思考的视角是,将手机看作 MicroBlocks 的传感器与执行器。

提醒: OctoStudio 的"发送/等待信号" 积木不大稳定, 安卓比iOS更不稳定。这个问题有可能会在 OctoStudio 未来版本得到改善,但不确定,如果是手机蓝牙堆栈本身不适合这个使用场景,可能根本的改进是困难的。如果发现收发信号出现问题,重启一下手机上的 OctoStudio 应用。

让电脑与 OctoStudio 通信

这部分仅适用于 esp32(需要板子有wifi功能)

你可能想让 OctoStudio 与电脑程序互动,诸如与 Python 应用互动。

很容易做到这点。

这是个通信问题。既然我们可以在 MicroBlocks 中收发 OctoStudio 信号,只要知道 MicroBlocks 如何与电脑通信,信息就可以在它们之间任意流动。有很多办法做到这点,我最推荐使用 WiFi radio, 你可以通过我之前写的这个Python库(microblocks_wifi_radio)来轻松完成。

简而言之, WiFi radio 库类似 micro:bit radio, 可以给局域网里的设备广播消息。因为基于 WiFi, 所以不只能够在esp32/esp8266 之间广播消息,还可以在 WiFi 编程板与电脑之间传递消息(只需确保它们同个局域网)。

参考