DT-6_TTL-WIFI模块-TCP连接

结城 嵌入式-ESP32 5 次阅读 768 字 发布于 12 天前 预计阅读时间: 3 分钟


我觉得有必要特别说明一下这个WIFI模块存在的问题,TCP一直断联真的有些令人受不了。

这个模块作为TCP客户端,经常性出现无法连接到服务端的问题,特别是高温环境下尤为离谱,10次中可能有7次连不上,需要手动处理。

查了查相关的资料总结了以下原因,可能和这些因素有关,但仅为猜测,仅仅能保证最基础的解决方案。

嵌入式WIFI模块与PC端进行网络通信时出现的时序竞态条件问题。处理一次头疼一次。

说白了,就是没有成功连接但是他不重试,躺平了。你必须要手动重置一下连接鞭策一下才能解决问题。

TCP经典的握手时序冲突问题,看一次烦一次,给人快恶心死了。

下面是解决方案与原因分析,保证能解决。

当模块上电时,它会同时做两件事:

启动WiFi热点(AP模式)

以及启动内部的TCP客户端去尝试连接目标IP。

问题来了,电脑发现WIFI、发起连接、完成认证、操作系统将虚拟网卡状态标记为“UP”并准备好路由,这个过程至少需要几秒钟。

而模块内部的TCP​客户端启动非常快,它在电脑还没有完全连上WIFI或者网卡还没准备好时,就已经开始发送TCP SYN包尝试握手了。

出现这种情况,手动按一下模块的R键进行重置复位,即可解决。

当按下复位键时,电脑的无线网卡由于之前已经连接过该SSID,目前处于“积极扫描和重连”状态。

此时模块软重启。需要注意,电子硬件只要是上电形式的任何重启都可以称为软重启。

同断电重启不同,这种软重启WIFI不会断联或者断联时间很短,此时电脑能以最快速度重新握手连上WIFI,或者根本不断一直保持链接。

此时模块TCP客户端再次发起连接,因为双方都已经做好准备随时接受连接,因此连接成功。

像是DT-06​这类基于ESP8266的透传模块,其内部固件通常有一套重连逻辑。

如果模块在开机的前几秒内连续几次TCP连接失败,它的固件可能会认为“目标主机不可达”,从而放弃重连。

这就是所谓的直接开摆,不陪你玩了,开摆。

这就导致即便后来电脑连上了WIFI,模块也不会再主动去连服务端。按R键相当于强制打断了这个死锁状态,重新执行了一遍初始化流程。重新尝试连接,必然能解决问题。

给时光以生命,给岁月以文明
最后更新于 2026-06-15