我们将 ESP8266 用于物联网产品已有一段时间了,但最近我们有一位客户拥有基于 Cisco AIR-LAP1142N-A-K9 Aironet 1142 控制器的 AP。当我的设备尝试连接时,它连接成功但没有获得 IP 地址。同一个程序可以连接到同一位置但不同型号的其他 AP - 非 Cisco。我们尝试在不同的通道上连接到建筑物中的所有 3 个 Cisco 路由器,结果相同。如果我有特定问题(我无法获取设置转储),我只能访问路由器设置。我确实有一台相同型号的路由器,试图重现该问题。我已经搜索了几个小时,并尝试了所有我发现的尝试,但都没有好的结果。
我有两个问题。
* 我可以尝试的任何可能导致它的想法或我可以提出的问题来帮助缩小范围?
* 我在哪里可以找到调试输出中的小细节的含义,例如状态:0 -> 2 (b0)。见下文。我现在正在研究源代码,但有些方向会有所帮助。
我正在使用 Arduino Genuino IDE 版本 1.6.12 和 ESP8266 社区版本 2.3.0 编译它。
模块:通用 ESP8266 模块
闪存大小:4MB/1MB
CPU 频率:80Mhz
闪存模式:DIO
闪存频率:40Mhz
上传使用:SERIAL
重置方法:ck
路由器的安全性是 WPA2
这是调试和日志输出:
连接到 CiscoAP
。 .scandone
状态:0 -> 2 (b0)
状态:2 -> 3 (0)
状态:3 -> 5 (10)
add 0
aid 14
cnt
connected with CiscoAP, channel 1
dhcp client start...
wifi evt: 0
WIFI_EVENT_STAMODE_CONNECTED
......状态:5 -> 0 (0)
rm 0
wifi evt:1
STA 断开连接:8
WiFi 丢失连接
f r0,..scandone
状态:0 -> 2 (b0)
状态:2 -> 3 (0)
状态:3 -> 5 (10)
add 0
aid 14
cnt
connected使用 CiscoAP,通道 1
dhcp 客户端启动...
wifi evt:0
WIFI_EVENT_STAMODE_CONNECTED
.........pm 打开,类型:2 0
......... …………
这是从我创建的一个非常简化的程序生成的,以确保我没有在更大的程序中做一些事情来导致它:
#include
const char* ssid = "CiscoAP";
const char* password = "xxxxxx";
#define DEBUG_PRINT(x) Serial.println(x)
void setup() {
Serial.begin(115200);
延迟(10);
序列号.println();
序列号.println();
Serial.print("连接到");
序列号.println(ssid);
WiFi.onEvent(WiFiEvent);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, 密码);
}
整数值 = 0;
void loop() {
延迟(500);
++价值;
如果(WiFi.status()!= WL_CONNECTED){
延迟(500);
序列号.print(".");
}
else{
Serial.println("");
Serial.println("WiFi 已连接");
Serial.println("IP地址:");
Serial.println(WiFi.localIP());
}
if(value==10)
{
WiFi.disconnect();
延迟(1000);
WiFi.begin(ssid, 密码);
}
}
void WiFiEvent(WiFiEvent_t event) {
IPAddress ip_addr;
开关(事件){
case WIFI_EVENT_STAMODE_CONNECTED:
DEBUG_PRINT(“WIFI_EVENT_STAMODE_CONNECTED”);
休息;
case WIFI_EVENT_STAMODE_DISCONNECTED:
DEBUG_PRINT("WiFi 失去连接");
休息;
WIFI_EVENT_STAMODE_AUTHMODE_CHANGE案例:
DEBUG_PRINT("WIFI_EVENT_STAMODE_AUTHMODE_CHANGE");
休息;
case WIFI_EVENT_STAMODE_GOT_IP:
DEBUG_PRINT("WiFi 连接 GOtiP");
休息;
默认值:
DEBUG_PRINT("[WiFi-event] 无法识别事件:" + String(event));