news 2026/7/8 17:03:53

图解说明树莓派GPIO插针定义及用途

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图解说明树莓派GPIO插针定义及用途

一张图看懂树莓派GPIO:从接线“翻车”到轻松驾驭硬件控制

你有没有过这样的经历?
精心搭好电路,烧录完代码,满怀期待地通电——结果树莓派直接死机、外设毫无反应,甚至闻到了一丝焦糊味……最后发现,罪魁祸首竟是一根跳线插错了位置

别慌,这几乎是每个玩过树莓派的新手都踩过的坑。而问题的核心,往往就出在那个看似简单的40针插头上:你真的搞清楚了每根引脚是干什么的吗?

今天,我们就来彻底拆解树莓派上的GPIO插针,不讲玄学,只讲实战。从物理布局到编号陷阱,从点亮LED到驱动传感器,一步步带你避开雷区,真正把这组小针脚变成你掌控硬件世界的钥匙。


先认脸:40个引脚,到底谁是谁?

打开你的树莓派(B+/3B/4B/Zero等主流型号),主板一侧有一排2×20排列的金属针脚,这就是传说中的GPIO Header——通用输入输出接口阵列。

它不像USB或HDMI那样“即插即用”,而是需要你手动连接导线、焊接排针、配置软件。但正因如此,它的灵活性也远超普通接口。

两种编号方式,千万别混!

这是新手最容易栽跟头的地方:同一个物理引脚,在不同系统下叫法完全不同

物理位置编号类型名称
左上角第一针物理编号(Board)Pin 1
同一针脚BCM编号(Broadcom)GPIO 2
  • 物理编号(Board Numbering):按顺序数就行,1~40,简单直观。
  • BCM编号:基于SoC芯片内部寄存器定义,比如GPIO18、GPIO27,才是大多数程序真正使用的编号。

💡记住一句话:写代码时几乎都用BCM编号;接线查表时建议对照物理编号图,避免数错。

举个例子:
- 物理引脚Pin 7对应的是BCM GPIO4
- 物理引脚Pin 11BCM GPIO17
- 如果你在代码里写了GPIO.setup(7, ...)却以为它是 Pin 7,那你就操作了 BCM GPIO7(其实是物理 Pin 26),完全不是你想控制的那个!

所以——永远先确认你在用哪种编号模式!


引脚分类图谱:哪些能输出?哪些走通信?

别再一根根背了!我们按功能把这40个引脚分成几大类,一目了然:

┌─────┬───────────────┬────────────────────┐ │ 类型 │ 功能 │ 关键引脚示例 │ ├─────┼───────────────┼────────────────────┤ │ 电源 │ 提供稳定电压 │ Pin 1 (3.3V), │ │ │ │ Pin 2 (5V), │ │ │ │ Pin 6/9/20/25 (GND) │ ├─────┼───────────────┼────────────────────┤ │ 数字IO│ 可编程输入/输出 │ 大部分 BCM GPIO2~27 │ ├─────┼───────────────┼────────────────────┤ │ I²C │ 两线串行总线 │ SDA: GPIO2 (Pin3) │ │ │ 连接传感器、OLED屏 │ SCL: GPIO3 (Pin5) │ ├─────┼───────────────┼────────────────────┤ │ SPI │ 高速同步通信 │ MOSI: GPIO10 (Pin19) │ │ │ 接ADC、显示屏常用 │ MISO: GPIO9 (Pin21) │ │ │ │ SCLK: GPIO11 (23) │ ├─────┼───────────────┼────────────────────┤ │ UART│ 串口调试主力 │ TXD: GPIO14 (Pin8) │ │ │ 常用于与MCU通信 │ RXD: GPIO15 (Pin10) │ ├─────┼───────────────┼────────────────────┤ │ PWM │ 脉宽调制 │ GPIO12, 13, 18, 19 │ │ │ 控制灯亮度、电机转速 │ 支持硬件PWM │ └─────┴───────────────┴────────────────────┘

📌重点提醒
- 所有GPIO工作在3.3V逻辑电平,不能直接接收5V信号!否则可能永久损坏SoC。
- 总输出电流不要超过50mA合计,单脚建议不超过16mA。
- 某些引脚自带可编程上拉/下拉电阻,适合按钮防抖。


实战教学:三步教你正确使用GPIO

第一步:点亮一颗LED(数字输出)

最经典的入门项目,但很多人忽略了关键细节。

