news 2026/9/3 1:25:59

Raspberry Pi 4B插针定义图解:核心要点一文说清

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Raspberry Pi 4B插针定义图解:核心要点一文说清

树莓派4B插针全解析:从零开始搞懂每一个引脚

你有没有过这样的经历?手握树莓派4B,焊好排针,连上传感器,代码一跑——结果LED不亮、I²C设备找不到、串口输出乱码……最后发现,问题出在接错了引脚

别急,这太常见了。尤其对初学者来说,树莓派那40个密密麻麻的插针就像一张“天书图”,稍不留神就会踩坑。而其中最致命的错误,往往不是程序写错,而是物理连接搞混了编号体系——你以为你在控制GPIO17,实际上你动的是3.3V电源脚。

今天,我们就来彻底撕开这张“天书”的面纱。不讲虚的,只讲实战中真正关键的知识点:每个引脚到底是干什么的?怎么用才安全?哪些坑必须绕开?


40针插头长啥样?先看清楚再动手

Raspberry Pi 4B 的右下角有一组2×20的金属焊盘,这就是我们常说的“40针GPIO扩展口”。它不是插槽,是裸露的PCB引脚,需要你自己焊接排针或使用免焊排线(如鳄鱼夹、弹簧顶针)来连接外设。

这40个引脚按位置编号为Pin 1 到 Pin 40,这是物理编号,也就是你看得到的顺序。但注意!你在代码里写的GPIO17GPIO2这些,叫做BCM 编号,是芯片内部的逻辑编号。

📌重点来了
- 物理引脚Pin 11对应的是 BCM 编号的GPIO17
- 物理引脚Pin 3SDA(I²C数据线),对应 BCMGPIO2

如果你用Python写代码时设置的是BOARD模式,那就按物理编号走;如果用的是BCM模式(推荐),就必须查表对应到正确的GPIO号。混淆这两套编号,轻则功能异常,重则烧板子。

✅ 建议:始终使用 BCM 编号编程,并打印一份官方引脚图贴在工作台上。


电源和地线:别小看它们,搞错会炸

虽然只有8个电源/地引脚,但它们决定了整个系统的稳定性。

5V 引脚(Pin 2, 4)

直接来自USB-C供电输入,未经过稳压。你可以用它给继电器、电机驱动模块等高功耗设备供电,但它不能反向给树莓派供电!

⚠️ 千万别试图通过5V引脚给Pi反向上电——比如把移动电源接到5V和GND上想“开机”。这样操作极有可能损坏PMIC(电源管理芯片),尤其是旧版电源设计的Pi型号。

3.3V 引脚(Pin 1, 17)

由板载LDO稳压器提供,最大输出电流约50mA。适合给低功耗传感器(如DHT11、BME280)或逻辑电平转换芯片供电。

🚫 不要用来驱动多个LED阵列或大功率模块,否则可能导致电压跌落,系统重启甚至死机。

GND 接地引脚(共8个)

分布在两侧(Pin 6, 9, 14, 20, 25, 30, 34, 39),作用是提供信号回路参考点。

🔧 实践技巧:
- 尽量选择离你外设最近的GND引脚,减少环路面积
- 多设备共地时,确保所有GND最终连在一起,避免“浮地”导致通信失败


GPIO:你的数字控制中枢

树莓派有大约28个可编程GPIO引脚,支持输入、输出、中断检测和复用功能。

每个GPIO内部都有:
- 方向控制寄存器(输入/输出切换)
- 数据寄存器(读高低电平)
- 可配置的上拉/下拉电阻
- 边沿触发中断能力

典型用途

  • 读取按钮状态(输入模式)
  • 驱动LED(输出模式)
  • 触发外部事件(中断唤醒)

Python 控制示例(RPi.GPIO)

import RPi.GPIO as GPIO import time # 设置为 BCM 编号模式 GPIO.setmode(GPIO.BCM) LED_PIN = 17 # 物理引脚11 BUTTON_PIN = 27 # 物理引脚13 # 配置IO方向 GPIO.setup(LED_PIN, GPIO.OUT) GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 启用内部上拉 try: while True: if GPIO.input(BUTTON_PIN) == GPIO.LOW: # 按下按钮 GPIO.output(LED_PIN, GPIO.HIGH) else: GPIO.output(LED_PIN, GPIO.LOW) time.sleep(0.1) except KeyboardInterrupt: pass finally: GPIO.cleanup() # 释放资源,防止下次出错

💡 关键提醒:
- 所有GPIO均为3.3V TTL电平,不能耐受5V输入!
- 若需连接5V设备(如Arduino、某些继电器模块),必须加电平转换器(如TXS0108E、74HC125)
- 使用GPIO.cleanup()是良好习惯,避免下次运行时报“Channel already in use”


