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

ESP32 WiFi初始化导致GPIO2模拟读数固定为4095问题求助

问题原因

这个问题是ESP32的固有硬件限制导致的,核心冲突如下:

  • ESP32共有2个ADC外设,分别为ADC1和ADC2,GPIO2属于ADC2的通道范围
  • 乐鑫官方硬件设计中,ADC2和WiFi模块共用同一条硬件总线,当WiFi功能处于启用状态时,ADC2的控制权会被WiFi驱动完全占用,用户代码无法正常读取ADC2通道的模拟值,你遇到的固定返回满量程4095是该冲突的典型表现
  • 你注释WiFi连接代码时WiFi未启动,ADC2控制权归用户代码所有,所以无论是空引脚读白噪声还是接传感器都能返回正常数值,启用WiFi后冲突触发,读数直接异常,完全符合该限制的特征
解决方案

方案1(最推荐)

将传感器的连接引脚更换到ADC1对应的GPIO引脚,ADC1的可用引脚为GPIO32、GPIO33、GPIO34、GPIO35、GPIO36、GPIO39,这些引脚的模拟读取完全不受WiFi功能影响,仅需修改代码中sensePin的定义值为对应引脚即可。

方案2(仅适用于无需持续保持WiFi连接的场景)

如果必须使用ADC2的引脚,可在每次读取模拟值前主动关闭WiFi,读取完成后再恢复WiFi连接,示例修改代码如下:

void TestSensor()
{
  for (int i = 0; i < 100; i++)
  {
    // 读取前关闭WiFi释放ADC2控制权
    WiFi.disconnect(true);
    WiFi.mode(WIFI_OFF);
    delay(10);
    senseOut = analogRead(sensePin);
    Serial.println(senseOut);
    // 读取完成后恢复WiFi连接
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    // 等待WiFi连接成功的逻辑可自行补充
    delay(100);
  }
}

该方案会导致WiFi连接频繁断开重连,不适用需要持续联网的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:24:05