接线要点
  • LED正极 → 通过一个220Ω~1kΩ限流电阻→ BCM GPIO18(物理Pin 12)
  • LED负极 → GND(选任意GND引脚,如Pin 39)

为什么加电阻?因为GPIO最大只能安全输出约16mA,而LED直连会瞬间拉高电流,轻则烧LED,重则伤GPIO。

Python代码(使用RPi.GPIO库)
import RPi.GPIO as GPIO import time # 设置为BCM编号模式 GPIO.setmode(GPIO.BCM) # 配置GPIO18为输出 GPIO.setup(18, GPIO.OUT) try: while True: GPIO.output(18, GPIO.HIGH) # 点亮 time.sleep(1) GPIO.output(18, GPIO.LOW) # 熄灭 time.sleep(1) except KeyboardInterrupt: pass finally: GPIO.cleanup() # 必须释放资源!

GPIO.cleanup()很重要!它会将所有被占用的引脚恢复为默认状态,防止下次运行时报错。


第二步:读取I²C传感器数据(以BME280为例)

想做温湿度监控?环境监测?I²C是你绕不开的好帮手。

如何启用I²C?

很多用户发现程序跑不起来,其实是I²C没开!

终端执行:

sudo raspi-config

进入 →Interface OptionsI2C→ 选择Yes启用。

然后安装工具检查设备是否在线:

sudo apt install i2c-tools sudo i2cdetect -y 1

如果一切正常,你会看到类似输出:

0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76

看到76?说明BME280已被识别(地址通常是0x76或0x77)。

读取数据代码(推荐gpiozero + smbus2)
from gpiozero import CPUTemperature import smbus2 import bme280 import time # 初始化I²C总线 with smbus2.SMBus(1) as bus: calibration_params = bme280.load_calibration_params(bus, 0x76) while True: data = bme280.sample(bus, 0x76, calibration_params) print(f"温度: {data.temperature:.1f}°C") print(f"湿度: {data.humidity:.1f}%") print(f"气压: {data.pressure:.1f} hPa") time.sleep(2)

这类传感器通常精度高、功耗低,非常适合长期部署的物联网节点。


第三步:用PWM实现无级调光

普通开关只能亮/灭,但PWM可以让你实现“渐变呼吸灯”、“风扇变速”、“舵机精准定位”。

硬件支持情况

树莓派只有少数几个引脚支持硬件PWM(GPIO12, 13, 18, 19),其余只能靠软件模拟(稳定性差,不推荐用于电机控制)。

使用gpiozero简化开发
from gpiozero import PWMLED from time import sleep led = PWMLED(18) # 使用硬件PWM引脚 while True: led.value = 0.1 # 微光 sleep(1) led.value = 0.5 # 半亮 sleep(1) led.value = 1.0 # 全亮 sleep(1)

是不是比直接操作频率和占空比简单多了?gpiozero就是为了让初学者少碰底层细节而生的。

⚠️重要提示:PWM可用于调节小功率负载(如LED),但若要驱动电机、继电器等大电流设备,请务必通过MOSFET或驱动模块隔离,保护树莓派!


常见“翻车”现场 & 解决方案

