元器件 · 控制器

树莓派

树莓派是一台卡片大小的完整 Linux 计算机。当机器人需要视觉、ROS,或是 Arduino 应付不了的算力时,它就是机器人的大脑。

它是什么

树莓派是信用卡大小的完整计算机。Arduino Uno 是永远跑一个程序的单片机,而树莓派跑 Linux——可以同时驱动相机、联网、跑 ROS 2、执行你的机器人代码。当机器人需要“思考”而不只是“反应”时,就轮到它当大脑。

能力也是代价:Linux 多任务让树莓派做不好单片机轻松拿下的微秒级精确时序。两者是搭档,不是对手。

树莓派单板计算机标注图:绿色 PCB,顶边是 40 针金色 GPIO 排针,中央是博通 SoC 和内存芯片,右边是堆叠的 USB 与以太网口,底边是 HDMI 和 USB-C 供电,左边是 microSD 卡槽。
树莓派把一台计算机装进一块板子:SoC 和内存跑 Linux,40 针 GPIO 接机器人硬件,microSD 装操作系统。 下载 SVG

工作原理

树莓派从 microSD 卡启动操作系统(一般是 Raspberry Pi OS),之后就和普通 Linux 机器一样。对机器人重要的是 40 针 GPIO 排针:数字输入输出,外加 I²C、SPI、UART 总线,让树莓派能读传感器、指挥硬件。再往上是单片机没有的计算机部件——USB、以太网、Wi-Fi 和相机接口。

常见架构是双脑机器人:树莓派管感知和规划(视觉、SLAM、ROS 节点),把电机指令交给 Arduino 做实时控制。

什么时候用它

当机器人需要计算机的能力时请出树莓派:

  • 计算机视觉——相机加 OpenCV,做标记检测、物体或线检测。
  • ROS 2——跑节点、话题和导航栈。
  • 建图 / SLAM——建图并在图中定位。
  • 联网——网页控制台、远程控制或遥测。

纯实时控制任务坚持用 Arduino 或 ESP32——更便宜、更简单,时序更准。

接线与坑

  • **3.3 V 逻辑,不耐 5 V。**给 GPIO 灌 5 V 会烧板子。5 V 器件过来的信号要电平转换(比如 HC-05 的 TX 线)。
  • **还是不能直接带电机。**GPIO 只发信号,电机电流要走 L298N 这样的驱动。
  • **供电很挑剔。**给足稳定的 5 V 和电流;欠压会损坏 SD 卡、造成随机重启。
  • **要正常关机。**跑着的 Linux 直接拔电可能损坏存储卡——设计安全下电流程,或用只读文件系统。

40 针排针,哪些脚能用

排针 40 脚,能当 GPIO 的只有 26 个,其余是电源和地。

功能 引脚(BCM 编号) 说明
I²C-1 GPIO 2(SDA)、GPIO 3(SCL) 板上有固定 1.8 kΩ 上拉到 3.3 V
SPI0 GPIO 10(MOSI)、9(MISO)、11(SCLK)、8/7(CE0/CE1)
UART GPIO 14(TX)、15(RX) 默认被 Linux 控制台占用——必须释放
硬件 PWM GPIO 12、13、18、19 只有这四个,其余都是软件 PWM
电源 3.3 V、5 V 5 V 直通输入——无稳压
通用 其余

其中两行经常坑掉人一个晚上。

**UART 是控制台。**开箱 GPIO 14/15 上就是 Linux 登录提示。接 GPS 或 Arduino 得到的是登录噪声而不是数据。用 sudo raspi-config → Interface Options → Serial Port → login shell 选 no,hardware serial 选 yes 释放。树莓派 3 及以后还有个坑:好的 UART 默认给了蓝牙,排针上的是“mini UART”,波特率随 CPU 主频漂移。在 /boot/config.txt 里加 dtoverlay=disable-bt 换回来。

**软件 PWM 会抖。**只有四个脚有硬件 PWM,其余靠内核生成,Linux 调度器会打断——反映在舵机上就是肉眼可见的抽搐。这是树莓派不擅长什么的最直观展示。

时序问题,直说

这是关于机器人上树莓派最重要的一件事,而且不是缺陷——操作系统本来就是这样。

跑 loop() 的单片机只执行你的代码,1 ms 间隔就是 1 ms。Linux 是分时的:内核随时可能抢占你的进程去收网络包、刷磁盘,或跑上百个后台任务中的一个。

任务 单片机 树莓派(标准 Linux)
1 kHz 控制环 轻而易举,分毫不差 能跑,但偶发毫秒级的错过
舵机 PWM 稳如磐石 软件 PWM 脚肉眼可见抖动
20 kHz 读编码器 中断常规操作 不可靠——边沿会丢
超声波回波计时 微秒级准确 随机几厘米误差
视觉、规划、联网 不可能 正是为它而生

结论就是双脑架构,这不是妥协,而是正经机器人的常规设计:

Raspberry Pi                        Microcontroller
- camera, vision                    - encoder counting
- SLAM, path planning       <-->    - PID motor control
- ROS 2 nodes                       - servo timing
- networking, dashboard             - emergency stop
        high-level goals                  hard real time

两者经 USB 串口、UART 或 I²C 对话,各干擅长的事。让树莓派数编码器边沿会丢;让 Arduino 跑 OpenCV 跑不动。

供电,以及 SD 卡问题

树莓派机器人死在供电上,而且死法格外昂贵:写数据时欠压会损坏 SD 卡,整个系统镜像都没了。

