为何树莓派Pico由电池供电时无法读取引脚状态?
问题分析与解决办法
你的问题核心是不同供电方式下的接地电位差异导致的:
- 电脑USB供电时,电脑的地和Pico的地是共地的,引脚接GND后能被正确识别为低电平;
- 廉价5V电源块的Micro-USB接口可能存在地悬浮的情况,也就是电源的GND和Pico的GND之间没有可靠导通,导致引脚接GND时,电平无法降到Pico识别低电平的阈值(通常≤0.8V),所以始终被判定为高电平。
下面是具体的排查和解决步骤:
1. 检查电源的接地可靠性
用万用表测试:
- 先测电源块Micro-USB输出的GND引脚(Micro-USB第4针)和Pico的GND引脚之间的电阻,正常应接近0Ω,说明导通良好;
- 再测引脚接GND时的引脚电压,正常情况应≤0.8V,如果电压远高于这个值,说明电源的地和Pico的地没有共地。
2. 更换正规电源块
换成品牌手机的5V充电头(比如小米、华为的普通充电头),这类电源的接地设计更规范,不会出现地悬浮问题。避免使用无品牌的廉价电源,很多这类电源为了省成本会省略接地相关电路。
3. 优化引脚配置(可选)
如果暂时找不到合适的电源,可以尝试改用外部上拉电阻替代内部上拉:
- 取一个10kΩ电阻,一端接Pico的3.3V引脚,另一端接GPIO3;
- 代码里把引脚初始化改成
En = Pin(3, Pin.IN)(去掉内部上拉配置); - 这样当引脚接GND时,电平会被强制拉到0V,不受电源地悬浮的影响。
4. 检查接线可靠性
确认GPIO3和Pico GND的连接没有虚焊、接触不良:
- 如果用杜邦线,换一根质量好的线试试;
- 如果是面包板连接,确保引脚插紧,没有松动。
你的代码本身没有问题,核心问题出在电源的接地设计上,按上面的步骤排查应该能解决。
内容的提问来源于stack exchange,提问作者C382




