很多人第一次拿到树莓派 Pico(注意:官方型号是 Pico,不是 P1,这里我们按照 Pico 来讲解,因为 P1 并不存在)时,第一反应都是:“这不就是个单片机吗?接个 USB 线就能跑了吧?”
确实,接上 USB 就能跑。但如果你想让它稳定运行、不重启、不莫名其妙死机,或者你想给外接传感器供电,那就得仔细研究一下它的供电架构了。今天咱们不聊虚的,直接从官方文档里扒出干货,结合实坑案例,把树莓派 Pico 的供电问题讲得明明白白。
一、先搞清“电压范围”:5V 还是 3.3V?
树莓派 Pico 内部有一颗 RP2040 芯片,这颗芯片的核心工作电压是 3.3V。这是铁律。但问题来了:你从哪来的 3.3V?
官方推荐输入电压:5V USB
树莓派 Pico 板载了一个 电源管理 IC(PMIC),型号是 NCP187(早期批次可能是其他型号,但功能类似)。它的作用是把输入的 5V(比如从电脑 USB 口或充电宝来的)转换成稳定的 3.3V 给芯片供电。
- VBUS 引脚(GPIO 40):直接连接 USB 的 5V 输入。
- VSYS 引脚(GPIO 36):这是“系统电压”输入,你可以从这里注入 1.8V 到 5.5V 的电压,板载的 LDO(低压差线性稳压器)会把它调节到 3.3V。
- 3.3V 引脚(GPIO 37):这是输出,不是输入!别傻乎乎地往里灌 3.3V,除非你明确知道自己在干什么。
关键点:VSYS 才是“真·电源入口”
如果你不用 USB,而是用电池供电,一定要接到 VSYS 引脚,而不是 5V 或 3.3V。因为:
- 接到 5V:信号会绕过板载稳压,直接进芯片?不对,RP2040 核心不能承受 5V!这会直接烧芯片。
- 接到 3.3V:同上,这是输出引脚,内部有保护电路,强行输入可能导致电流倒灌或稳压芯片冲突。
- 接到 VSYS:电流经过板载 LDO,变成干净的 3.3V,安全又稳定。
避坑提醒:有些新手看到“5V 输入”就以为可以随便接 5V 到任意引脚,这是错误的。5V 只能接 VBUS,其他引脚接 5V 等于自杀。
二、电源稳定性:为什么你的 Pico 总是“抽风”?
你是不是遇到过这种情况:
- 程序跑得好好的,突然重启。
- 接了个传感器,一工作 Pico 就死机。
- 用电池供电,电量一低,Pico 就罢工。
这些问题的根源,90% 是电源不稳定。RP2040 芯片对电源噪声非常敏感,尤其是当它驱动 SPI、UART 或 USB 高速通信时,电流瞬时波动很大。
官方建议的电源规格
- VSYS 输入电压范围:1.8V – 5.5V
- 推荐电压:3.3V – 5.0V(用电池时,2 节锂电池串联是 7.4V,超过 5.5V,会损坏板载稳压芯片!)
- 最大电流:板载 3.3V LDO 最大输出 300mA。如果你外接的传感器总电流超过这个值,稳压芯片会过热甚至关闭保护。
常见不稳定原因及解决方案
1. 电源噪声干扰
现象:示波器上看 3.3V 引脚有毛刺,程序偶尔崩溃。
原因:USB 电源本身就有噪声,或者板载 LDO 的滤波电容不够。
解决:
- 在 VSYS 和 GND 之间加一个 10uF 的电解电容 + 100nF 的陶瓷电容,靠近引脚焊接。
- 如果可能,用外部的 3.3V 稳压模块(如 AMS1117-3.3)给 VSYS 供电,而不是直接用 USB 5V。
2. 电流不足
现象:接了舵机、LED 灯带或多个传感器后,Pico 重启。
原因:RP2040 的 GPIO 引脚最大输出电流是 4mA,3.3V 引脚最大输出 300mA。外接负载一多,电压被拉低。
解决:
- 外部供电:给外设单独供电,Pico 只负责信号控制(通过光耦或电平转换芯片隔离)。
- 增加电容:在外设电源入口处加 100uF 以上的大电容,吸收瞬时电流冲击。
3. 电池电压过低
现象:用 18650 锂电池(标称 3.7V)供电,电量剩 20% 时 Pico 重启。
原因:锂电池放电末期电压可能降到 3.0V 以下,而 RP2040 的最小工作电压是 1.8V(通过 VSYS 输入),但板载 LDO 有压降,通常要求 VSYS ≥ 3.3V 才能保证稳定输出 3.3V。
解决:
- 使用带 低压保护电路 的电池模块,确保输出电压不低于 3.5V。
- 或者改用 5V 充电宝 供电,Pico 的 USB 接口可以直接接受 5V。
三、常见供电方案详解(附代码/接线图)
下面给出三种最常用的供电方案,从简单到复杂,你可以根据自己的需求选择。
方案一:USB 供电(最简单,适合开发调试)
接线:
电脑 USB 口 ---(USB 线)--- Pico 的 USB 接口
优点:
- 即插即用,无需额外电源。
- 可以通过
machine.distlectronic()读取电池电压(如果有外接电池)。
缺点:
- 依赖电脑,无法便携。
- USB 电源噪声可能影响敏感传感器。
代码示例:检测 USB 是否连接
import machine
import time
# 读取 ADC0(GPIO 29),它连接内部温度传感器和电源监测
adc = machine.ADC(29)
conversion_factor = 3.3 / (65535)
while True:
reading = adc.read_u16() * conversion_factor
print(f"Internal Voltage: {reading:.2f} V")
time.sleep(1)
注意:ADC0 读出来的不是 USB 电压,而是内部稳压后的 3.3V 参考电压。如果这个值低于 3.1V,说明电源有问题。
方案二:外部 5V 供电(适合需要更多电流的场景)
接线:
5V 电源(充电宝/USB 适配器) ---(正极)--- Pico 的 VBUS 引脚(GPIO 40)
5V 电源 ---(负极)--- Pico 的 GND 引脚
优点:
- 可以脱离电脑独立运行。
- 5V 电源稳定,适合驱动 LED 灯带、屏幕等。
缺点:
- 仍然经过板载 LDO,最大 300mA 输出。
- 如果 5V 电源有噪声,会影响 Pico。
避坑:
- 确保 5V 电源的电流能力 ≥ 500mA,避免电压跌落。
- 不要同时使用 USB 和外部 5V 供电!这会导致电流倒灌,可能烧毁 USB 接口或电源。
方案三:锂电池直接供电(最便携,适合野外项目)
接线:
锂电池正极(3.7V-4.2V) ---(通过开关)--- Pico 的 VSYS 引脚(GPIO 36)
锂电池负极 --- Pico 的 GND 引脚
优点:
- 体积小,重量轻,适合便携设备。
- VSYS 范围宽,锂电池放电曲线完全覆盖。
缺点:
- 需要额外购买电池盒和开关。
- 要注意电池电压不能超过 5.5V。
代码示例:监测电池电压,低电量提示
import machine
import time
adc = machine.ADC(29)
conversion_factor = 3.3 / 65535
def get_battery_voltage():
reading = adc.read_u16() * conversion_factor
# VSYS 和电池电压近似相等(忽略二极管压降)
return reading
while True:
voltage = get_battery_voltage()
print(f"Battery Voltage: {voltage:.2f} V")
if voltage < 3.3:
print("Warning: Low battery!")
elif voltage < 3.0:
print("Critical: Shutdown soon!")
# 这里可以加代码让设备安全关机,比如断开 GPIO 控制继电器
time.sleep(10)
四、高阶玩家:如何绕过板载稳压,自己供电?
如果你做的是低功耗产品,或者需要非常干净的电源,可以考虑绕过板载 LDO,直接用外部 3.3V 电源给 Pico 供电。
接线:
外部 3.3V 稳压模块 ---(正极)--- Pico 的 3.3V 引脚(GPIO 37)
外部 3.3V 稳压模块 ---(负极)--- Pico 的 GND 引脚
注意:
- 此时 VBUS 和 VSYS 都不能接电,否则会和外部电源冲突。
- 外部 3.3V 电源必须非常稳定,纹波要小,否则 RP2040 会不稳定。
- 建议在外置 3.3V 电源入口处加 10uF 电容 滤波。
优点:
- 可以输出更大电流(取决于你的外部电源)。
- 减少板载 LDO 发热,提高效率。
缺点:
- 失去 USB 供电能力(除非你用双电源管理电路,比较复杂)。
- 需要额外购买 3.3V 稳压模块。
五、总结:避坑口诀
为了让你更好记住,我给你编了个口诀:
USB 供电最方便,5V 输入别接错。 VSYS 才是真入口,电池供电用它妥。 3.3V 引脚是输出,强行灌入烧芯片。 电流不够就重启,外加电容保平安。 双电源切忌同时上,倒灌电流毁一切。
六、最后的话
树莓派 Pico 的供电其实不难,关键在于理解它的电源架构。只要你记住:
- VSYS 是输入,3.3V 是输出。
- 不要同时接 USB 和外部电源。
- 外接负载电流超过 300mA 时,务必外部供电。
基本就不会出大问题了。希望这篇指南能帮你避开那些让人头疼的“玄学”故障,让你的 Pico 项目稳稳当当跑起来!
如果你还有其他供电相关的问题,欢迎留言讨论,咱们一起把这个问题彻底搞懂。