前言

Jackson 资助的两次美国之行, 都对我产生了深刻影响。

第一次是参加 Open edX 大会。 之后拜访了 MIT Media LabThe Clubhouse Network, 途中还去了趟洛杉矶环球影城

第二次是参加 CES。 之后拜访了计算机历史博物馆Dynamicland

这篇文章与洛杉矶环球影城有关。

霍格沃茨村的魔杖 🪄

环球影城里最受欢迎的景点之一,是霍格沃茨村。

坐落在霍格沃茨城堡脚下,这个被白雪覆盖的巫师村庄充满了魔法商店、诱人酒馆…

在这个魔法村子里, 你可以使用互动魔杖施展法术.

只需轻轻一抖手腕和念出正确的咒语(Incendio!),就可以在霍格沃茨村的十几个地点施展咒语。当心! 这些咒语将直接作用于你身处的现实世界!

为了实施魔法, 你得有一根自己的魔杖 🪄。任何上过魔法学校的人都知道,不仅是你在挑选魔杖,魔杖也在挑选你.

这个视频展示了一个孩子在霍格沃茨村购买魔杖的过程,仪式感十足。

魔法的背后

我在石头上蚀刻了一幅图案,内有几何图形种种,在不明者眼中,显得神秘而又复杂,但我明白,只要布局正确,这块石头将被赋予一种特殊的能力,对一种至今无人说过的咒语作出反应。我用这种语言提问,石头会显灵应答: 那是一个我用符咒创造的世界,一个在石头图案内想象的世界。
几百年前,在我的新英格兰故乡,我所干的这种事,说出来也许会把我送上火刑架。然而我的工作丝毫不涉及巫术。我从事计算机设计和计算机编程。那石头是硅芯片,那咒语是程序…… – 《通灵芯片》

计算和魔法有着惊人的相似性, 上述话语中很好地捕捉了这种相似性。

霍格沃茨村的魔法由计算提供支持。那儿的魔法是一种物理计算 – 作用于现实世界的计算。

令人意外的是, 这些魔杖没有任何计算装置, 没有芯片也没有传感器。

那么计算究竟是如何发生的?

环球影城没有公开更多的技术细节, 根据网上的分析, 我们得知计算发生在环境中。环境里提供了两种计算能力(在不同的场景中使用):

  • 机器视觉
  • 语音识别

特定的魔法景点周围,暗藏了红外摄像头,它们设计得相当隐蔽,这样做是为了不破坏你的沉浸感。魔杖头部涂有一种材料,能够很好地反射红外光, 这样摄像头就能够跟踪它的轨迹,识别出咒语。

那些受魔法影响的物件通常由计算机驱动舵机来控制它们。

看来魔法就只是一些机器视觉/语音识别 + 物理计算! 我们似乎可以使用 MicroBlocks 来复现它们 !

之前的尝试

从霍格沃茨村回到 Neverland(CodeLab 的办公室), 我制作了几种不同的魔杖:

这些魔杖的实现各有不同, 有些基于机器视觉,有些基于惯性传感器。

在遇到 Kano Wand 之后, 发觉这些尝试都不如人意。

Kano Wand

Neverland 里有许多不同的魔杖 🪄, Kano Wand 是我最喜欢的一根。

Kano Wand 内置了惯性传感器, 能够精准地跟踪其运动轨迹, 使得实施魔法的过程非常逼真细腻。它的软件设计得十分出色, 实时显示的咒语轨迹加上出色的音效配合, 使得整个体验充满戏剧性。

破解它 !

Kano Wand 是如此地出色, 很快我们就不满足于内置的软件功能, 我们迫切渴望将魔杖带到更广阔的天地,使其影响现实世界! 就像所有巫师 🧙 那样!

因此,我们必须破解它 ! 解除它的封印, 将它从封禁的软件世界里解救出来。

破解后的魔杖,就能够将魔法自由地作用于 Neverland 里头任何事物。

这就有点霍格沃茨村的味道了。 由于 Kano Wand 内置了传感器, 可以更加自由地实施魔法, 不像霍格沃茨村,需要在在固定位置施咒。

由于 Kano Wand 的出色体验及其昂贵的价格,以至于很长的一段时间里我都想自己制作一根与其相似的魔杖。

我希望自己制作的魔杖易于理解也易于破解, 这样我们就能够将它混合到更多的想法中。

困于硬件编程能力不足,迟迟没有实施。

好在现在我们有了 MicroBlocks !

制作魔杖

制作像 Kano Wand 那样魔杖, 需要完成以下几个部分:

  • 硬件(MicroBlocks)
  • 软件(Snap!)
  • 外形(3D 打印)

