这是我的代码,可以使用EPS8266连接到WiFi网络。我将DHT传感器连接到ESP。如果路由器发生中断,我可以在没有中断的情况下获取数据,但是我没有获取传感器数据,也无法重新连接到WiFi网络
static void wifi_task(void * pvParameters) {
uint8_t status = 0;
uint8_t retries = 30;
struct sdk_station_config config = {
.ssid = "CloveIOT",
.password = "CloveIOT",
};
printf("WiFi: connecting to WiFi\n\r");
sdk_wifi_set_opmode(STATION_MODE);
sdk_wifi_station_set_config( & config);
while (1) {
while ((status != STATION_GOT_IP) && (retries)) {
status = sdk_wifi_station_get_connect_status();
printf("%s: status = %d\n\r", __func__, status);
if (status == STATION_WRONG_PASSWORD) {
printf("WiFi: wrong password\n\r");
break;
} else if (status == STATION_NO_AP_FOUND) {
printf("WiFi: AP not found\n\r");
break;
} else if (status == STATION_CONNECT_FAIL) {
printf("WiFi: connection failed\r\n");
break;
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
--retries;
}
if (status == STATION_GOT_IP) {
printf("WiFi: Connected\n\r");
xSemaphoreGive(wifi_alive);
taskYIELD();
}
while ((status = sdk_wifi_station_get_connect_status()) == STATION_GOT_IP) {
xSemaphoreGive(wifi_alive);
taskYIELD();
}
printf("WiFi: disconnected\n\r");
sdk_wifi_station_disconnect();
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
答案 0 :(得分:0)
我遇到了同样的问题,现在我正在使用这种效果很好的WiFi连接方法。
在使用delay(1200);
之前,它不起作用并停在WiFi.status() != WL_CONNECTED
上。
void connectWiFi() {
WiFi.disconnect();
delay(1200);
WiFi.mode(WIFI_STA);
Serial.println(F("connectWiFi"));
WiFi.begin(ssid, password);
// wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println(F(""));
Serial.print(F("Connected to "));
Serial.println(ssid);
Serial.print(F("IP address: "));
Serial.println(WiFi.localIP());
}