型号 推荐电源 负载
Pi Zero 2 W 5 V、2.5 A 典型约 350 mA
Pi 3B+ 5 V、2.5 A 约 500 mA,峰值近 1.2 A
Pi 4B 5 V、3 A(USB-C) 约 600 mA,峰值近 1.5 A
Pi 5 5 V、5 A(USB-C PD) 更高

由此得出的规矩:

  • **电机和树莓派绝不共用一路电源。**电机启动电流正是会损坏存储卡的那种尖峰。
  • 电池降压用开关稳压,别用线性稳压。11.1 V 线性降到 5 V、1 A 要烧 6 W。
  • **看到闪电图标要当回事。**树莓派会显示欠压警告图标并记日志,vcgencmd get_throttled 也能查。非零就说明电源不行,早晚要损坏存储卡。
  • **正常关机。**断电前 sudo shutdown -h now。拨动开关断电的机器人,要么给 GPIO 接关机按钮,要么用只读根文件系统。

部署的机器人值得认真考虑只读文件系统:打开 overlayfs 后运行期间永远不写卡,随时断电都没事。代价是不能在本地存数据,一般很划算。

机器人选哪个型号

型号 内存 选它的理由
Pi Zero 2 W 512 MB 小而轻。跑相机和简单视觉够了
Pi 3B+ 1 GB 便宜,跑不太重的 ROS 2 节点够用
Pi 4B(4 GB) 4 GB ROS 2 加视觉的实用甜点
Pi 5 4–16 GB 明显更快;要更大电源和主动散热

ROS 2 加相机,4 GB 是不再难受的起点。RViz、视觉节点、导航栈加起来内存轻松超过 1 GB,而一旦树莓派开始把内存换页到 SD 卡上,它就会慢到无法使用——还会折损存储卡寿命。

实践中两个配件不是选配:散热片或风扇(满载的树莓派 4 在 80 °C 降频,降频就掉帧),以及好的 A2 级 microSD 卡,更好是 USB SSD 启动。瓶颈远多是卡速而不是 CPU。

故障排查

现象 可能原因 解决
随机重启 电源不够 查 vcgencmd get_throttled;换 3 A 电源
SD 卡反复损坏 写数据时断电 正常关机,或用只读文件系统
闪电图标 欠压 更好的电源和更好的线——线很关键
串口收到登录噪声 控制台还占着 UART 在 raspi-config 里关掉登录 shell
串口波特率不对 mini UART 跟 CPU 主频走 dtoverlay=disable-bt 换回好的 UART
舵机抽搐 软件 PWM 加调度器 用 PCA9685,或用单片机
编码器计数不对 负载下丢边沿 拿到单片机上数
跑几分钟变慢 过热降频 散热片或风扇
GPIO 脚没反应了 5 V 灌进 3.3 V 脚 电平转换;那只脚大概率已损坏
I²C 找不到设备 接口没开 raspi-config 打开,再 i2cdetect -y 1

树莓派还是单片机?

Arduino / ESP32 树莓派
跑 你的代码,独占 Linux,你的代码只是众多进程之一
时序 微秒级确定性 尽力而为,毫秒级抖动
启动 通电即跑 20–30 秒
断电 没事 可能损坏文件系统
视觉、ROS 2、联网 不行 行
功耗 毫安级 几百毫安到数安
价格 $3–8 $35–80

说句实在话:这两者不是竞争关系。树莓派数不好编码器,单片机跑不了 OpenCV。几乎所有像样的入门机器人最后两个都有,早点认清这一点,能省下大量让一方去干另一方活的力气。

如果机器人的全部行为就是一个控制环——循迹、避障、解迷宫——根本不需要树莓派,加上去只会启动更慢、更脆弱、更难调。

探索关联图谱

用到它的搭建

包含 树莓派 的项目、学习路线和模拟器。

对比

替代方案

问题

树莓派 常见问题

树莓派是什么?

树莓派是一种小巧、低成本的单板计算机,运行完整的 Linux 操作系统。Arduino 是在单片机上运行一个程序,而树莓派是一台真正的计算机——它可以同时运行相机、浏览器、ROS 和你的机器人代码。

树莓派和 Arduino,我需要哪一个?

电机和传感器的实时控制用 Arduino;机器人需要视觉、建图、ROS 或联网时用树莓派。许多机器人两者都用——树莓派当高层的大脑,Arduino 当实时执行的双手。树莓派的 Linux 多任务机制让它在微秒级精确时序上表现更差,而不是更好。

树莓派能控制电机吗?

它的 GPIO 引脚可以发出 PWM 和方向信号,但和 Arduino 一样,它不能直接从引脚给电机供电。你仍然要通过 L298N 这样的 H 桥来驱动电机。树莓派的引脚还是 3.3 V 的,所以接 5 V 器件时要注意逻辑电平。

做机器人一定需要树莓派吗?

不需要。大多数入门机器人(循迹车、避障车)用 Arduino 就能跑得很好,成本和复杂度都只有一小部分。只有当任务确实需要一台计算机时——计算机视觉、SLAM、运行 ROS 2 或网页界面——才用树莓派。

做机器人最好用哪些树莓派型号?

树莓派 4 和树莓派 5 是常见选择——CPU 和内存足以应付计算机视觉和 ROS。Pi Zero 2 W 是一款小巧、低功耗的选择,适合空间和电池续航比原始速度更重要的轻型机器人。凡是计算量大的任务,都别用最老的型号(Pi 1 和 Pi 2)。

延伸阅读

参考资料