我们接下来分别讨论它们。

硬件(MicroBlocks)

Kano Wand 内置了一个微控制器(NRF52832), 以及惯性传感器。

这个硬件单元对外提供出蓝牙(BLE)服务, 当蓝牙客户端连接它之后, 它会源源不断地向客户端广播坐标信息。

由于 MicroBlocks 过去几个月在无线编程方面取得的进展, 我们得到了一个非常强大而通用的基础设置。

使用最新的 MicroBlocks 固件,在没有进行任何编程的情况下,我们几乎免费得到了制作一根魔杖的基础设置:

  • 可供选择的多种微控制器。 考虑到成本, 我偏向于使用 ESP32-C3(支持蓝牙, 只要几块钱! )
  • 通用的无线编程固件, 支持多种客户端: Scratch/Snap!/Python…
  • 内置的惯性传感器驱动(MPU6050, MPU6886…)

更为重要的是, 使用 MicroBlocks , 在图形化环境中就能够完成所有工作。 这使得没有计算机背景的人能够轻松理解并参与其中(计算的民主化)。

MicroBlocks 中的硬件编程部分只负责向客户端报告坐标信息,至于咒语如何识别,则由软件部分(Snap!)负责.

如何通过惯性传感器获得设备的位置坐标呢? 可参考这篇文章

软件(Snap!)

前边说道:

它(Kano Wand)的软件设计得十分出色, 实时显示的咒语轨迹加上出色的音效配合, 使得整个体验充满戏剧性。

通过分离硬件(下位机)和软件(上位机)的职责, Kano Wand 提供了出色的用户体验。我们可以学习这种架构。

在硬件层面使用 MicroBlocks, 软件层面使用 Snap! 。

我查看了 Kano Wand 的软件代码, 它的外表虽光鲜亮丽, 内部却非常复杂和笨重, Kano 团队为此投入了巨大精力。

由于 Snap! 出色的"活性"和强大的能力, 我们完全可以在积木层面完成所有工作(部分是因为我们之前在 Snap! 构建了许多强大的 primitives)

在 Snap! 里工作不仅更加愉快和高效,而且拥有极其出色的可理解性, 你可以把轨迹识别算法的实施细节直观地介绍给任何入门者 !

咒语的轨迹识别算法, 我偏好使用华盛顿大学在这篇论文里贡献的算法, 它简单而通用, 识别效果非常好。你可以在这里体验

Jens(Snap! 的作者) 在 Snap! 中已经实现了这个算法, 他不仅分享了项目源码, 而且录制了一个细致而充满热情的教学视频

算法并不关心坐标信息是如何输入的, 因此我们可以使用 Snap! 来替代 Kano Wand 的软件, 仅用到 Kano 的传感器数据:

甚至直接使用手指施咒:

外形

魔杖的外形可以通过 3D 打印完成。 许多 3D 打印的社区都有现成的魔杖模型: thingiverse: wand

多段打印可能比较容易实施。手持的一段需要是空心的,用于放置硬件模块,具体设计可以模仿 Kano Wand: 电路板设计为长条型, 2 节 7 号电池并排放置。

总结

制作一根能够作用于现实世界的魔杖 🪄 是我一直以来的愿望。 这也是 物理计算 的绝佳用例。

使用 MicroBlocks 和 Snap! 可以制作出一根属于你自己的魔杖, 它拥有以下特质:

  • 低成本。 Kano Wand 最新的售价是 1500+。 让我们将价格打下来! 基于本文制作的魔杖, 硬件成本大约是 20 块钱, 加上 3D 打印的外壳和七七八八的其他东西, 50 块钱似乎可以搞定!
  • 可理解性。 魔杖的硬件部分(固件)和软件部分(客户端)都完全在图形化编程中完成, 可以被任何的入门学习者理解 !
  • 项目式风格。 魔杖的制作过程是项目式的,涉及不同领域的协作: 软件、硬件、3D打印。不同的部分很容易模块化, 可以按需替代, 如果想要引入神经网络相关知识,可以在软件部分,将咒语识别算法,替换成基于神经网络的版本。 因此围绕魔杖主题,可以源源不断推出有趣的教学内容。如果你见识过环球影城中孩子们对魔杖的喜爱程度,很可能认为这样的课程将大受追捧。
  • 可扩展性。 也许可以持续不断地推出不同的 Wand Kit, 魔法可以作用在不同的物理计算设备上。甚至可以构建一个大型 Kit: 包含舞台剧中的大多数道具,这些道具都可以被魔法影响!

参考