ESP32-WROOM-32 AT指令配置TCP通讯
- ESP32-WROOM-32
- 前言
- 固件烧录
- 测试AT指令
- UDP单播通讯\透传
- ESP32配置SoftAP
- ESP32与手机间的UDP通讯与透传
- 普通传输模式
- 演示
- UDP透传
- 演示
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为例。
- 接着上面的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指令集。
- 配置AP的具体参数,发送
AT+CWSAP="YouXin","1234567890",5,3
/*
SSID为YouXin
password为1234567890
可自行更改上面的参数
*/
- 发送
AT+CWDHCP=1,1
/*
开启DHCP,默认DHCP地址池为192.168.4.2-192.168.101,地址池可改
*/
- 开启了DHCP后,手机下载一个“TCP网络调试助手”(自行网上找),手机找到ESP32的WIFI,上面配置的SSID为YouXin,所以去找名为YouXin的WIFI并连接。连接上ESP32的WIFI后,可以记一下ESP32的串口返回的信息,里面包含了给连接上的设备分配的IP地址等信息,后面连接时需要用。
ESP32与手机间的UDP通讯与透传
普通传输模式
–接上–
- 手机连上ESP32的WIFI后,打开“TCP网络调试助手”。
- 手机的“TCP网络调试助手”选择“UDP调试”,不同的软件可能会名字不同。
- “TCP网络调试助手”输入UDP连接参数,本地IP、本地绑定的端口号 、远端IP地址、远端端口号。
其中,本地IP不知道是多少,可以去看手机连接ESP32的WIFI时,串口返回的信息;
本地绑定的端口号输入一个没有被占用的就行;
远端IP地址,输入ESP32的IP地址,由于ESP32是SoftAP模式,它的地址一般是192.168.4.1;
远端端口号,可输入一个ESP32没有被占用的端口号,ESP32建立UDP单播连接时本地的端口号就要时这个输入端口号。
输入完以上几个参数后,点击绑定。接下来在ESP32端建立UDP单播连接。 - 在串口助手发送指令,把ESP32通讯设为单连模式
4.AT+CIPMUX=0 //设置为单连模式
- 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,并且没有把数据发出去,这时进行下一步。
- 发送
AT+CIPSEND=<Length> //发送指定长度的数据请求
/*
由于这次实验ESP32充当的是TCP Client,所以是单连模式,这条指令就只有Length一个参数
Length:需要发的数据长度
*/
当发送上面指令成功后,ESP32进入指定长度数据发送的状态,可以发送一次数据长度小于Length的数据,发送完后,ESP32会返回AT模式,每次发送数据都要先发AT+CIPSEND=XX(太麻烦了不是?),进入透传后就不需要发,发送指定长度数据请求的指令了。
演示
UDP单播通讯
UDP透传
- 发送
AT+CIPCLOSE //断开UDP连接
断开UDP连接后再发送
AT+CIPSTART="UDP","192.168.4.2",1000,1002,0 //ESP32重新连接,最后一个参数改成0
重新建立UDP连接
- 发送
AT+CIPMODE=1 //进入透传模式
进入透传模式。
- 进入透传模式后,发送开始传输的指令即可开始透传
AT+CIPSEND //开始发送数据
这一步成功后,ESP32的就进入了透传输出数据状态,期间发送AT指令无效
- 退出透传,当完成了透传后,不需要透传了,ESP32返回AT指令状态发送
+++
注意 发送退出透传的指令时,不要带换行
- 发送
17.AT+CIPCLOSE //断开UDP连接
断开ESP32与手机进行UDP单播通讯/透传结束。
演示
UDP单播透传