跳转至

Raspberry Pi

引言

树莓派(Raspberry Pi)是由英国树莓派基金会(Raspberry Pi Foundation)于2012年推出的低成本单板计算机(Single-Board Computer, SBC)。凭借其完整的Linux运行环境、丰富的GPIO接口和庞大的社区生态,树莓派已成为机器人开发、物联网原型设计和嵌入式教学中使用最广泛的SBC平台之一。

树莓派是英国树莓派基金设计和推广的嵌入式Linux开发板。

1. 树莓派型号

树莓派有以下主要型号:

  • Raspberry Pi A/A+/B/B+
  • Raspberry Pi 2B
  • Raspberry Pi 3B/3A+/3B+
  • Raspberry Pi 4B 1GB/2GB/4GB/8GB

小型化型号:

  • Raspberry Pi Zero W/WH

微型主机:

  • Raspberry Pi 400

模块化计算单元:

  • Raspberry Pi Compute Module 3 (CM3)
  • Raspberry Pi Compute Module 4 (CM4)

嵌入式型号:

  • Raspberry Pi Pico: 基于RP2040 (32-bit ARM Cortex-M0+)

2. 芯片方案

3. 操作系统

Raspberry Pi OS(原Raspbian)

Raspberry Pi OS是官方推荐的操作系统,基于Debian Linux发行版。提供三个版本:

  • Raspberry Pi OS Lite:无图形界面的精简版,适合无头(Headless)服务器和嵌入式应用。
  • Raspberry Pi OS with Desktop:包含LXDE桌面环境的标准版。
  • Raspberry Pi OS with Desktop and Recommended Software:包含完整桌面和预装常用软件的完整版。

其他支持的操作系统

树莓派还支持多种第三方操作系统:

  • Ubuntu:Canonical官方提供了针对树莓派的Ubuntu Server和Ubuntu Desktop镜像。
  • Ubuntu MATE:轻量级桌面发行版,适合日常使用。
  • Kali Linux:安全测试专用发行版。
  • OSMC / LibreELEC:媒体中心操作系统。
  • Windows IoT Core:微软的物联网操作系统(仅支持Raspberry Pi 2/3)。

4. GPIO编程

树莓派提供40针GPIO接口(Raspberry Pi 2及以后的型号),支持数字输入/输出、PWM、I2C、SPI和UART等功能。

Python GPIO编程

Python是树莓派上最常用的GPIO编程语言,主要使用RPi.GPIOgpiozero库:

# 使用gpiozero库控制LED
from gpiozero import LED
from time import sleep

led = LED(17)  # GPIO 17

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)
# 使用RPi.GPIO库读取按钮状态
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

if GPIO.input(18) == GPIO.LOW:
    print("Button pressed!")

GPIO.cleanup()

C语言GPIO编程

对于需要更高性能的场景,可以使用wiringPi或直接操作/dev/mem进行GPIO编程:

#include <wiringPi.h>

int main(void)
{
    wiringPiSetupGpio();  // 使用BCM编号
    pinMode(17, OUTPUT);

    while (1) {
        digitalWrite(17, HIGH);
        delay(1000);
        digitalWrite(17, LOW);
        delay(1000);
    }

    return 0;
}

5. 摄像头模块

树莓派官方提供了专用的摄像头模块,通过CSI(Camera Serial Interface)接口连接:

  • Camera Module V2:基于Sony IMX219传感器,800万像素,支持1080p30视频录制。
  • Camera Module V3:基于Sony IMX708传感器,1200万像素,支持HDR和自动对焦。
  • HQ Camera:基于Sony IMX477传感器,1230万像素,支持可更换CS/C-mount镜头,适合机器视觉应用。

在机器人应用中,摄像头模块常与OpenCV配合使用进行图像处理和目标检测:

import cv2

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 显示图像
    cv2.imshow('Robot Camera', gray)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

6. 机器人应用

树莓派在机器人领域的典型应用包括:

  • ROS运行平台:树莓派可以运行ROS(Robot Operating System)和ROS 2,作为机器人的主控计算机处理传感器数据、执行导航算法和协调各子系统。
  • 视觉处理:配合摄像头和OpenCV进行目标检测、颜色追踪、二维码识别等视觉任务。
  • SLAM建图:通过连接激光雷达(如RPLidar)和运行Cartographer或GMapping等SLAM算法,实现室内地图构建。
  • 语音交互:利用麦克风阵列和语音识别库(如CMU Sphinx、Vosk)实现语音命令控制。
  • 远程监控:通过Wi-Fi提供视频流和Web控制界面,实现机器人远程操控。
  • 教育平台:如树莓派官方的Build HAT配合LEGO Technic电机,用于STEM教育。

7. 网络连接

树莓派提供了多种网络连接方式:

  • 有线以太网:Raspberry Pi 3B+和4B提供千兆以太网端口(4B为真千兆,3B+受限于USB 2.0总线),适合需要稳定网络连接的应用。
  • Wi-Fi:Raspberry Pi 3及以后的型号内置802.11ac(双频)Wi-Fi模块。
  • 蓝牙:内置蓝牙4.2/5.0(取决于型号),可连接蓝牙手柄、键盘等外设。

对于机器人联网应用,树莓派还支持:

  • 通过USB 4G/LTE模块实现户外移动网络连接
  • 作为Wi-Fi热点(Access Point)为其他设备提供网络
  • MQTT协议进行轻量级物联网通信

8. 与其他SBC的对比

特性 Raspberry Pi 4B BeagleBone Black Orange Pi 5 Nvidia Jetson Nano
处理器 BCM2711 (Cortex-A72) AM3358 (Cortex-A8) RK3588S (Cortex-A76/A55) Cortex-A57
主频 1.5 GHz 四核 1 GHz 单核 2.4 GHz 八核 1.43 GHz 四核
RAM 1/2/4/8 GB 512 MB 4/8/16 GB 4 GB
GPU VideoCore VI PowerVR SGX530 Mali-G610 128核 Maxwell
价格 约$35-$75 约$55 约$60-$150 约$99
社区支持 极好 良好 一般 良好
特色 生态最丰富 PRU实时协处理器 高性能 AI加速

树莓派的最大优势是其庞大的社区和成熟的软件生态。大多数开源机器人项目都优先提供树莓派的支持,这使得开发者能够快速找到教程、驱动程序和解决方案。

参考资料

  1. raspberrypi.org - BCM2711
  2. Raspberry Pi官方文档
  3. gpiozero文档
  4. Simon Monk, Programming the Raspberry Pi: Getting Started with Python, 3rd Edition, McGraw-Hill, 2021.