❌ 问题1:外设没反应,i2cdetect也看不到设备

  • ✅ 检查I²C是否已启用(raspi-config
  • ✅ 查电源是否接对(3.3V非5V)
  • ✅ 检查SDA/SCL是否接反(Pin3/Pin5)
  • ✅ 看器件地址是否匹配(有些模块可通过跳线切换地址)

❌ 问题2:程序报错“Permission denied”或“Access to GPIO denied”

  • ✅ 加sudo执行脚本(临时解决)
  • ✅ 更好的做法:将用户加入gpio
    bash sudo usermod -aG gpio $USER
    重启后生效,无需每次sudo。

❌ 问题3:树莓派莫名其妙重启或死机

  • ✅ 极可能是GPIO短路或接入了5V信号
  • ✅ 检查是否有误接到5V输出引脚(如Pin 2或4)
  • ✅ 建议使用电平转换器(如TXS0108E)连接5V设备

❌ 问题4:脚本开机无法自动运行

  • ✅ 不要用crontab的@reboot,容易因依赖未加载失败
  • ✅ 推荐使用systemd服务管理:

创建/etc/systemd/system/myproject.service

[Unit] Description=My GPIO Project After=network.target [Service] ExecStart=/usr/bin/python3 /home/pi/project/main.py WorkingDirectory=/home/pi/project User=pi Group=pi Restart=always [Install] WantedBy=multi-user.target

启用并启动:

sudo systemctl enable myproject.service sudo systemctl start myproject.service

设计建议:如何安全可靠地使用GPIO?

  1. 绝不裸奔供电
    树莓派的5V引脚来自Micro USB或Type-C电源,但GPIO不能对外提供大电流。电机、多灯带、继电器组请独立供电,并做好共地处理。

  2. 电平转换是保命符
    和Arduino、ESP32等5V系统通信时,必须使用双向电平转换模块,否则等于拿3.3V芯片挑战5V耐压极限。

  3. 画图+贴标双保险
    用Fritzing画一份清晰的接线图,实物上用彩色杜邦线区分功能(红=电源,黑=地,黄=信号)。维护效率提升80%。

  4. 优先使用高级库
    初期别硬刚寄存器。gpiozero>RPi.GPIO> 直接操作sysfs文件,层层递进更稳妥。

  5. 留出调试通道
    把关键状态通过UART发给另一块Pico或CH340模块记录日志,故障排查事半功倍。


结语:GPIO不只是针脚,更是通往物理世界的入口

当你第一次成功用代码点亮一盏灯、读取一个温度值、转动一个舵机时,那种“我能控制现实”的感觉,正是嵌入式开发的魅力所在。

而这一切的起点,就是理解那排小小的40针插头。

掌握树莓派GPIO插针定义,不是为了背下每一个编号,而是建立起一种思维:如何让软件与硬件对话?如何设计安全、稳定、可维护的交互系统?

未来,你可以用它做一个智能台灯、一台气象站、一辆遥控小车,甚至是一个工业级的数据采集终端。

而当有一天你开始搭配树莓派Pico(RP2040)做异构协同时——主控负责网络与UI,协处理器处理实时IO——你会发现,今天打下的基础,早已为你铺好了前行的路。

如果你正在尝试某个GPIO项目却卡住了,欢迎在评论区留言,我们一起排错、优化、迭代。毕竟,每一个“啊哈!”时刻的背后,都有无数次“咦?怎么又不行了?”的坚持。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 19:27:01

RedisDesktopManager终极指南:解锁Redis可视化管理新维度

RedisDesktopManager终极指南:解锁Redis可视化管理新维度 【免费下载链接】RedisDesktopManager RedisInsight/RedisDesktopManager: RedisDesktopManager 是一个用于 Redis 数据库管理的桌面应用程序,可以用于连接和操作 Redis 数据库,支持多…

作者头像 李华
网站建设 2026/6/26 7:56:08

Windows免安装Postman便携版:终极API测试工具完整指南

Windows免安装Postman便携版:终极API测试工具完整指南 【免费下载链接】postman-portable 🚀 Postman portable for Windows 项目地址: https://gitcode.com/gh_mirrors/po/postman-portable 在当今快节奏的开发环境中,API测试工具的便…

作者头像 李华
网站建设 2026/7/2 7:32:05

NodeMCU PyFlasher完整指南:三分钟掌握ESP8266图形化烧录工具

NodeMCU PyFlasher完整指南:三分钟掌握ESP8266图形化烧录工具 【免费下载链接】nodemcu-pyflasher Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython. 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-pyflasher NodeMCU Py…

作者头像 李华
网站建设 2026/7/1 6:26:33

解密AI图像修复:5大核心技术重塑数字视觉体验

数字图像处理领域正迎来一场革命性的变革。当传统马赛克技术只能单向模糊信息时,AI驱动的智能算法正在重新定义图像修复的可能性。今天,我们将深入探索如何利用深度学习技术实现图像的智能修复与保护。 【免费下载链接】DeepMosaics Automatically remov…

作者头像 李华
网站建设 2026/7/4 17:28:16

GSE宏编译器完整攻略:魔兽世界自动化操作终极方案

GSE宏编译器完整攻略:魔兽世界自动化操作终极方案 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. It uses Travis for UnitTests, Coveralls to report on test coverage and the C…

作者头像 李华
网站建设 2026/7/1 19:37:16

CodeCombat编程实战指南:在游戏中掌握代码技能

CodeCombat编程实战指南:在游戏中掌握代码技能 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat CodeCombat是一款革命性的开源教育平台,通过游戏化编程学习的方式让编程教育…

作者头像 李华