You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ESP8266烧录空程序仍自动创建AP,如何解决?

解决ESP8266自动创建WiFi接入点的问题

嘿,我之前也碰到过一模一样的情况!别担心,这不是硬件故障,而是ESP8266的默认行为在搞鬼——下面给你拆解原因和解决办法:

为什么会自动创建AP?

ESP8266的底层SDK(包括Arduino、ESP-IDF这类开发框架依赖的核心代码)有个默认逻辑:当它没有找到可连接的WiFi配置,或者程序里没有明确指定要进入STA(客户端)模式时,就会自动启动AP模式作为 fallback。哪怕你烧录的是“空程序”,开发环境其实会自动添加基础的初始化代码,这些代码里就包含了这个默认行为。你看到的ESP_28F2F8是模块MAC地址的后几位,192.168.4.1是AP模式下的默认IP,都是标准操作。

怎么让它只连接现有WiFi?

根据你用的开发环境,分几种情况处理:

1. Arduino IDE环境

直接在程序里明确编写WiFi连接逻辑,覆盖默认行为。比如:

#include <ESP8266WiFi.h>

// 替换成你的WiFi信息
const char* wifi_ssid = "你的WiFi名称";
const char* wifi_password = "你的WiFi密码";

void setup() {
  Serial.begin(115200);
  
  // 强制设置为纯STA模式(确保不会启动AP)
  WiFi.mode(WIFI_STA);
  WiFi.begin(wifi_ssid, wifi_password);
  
  // 等待连接完成
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi连接成功!");
  Serial.print("IP地址:");
  Serial.println(WiFi.localIP());
}

void loop() {
  // 这里写你的业务逻辑
}

如果烧录后还是出现AP,大概率是之前的WiFi配置被存在了模块的NVS(非易失性存储)里,可以在setup()开头加一行WiFi.disconnect(true);,这个true参数会清除保存的旧配置,强制重新连接你指定的WiFi。

2. AT固件环境

如果你的模块刷的是AT固件,需要通过串口发送指令切换到STA模式并连接WiFi:

// 第一步:设置为纯STA模式(关闭AP)
AT+CWMODE=1

// 第二步:连接目标WiFi
AT+CWJAP="你的WiFi名称","你的WiFi密码"

// 验证连接状态
AT+CIPSTA?

要是之前有残留的AP配置,也可以用AT+CWQAP指令清除旧连接,再重新配置。

3. ESP-IDF环境

在menuconfig配置里找到Component config > WiFi > WiFi default mode,选择STA only,然后编译烧录。如果还是有问题,可以在代码里调用esp_wifi_set_mode(WIFI_MODE_STA);强制设置模式,同时可以调用nvs_flash_erase()清除NVS里的旧配置。

额外排查点

如果以上操作都没用,那可以检查下模块的引脚状态——极少数情况下,某些引脚(比如GPIO0)的电平异常可能会触发特殊启动模式,但这种情况很少见,先从代码和配置入手排查就好。

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

火山引擎 最新活动