MPU6050/GY-86模块I2C扫描出现3个未知地址的问题求助
问题分析与解决
首先要明确:GY-86不是单一传感器模块,它本身就集成了多个I2C设备,这是你扫出多个地址的核心原因之一:
- 0x68(十进制104):你预期的MPU6050(加速度计+陀螺仪)
- 0x1E(十进制30):模块自带的HMC5883L磁力计,这是GY-86标准配置里的一部分,并非额外接入的设备
而对于额外出现的0x6D(十进制109),可能的原因有以下几种:
1. 扫描代码调用错误
你的代码里使用了I2C.scan(i2c),这是错误的调用方式——scan是I2C实例的方法,不是类方法。正确的写法应该是:
from machine import Pin, I2C i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) devices = i2c.scan() # 改为实例调用 print(devices)
错误的调用逻辑可能导致扫描结果异常,返回不存在的设备地址。
2. I2C总线信号不稳定
Raspberry Pi Pico的I2C引脚默认没有内部上拉电阻,如果你的GY-86模块也没有自带拉电阻,会导致SDA/SCL信号波动,出现误报地址。解决方法:
- 给SDA(GP0)和SCL(GP1)引脚外接10kΩ的上拉电阻
- 或者在初始化引脚时开启内部上拉:
i2c = I2C(0, sda=Pin(0, Pin.PULL_UP), scl=Pin(1, Pin.PULL_UP), freq=400000)
3. 偶发扫描误码或模块版本差异
部分GY-86模块可能因批次不同集成了额外传感器,或者扫描时因电磁干扰出现偶发误码。可以多次运行扫描代码,看0x6D是否每次都出现:
- 如果只是偶尔出现,大概率是信号干扰导致的误报
- 如果每次都出现,可以查阅你手中GY-86的模块手册,确认是否存在第三个I2C设备
内容的提问来源于stack exchange,提问作者Celeste
相关产品推荐
相关产品推荐

