在漆黑的舞台上,闪烁的道具旋转着飞向十几英尺高的空中。这是一场杂耍表演。所有的道具都完美地同步闪烁着不同的颜色,与音乐的节奏相合。这是剧院的魔力,也是和朋友们一起享受特别夜晚,从日常生活中获得片刻放松的方式。魔力的一部分——也是它被称为魔力的原因——在于观众不知道这些秘密是如何在后台创造出来的。
他们也不知道这种魔力有着开源的血统。
4 月 21 日,我收到前老板 Ian Charnas 的一封电子邮件,去年夏天我在他手下工作,帮助人们使用凯斯西储大学 ThinkBox 的机器。他在邮件中告诉我,一位名叫 Charles Peachock 的杂耍演员需要帮助,为他的例行表演设置一套新的道具同步系统。Charles 曾六次登上《美国达人秀》,并在全国各地巡回演出。他的杂耍设备变得过于笨重,并且在后台准备起来非常困难。他需要一些不那么麻烦的东西。
而且,他希望我们考虑树莓派是否可以提供帮助。我接受了这份工作,并亲自会见了 Charles,开始我的研究。
在随后的一个电话中,Charles 和我决定当晚在我家见面。我有点慌张,因为第二天我有一个生物考试,但幸运的是一切顺利。我发现尺寸将是解决 Charles 问题的关键,所以我从树莓派开始入手。它体积小,并且与 Pibrella shield 兼容。我从 Charles 那里拿了两个杂耍道具用于测试,并拿出了我备用的树莓派。几周后,我沉浸在 Google 搜索中,寻找我的下一个起点。然后,我在 GitHub 上找到了由法国马戏团编写的关于如何运行杂耍道具的 AeroUp 代码。
Pibrella shield 可以直接插在树莓派的顶部,用户可以使用 LED、按钮、I/O 引脚和扬声器。而且,Pibrella 库是一个 GitHub 仓库,其中包含预先编写的代码,用户可以访问这些功能。
我将 AeroUp 代码加载到树莓派上,最终通过无线连接 ssh 进入树莓派,使杂耍道具同时以相同的颜色点亮。这一成就是我解决方案过程中的一个里程碑,因为我设法证明了我的想法是可行的。然而,这离最终交付还差得很远。
我需要找到一种方法,让 Charles 可以在没有笔记本电脑或网络连接的情况下启动这些道具。
首先,我使用 USB 集线器将道具连接到树莓派和以太网电缆。我将 SD 卡插入读卡器 USB,然后从那里插入我的电脑。我将 ArchLinux 加载到我的电脑上,解压缩它,并使用 dd 命令将其复制到 SD 卡上。一旦我安全地移除了 USB,我就将 SD 卡插入树莓派。
那时真正的工作才开始。
我创建了一个用户 Pi 并调整了 SD 卡上的分区大小。接下来,我创建了一个交换文件,以防止 gcc 被 oomkiller 杀死。可以使用无线适配器配置无线网络,但我没有这样做,因为我有一根以太网电缆。我设置了正确的时区、日期和时间。然后,我更新了 ArchLinux 并安装了七个软件包,以确保系统能够正常工作。接下来是更多的安装,这次是 Python 和 Pibrella 库的安装。我必须使用 Pibrella 库的 *pre flag*,因为它目前是预发布软件。完成之后,我以 Pi 用户的身份构建了 AeroUp。
我已经准备好开始编码了。我编写了一个程序,向道具发送信号,使它们同时启动。这相对简单,并且使用 Bash 完成。第一个程序的主要部分是一个循环,它检查正在使用的设备数量,并使用预定的程序(稍后可以更改)启动它们。第一个程序被用作第二个程序的一部分。第二个程序由两个主要循环组成,并用 Python 编写。第一个循环读取按钮状态并计算按钮被按下的时间。如果按钮被按下不到三秒钟,则会亮起绿灯,并调用和处理 Bash 程序。如果按钮被按下超过三秒钟,则会亮起黄灯,并且系统会关闭。第二个循环处理灯光之间的转换。它还会检查按钮状态和按钮按下的时长。它会根据按钮被按下的时间量来改变灯光的颜色。
一旦我编写了这些程序,我就让它们在用户 Pi 的主目录中可执行。最后,我设置了一个名为 juggling_app.py 的系统,使其在启动时运行。当我启用 juggling_app.py 时,系统运行完美。我尝试破坏它,但所有尝试都失败了,或者如此不一致以至于无效,所以我开始设置硬件。
我去了 Microcenter,我当地的计算机用品商店,为 Charles 购买了一个树莓派和 SD 卡。我组装好一切,并将我的 Pibrella 安装到新的树莓派上。然后,我放入 SD 卡并多次测试它。当我确定它正常工作时,我非常高兴!然后,我安排与 Charles 见面,看看他对它的看法。他认为它很棒……并且希望我添加另一个功能。在他的业务中,冗余非常重要,因此他要求我使用面包板在设置中添加另一个按钮。面包板是一小块塑料板,具有用于连接电线的连接点。这允许用户将诸如按钮之类的物品连接到面包板,并将其与树莓派结合使用。说实话,我不太确定我是否能做到。重写整个程序的景象在我脑海中闪过,但我同意尝试。幸运的是,我的恐惧仅仅是恐惧;我以为添加额外的按钮和功能可能需要几个小时,但实际上只用了十分钟!
一行新的代码和一行修改后的代码之后,我成了树莓派杂耍道具管理系统的骄傲创造者。(具有两个功能按钮!)
这段旅程,这个项目的最后一部分,是使整个系统看起来更专业。我从头开始,写下每个步骤以及相关的命令和链接。这成为了手册:Run Book 包含运行系统的三个说明,Build Book 包含从头开始构建系统的说明,并且程序也包含在内。
今天,您可以观看 Charles 的巡回演出 Impossible Deceptions,并且知道我的系统在后台运行。
4 条评论