Arduino Uno R3+ESP8266的WiFi.status()返回1的含义及解决方法
WiFi.status()返回值1的含义
ESP8266 Arduino核心的WiFi库中,状态码1对应常量WL_NO_SSID_AVAIL,含义是当前设备扫描范围内找不到你代码中指定SSID的WiFi网络。
对应解决方法
1. 修正代码逻辑错误
你当前的代码存在逻辑缺陷,会直接导致连接失败:
你把WiFi.mode(WIFI_STA)、WiFi.begin()这类初始化连接的代码放在了loop()函数中,每5秒就会重置一次WiFi模式、中断正在进行的连接进程,导致永远无法完成正常连接。
修正后的参考代码如下:
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> // WiFi CREDENTIALS const char *ssid = "xxxx"; const char *password = "xxxx"; void setup() { Serial.begin(115200); Serial.println(); // WiFi模式设置仅需执行一次 WiFi.mode(WIFI_STA); Serial.println("Connect to: "); Serial.println(ssid); // 首次连接逻辑放在setup中 WiFi.begin(ssid, password); // 等待首次连接完成 delay(15000); } void loop(){ Serial.println(); Serial.print("WiFi状态码:"); Serial.println(WiFi.status()); Serial.print("WL_CONNECTED对应值:"); Serial.println(WL_CONNECTED); if (WiFi.status() == WL_CONNECTED) { Serial.println("From ESP Connected!"); delay(5000); } else { Serial.println("From ESP Not Connected! 尝试重连中..."); WiFi.begin(ssid, password); delay(15000); } }
2. 排查目标WiFi网络限制
你测试手机热点可正常连接,说明硬件、代码基础逻辑没有问题,可从以下维度排查原WiFi的问题:
- 确认代码中填写的SSID完全正确,区分大小写,没有多余空格或特殊字符错误
- 确认目标WiFi是2.4G频段,ESP8266不支持5G WiFi频段
- 确认路由器没有开启SSID隐藏、MAC地址过滤、AP隔离等限制陌生设备接入的规则
- 确认路由器接入的设备数量没有达到上限,可先断开几个不用的设备再尝试连接
内容的提问来源于stack exchange,提问作者felixbmmm
相关产品推荐
相关产品推荐

