【已解决】关于ESP32-C3 WIFI 在STA模式下配网问题

sztime
Posts: 5
Joined: Tue Jun 06, 2023 6:55 am

【已解决】关于ESP32-C3 WIFI 在STA模式下配网问题

Postby sztime » Tue Jun 06, 2023 7:19 am

ESP32-C3 模块WIFI运行于STA模式,通过蓝牙配置SSID和password, 输入正确的SSID和password成功连接到AP, 在连接状态下,再次输入原来的SSID,但password密码是错的,结果有时密码错也能连上AP, 有时连不上。这是什么情况呢?用的是STA例程的代码修改的。需要密码错时不连上AP。

ESP_LiuH
Posts: 42
Joined: Fri Feb 10, 2023 7:20 am

Re: 关于ESP32-C3 WIFI 在STA模式下配网问题

Postby ESP_LiuH » Tue Jun 06, 2023 11:20 am

https://github.com/espressif/esp-idf/bl ... ple_main.c 是基于该示例设置正确密码时,可以连接,修改为错误密码时依然可以连接,对吗?

sztime
Posts: 5
Joined: Tue Jun 06, 2023 6:55 am

Re: 关于ESP32-C3 WIFI 在STA模式下配网问题

Postby sztime » Thu Jun 08, 2023 6:32 am

在https://github.com/espressif/esp-idf/blob/v5.0.2/examples/wifi/getting_started/station/main/station_example_main.c的基础上添加了以下重新配置ssid 和password的语句, wifi_ssid 和wifi_pwd是配置时用户输入的热点ssid和password. 如果网络正常连接的情况下,输入的ssid和错误的password,依然能够获取ip(192.168....之类的)。以下为重新配置时的语句。

wifi_config_t wifi_config = {
.sta = {
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
},
};

ESP_LOGI(TAG, "wifi reconnect start");
bzero(&wifi_config, sizeof(wifi_config_t));
memset(wifi_config.sta.ssid, 0, sizeof(wifi_config.sta.ssid));
memset(wifi_config.sta.password, 0, sizeof(wifi_config.sta.password));

memcpy(wifi_config.sta.ssid, wifi_ssid, sizeof(wifi_config.sta.ssid));
memcpy(wifi_config.sta.password, wifi_pwd, sizeof(wifi_config.sta.password));

ESP_ERROR_CHECK(esp_wifi_disconnect());

ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
esp_wifi_connect();

sztime
Posts: 5
Joined: Tue Jun 06, 2023 6:55 am

Re: 关于ESP32-C3 WIFI 在STA模式下配网问题

Postby sztime » Fri Jun 09, 2023 2:44 am

ESP_LiuH wrote:
Tue Jun 06, 2023 11:20 am
https://github.com/espressif/esp-idf/bl ... ple_main.c 是基于该示例设置正确密码时,可以连接,修改为错误密码时依然可以连接,对吗?
是的,输入正确的ssid和密码,连接上AP热点和mqtt后,然后通过蓝牙传入ssid和错误密码,结果还是能连上AP和mqtt。

ESP_LiuH
Posts: 42
Joined: Fri Feb 10, 2023 7:20 am

Re: 关于ESP32-C3 WIFI 在STA模式下配网问题

Postby ESP_LiuH » Tue Jun 13, 2023 12:38 pm

首先调用 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
然后调用 ESP_ERROR_CHECK(esp_wifi_disconnect());

```
wifi_config_t wifi_config = {
.sta = {
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
},
};

ESP_LOGI(TAG, "wifi reconnect start");
bzero(&wifi_config, sizeof(wifi_config_t));
memset(wifi_config.sta.ssid, 0, sizeof(wifi_config.sta.ssid));
memset(wifi_config.sta.password, 0, sizeof(wifi_config.sta.password));

memcpy(wifi_config.sta.ssid, wifi_ssid, sizeof(wifi_config.sta.ssid));
memcpy(wifi_config.sta.password, wifi_pwd, sizeof(wifi_config.sta.password));

ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_disconnect());

esp_wifi_connect();
```

sztime
Posts: 5
Joined: Tue Jun 06, 2023 6:55 am

Re: 关于ESP32-C3 WIFI 在STA模式下配网问题

Postby sztime » Fri Jun 16, 2023 9:01 am

ESP_LiuH wrote:
Tue Jun 13, 2023 12:38 pm
首先调用 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
然后调用 ESP_ERROR_CHECK(esp_wifi_disconnect());

```
wifi_config_t wifi_config = {
.sta = {
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
},
};

ESP_LOGI(TAG, "wifi reconnect start");
bzero(&wifi_config, sizeof(wifi_config_t));
memset(wifi_config.sta.ssid, 0, sizeof(wifi_config.sta.ssid));
memset(wifi_config.sta.password, 0, sizeof(wifi_config.sta.password));

memcpy(wifi_config.sta.ssid, wifi_ssid, sizeof(wifi_config.sta.ssid));
memcpy(wifi_config.sta.password, wifi_pwd, sizeof(wifi_config.sta.password));

ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_disconnect());

esp_wifi_connect();
```
问题已经解决了,在上面的代码和handle里加了一个flag和判断。但你的方案应该是最简洁的。

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot] and 90 guests