完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用vscode开发,idf版本是4.4.1,做的一个小项目上用到了smartconfig,当时使用的还不是C3,封装上写的是ESP-WROOM-32,一切正常,但我换成C3后,烧写同样的代码,smartconfig运行到“scan down”也就是扫描完成开始接收ESPtouch发送的网络连接信息的时候问题就出现了,手机端使用ESPtouch点确认发送,设备一点反应没有,代码里没找到问题就想着在跑跑例程看看,结果还是同样的问题,设备似乎接收不到UDP广播包,但换回ESP-WROOM-32就正常。 电脑上也试着抓了一下包,可以抓到UDP包。
串口输出大概如下:到scan done就停住了,用esptouch的app怎么点都没反应 Code: Select all I (386) wifi:wifi firmware version: 63017e0I (386) wifi:wifi certification version: v7.0I (386) wifi:config NVS flash: enabledI (386) wifi:config nano formating: disabledI (396) wifi:Init data frame dynamic rx buffer num: 32I (396) wifi:Init management frame dynamic rx buffer num: 32I (406) wifi:Init management short buffer num: 32I (406) wifi:Init dynamic tx buffer num: 32I (416) wifi:Init static tx FG buffer num: 2I (416) wifi:Init static rx buffer size: 1600I (416) wifi:Init static rx buffer num: 10I (426) wifi:Init dynamic rx buffer num: 32I (426) wifi_init: rx ba win: 6I (436) wifi_init: tcpip mbox: 32I (436) wifi_init: udp mbox: 6I (436) wifi_init: tcp mbox: 6I (446) wifi_init: tcp tx win: 5744I (446) wifi_init: tcp rx win: 5744I (456) wifi_init: tcp mss: 1440I (456) wifi_init: WiFi IRAM OP enabledI (456) wifi_init: WiFi RX IRAM OP enabledI (466) phy_init: phy_version 909,156dee4,Apr 7 2022,20:27:09I (546) wifi:mode : sta (34:b4:72:f3:c3:94)I (546) wifi:enable tsfI (606) smartconfig: SC version: V3.0.1I (4696) wifi:ic_enable_snifferI (4696) smartconfig: Start to find channel...I (4696) smartconfig_example: Scan done 例程:Code: Select all ...static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data){ if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { xTaskCreate(smartconfig_example_task, "smartconfig_example_task", 4096, NULL, 3, NULL); } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { esp_wifi_connect(); xEventGroupClearBits(s_wifi_event_group, CONNECTED_BIT); } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { xEventGroupSetBits(s_wifi_event_group, CONNECTED_BIT); } else if (event_base == SC_EVENT && event_id == SC_EVENT_SCAN_DONE) { ESP_LOGI(TAG, "Scan done"); } else if (event_base == SC_EVENT && event_id == SC_EVENT_FOUND_CHANNEL) { ESP_LOGI(TAG, "Found channel"); } else if (event_base == SC_EVENT && event_id == SC_EVENT_GOT_SSID_PSWD) { ESP_LOGI(TAG, "Got SSID and password"); smartconfig_event_got_ssid_pswd_t *evt = (smartconfig_event_got_ssid_pswd_t *)event_data; wifi_config_t wifi_config; uint8_t ssid[33] = { 0 }; uint8_t password[65] = { 0 }; uint8_t rvd_data[33] = { 0 }; bzero(&wifi_config, sizeof(wifi_config_t)); memcpy(wifi_config.sta.ssid, evt->ssid, sizeof(wifi_config.sta.ssid)); memcpy(wifi_config.sta.password, evt->password, sizeof(wifi_config.sta.password)); wifi_config.sta.bssid_set = evt->bssid_set; if (wifi_config.sta.bssid_set == true) { memcpy(wifi_config.sta.bssid, evt->bssid, sizeof(wifi_config.sta.bssid)); } memcpy(ssid, evt->ssid, sizeof(evt->ssid)); memcpy(password, evt->password, sizeof(evt->password)); ESP_LOGI(TAG, "SSID:%s", ssid); ESP_LOGI(TAG, "PASSWORD:%s", password); if (evt->type == SC_TYPE_ESPTOUCH_V2) { ESP_ERROR_CHECK( esp_smartconfig_get_rvd_data(rvd_data, sizeof(rvd_data)) ); ESP_LOGI(TAG, "RVD_DATA:"); for (int i=0; i<33; i++) { printf("%02x ", rvd_data); } printf("n"); } ESP_ERROR_CHECK( esp_wifi_disconnect() ); ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); esp_wifi_connect(); } else if (event_base == SC_EVENT && event_id == SC_EVENT_SEND_ACK_DONE) { xEventGroupSetBits(s_wifi_event_group, ESPTOUCH_DONE_BIT); }}static void initialise_wifi(void){ ESP_ERROR_CHECK(esp_netif_init()); s_wifi_event_group = xEventGroupCreate(); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta(); assert(sta_netif); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); ESP_ERROR_CHECK( esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL) ); ESP_ERROR_CHECK( esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL) ); ESP_ERROR_CHECK( esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL) ); ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); ESP_ERROR_CHECK( esp_wifi_start() );}static void smartconfig_example_task(void * parm){ EventBits_t uxBits; ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH) ); smartconfig_start_config_t cfg = SMARTCONFIG_START_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_smartconfig_start(&cfg) ); while (1) { uxBits = xEventGroupWaitBits(s_wifi_event_group, CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY); if(uxBits & CONNECTED_BIT) { ESP_LOGI(TAG, "WiFi Connected to ap"); } if(uxBits & ESPTOUCH_DONE_BIT) { ESP_LOGI(TAG, "smartconfig over"); esp_smartconfig_stop(); vTaskDelete(NULL); } }}... Attachments |
|
相关推荐
1个回答
|
|
以下是一些建议和可能的原因,帮助您解决问题:
1. 检查硬件连接:确保您的ESP32-C3模块与其他组件之间的连接正确无误。 2. 检查电源:确保ESP32-C3模块的电源供应稳定,电压在规定的范围内。 3. 检查代码:确保您使用的Smartconfig代码与ESP32-C3兼容。可能需要针对C3进行一些修改或优化。 4. 检查IDE设置:确保您的VSCode开发环境和ESP-IDF配置正确,适用于ESP32-C3。 5. 检查ESP-IDF版本:虽然您使用的是4.4.1版本,但建议您尝试更新到最新版本的ESP-IDF,以确保与ESP32-C3的兼容性。 6. 检查串口输出:从您提供的串口输出来看,可能存在一些问题。请仔细检查输出信息,看看是否有错误或警告信息。 7. 检查ESPtouch:确保您的手机端ESPtouch应用是最新版本,并且与ESP32-C3兼容。 8. 检查网络环境:确保您的设备和手机处于同一Wi-Fi网络环境中,以便进行配网。 9. 尝试其他配网方法:如果Smartconfig仍然无法正常工作,您可以尝试使用其他配网方法,如AirKiss、WPA3等。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
435浏览 5评论
441浏览 4评论
410浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 01:25 , Processed in 1.065928 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号