ESP32C3 WIFI 问题

Jafy_Chan
Posts: 8
Joined: Sun Aug 22, 2021 7:13 am

ESP32C3 WIFI 问题

Postby Jafy_Chan » Tue Sep 21, 2021 2:00 am

开发环境:VSCode + Platformio + Arduino
硬件平台:ESP32C3
ESP-IDF版本:V4.1.2
Platformio PACKAGES:
- framework-arduinoespressif32 3.10006.210326 (1.0.6)
- tool-esptoolpy 1.30100.210531 (3.1.0)
- tool-mkspiffs 2.230.0 (2.30)
- toolchain-riscv-esp 1.80400.0 (8.4.0)

|-- <WiFi> 2.0.0

>> Wifi STA模式

设计的板子是自研的板子,在单独调试wifi功能时发现无法连接的问题,找了很多相关的问题解决方案,都不能解决问题。现在wifi连接存在的现象是:能识别到路由或者热点,但是一到连接就报AUTH_EXPIRE错误。

关闭路由或热点,报:

[ 12944][D][WiFiGeneric.cpp:808] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 12951][W][WiFiGeneric.cpp:829] _eventCallback(): Reason: 201 - NO_AP_FOUND

打开路由或热点,报:

[ 27378][D][WiFiGeneric.cpp:808] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 27385][W][WiFiGeneric.cpp:829] _eventCallback(): Reason: 2 - AUTH_EXPIRE

在https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/wifi.html查了Wi-Fi原因代码对应的原因,不知道怎么修改代码取获取权限

>> Wifi AP模式

在AP模式下,能自动生成AP的IP地址,但是用手机发现AP热点时,有时候能发现,有时候不行,如果发现去连接时,连不上

实现代码如下:
//STA模式
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

//AP模式
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);

PS:另外在此板子单独验证BLE时,都能正常工作,手机或者PC能发现BLE设备并进行连接通信。

请问这个问题是硬件问题还是软件的bug?该如何解决或者分析问题?是否有能验证wifi功能的程序,分析wifi启动失败的原因?

Jafy_Chan
Posts: 8
Joined: Sun Aug 22, 2021 7:13 am

Re: ESP32C3 WIFI 问题

Postby Jafy_Chan » Thu Sep 23, 2021 12:37 pm

最后自己找到的问题之所在,倒腾了好久,发现wifi发射的Power值超出了要求的设定值,获取到默认值是100,而要求设定tx_power是在84以内。

最后通过esp_wifi_set_max_tx_power函数设定20,即5dBm的功率为发送频率,wifi就正常连接和通信,不知道这个是不是bug?


https://docs.espressif.com/projects/esp ... wer6int8_t
中对esp_wifi_set_max_tx_power函数里有专门的说明

最终的初始化代码是这样的:

//STA模式
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
WiFi.setTxPower(WIFI_POWER_5dBm);
WiFi.begin(ssid, password);

//AP模式
WiFi.mode(WIFI_AP);
WiFi.disconnect();
delay(100);
WiFi.setTxPower(WIFI_POWER_5dBm);
WiFi.softAP(ssid, password);

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: ESP32C3 WIFI 问题

Postby ESP_Gargamel » Fri Sep 24, 2021 2:43 am

能发现问题,很好。需要再研究下 发现wifi发射的Power值超出了要求的设定值,获取到默认值是100,理论上 IDF 和 Arduino 默认都不是设的这个值。

Jafy_Chan
Posts: 8
Joined: Sun Aug 22, 2021 7:13 am

Re: ESP32C3 WIFI 问题

Postby Jafy_Chan » Fri Sep 24, 2021 8:38 am

我用ESP32-C3-DevKitM-1 V1.0的demo板去测试同样Arduino的程序,获取到的power依然是100,但是DevkitM板在power是100的情况下在AP或STA模式都能正常工作,无需设置指定Power值,但是我自研的板子必须设置才能使用。

后来我在VSCode中打开softAP官方的示例进行测试,结果获取到的power值依然是100,也找了https://www.espressif.com/sites/default ... ide_cn.pdf中对ESP32 Phy Init Bin的重要参数配置说明,对照了一下boot_app0.bin的十六进制,好像没对应上,可能对应的不是这个bin文件,也研究了一下Arduino程序或官方示例里面的wifi初始化过程,没找到设置Tx Power的参数。

不知道这个是不是C3的软件bug?

PS:我手上有两套官网买的DevKitM进行测试,Power都是100。再加上自研的十多套板子测试,Power也是100。所以现在有点迷糊,为啥超出了,不过暂时能通过设置Power来使板子跑起来,那看看稳定性。具体esp_wifi_get_max_tx_power的函数,底层没开放,也跟踪不到问题。

wuyuanyi
Posts: 29
Joined: Wed Mar 09, 2022 11:54 am

Re: ESP32C3 WIFI 问题

Postby wuyuanyi » Wed Nov 27, 2024 7:51 am

Jafy_Chan wrote: 最后自己找到的问题之所在,倒腾了好久,发现wifi发射的Power值超出了要求的设定值,获取到默认值是100,而要求设定tx_power是在84以内。

最后通过esp_wifi_set_max_tx_power函数设定20,即5dBm的功率为发送频率,wifi就正常连接和通信,不知道这个是不是bug?


https://docs.espressif.com/projects/esp ... wer6int8_t
中对esp_wifi_set_max_tx_power函数里有专门的说明

最终的初始化代码是这样的:

//STA模式
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
WiFi.setTxPower(WIFI_POWER_5dBm);
WiFi.begin(ssid, password);

//AP模式
WiFi.mode(WIFI_AP);
WiFi.disconnect();
delay(100);
WiFi.setTxPower(WIFI_POWER_5dBm);
WiFi.softAP(ssid, password);
您好,我测试过也是自己的板子,如果不做阻抗匹配就会遇到你的问题,如果按照官方推荐的PI网络匹配,tx power能设置到72,但是80就不怎么能用了。你设置5db不会觉得发射功率太低吗

Who is online

Users browsing this forum: No registered users and 44 guests