I²C:传感器的最佳拍档

I²C只有两根线:SDA(数据)、SCL(时钟),却能挂载多个设备,非常适合连接温湿度、气压、加速度计等低速传感器。

默认引脚

功能BCM GPIO物理引脚
SDAGPIO2Pin 3
SCLGPIO3Pin 5

如何启用?

sudo raspi-config nonint do_i2c 0

然后安装工具扫描设备:

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地址。

必须注意的问题

  • 必须外加上拉电阻(通常4.7kΩ接3.3V),虽然树莓派可以软件启用弱上拉,但长距离或多设备时仍建议外接
  • 多个设备地址冲突怎么办?可以用PCA9548A这类I²C多路复用器分路
  • 不要把SDA/SCL接到其他功能引脚上去“试试看”——它们是专用复用引脚,改不了

SPI:高速外设的首选通道

SPI比I²C快得多,常用于驱动TFT屏幕、ADC芯片、Flash存储器等。

主要引脚(spi0)

信号BCM GPIO物理引脚
MOSIGPIO10Pin 19
MISOGPIO9Pin 21
SCLKGPIO11Pin 23
CE0GPIO8Pin 24
CE1GPIO7Pin 26

CE就是片选(Chip Enable),每条SPI总线最多带两个固定片选设备。如果想接更多设备?只能自己用额外GPIO模拟片选。

Python 示例(spidev)

import spidev spi = spidev.SpiDev() spi.open(0, 0) # 总线0,设备0(CE0) spi.max_speed_hz = 1_000_000 # 1MHz # 发送3字节并接收响应 response = spi.xfer([0x01, 0x02, 0x03]) print(f"Received: {response}") spi.close()

🔧 工程建议:
- 高速信号走线尽量短,避免干扰
- 多从机时,每个设备要有独立的CE控制线
- 若传输不稳定,尝试降低时钟频率


UART:调试与串口通信的生命线

UART用于异步串行通信,最常见的用途是:
- 连接GPS模块
- 调试嵌入式设备(如STM32)
- 接蓝牙模块(HC-05)

默认串口映射

功能BCM GPIO物理引脚
TXDGPIO14Pin 8
RXDGPIO15Pin 10

⚠️ 注意:树莓派默认启用了串口登录shell(console login)。如果你想用UART收发数据,必须先关闭这个功能:

sudo raspi-config # → Interface Options → Serial Port → Disable login shell, enable hardware port

Python 串口通信示例

import serial ser = serial.Serial('/dev/ttyS0', baudrate=115200, timeout=1) ser.write(b'AT\r\n') # 发送指令 if ser.in_waiting: print(ser.read(ser.in_waiting)) ser.close()

📌 连接要点:
- Pi的TXD接外设的RXD,反之亦然
- 波特率要一致(常用9600、115200)
- 长距离通信建议转成RS485差分信号


PWM 输出:精准控制模拟量

虽然GPIO是数字的,但通过PWM(脉宽调制)也能实现“类模拟”输出,比如调节LED亮度、控制舵机角度。

树莓派有两个硬件PWM通道:
- PWM0 → GPIO12(Pin 32)
- PWM1 → GPIO13(Pin 33)

也可以用软件模拟PWM(任意GPIO),但精度和稳定性不如硬件。

示例:用硬件PWM控制舵机

import RPi.GPIO as GPIO servo_pin = 12 GPIO.setmode(GPIO.BCM) GPIO.setup(servo_pin, GPIO.OUT) # 创建PWM对象,50Hz(舵机标准频率) pwm = GPIO.PWM(servo_pin, 50) pwm.start(7.5) # 中间位置(90度) try: while True: angle = input("Enter angle (0-180): ") duty = 2.5 + (float(angle) / 180.0) * 10 # 映射到占空比 pwm.ChangeDutyCycle(duty) except KeyboardInterrupt: pass finally: pwm.stop() GPIO.cleanup()

🎯 提示:舵机通常接受0.5ms~2.5ms脉冲(对应0°~180°),即2.5%~12.5%占空比(50Hz下)。


实战中的典型问题与解决方案

❓ 问题1:I²C设备搜不到?

  • 检查电源是否正常(3.3V够不够?)
  • 确认SDA/SCL没接反
  • 是否忘了外加上拉电阻?
  • 地线有没有接通?

❓ 问题2:SPI通信丢包严重?

  • 降低时钟频率试试
  • 检查MOSI/MISO是否交叉
  • 避免与高频信号(如WiFi)靠近布线

❓ 问题3:GPIO驱动不了继电器?

  • 继电器模块多数需要5V驱动,而Pi的GPIO只有3.3V
  • 解决方案:使用光耦隔离模块 + 外部5V供电,GPIO仅作开关信号

