完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
尝试将ESP8266连接到 WiFi AP。源代码如下:
user_init: void user_init(void) { int i = 0; uart_div_modify(0,UART_CLK_FREQ/115200); for (i = 0; i < 5; i++) { os_printf("Wait %d...n", 5-i); sys_msleep(1000); } if (wifi_get_opmode() != STAtiON_MODE) { os_printf("Setting ESP to STATION moden"); wifi_set_opmode(STATION_MODE); } if (wifi_get_opmode() == STATION_MODE) { os_printf("ESP 处于 STATION 模式n"); wifi_station_get_config(&config); memset(config.ssid, 0, sizeof(config.ssid)); memset(config.password, 0, sizeof(config.password)); sprintf(config.ssid, "%s", DEMO_AP_SSID); sprintf(config.password, "%s", DEMO_AP_PASSWORD); wifi_station_set_config(&config); sys_msleep(100); wifi_station_get_config(&config); os_printf("OPMODE: %u, SSID: %s, PASS: %sn", wifi_get_opmode(), config.ssid, config.password); } os_printf("创建新线程以检查连接n"); xTaskCreate(checkWiFiConnection, "myTask", 256, NULL, 2, NULL); os_printf("已创建任务n"); while(1) { os_printf("在user_initn"); sys_msleep(1000); } } checkwifi连接: void checkWiFiConnection(void *pvParameters) { os_printf("输入了用于检查WIFI连接的新线程n"); os_timer_disarm(&wifiConnectionFuncTimer); os_timer_setfn(&wifiConnectionFuncTimer, (os_timer_func_t *)checkwifi连接func, 0); os_timer_arm(&wifiConnectionFuncTimer, 1000, 0); while(endTaskWifiConnection != 100) { os_printf("In checking wifi connection %dn", endTaskWifiConnection); sys_msleep(1000); } os_printf("Delete thread for checking WIFI connectionn"); vTaskDelete(NULL); } checkwifi连接func 无效 checkwifi连接func() { os_printf("Entered checking WiFi connection Function - %dn", endTaskWifiConnection); struct ip_info ipConfig; endTaskWifiConnection = endTaskWifiConnection + 1; os_timer_disarm(&wifiConnectionFuncTimer); wifi_get_ip_info(STATION_IF, &ipConfig); if (wifi_station_get_connect_status() == STATION_GOT_IP && ipConfig.ip.addr != 0) { os_printf("WiFi connectedrn"); os_printf("Start TCP connecting...n"); // Отправляем данные на ПК //senddata(); } else { os_printf("WiFi 已断开连接n"); wifi_station_get_config(&config); os_printf("OPMODE: %u, SSID: %s, PASS: %sn", wifi_get_opmode(), config.ssid, config.password); os_printf("尝试连接到 WiFi 网络n"); uint8 state = wifi_station_connect(); if (state) { os_printf("Connected OK. WiFi is now activen"); } else os_printf("连接失败n"); if(wifi_station_get_connect_status() == STATION_WRONG_PASSWORD) { os_printf("WiFi connecting error, wrong passwordrn"); } else if(wifi_station_get_connect_status() == STATION_NO_AP_FOUND) { os_printf("WiFi connecting error, ap not foundrn"); } else if(wifi_station_get_connect_status() == STATION_CONNECT_FAIL) { os_printf("WiFi connecting failrn"); } else { os_printf("WiFi连接...rn"); } } os_timer_setfn(&wifiConnectionFuncTimer, (os_timer_func_t *)checkwifi连接func, 0); os_timer_arm(&wifiConnectionFuncTimer, 1000, 0); } 很遗憾,wifi没有连接。以下是日志: " 等 4... 等待 3... 等待 2... 等待 1... ESP 处于 STATION 模式 操作模式:1,SSID:ESPTEST,通过:12345678 创建新线程以检查连接 已创建任务 在user_init 输入了用于检查WIFI连接的新线程 在检查 wifi 连接时 0 在user_init 在检查 wifi 连接时 0 已输入检查WiFi连接功能 - 0 WiFi 已断开连接 操作模式:1,SSID:ESPTEST,通过:12345678 尝试连接到 WiFi 网络 连接失败 WiFi连接... 在user_init 检查 wifi 连接 1 输入检查WiFi连接功能 - 1 WiFi 已断开连接 操作模式:1,SSID:ESPTEST,通过:12345678 尝试连接到 WiFi 网络 连接失败 WiFi连接... 在user_init " 请帮我知道连接失败的原因是什么? 谢谢。 |
|
相关推荐
1个回答
|
|
在分析这个问题之前,我们先了解一下ESP8266和WiFi AP。ESP8266是一款低成本的WiFi模块,广泛应用于物联网项目。WiFi AP(Access Point)是一个无线接入点,用于连接无线设备。
根据您提供的源代码,我们可以逐步分析可能导致连接失败的原因: 1. **WiFi模块初始化问题**:在源代码中,我们没有看到对ESP8266模块进行初始化的代码。在连接WiFi之前,需要确保模块已经正确初始化。 2. **WiFi配置问题**:源代码中没有提供设置WiFi SSID(网络名称)和密码的代码。在连接WiFi之前,需要设置正确的SSID和密码。 3. **连接模式问题**:源代码中检查了当前模式是否为STATION_MODE,但没有提供切换到STATION_MODE的代码。如果ESP8266当前处于其他模式(如AP模式),则无法连接到WiFi AP。 4. **连接超时问题**:在尝试连接WiFi时,可能由于信号弱、密码错误或其他原因导致连接超时。需要检查连接过程中是否有超时重试机制。 5. **电源问题**:如果ESP8266模块供电不足,可能导致连接失败。请确保模块的电源供应稳定且符合规格要求。 6. **硬件故障**:如果ESP8266模块或WiFi AP存在硬件故障,可能导致连接失败。请检查硬件设备是否正常工作。 7. **固件问题**:如果ESP8266模块的固件存在问题,可能导致连接失败。尝试更新固件到最新版本。 8. **干扰问题**:在某些情况下,电磁干扰可能导致WiFi信号不稳定,从而影响连接。尝试更换连接位置或减少干扰源。 为了解决连接失败的问题,您可以尝试以下步骤: 1. 确保ESP8266模块已正确初始化。 2. 设置正确的WiFi SSID和密码。 3. 切换ESP8266模块到STATION_MODE。 4. 添加连接超时重试机制。 5. 检查电源供应是否稳定。 6. 检查硬件设备是否正常工作。 7. 更新ESP8266模块的固件。 8. 减少电磁干扰。 希望这些建议能帮助您解决ESP8266连接WiFi AP失败的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
419浏览 6评论
352浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
334浏览 5评论
337浏览 4评论
317浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-24 10:21 , Processed in 0.664570 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191