ESP32-WROOM-32 AT指令配置TCP通讯
- ESP32-WROOM-32
- 前言
- 固件烧录
- 测试AT指令
- TCP通讯\透传
- ESP32配置SoftAP
- ESP32作TCP Client连接TCP Server通讯/透传
- 普通传输模式
- 演示
- WIFI透传
- 演示
- ESP32做TCP Server连接TCP Client通讯
- 演示
ESP32-WROOM-32
前言
软硬件准备:
ESP32-WROOM-32、USB数据线、USB转TTL模块、手机(本文用手机测试,也可以用电脑测试)、杜邦线、
乐鑫官方ESP32-WROOM-32的出厂AT固件、Flash Download Tools、串口助手、TCP调试助手APP(手机\电脑)
固件烧录
固件烧录要用到ESP32-WROOM-32、USB数据线、乐鑫官方ESP32-WROOM-32的出厂AT固件和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指令
乐鑫官方的这个AT固件UART1只能打印日志,需要发送AT指令的话需要用UART2,ESP32-WROOM-32一般是把UART1接到串口芯片转USB口引出,而UART2只是把引脚引出来,没有接转USB芯片,这时就要用到USB转TTL了。
USB转TTL接到ESP32-WROOM-32的UART2上,上电,
打开串口助手
波特率为115200,停止位1,数据位8,无校验
发送“AT”,查看烧录的AT固件是否正常运行
ESP32 | USB转TTL |
---|---|
RX2 | TX |
TX2 | RX |
GND | GND |
VCC | 5V |
AT固件正常运行。
TCP通讯\透传
ESP32配置SoftAP
在实现ESP32和手机之间进行TCP通讯\透传之前,需要让两者通过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作TCP Client连接TCP Server通讯/透传
普通传输模式
–接上–
- 手机连上ESP32的WIFI后,打开TCP调试助手。
- 选择“TCP服务端”,不同的软件可能会名字不同,有可能会叫“TCP服务器”,
- 新建TCP服务,Load IP为手机本机的IP地址,不知道是多少的话可以看ESP32的串口输出,连接 上WIFI后ESP32的串口会输出连接信息,其中就有连接设备的IP地址。端口号输入一个没有占用的,本次测试以1000为例。
- 在串口助手发送连接TCP Server的指令
AT+CIPSTART="TCP","192.168.4.2",1000 //ESP32连接TCP服务器
/*
第一个参数表示网络连接类型,本次是TCP连接,所以网络连接类型为TCP
第二个参数为TCP Server的地址
第三个参数为远端端口号
*/
发送上面的建立 TCP 连接指令后,如果成功连接串口助手会返回相关信息。
到了这一步,手机通过TCP调试助手已经可以发送数据给ESP32了,ESP32接收到数据后会在串口打印输出。
虽然ESP32可以收到了手机发过来的数据了,但是这个时候如果想从ESP32发送数据到手机上,串口助手会返回ERROR,并且没有把数据发出去,这时进行下一步。
- 发送
AT+CIPSEND=<Length> //发送指定长度的数据请求
/*
由于这次实验ESP32充当的是TCP Client,所以是单连模式,这条指令就只有Length一个参数
Length:需要发的数据长度
*/
当发送上面指令成功后,ESP32进入指定长度数据发送的状态,可以发送一次数据长度小于Length的数据,发送完后,ESP32会返回AT模式,每次发送数据都要先发AT+CIPSEND=XX(太麻烦了不是?),进入透传后就不需要发,发送指定长度数据请求的指令了。
演示
普通传输
WIFI透传
- 发送
AT+CIPCLOSE //断开TCP连接
断开TCP连接后再发送
AT+CIPSTART="TCP","192.168.4.2",1000 //ESP32连接TCP服务器
重新连接TCP Server
- 发送
AT+CIPMODE=1 //进入WIFI透传模式
进入WIFI透传模式,注意WIFI透传模式仅支持TCP单连模式、UDP 固定通信对端、SSL 单连接的情况。
- 进入WIFI透传模式后,发送开始传输的指令即可开始透传
AT+CIPSEND //开始发送数据
这一步成功后,ESP32的就进入了WIFI输出据透传状态,期间发送AT指令无效
- 退出透传,当完成了透传后,不需要透传了,ESP32返回AT指令状态发送
+++
注意 发送退出透传的指令时,不要带换行
- 发送
17.AT+CIPCLOSE //断开TCP连接
断开ESP32与TCP Server的连接,WIFI透传结束。
演示
WIFI透传
ESP32做TCP Server连接TCP Client通讯
ESP32作为TCP Server连接TCP Client通讯与上面的一样,前面都是需要配置AP和连接WIFI,所以直接接着 ESP32配置SoftAP这一节的最后一步,进行第五步操作开始进行ESP32作为TCP Server与手机建立TCP连接通讯
- 设置ESP32的的连接模式为多连接,发送
AT+CIPMUX=1 //设置为多连模式
- 创建TCP服务,发送
AT+CIPSERVER=1,80 //建立TCP服务器
/*
参数一为建立服务,该参数为0时,关闭服务
第二个参数为端口号
*/
- 上面发送完建立TCP服务后,手机打开TCP调试助手APP ,选择“TCP客户端”。
- 手机在TCP调试助手“TCP客户端”界面,输入TCP Server的IP,默认是192.168.4.1,端口号上面配置的是80,所以手机在TCP调试助手“TCP客户端”界面端口号输入80,点击连接。
- 由于是多连模式,所以手机通过TCP联机到ESP32后,ESP32的串口会打印出LinkID,后面ESP32发送数据到手机上时需要用到这个LinkID
- ESP32通过TCP发送数据到手机
AT+CIPSEND=<link ID>,<length> //ESP32发数据到手机的发送请求
/*
第一个参数Link ID为Client连接上后TCP Server用于区分Client而分配的ID,如果只是连了一台设备的话一般为0;
第二个参数Length:需要发的数据长度
*/
上面指令发送成功后即可发送小于Length长度的数据到手机上,手机可直接发送数据到ESP32上面。
由于是多连模式,所以无法进入WIFI透传,上面发送WIFI透传的指令时有说明,所以ESP32作为TCP Server连接TCP Client通讯只能是普通传输模式。
演示
普通传输