树莓派5引脚指南:新手也能看懂的硬件入门课
你有没有过这样的经历?手握一块树莓派5,外接模块买了一堆,结果一通电——灯不亮、传感器没反应,甚至系统直接重启了?
别急,这很可能不是你的代码写错了,而是从第一步“接线”就开始跑偏了。
尽管树莓派5性能飞跃到了新高度(64位四核A76、8GB内存、PCIe接口),但对初学者来说,真正决定项目成败的第一道关卡,从来都不是编程,而是那排看似简单的40针GPIO引脚。
今天我们就来拆解它。不用术语堆砌,不说官话套话,就用“人话”讲清楚:
哪些是供电脚?哪个是地?GPIO怎么用才不会烧板子?I²C和SPI到底接哪根线?
一眼认出关键引脚:先搞清“电源”和“地”
在动手之前,请记住一句话:
所有电路都必须有完整的回路,而这个回路的核心就是“电源 + 地”。
所以当你拿到一个模块(比如温湿度传感器、OLED屏、继电器)时,第一件事不是找数据脚,而是确认三根基础线:
-VCC / 3.3V / 5V→ 接电源
-GND→ 接地
-DATA / SDA / TX等→ 接信号脚
我们先来看树莓派5这40个引脚里,最不能错的两类——电源脚和接地脚。
✅ 电源引脚:别乱接!3.3V和5V大不同
| 引脚位置 | 物理编号 | 功能说明 |
|---|---|---|
| 第2针 | Pin 2 | 5V电源输出(来自USB-C输入) |
| 第4针 | Pin 4 | 另一组5V输出,与Pin 2并联 |
| 第1针 | Pin 1 | 3.3V电源输出(由PMIC稳压生成) |
| 第17针 | Pin 17 | 另一组3.3V输出 |
重点来了:
- 5V脚很“能打”:可以直接驱动继电器、小风扇这类需要较高电压的设备,因为它走的是直通路线,电流能力强。
- 但3.3V脚很“娇气”:官方建议总负载不超过50mA。如果你同时接了好几个传感器,很容易导致电压跌落,轻则外设失灵,重则树莓派自己复位重启。
🔧经验提醒:
我曾经在一个项目中接了三个3.3V的I²C传感器+一个EEPROM,上电后树莓派频繁重启。排查半天才发现是3.3V带不动这么多负载。后来改用外部LDO稳压芯片单独供电,问题立刻解决。
✅ 所以记住这条铁律:
高功耗模块走5V,多个低功耗模块也尽量别全靠3.3V引脚供电。
⚠️ 更重要的是:绝对禁止把外部电源反灌进3.3V或5V引脚!
比如你想用电池给树莓派供电,千万别把电池正极接到Pin 1或Pin 2上。正确的做法是通过GPIO排针旁边的测试点或专用电源接口接入。
✅ 接地引脚(GND):最容易被忽视的关键角色
再强调一遍:没有地,就没有回路;没有回路,一切免谈。
树莓派5一共提供了8个GND引脚,分布在Pin 6、9、14、20、25、30、34、39这些位置。
它们内部都是连通的,你可以随便选一个用。那为什么要有这么多?
就是为了方便布线!
想象一下你要接五个模块,如果只有一个地脚,就得把五根黑线拧在一起,又乱又容易松脱。现在八个地脚均匀分布,每个模块就近接地,整洁又可靠。
📌实用技巧:
用杜邦线的时候,养成习惯——黑色线一律接GND。这样哪怕几个月后再来看这块板子,也能一眼看出哪里出了问题。
GPIO是什么?为什么它是“万能接口”?
如果说电源和地是“血液系统”,那么GPIO就是树莓派的“神经末梢”。
GPIO = General Purpose Input/Output(通用输入输出),简单说就是你可以用程序控制它的状态:让它输出高电平点亮LED,也可以读取外部开关是否按下。
但它不像USB那样即插即用,你需要明确告诉它:“你现在是用来输出信号,还是接收信号?”
基本参数要记牢
| 参数 | 数值 | 说明 |
|---|---|---|
| 工作电压 | 3.3V | 所有GPIO都是3.3V逻辑电平 |
| 单脚最大输出电流 | ~16mA | 足够点亮一个小LED |
| 总体最大电流 | ≤50mA | 所有GPIO加起来不能超过这个值 |
| 支持功能 | 输入/输出/PWM/I²C/SPI/UART等 | 多数脚可复用为通信协议 |
⚠️ 最关键的一条:GPIO只能承受3.3V!不能接5V信号!
很多老式模块(如某些Arduino传感器)输出的是5V高电平,直接连上去会损坏BCM2712芯片。这时候你需要加个电平转换器,或者用分压电阻降压。
两种编号方式,千万别搞混!
你在查资料时一定会遇到这个问题:有人说“GPIO18”,有人说“Pin 12”,到底谁对?
其实都对,只是标准不同:
| 编号类型 | 示例 | 说明 |
|---|---|---|
| 物理引脚号(BOARD) | Pin 12 | 按照从左到右、从上到下的顺序编号 |
| BCM编号(Broadcom) | GPIO18 | 芯片内部真实的GPIO编号,编程常用 |
👉 推荐使用BCM编号,因为几乎所有Python库(如RPi.GPIO、gpiozero)默认都用这个。
举个例子:
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) # 设置为BCM模式 GPIO.setup(18, GPIO.OUT) # 控制GPIO18(对应物理Pin 12)如果你误用了setmode(GPIO.BOARD)却传入BCM号,就会控制错引脚,后果可能是烧外设。
📌 小贴士:网上搜“raspberry pi pinout”就能找到官方引脚图,推荐用 pinout.xyz 这个网站,清晰直观,还能点击查看每个脚的功能。
特殊功能脚:I²C、SPI、UART怎么用?
除了普通GPIO,有些引脚还支持高级通信协议。掌握它们,你就能轻松连接显示屏、GPS、ADC采集模块等复杂外设。
🟡 I²C:两根线挂一堆设备
I²C是一种“多主多从”的串行总线,只需要两根线就能连接多个设备。
- SDA(数据线)→ GPIO2(Pin 3)
- SCL(时钟线)→ GPIO3(Pin 5)
优点是:
- 每个设备有自己的地址,最多可以挂128个;
- 接线少,适合紧凑设计;
- 很多传感器原生支持(如BME280、SSD1306 OLED)。
🛠 启用方法:
sudo raspi-config # → Interface Options → I2C → Enable启用后可以用命令扫描设备:
i2cdetect -y 1如果看到某个地址显示出来(比如0x3c),说明OLED屏已经连上了。
💡 注意:I²C需要上拉电阻(通常模块自带),不要重复添加。
🔵 SPI:高速传输首选
SPI比I²C更快,常用于需要大量数据传输的场景,比如驱动TFT屏幕、读取ADC芯片。
主要引脚如下:
| 信号 | BCM编号 | 物理引脚 |
|---|---|---|
| MOSI(主发从收) | GPIO10 | Pin 19 |
| MISO(主收从发) | GPIO9 | Pin 21 |
| SCLK(时钟) | GPIO11 | Pin 23 |
| CE0(片选0) | GPIO8 | Pin 24 |
| CE1(片选1) | GPIO7 | Pin 26 |
特点:
- 全双工通信,速率可达几十Mbps;
- 需要片选线来选择设备;
- 支持DMA,CPU负担小。
Python示例(使用spidev):
import spidev spi = spidev.SpiDev() spi.open(0, 0) # 总线0,设备0(CE0) spi.max_speed_hz = 1_000_000 # 设置速度 response = spi.xfer([0x01, 0x80]) # 发送指令 print("收到:", response) spi.close()🟣 UART:串口通信的老将
UART用于异步串行通信,常见于调试输出、蓝牙模块、GPS定位器。
默认引脚:
- TXD(发送)→ GPIO14(Pin 8)
- RXD(接收)→ GPIO15(Pin 10)
⚠️ 注意事项:
- 默认情况下,树莓派会把串口作为控制台输出(用来看启动日志)。如果你想用它接GPS模块,必须先关闭串口登录功能:
bash sudo raspi-config # → Interface Options → Serial Port → 关闭shell access
- 波特率要匹配外设(GPS通常是9600或115200bps)。
实战案例:搭建一个智能环境监测站
让我们把上面的知识串起来,做个真实项目:
目标:用树莓派5 + DHT11温湿度传感器 + OLED屏 + 继电器控制风扇。
接线清单:
| 模块 | 所需引脚 | 连接方式 |
|---|---|---|
| DHT11 | 3.3V, GND, GPIO4 | 数据脚接BCM 4(Pin 7) |
| OLED屏 | 3.3V, GND, SDA(GPI2), SCL(GPIO3) | 使用I²C |
| 继电器 | 5V, GND, GPIO17 | 控制脚接BCM 17(Pin 11) |
Python代码骨架:
import RPi.GPIO as GPIO import Adafruit_DHT from luma.core.interface.serial import i2c from luma.oled.device import ssd1306 # 初始化GPIO GPIO.setmode(GPIO.BCM) relay_pin = 17 GPIO.setup(relay_pin, GPIO.OUT) # 初始化传感器 sensor = Adafruit_DHT.DHT11 pin_dht = 4 # 初始化OLED serial = i2c(port=1, address=0x3C) device = ssd1306(serial) # 主循环 try: while True: humidity, temperature = Adafruit_DHT.read_retry(sensor, pin_dht) if temperature and temperature > 28: GPIO.output(relay_pin, GPIO.HIGH) # 开风扇 else: GPIO.output(relay_pin, GPIO.LOW) # 关风扇 # 显示在OLED上... finally: GPIO.cleanup()你看,整个过程其实就是:
接好电源地 → 配置功能脚 → 写代码读写数据。
新手避坑指南:那些没人告诉你却很重要的话
永远不要带电插拔GPIO线!
热插拔可能产生瞬态电压冲击,损坏SoC。断电操作是最基本的安全守则。加个限流电阻更安全
在GPIO和LED之间串一个220Ω电阻,既能保护LED也能防止电流过大。优先使用HAT扩展板
如果你要做长期项目,强烈建议使用兼容HAT标准的模块。它们自动对齐引脚,还有防呆设计,省心又安全。标签管理不可少
对于复杂的接线板,在旁边贴个小纸条标明“Pin 12: LED control”能帮你省下大量排查时间。学会用万用表
测电压、通断、短路,万用表是你最好的朋友。花几十块钱买一个数字表,能避免无数灾难。
写在最后:从“接对线”开始,走向真正的创造
很多人觉得嵌入式开发最难的是编程,其实不然。
真正的门槛,往往藏在那排小小的金属针脚之间——一次错误的接线,可能让你花三天写的代码毫无意义。
但反过来,一旦你掌握了这些基础知识,你会发现:
- 原来控制一个电机这么简单;
- 原来读取温度数据只要几行代码;
- 原来树莓派真的可以成为家里的“大脑”。
所以,别急着跑,先把走路练稳。
下一次当你拿起杜邦线时,不妨先问自己三个问题:
我的模块有没有接好电源?
地线是不是可靠连接?
GPIO编号有没有弄错?
答对了这三个,你就已经超过一半的新手了。
如果你在实践中遇到了其他问题,欢迎留言讨论。我们一起把这块小小的开发板,玩出无限可能。