❓ 问题4:串口收不到数据?

  • 是否关闭了串口登录shell?
  • TXD/RXD是否交叉连接?
  • 波特率是否匹配?

设计建议:让你的项目更可靠

  1. 电源分离原则
    大电流设备(如电机、加热片)务必独立供电,避免拉低树莓派主电源造成重启。

  2. 信号完整性优先
    - 高频信号远离模拟输入路径
    - 使用双绞线或屏蔽线延长通信距离
    - 在暴露接口处增加TVS二极管防静电(ESD)

  3. 可维护性设计
    - 用标签标注各功能区引脚
    - 使用排针保护盖防止误触
    - 在代码中添加清晰注释:“GPIO17 → LED_STATUS”

  4. 热插拔防护
    - 禁用未使用的复用功能(如不用SPI就disable)
    - 上电前确认连线无误


结语:掌握插针定义,才是真正入门

当你第一次点亮一个LED,也许觉得很简单。但当你面对十几个传感器、几块显示屏、一堆执行器的时候,你会发现:真正的挑战不在代码,而在硬件连接的细节里。

理解树莓派4B这40个引脚的功能分布、电气特性、复用规则,是你构建稳定系统的第一步。记住几个核心原则:

  • ✅ 用BCM编号编程
  • ✅ 所有GPIO都是3.3V,禁接5V
  • ✅ I²C要加上拉电阻
  • ✅ UART要用对/dev/ttyS0
  • ✅ 大功率设备独立供电

把这些记在心里,贴在桌上,写进开发规范。你会发现,那些曾经让人抓狂的“玄学问题”,其实都有迹可循。

如果你正在做一个物联网网关、自动化控制器或者创客项目,不妨停下来,重新审视一下你的接线图。说不定,某个闪烁不定的传感器,只是因为少了一个4.7kΩ的电阻。

欢迎在评论区分享你的“踩坑”经历,我们一起避坑前行。

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

Obfuscar混淆工具实战指南:保护.NET代码安全的核心技巧

Obfuscar混淆工具实战指南:保护.NET代码安全的核心技巧 【免费下载链接】obfuscar Open source obfuscation tool for .NET assemblies 项目地址: https://gitcode.com/gh_mirrors/ob/obfuscar 在当今软件开发领域,代码保护已成为不可忽视的重要环…

作者头像 李华
网站建设 2026/9/3 0:04:33

如何破解高难度PDF?用PaddleOCR-VL-WEB轻松搞定多语言文档

如何破解高难度PDF?用PaddleOCR-VL-WEB轻松搞定多语言文档 1. 写在前面 在企业级文档自动化处理场景中,复杂排版PDF的精准解析能力已成为衡量技术实力的重要指标。传统OCR工具在面对多栏布局、数学公式、跨页表格或手写体等元素时往往力不从心&#xf…

作者头像 李华
网站建设 2026/9/2 22:28:36

FACT_core固件分析工具终极指南:从零开始掌握固件安全分析

FACT_core固件分析工具终极指南:从零开始掌握固件安全分析 【免费下载链接】FACT_core Firmware Analysis and Comparison Tool 项目地址: https://gitcode.com/gh_mirrors/fa/FACT_core 你是否曾经面对一个陌生的固件文件感到无从下手?想要快速分…

作者头像 李华
网站建设 2026/9/3 0:06:05

IAR与Modbus协议实现:从零开始实战

从零构建工业通信:IAR 环境下 Modbus RTU 的实战精要在现代嵌入式系统开发中,工业现场设备之间的稳定通信是系统可靠运行的生命线。而在这条“生命线”上,Modbus 协议早已成为最经典、最广泛部署的通信标准之一。它简单、开放、兼容性强&…

作者头像 李华
网站建设 2026/9/2 22:29:50

GPEN镜像适合哪些场景?一文说清楚

GPEN镜像适合哪些场景?一文说清楚 1. 技术背景与核心价值 在数字图像处理领域,人像质量退化问题长期困扰着影像修复、内容创作和历史资料数字化等应用场景。低分辨率、模糊、压缩失真以及老化痕迹严重影响了人脸图像的可读性与视觉体验。GPEN&#xff…

作者头像 李华
网站建设 2026/9/2 22:26:58

模型加载失败如何处理?常见报错解决方案汇总

模型加载失败如何处理?常见报错解决方案汇总 在使用 Speech Seaco Paraformer ASR 阿里中文语音识别模型(构建 by 科哥) 的过程中,用户可能会遇到“模型加载失败”等各类启动或运行时错误。这类问题通常与环境依赖、路径配置、硬…

作者头像 李华