在 MicroBlocks 和其他编程言语之间进行音讯通讯,以达到互操作的意图。

简略演示

先来看一个简略的视频演示。

Sorry, your browser doesn’t support embedded videos.

视频演示触及的程序如下:

  • MicroBlocks 程序
  • Scratch 程序

以上演示了 MicroBlocks 与 Scratch 怎么经过音讯通讯来互操作,详细而言:

  1. 先在 MicroBlocks 中编程,完成后断开衔接
  2. 之后将设备衔接到 Scratch 的 MicroBlocks 插件。
    • 对你的心智模型来说,就好像你能够在 Scratch 和 MicroBlocks 中相互播送和接收音讯。

这个互操作是通用的,意味着能够在 Scratch 里操控 MicroBlocks 现已支撑的数十种设备(还在继续增多)!

MicroBlocks 不仅能够与 Scratch 进行互操作,也能够与大多数编程言语互操作。文末记录了目前现已实现互操作库的编程言语(MicroBlocks 社区优先重视在教育范畴重要的编程言语)

音讯流向图

以下是 MicroBlocks 与 Scratch 进行音讯通讯的音讯流向图:

MicroBlocks 与其他编程语言的互操作

详细运用,参阅 CodeLab Scratch MicroBlocks 插件文档

为何要让 MicroBlocks 与其他编程言语进行互操作

咱们以 MicroBlocks 与 Scratch 的互操作为例,论述这样做的含义,其中的道理也适用于 Scratch 之外的其他编程言语。

咱们将分别从以下两个视点来讨论互操作的含义。

对 MicroBlocks 的含义

MicroBlocks 专心于硬件编程/物理计算,它让板子能够离线运转,这关于许多实践应用和竞赛(如巡线赛车)是必要的。这使得 MicroBlocks 更多考虑”下位机”编程。

经过 MicroBlocks 与 Scratch 的互操作,Scratch 能够成为硬件设备的”上位机“, 对设备进行”指挥”。 因为 Scratch 运转在电脑里,没有内存和计算性能的约束,在Scratch里制造操控界面(GUI程序)是十分容易的。

这样一来,咱们就能够运用 Scratch 的优势,为 MicroBlocks 设备提供超卓的 GUI 界面。(相同的道理,也能够运用 Python 的深度学习生态来增强 MicroBlocks 程序)

对 Scratch 的含义

图形化编程范畴喜欢魔改 Scratch 来支撑硬件编程,这导致许多灾难性的后果,这个糟糕的策略破坏了可理解性,让学习者陷入云里雾里。 我在CodeLab 纪事 和 比较图形化硬件编程平台 做了批判。

MicroBlocks 的创始人,也正是 Scratch 的联合创始人兼首席架构师 John Maloney 并未选用扩展 Scratch 的思路来支撑硬件编程,他深知这里边的圈套和天花板,所以 John Maloney 启动了新项目 MicroBlocks 作为图形化硬件编程的解决方案。

MicroBlocks 因其超卓的规划,具有极高的灵活性和可扩展性,甚至能够由一个孩子而不是工程师来自在扩展它!目前为止 MicroBlocks 社区现已支撑了丰厚的编程板、传感器和执行器, 简直涵盖主流范畴的大多数类别!

MicroBlocks 与其他编程语言的互操作

因为互操作是完全通用的(仅仅播送音讯), 意味着 MicroBlocks 生态的海量硬件都能够直接为 Scratch 所用(发音讯即可!)。 未来新加入 MicroBlocks 生态的任何设备,也都能够直接在 Scratch 里运用,不需求任何额外作业!

它是怎么作业的?

根据音讯通讯的互操作是怎么作业的呢?

这主要是得益于 MicroBlocks 超卓的架构规划。 它的虚拟机支撑强壮的音讯协议: Microblocks Serial Protocol (version 2.09), 该协议描述了音讯怎么在开发板 与 Microblocks IDE 流动,以及音讯的其他可能流向。

MicroBlocks IDE 就是根据这个音讯协议与硬件设备(虚拟机)通讯的。 所以理论上,咱们能够在任何编程言语中做到 MicroBlocks IDE 做到的一切工作, 包括但不限于: 将脚本下载到板子; 启动/停止脚本; 盯梢脚本的运转状态; 播送音讯…

因此,你不只能够让其他编程言语与 MicroBlocks 进行互操作,甚至能够规划一个新的编程言语来与虚拟机交互,新的言语能够选用文本代码而不是积木块。只需将你规划的文本言语翻译成 MicroBlocks 虚拟机指令,然后经过音讯其发送到板子即可。 MicroBlocks 的架构规划为咱们打开了巨大的可能性空间!

更多细节可参阅:

  • Microblocks Serial Protocol (version 2.09)
  • The MicroBlocks Virtual Machine
  • The MicroBlocks IDE

一些风趣的方向

  • 将Adapter microbit radio迁移到 MicroBlocks,在相同的功能下,能够移除对 Adapter 的依赖,这样能很好地进步开箱可用性,只需求一个浏览器即可!
    • 制造风趣的魔杖 : 将”魔杖 micro:bit” 的陀螺仪信息实时发给”中转站 microbit”, Python 与”中转站 microbit” 实时互操作,这样就能够运用 Python 社区的深度学习库来实时计算”魔杖 micro:bit” 的手势!
    • 制造 Scratch 讲演翻页笔(或者经过 pyautogui 库操控 PPT),而这个讲演设备本身又是很好的话题,用于在讲演中引出编程的实践作用。
  • 在你最喜欢的编程言语中,制造通讯库,来让它与 MicroBlocks 互操作,可参阅我的 Python 实现: MicroBlocks Python 库

更多编程言语

MicroBlocks 与 Python 的互操作

音讯流向图

MicroBlocks 与其他编程语言的互操作

详细运用,参阅 MicroBlocks Python 库。

MicroBlocks 与 Snap! 的互操作

详细运用,参阅 MicroBlocks and Snap! Communication with Messages

FAQ

Scratch(或 Python) 与 MicroBlocks 互操作时,是否总是要衔接数据线

是的。

现阶段进行互操作时,有必要衔接数据线。未来有可能经过蓝牙或 wifi 提供无线支撑。(理论上可行)

如果你希望运用无线的方式让 Scratch(或 Python) 与 MicroBlocks 交互, 能够考虑 MQTT 库(需求板子支撑wifi,引荐 ESP32)。MicroBlocks 与 CodeLab Scratch 都已支撑 MQTT 协议。

参阅

  • CodeLab Scratch MicroBlocks 插件文档
  • MicroBlocks Python 库
  • MicroBlocks and Snap! Communication with Messages
  • Microblocks Serial Protocol (version 2.09)