首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Rust 机器人实战 | micro:bit(一)配置环境

Rust 机器人实战 | micro:bit(一)配置环境

作者头像
niqin.com
发布2026-03-18 16:42:00
发布2026-03-18 16:42:00
900
举报

最近,我对孩子的 micro:bit 板子的闲置机器人小车做了 Rust 开发支持,已经实现了红外遥控、智能巡线等功能。先看看视频展示——我用 kdenlive 做的——

当初买这个机器人小车,是因为性价比比较高省钱,所以是 micro:bit 的板子。小车厂商针对硬件做了 PCA 等支持开发,自身支持 Scratch 和 MicroPython。

这个板子大家都晓得,主要是少儿教育/创客原型类应用场景。但 micro:bit v2 的硬件参数,看起来还是不错的,用于创客产品的原型验证场景——甚至做 ROS2 的部分单一功能的单节点——前提是这个节点有必要独立,都可以考虑。

系列文章分享的名字,就借鉴厂家的机器人小车概念,也称之为是 Rust 机器人实战之 micro:bit 篇吧……

本次用 Rust 开发机器人的技术分享,我没有放弃 micro:bit,而是以其开篇。大约是这样的分享顺序:

1. micro:bit,5 个分享,内容已经完成——Plasma 上开发的,但在 Windows 上已经跑通。代码没什么要修改的,就是验证一下;

2. arduino(这个是真要考虑放弃的,虽然应用场景和案例极多,但性能不上不下的,这类层级的开发板,有 micro:bit 做代表就够了,后续内容不如直接到 STM32 或 NXP);

3. STM32 或 NXP,这部分会是主要内容;

4. Raspberry Pi,承载 ROS2,作为控制器,控制其它节点(micro:bit、STM32 或 NXP 等)。

5. 后面还会涉及 TockOS 和 DroneOS。

注1:微秒,表示百万分之一秒。Zephyr 延时 8-15 微秒,DroneOS 延时 3-5 微秒——简直是极速裸奔——听说 google 用 DroneOS 做无人机控制。

注2:应用场景是机器人小车、机械臂——不过都是玩具型的……

01

Rust 开发 micro:bit?

是的,因为自 Zephyr 4.1 开始,官方对 Rust 的支持,让这一切变成了可能。

具体来说,就是基于 Zephyr RTOS 对 Rust 语言的强有力支持,和其非常全面的对板子硬件的支持。

先说板子支持:我粗略搜索求证了一下,Zephyr 4.2 中,已支持 600+ 开发板(Boards)和 150+ 扩展版(Shields),其中就包括本文中使用的 micro:bit v2。

Rust 语言在 Zephyr 项目中也是官方内部支持的。Zephyr 官方文档称其为“强有力的选择(make Rust a strong choice for projects on Zephyr)”;在 Zephyr 项目中启用 Rust 支持也很简单,主要就是配置 2 个文件:标明 `rust_cargo_application()` 和 `CONFIG_RUST=y` 即可。

目前,Zephyr 最新版本是 4.3,本次分享也是基于 Zephyr 4.3 开发。

注:Rust 在 Zephyr 中是官方支持的,而非社区。 当然支持没有 C/C++ 那么优先,Zephyr 本身是 C 开发的,C++ 的支持默认开启。 而 Rust 虽然也是官方支持,但需要开发者手动开启。

02

省不了的 Zephyr 环境配置

本来不想有复制粘贴这种来自项目官网的命令行操作的,但后来想,或许贴出来就有看的程序员真的打开命令行粘贴试下,所以还是贴出来,好在命令不多——但安装的巨长耗时,希望你能忍耐。

如果要试着安装,请先“配置”一下网络,很多情况下需要从 github、azure、amazon 这几个云下载。

我个人开发机是 Plasma,但我想还是 Windows 用的程序员多,所以下面配置命令仅贴出 PowerShell 版本——需要 Windows 10/11。

