第1章:树莓派环境搭建

各位同学好,我是你们这门课的老朋友。今天咱们正式开干——把树莓派的环境搭起来。

说实话,我最早接触树莓派是在2015年,那时候还是B+型号。现在回想起来,当时烧录系统还得用Win32DiskImager,折腾了一下午才搞定。现在工具成熟多了,但核心步骤没变。咱们一步步来。

1.1 树莓派系统烧录

树莓派本身不带存储,系统得装在SD卡上。我个人习惯用官方工具——Raspberry Pi Imager,省心。

步骤:

  1. 下载Raspberry Pi Imager(官网就有,免费)
  2. 插入SD卡(建议16GB以上,Class 10速度)
  3. 打开Imager,选择:
    Raspberry Pi OS (32-bit) → 选带桌面版
  4. 选择SD卡,点击写入
  5. 等待进度条跑完(大概5-10分钟)
我的小经验:写入完成后,别急着拔卡。系统会提示你拔插一次,这是为了验证写入完整性。我吃过亏——有一次没验证,结果上电后系统起不来,排查了半天才发现是SD卡坏块。

1.2 SSH远程连接

树莓派接显示器键盘当然可以,但咱们做嵌入式开发的,谁愿意老蹲在设备旁边?SSH才是王道。

启用SSH:

  • 方法一:烧录后在SD卡根目录新建一个空文件,命名为 ssh(无后缀)
  • 方法二:第一次启动时在raspi-config里开启

连接命令很简单:

ssh pi@树莓派IP地址

默认密码是 raspberry。嗯,这里要注意——第一次登录后,我强烈建议你立刻改密码。

避坑指南:我曾经在一个项目里,树莓派暴露在公网上,默认密码没改。结果第二天发现被人植入了挖矿程序,CPU跑满100%。从那以后,我每次烧录完第一件事就是改密码。

1.3 WiFi配置

树莓派3B+以后都自带WiFi模块。配置WiFi有两种方式:

方式一:命令行配置

sudo raspi-config
→ 选择 "System Options" → "Wireless LAN"
→ 输入SSID和密码

方式二:直接编辑配置文件

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在里面添加:

network={
    ssid="你的WiFi名称"
    psk="你的WiFi密码"
    key_mgmt=WPA-PSK
}

保存退出后重启网络服务:

sudo systemctl restart networking

我个人更推荐第二种方式,因为可以提前写好配置,批量部署时特别方便。

1.4 GPIO引脚介绍

树莓派的GPIO(通用输入输出引脚)是咱们和外部传感器打交道的桥梁。40个引脚,功能丰富。

引脚布局(以树莓派3B+为例):

物理引脚 功能 BCM编号
1 3.3V电源 -
2 5V电源 -
3 I2C SDA 2
5 I2C SCL 3
8 UART TX 14
10 UART RX 15
19 SPI MOSI 10
21 SPI MISO 9
23 SPI SCLK 11
24 SPI CE0 8
重要提醒:GPIO引脚电压是3.3V,不是5V!我见过有人直接把5V传感器接到GPIO上,结果树莓派直接冒烟。嗯,别问我怎么知道的。

1.5 I2C/SPI/UART总线使能

这三个总线是咱们和传感器通信的主要方式。默认情况下,树莓派为了省电,把这些总线都关了。需要手动开启。

开启方法:

sudo raspi-config
→ 选择 "Interface Options"
→ 分别开启 I2C、SPI、Serial Port

或者用命令行直接操作:

# 开启I2C
sudo raspi-config nonint do_i2c 0

# 开启SPI
sudo raspi-config nonint do_spi 0

# 开启UART
sudo raspi-config nonint do_serial 0

重启后验证:

# 检查I2C设备
ls /dev/i2c*

# 检查SPI设备
ls /dev/spi*

# 检查UART设备
ls /dev/ttyAMA0 或 /dev/ttyS0
我的习惯:每次开启新总线后,我都会用 ls /dev/ 看一眼设备节点有没有出现。如果没出现,八成是没重启,或者配置没保存。别问我为什么知道——调试了半小时才发现自己忘了重启。

1.6 验证环境

最后,咱们写个简单的Python脚本,验证一下GPIO能不能用:

import RPi.GPIO as GPIO
import time

# 设置引脚模式
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

# 闪烁LED
while True:
    GPIO.output(18, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(18, GPIO.LOW)
    time.sleep(1)

把LED正极接GPIO18,负极接GND。运行脚本,如果LED一闪一闪的,恭喜你——环境搭建成功!

好了,第一章就到这里。下一章咱们开始讲传感器选型和接线,到时候会用到今天配好的I2C和UART总线。记得把环境搭好,别偷懒。

课后作业:用SSH连上你的树莓派,执行 pinout 命令,看看终端输出的引脚图。然后试着点亮一个LED。搞定了再往下学。