You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspberry Pi 4连接ADS1115报错:No Hardware I2C on (scl,sda)=(3,2)

问题描述

我正在使用Raspberry Pi 4 Model B、ADS1115和电压传感器进行电压测量,设备运行默认Raspbian系统,已安装Python 3.11。因无法直接安装adafruit-circuitpython-ads1x15,我创建了虚拟环境~/.env并激活,成功安装该包。

运行以下测试代码时:

from numpy import interp
import board
import time
import busio
import adafruit_ads1x15.ads1115 as ADS
from adafruit_ads1x15.analog_in import AnalogIn

# Initialize the I2C interface
i2c = busio.I2C(board.SCL, board.SDA)

出现如下错误:

(.env) prototype@raspberrypi:~ $ python "/home/prototype/Downloads/RaspberryPiVoltageReporter/TestADS1115Main.py"
Traceback (most recent call last):
  File "/home/prototype/Downloads/RaspberryPiVoltageReporter/TestADS1115Main.py", line 9, in <module>
    i2c = busio.I2C(board.SCL, board.SDA)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prototype/.env/lib/python3.11/site-packages/busio.py", line 38, in __init__
    self.init(scl, sda, frequency)
  File "/home/prototype/.env/lib/python3.11/site-packages/busio.py", line 168, in init
    raise ValueError(
ValueError: No Hardware I2C on (scl,sda)=(3, 2)
Valid I2C ports: ((1, 3, 2), (0, 1, 0), (10, 45, 44))
(.env) prototype@raspberrypi:~ $

接线情况:RPi的(1)3.3V接ADS1115的VDD,(3)SDA接SDA,(5)SCL接SCL,(9)GND接GND,所有线路通断测试正常。ADS1115的VDD与GND间电压为2.4V,当前使用1.5A USB-C充电器供电,系统出现低电压警告甚至重启,更换电池后问题依旧。参考在线教程接线无误,但仍出现该错误,请问故障原因是什么?如何进一步排查?

故障原因分析与排查步骤

核心关联问题

错误提示的I2C端口不可用,本质和供电不足直接相关,同时可能伴随I2C接口未正确启用的问题。

1. 优先解决供电问题

ADS1115的VDD仅2.4V远低于标称3.3V,说明RPi自身供电不足,导致GPIO输出电压被拉低:

  • 更换至少3A的USB-C充电器(RPi 4带外设满载需要3A以上供电),1.5A充电器完全无法满足需求;
  • 检查USB-C线质量,劣质线材会导致压降过大,换用带屏蔽的优质USB-C线;
  • 若用电池供电,确保电池输出电压稳定在5V,且输出电流能达到3A以上,同时检查电池与RPi的连接是否存在压降。

2. 确认I2C接口启用状态

  • 运行sudo raspi-config,进入「Interface Options」→「I2C」,确认已启用I2C接口;
  • 重启RPi后,执行ls /dev/i2c*,正常应能看到/dev/i2c-1(对应默认I2C1端口);
  • 若未出现,检查/boot/config.txt文件,确保存在dtparam=i2c_arm=on且未被注释,修改后重启设备。

3. 修正代码中的I2C初始化

错误提示的有效端口包含(1, 3, 2),即I2C1总线编号为1,对应SCL=3、SDA=2,可以尝试显式指定参数初始化:

# 替代原来的i2c初始化代码
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
# 或者直接指定I2C1的引脚
# i2c = busio.I2C(board.SCL1, board.SDA1)

4. 硬件排查补充

  • 供电问题解决后,运行i2cdetect -y 1,查看是否能检测到ADS1115的默认地址(通常为0x48);
  • 检查ADS1115的ADDR引脚,若未接地会导致地址变化,确保ADDR引脚接地以使用默认地址;
  • 测量RPi的GPIO3(SCL)和GPIO2(SDA)引脚电压,正常应为3.3V,若低于3V说明供电或引脚存在故障。

内容的提问来源于stack exchange,提问作者KulaGGin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:57:45