如果你使用 Ubuntu、macOS,甚或是 cmd,请去 Zephyr 官网打开入门指南,全贴出来命令太多了。

非 Debian/Ubuntu 和其衍生版 Linux,需要自己转换命令——但我不确定是否能配置安装成功。

1、安装 winget

打开链接,微软官方的链接:https://aka.ms/getwinget

2、打开 PowerShell,使用 winget 安装需要的依赖项

代码语言:javascript
复制
winget install Kitware.CMake Ninja-build.Ninja oss-winget.gperf Python.Python.3.12 Git.Git oss-winget.dtc wget 7zip.7zip

注意需要“配置网络”,不然可能会有 2 个软件包不能下载。

安装完成后,记得关闭 PowerShell,然后重开才能让安装生效。如同 Ubuntu 需要执行 source 命令。

3、打开 PowerShell,切换到你希望的安装目录

代码语言:javascript
复制
python -m venv zephyrproject\.venv
zephyrproject\.venv\Scripts\Activate.ps1

4、安装 west,并通过 west 获取 Zephyr 源代码

代码语言:javascript
复制
pip install west
west init zephyrproject
cd zephyrproject
west update

需要“配置网络”,时间巨长。

5、导出 Zephyr CMake 包

代码语言:javascript
复制
west zephyr-export

会写注册表,我检查过,就两个键值。导出后,CMake 就可以自动加载构建 Zephyr 应用程序所需的样板代码。

6、使用 west 包安装 Python 依赖项

代码语言:javascript
复制
python -m pip install @((west packages pip) -split ' ')

除了安装,也会做更新——需要“配置网络”,时间巨长巨长。

7、使用 west 安装 Zephyr SDK

代码语言:javascript
复制
west sdk install -d ./

此处和官方教程不同,我使用 -d 参数指定了 SDK 的安装目录,不然默认在系统盘的个人用户主目录中。

需要“配置网络”,时间巨长巨长巨长。

安装完成后,你的 zephyrproject 和 zephyrproject/modules 目录应该是这样的——

为什么要把 modules 目录单独拿出来看?请继续往下阅读。

03

启用 Rust

上面提到,Rust 虽然是 Zephyr 官方内部支持,但目前还是可选语言,默认没有启用 Rust。因此,modules 目录中,没有 lang/rust 子目录。

我们需要启用 Rust。Zephyr 中,所有的更新、编译、烧录(flash)都是通过 west 操作——若用 CMake 直接编译也行,但跟着官方走更快捷。启用 Rust 也是如此:我们先给 Zephyr 项目清单启用 Rust,然后更新 Zephyr crate 和示例代码:

代码语言:javascript
复制
west config manifest.project-filter+zephyr-lang-rust
west update

执行完成后,modules 目录就会多一个 lang/rust 子目录,其中包含 Zephyr crate:core、macros、sys,以及 build 。

环境配置到这儿就完成了。

后续步骤

一个环境配置都折腾的好累。我想,你如果跟着体验到此,估计也没有精力继续了……

耗费时间还是蛮长到漫长的。为了写此分享,我切换到 Windows 系统,从零配置,花了 5+ 小时。即使“配置”了网络,也是频繁中断……

这个机器人小车的控制,确实是玩具型的,但机器人小车不完全等同于传统玩具车。传统玩具车的灯光纯是装饰,而机器人小车行进过程中,让灯光闪起来,不仅仅是仿真或好看,更是一些功能所需——比如某些传感器需要光照;另外,对于程序运行判断也有用,甚至可以帮助调试。开发者一看灯光颜色、频次、长短等,就可以知道车辆在做、将做什么——就像程序中设置断点……

总之,机器人小车的灯光用好了,可以让玩具车非常有仪式感的——如同现在智驾都有小蓝灯。所以,下一篇就从各种灯光的控制开始

谢谢您的阅读,欢迎交流。如果您发现错别字,也请向我发信息。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iRust 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档