PyBricks:蓝牙 Python 编程
一句话总结这篇文章的核心:使用 PyBricks 和 Python 通过蓝牙控制乐高设备的编程教程
完整内容
我在 RacingBrick YouTube 频道上看到了一个名为「使用 Pybricks 和 Xbox 革新乐高遥控控制」的视频。它向我展示了一个解决乐高 Powered Up 最大问题——控制车辆——的简单方案。
我是个老派玩家。大约在 1980 年,我玩了第一辆遥控车,用带两个操纵杆的遥控器控制它。我的第二辆车有一个带操纵杆和方向盘的遥控器。多年来,乐高发布了各种带有类似控制方式的遥控器,但 Powered Up 系统需要通过手机或平板进行控制。

这是我在 80 年代初拥有的遥控车
这意味着你需要在玻璃屏幕上滑动手指,正如其他人在评测中指出的那样:这真的不好用。玻璃没有触觉反馈。如果你的手指滑到玻璃上错误的位置,突然之间你就不是在转向了,而是误触了喇叭。所以你需要一边看着你的手指,一边看着你的模型。
那么 Pybricks 是如何解决这个问题的呢?我以前见过这个名字,但从未真正深入了解过。在我们开始蓝牙 Python 配方之前,让我先给你讲一个关于乐高编程的故事。
Python 与 Mindstorms
让我们从一点历史开始。别担心,很快就讲完。
Mindstorms RCX 主机,图片来自 维基百科
大约在 1985 年,麻省理工学院和乐高开始合作开展一个机器人项目。第一个产品是 Technic 控制中心,随后在 1998 年推出了 Mindstorms。第一代 Mindstorms RCX 在当时令人震惊,但功能相当有限,所以爱好者们创建了替代编程语言,如 NQC (Not Quite C) 和 LeJOS。这种情况在接下来的两代 Mindstorms——NXT 和 EV3 中延续了下来。
大约在 1990 年,一位荷兰开发者Guido van Rossum开始开发一种新编程语言。他决定将其命名为 Python,命名来源于Monty Python。它逐渐流行起来,最终成为第二受欢迎的编程语言。2014 年,一位澳大利亚开发者创建了 MicroPython,这是 Python 的精简版本,旨在运行在 Pyboard 微型计算机上(不要和 Raspberry Pi 混淆!)。
Pybricks 标志
然后在 2019 年 4 月,这两个故事交汇了——面向乐高 Mindstorms EV3 的 MicroPython 发布。这也是 Pybricks 故事的开始。
Laurens Valk 是一名机器人工程师,也是多本乐高 Mindstorms 书籍的作者。David Lechner是 ev3dev 的开发者,这是一个基于 Linux 的替代操作系统,适用于 Mindstorms EV3。他们两人都是终身乐高和 Mindstorms 爱好者,当他们看到乐高当时新推出的 Powered Up 系统时,他们意识到它比乐高目前的开发更有潜力。
虽然各种集线器的硬件几乎相同,但使用体验却是碎片化的,不同的应用程序和控制方式,几乎没有集成。他们决定联手创建 Pybricks,让它成为一统所有集线器的操作系统。

可编程集线器全家福:City、Technic、Boost、Mindstorms、Spike Prime、Spike Essential
他们不得不从大量逆向工程开始。过去,乐高会为 NXT 和 EV3 发布原理图和源代码供黑客研究,但他们没有对任何 Powered Up 集线器这样做。所以,就像最初的 RCX 黑客一样,他们必须对一切进行逆向工程。他们从 EV3 上的 MicroPython 开始,然后转向 Powered Up 硬件,逐渐让它对入门用户更易用,同时也不忽视经验丰富的用户。得益于浏览器对蓝牙的支持,你现在可以直接从浏览器对 Powered Up 集线器进行编程。
我的 Python 珍品
让我们看看 Pybricks 是什么,以及它与 Powered Up 集线器(City、Technic、Boost、Mindstorms 和 Spike)的乐高编程和控制有什么不同。
当你用手机控制 Powered Up 集线器时,程序运行在你的手机上,它通过蓝牙与集线器「对话」。集线器上运行着另一个程序,将手机发出的命令转换成输出端口的信号来驱动电机,并将传感器的信号发送回手机。
Pybricks 的作用是用更智能的程序替换集线器上的原有程序,它不需要手机告诉它该做什么。相反,它可以自己做出决定,或者它可以与 Powered Up 遥控器配对。所以现在你可以控制所有那些 Technic 汽车,比如 4x4 X-treme Off-Roader、Top Gear 拉力赛车和 Off-Road Buggy,使用与 City 火车相同的遥控器——一个很棒的物理遥控器,你不用看就能找到按钮位置。

