ESP32-WROOM-32 UDP单播透传AT指令例程

ESP32-WROOM-32

在这里插入图片描述

前言

上次演示了ESP32与手机的三种TCP连接与数据传输方法,现在接着上一篇“ESP32-WROOM-32 AT指令配置TCP通讯”把ESP32和手机的UDP,单播透传完成,准备工作可以回到上一篇查看,需要准备的都是一样的,这里不过多赘述。
关于网络调试助手的APP,大家可以直接在手机的应用商城下载或者网上搜索“网络调试助手”或者“TCP网络调试助手”应该会有的,这边用的IOS系统手机做的演示,所以没法分享APP安装包。

固件烧录

本文需要用到乐鑫官方ESP32-WROOM-32的出厂AT固件下面用Flash Download Tools进行烧录。(如果ESP32里面本身就是烧的乐鑫出厂的固件,或者是从“TCP”那篇文章过来的,那么就可以直接跳过这一步)这一步简单带过。

打开Flash Download Tools并载入,固件包里路径为

X:XXX\ESP32-WROOM-32_AT_Bin_V2.4.0.0\ESP32-WROOM-32-V2.4.0.0\factory

里面名为“factory_WROOM-32.bin”的固件,起始地址为0,勾选上“DoNotChgBin”,选好串口开始下载。
在这里插入图片描述

测试AT指令

用USB转TTL接到ESP32-WROOM-32的UART2上,上电,
打开串口助手
波特率为115200,停止位1,数据位8,无校验
发送“AT”,查看烧录的AT固件是否正常运行

ESP32 USB转TTL
RX2 TX
TX2 RX
GND GND
VCC 5V

在这里插入图片描述
AT固件正常运行。

UDP单播通讯\透传

ESP32配置SoftAP

在实现ESP32和手机之间进行UDP单播通讯\透传之前,需要让两者通过WIFI连接,下文以ESP32的SoftAP为例。

  1. 接着上面的AT指令测试后,发送
AT+CWMODE=2			//打开ESP32的SoftAP模式
/*
AT+CWMODE=<mode>[,<auto_connect>]
<mode>:模式
  0: 无 Wi-Fi 模式,并且关闭 Wi-Fi RF
  1: Station 模式
  2: SoftAP 模式
  3: SoftAP+Station 模式
<auto_connect>
是否启用自动连接 AP 的功能,参数缺省使用默认值,启用自动连接 AP 的功能
参数为0时禁用自动连接 AP 的功能
*/

上面命令用于开启ESP32的SoftAP模式,后面用到的指令不再讲解对应参数的具体内容(太长了),感兴趣的可以自行查看AT指令集。

  1. 配置AP的具体参数,发送
AT+CWSAP="YouXin","1234567890",5,3
/*
SSID为YouXin
password为1234567890
可自行更改上面的参数
*/
  1. 发送
AT+CWDHCP=1,1
/*
开启DHCP,默认DHCP地址池为192.168.4.2-192.168.101,地址池可改
*/
  1. 开启了DHCP后,手机下载一个“TCP网络调试助手”(自行网上找),手机找到ESP32的WIFI,上面配置的SSID为YouXin,所以去找名为YouXin的WIFI并连接。连接上ESP32的WIFI后,可以记一下ESP32的串口返回的信息,里面包含了给连接上的设备分配的IP地址等信息,后面连接时需要用。

ESP32与手机间的UDP通讯与透传

普通传输模式

–接上–

  1. 手机连上ESP32的WIFI后,打开“TCP网络调试助手”。
  2. 手机的“TCP网络调试助手”选择“UDP调试”,不同的软件可能会名字不同。
  3. “TCP网络调试助手”输入UDP连接参数,本地IP、本地绑定的端口号 、远端IP地址、远端端口号。
    其中,本地IP不知道是多少,可以去看手机连接ESP32的WIFI时,串口返回的信息;
    本地绑定的端口号输入一个没有被占用的就行;
    远端IP地址,输入ESP32的IP地址,由于ESP32是SoftAP模式,它的地址一般是192.168.4.1;
    远端端口号,可输入一个ESP32没有被占用的端口号,ESP32建立UDP单播连接时本地的端口号就要时这个输入端口号。
    输入完以上几个参数后,点击绑定。接下来在ESP32端建立UDP单播连接。
  4. 在串口助手发送指令,把ESP32通讯设为单连模式
4.AT+CIPMUX=0		//设置为单连模式
  1. ESP32建立UDP单播连接,发送:
AT+CIPSTART="UDP","192.168.4.2",1000,1002,2		//建立UDP单播
/*
 *第一个参数为网络连接类型										*
 *第二给参数为远端IP(即是手机端的IP地址)						*
 *第三个参数为远端端口号(即是手机端绑定UDP时输入的本地端口号)		*
 *第四个参数为本地端口号(即是手机端绑定UDP时输入的远端端口号)		*
 *第五个参数为模式:											*
	0: 接收到 UDP 数据后,不改变对端 UDP 地址信息(默认)
	1: 仅第一次接收到与初始设置不同的对端 UDP 数据时,改变对端 UDP 地址信息为发送数据设备的IP地址和端口
	2: 每次接收到 UDP 数据时,都改变对端 UDP 地址信息为发送数据的设备的 IP 地址和端口

*/

发送上面的建立 UDP 连接指令后,如果成功连接串口助手会返回相关信息。
到了这一步,手机通过“TCP网络调试助手”可以发送数据给ESP32了,ESP32接收到数据后会在串口打印输出。
虽然ESP32可以收到了手机发过来的数据了,但是这个时候如果想从ESP32发送数据到手机上,串口助手会返回ERROR,并且没有把数据发出去,这时进行下一步。

  1. 发送
AT+CIPSEND=<Length>		//发送指定长度的数据请求
/*
由于这次实验ESP32充当的是TCP Client,所以是单连模式,这条指令就只有Length一个参数
Length:需要发的数据长度
*/

当发送上面指令成功后,ESP32进入指定长度数据发送的状态,可以发送一次数据长度小于Length的数据,发送完后,ESP32会返回AT模式,每次发送数据都要先发AT+CIPSEND=XX(太麻烦了不是?),进入透传后就不需要发,发送指定长度数据请求的指令了。

演示

UDP单播通讯

在这里插入图片描述

UDP透传

  1. 发送
AT+CIPCLOSE		//断开UDP连接

断开UDP连接后再发送

AT+CIPSTART="UDP","192.168.4.2",1000,1002,0		//ESP32重新连接,最后一个参数改成0

重新建立UDP连接

  1. 发送
AT+CIPMODE=1		//进入透传模式

进入透传模式。

  1. 进入透传模式后,发送开始传输的指令即可开始透传
AT+CIPSEND		//开始发送数据

这一步成功后,ESP32的就进入了透传输出数据状态,期间发送AT指令无效

  1. 退出透传,当完成了透传后,不需要透传了,ESP32返回AT指令状态发送
+++	

注意 发送退出透传的指令时,不要带换行

  1. 发送
17.AT+CIPCLOSE	//断开UDP连接

断开ESP32与手机进行UDP单播通讯/透传结束。

演示

UDP单播透传

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/131235035