《ESP32调试异常集锦》之:EspTouch配网时wifi密码输入错误,程序联网一直死循环

项目场景

硬件:ESP32-LyraT-Mini V1.2开发板,使用的是ESP32-WROVER-E 模组。

程序:基于smart_config示例程序测试


问题描述

烧录程序后,debug打印“smartconfig_example: Scan done”信息后,打开手机app“EspTouch”进行配网,如果密码输入正确,正常的debug信息如下
在这里插入图片描述
从程序上看,配网成功后,开发板联网成功后会注销smartconfig任务,因此无法重复配网,需重启开发板。后续根据实际应用需求再考虑做调整。

重启开发板,再次进行配网,密码输入错误,点击确认进行配网,则ESP32程序会进入一个循环(等待了近5分钟),debug信息如下图所示:
在这里插入图片描述
当密码错误程序进入上述循环后,此时用“EspTouch”再次进行配网时也无反应,无任何相关信息打印。


原因分析

wifi封装底层密码错误时会一直尝试连接,而程序应用层面上没有针对wifi连接超时的处理。


解决方案:

通过调整程序逻辑和流程,在应用层面上实现对wifi联网超时的处理。
原先程序流程:
在这里插入图片描述

从“EspTouch”app获取wifi名称和密码后,程序会产生SC_EVENT_GOT_SSID_PSWD事件,断开wifi连接esp_wifi_disconnect,重新配置wifi名称和密码esp_wifi_set_config,调用esp_wifi_connect启动wifi连接。

修改程序流程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增加变量用于标记状态。
增加一个EspTouch事件标志位:ESPTOUCH_FAIL_BIT

static const int CONNECTED_BIT = BIT0;
static const int ESPTOUCH_DONE_BIT = BIT1;
static const int ESPTOUCH_FAIL_BIT = BIT2;

static int wifiConnectedflg=0;  // =0 已连接;=1 未连接
static int truepassword=0;// 如果wifi密码正确可以连接成功则truepassword=1,否则truepassword=0表示密码异常,此时断开wifi后不再进行重连

增加计时器,从“EspTouch”app获取wifi名称和密码后,断开wifi连接,重新配置wifi后,启动计时器(1s中断),启动wifi连接。

如果密码正确则wifi可以连接成功wifiConnectedflg=1
计时器中断时判断是否wifi连接成功,如果连接成功则停止计时器,删除计时器;如果20s后wifi依旧没有连接成功停止计时器,但不删除计时器,设置wifi事件组内"ESPTOUCH配网失败"标志位

smartconfig_example_task中增加对配网失败标志位(ESPTOUCH_FAIL_BIT)的判断,如果配网失败则停止smartconfig,再重新启动smartconfig

修改后debug信息:
错误密码无法联网,重新设置正确密码,联网成功
在这里插入图片描述

源码链接:https://download.csdn.net/download/u013534357/89744047

欢迎关注并留言

🌹==欢迎关注、订阅、收藏专辑《ESP32从0到1》==🌹

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT搬砖客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值