现在,尽管这个物理遥控器很棒,但它没有 Xbox 控制器那么多按钮。Pybricks 团队显然也有同样的想法,所以他们最近邀请了 Xbox 控制器加入派对!只需几分钟,你就可以让你的 Technic 集线器监听 Xbox 蓝牙控制器。小菜一碟……(或者说,易如反掌「pie」)。
既然我们已经讲完了故事,让我来向你展示如何按照这个配方设置 Pybricks 遥控器。
蓝牙 Python 配方
供 1 位资深乐高玩家食用。烹饪时间 10 分钟。
蓝莓派,作者 KosBrick,来自 Flickr
食材
- 1 个 Powered Up Technic 套装,例如 42099
- 1 台带蓝牙的笔记本电脑
- 1 个 Powered Up 控制器,型号 88010
- 可用的互联网连接
- 为集线器准备的全新电池
步骤
- 将烤箱预热至 180°C/350°F(算了,乐高和热量不太合——跳过这一步)
- 确保集线器已关闭。
- 打开笔记本电脑,访问 https://code.pybricks.com。
- 点击「安装 Pybricks 固件」并按照以下其他步骤操作:
- 选择你的集线器
- 接受许可证
- 为你的集线器命名
- 按住集线器上的按钮
- 当集线器开始闪烁粉色时,点击「安装」
- 在弹出窗口中点击「LEGO Bootloader」,然后点击「配对」
- 固件应该会开始安装到你的集线器上。让它运行一分钟直到完成。
此时,你已经可以控制集线器了,但键盘控制不是我们想要的,所以还需要几个步骤:
- 点击文件图标,然后点击 + 图标创建一个新程序
- 确保右侧的 Python 代码选项被选中,将程序命名为 42099 并关闭模板。点击创建。
- 在第二个窗口中,访问 https://pybricks.com/projects/sets/technic/42099-off-roader/powered-up-remote/
- 复制 Python 程序
- 回到 Pybricks Code 窗口,将你刚刚复制的代码粘贴到(它显示「在此编写你的程序」的地方)
- 点击蓝牙按钮,选择你的集线器,然后点击「配对」
- 点击播放按钮运行程序。你会看到「下载中」几秒钟
- 按遥控器上的绿色按钮打开它。当集线器连接到遥控器时,它的灯应该会变蓝。
就是这样!你的蓝牙 Python 就完成了,可以使用了!你现在可以用遥控器控制 Technic 4x4 越野车了,你可以关掉笔记本电脑。如果你下次想玩,只需打开集线器,打开遥控器,然后按遥控器上的绿色按钮启动程序。易如反掌!
开始烹饪吧
那么 Pybricks 还能为你做什么?其实很多。如果你按照配方操作,你现在就有了一个非常简单的程序,只能完成前进/后退和左/右转。现在你有了这个程序,你可以添加功能。你可以给它增加两个速度,或者给它一个紧急制动。只需要几行代码。如果你不喜欢写代码,Pybricks 也支持「积木编程」。

Pybricks 积木编程示例
这对很多人来说让编写程序变得容易得多。启用积木编码需要小额捐赠——显然,构建积木编码投入了大量时间和精力。
仅使用 Mindstorms Robot Inventor 零件和 Pybricks 搭建的平衡球机器人
并非每个模型都是需要遥控的汽车。许多 GBC 模块都在 Powered Up 集线器上运行,使用 Pybricks 意味着你可以将程序放在集线器上。这意味着你的 GBC 模块可以自己连续运行几个小时。Brickset 的 Huw 写了一篇关于他如何做到这一点的文章。
我们还没说完。因为运行在集线器上的程序不需要整天和手机通信——它可以运行得快得多。这意味着你可以做手机控制不可能做到的事情,比如这个自平衡机器人。
集线器不仅可以与手机和遥控器通信,它们之间也可以互相通信。例如,你可以让两个机器人相互反应。或者你可以让火车里的集线器请求车站的集线器为特定站台设置道岔。
正如我在开头提到的,我也是最近才开始研究 Pybricks,但我现在已经尝到了甜头。我到目前为止看到的一切我都很喜欢,我迫不及待地想发现我还可以用它做什么,无论是在我的火车布局中还是在其他 MOC 中。
如果你有一个 Powered Up 集线器,试试 Pybricks 吧。可能性是无穷无尽的!同时,在学习更多关于 Pybricks 的知识的同时,享受一块派吧!
BrickNerd 精选——原文最初发布于 2024 年 3 月 14 日。
你还希望我们介绍其他哪些乐高编码语言?请在下方评论中告诉我们。
你想帮助 BrickNerd 继续发布这样的文章吗? 成为顶级赞助人,像 Paige Mueller、Brickstuff 的 Rob Klingberg、Beyond the Brick 的 John & Joshua Hanlon、Megan Lum、Andy Price、StoneWars 的 Lukas Kurth、Wayne Tyler、Dan Church 和 Roxanne Baxter 一样表示支持,获得提前访问、独家礼品等更多福利。**
相关实体
- PyBricks编程框架 — 开源乐高可编程集线器固件,基于 MicroPython 的乐高编程框架
- 乐高蓝牙控制 — 使用蓝牙技术无线控制乐高电动模型的技术



