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

i2cdetect未显示任何地址:NodeMCU ESP8266连接OLED 128*64寻址故障

NodeMCU ESP8266 搭配I2C 128*64 OLED 地址检测无返回问题排查

常见原因

  • 硬件接线错误或接触不良
  • 代码I2C引脚配置与实际接线不匹配,或串口波特率设置不一致
  • OLED屏或NodeMCU对应GPIO引脚硬件损坏
  • I2C总线信号强度不足,缺少必要上拉电阻

对应解决方案

硬件接线排查

  • 确认引脚对应关系:NodeMCU ESP8266 默认I2C引脚为 SDA = D2(GPIO4)、SCL = D1(GPIO5),不要轻信部分第三方开发板丝印的SDA/SCL标注,严格按该对应关系接线
  • 确认供电与共地:128*64 I2C OLED 标准工作电压为3.3V,禁止接入5V供电;必须保证OLED的GND引脚与NodeMCU的GND引脚直接连通
  • 排查接触故障:更换杜邦线,重新插紧所有接线,排除虚接、线损问题

代码配置修正

使用标准I2C扫描代码,显式指定I2C引脚,避免默认配置异常,参考代码如下:

#include <Wire.h>

void setup() {
  // 显式指定SDA、SCL引脚,参数顺序为 (SDA引脚, SCL引脚)
  Wire.begin(D2, D1);
  Serial.begin(115200);
  Serial.println("I2C Scanner Running");
}

void loop() {
  byte error, address;
  int deviceCount = 0;
  Serial.println("\nStart Scanning I2C Address...");

  for (address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C Device Found: 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
      deviceCount++;
    } else if (error == 4) {
      Serial.print("Unknown Error At Address: 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
    }
  }

  if (deviceCount == 0) {
    Serial.println("No I2C Device Detected");
  } else {
    Serial.printf("Scan Done, %d I2C Device Found\n", deviceCount);
  }

  delay(5000);
}
  • 上传代码后,打开串口监视器,将波特率调整为115200,勾选「发送新行」选项后查看输出

硬件故障排查

  • 更换备用OLED屏重新扫描,排除屏本身烧坏的可能
  • 更换其他GPIO作为自定义I2C引脚,修改Wire.begin()的引脚参数后重试,排除NodeMCU原有引脚损坏问题

信号优化

  • 如果接线长度超过10cm,可分别在SDA、3.3V之间以及SCL、3.3V之间接入4.7kΩ上拉电阻,增强I2C信号稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:21:01