ESP8266 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫 ESP8266 的超低功耗的 UART-WiFi模块的模组,可以方便地进行二次开发,接入云端服务,实现手机 3/4G 全球随时随地的控制,加速产品原型设计。
ESP-01S | USB转TTL | 单片机 |
---|---|---|
VCC | 3.3V | 3.3V |
GND | GND | GND |
EN | 3.3V | 3.3V |
TX | RX | P3.0 |
RX | TX | P3.1 |
Note: ESP-01S使用3.3V供电,尽量不要使用USB转TTL的3.3V引脚供电。
串口调试助手在本博文结尾下载
使用串口调试助手向ESP-01S发送复位AT指令:
AT+RST - 复位命令
响应内容:
系统进行复位,串口助手会收到一堆乱码,里面包含了ESP-01S的系统日志,模块在上电过程中在波特率74880下,打印系统日志,然后切换到115200完成模块初始化。
如果可以正常响应AT命令,则表示模块连线成功。
如没有响应,检查以下配置是否正确:
- 根据上面的表格检查模块与USB转TTL的连线情况,确保模块与USB转TTL的RX、TX引脚交叉连接。
- 确保波特率为115200,ESP-01S的默认通信波特率为115200。
- 检查模块的供电情况,尽量不要使用USB转TTL上提供的3.3V供电。可以使用5V转3.3V模块连接单片机VCC端进行供电。
控制ESP-01S的AT指令可以分为四种类型:
类型 | 指令格式 | 作用 |
---|---|---|
测试指令 | AT+=? | 用于查询设置指令的参数以及取值范围 |
查询指令 | AT+? | 用于查询当前指令的值 |
设置指令 | AT+=<…> | 用于设置指令的参数值 |
执行指令 | AT+ | ⽤于执⾏受模块内部程序控制的变参数不可变的功能 |
AT指令必须要大写,并且以回车与换行符结尾(\r\n)
ESP-01S有三种接入网络的方式,Station模式、SoftAP模式、Station+SoftAP模式。
其中:
- Station模式的行为类似于手机连接WIFI,连接其它的AP热点(路由器)。
- SoftAP模式的行为类似于手机创建无线热点或者路由器的无线功能,提供给其它无线设备进行连接
ESP-01S有两种的通信方式,客户端形式,服务器端形式。
其中:
- 客户端形式,在确认对方IP地址的情况下,可以使用AT命令直接向对方发起TCP/UDP连接,并进行通信。
- 服务器端模式,不主动与其它无线设备进行连接,只监听设置好的端口,等待其它无线设备的连接,然后进行回复通信。
AT+CWMODE=1 // 设置模式为Station,连接其它的无线热点
AT+CWJAP_DEF="wifi_name","wifi_password" // 连接WIFI热点(路由器)
// 以上AT指令只需要配置一次,往后每次模块上电,都会自动进行连接热点(如果热点还存在的话)
// 以下AT指令每次上电都需要重新配置,否则无法工作
AT+CIPMUX=1 // 配置为多连接模式
AT+CIPSERVER=1,8080 // 监听8080端口(可自定义修改),等待无线设备连接
使用串口调试助手,依次发送上面的AT指令,就可以完成在局域网中建立服务器端。
查询ESP-01S模块在局域网中的IP。
如果ESP-01S连接的是路由器设备,则可以使用连接到相同路由器的电脑的浏览器打开192.168.0.1的路由器配置界面,以此查询ESP-01S模块的IP地址。
使用手机端或者PC端的网络调试助手,连接与ESP-01S相同的热点,设置助手软件为客户端模式,配置好IP与端口号,则可以向ESP-01S模块发送信息。
如果模块收到网络信息,则会向模块的TX口发送包含收到的网络信息的描述字符串。
+IPD,0,15:This is message
此字符串通常以+IPD
开头,后面的参数格式可能会有所不同。
其中,0
为代表当前发送信息到ESP-01S的客户端ID,以0
开头,依次增加。
而15
为代表模块接收到的信息长度,以字节为单位,This is message
为15
字节。
同上,首先使用串口调试助手向ESP-01S模块发送两个接入网络的AT指令。
AT+CWMODE=1
AT+CWJAP_DEF="wifi_name","wifi_password"
由于使用的是51单片机,波特率无法设置ESP-01S相同的115200,所以额外使用AT命令改变ESP-01S模块的串口波特率才能进行与51单片机的通信。使用串口调试助手发送AT+UART_DEF=9600,8,1,0,0
命令,参数分别代表:波特率、数据位、停止位、校验位、流控。
此命令保存到Flash,掉电不删除此配置。
剩下的两个AT+CIPMUX=1
和AT+CIPSERVER=1,8080
指令每次上电需要重新配置一次,所以该指令需要使用单片机的串口发送。
单片机使用串口发送AT指令的核心代码如下:
/* -------------------
初始化ESP-01S
------------------- */
void Init_ESP01S(){
Uart_SendStrData("AT+CIPMUX=1\r\n"); // 设置多连接
delay(); // 进行延时,等待模块反应过来
Uart_SendStrData("AT+CIPSERVER=1,80\r\n"); // 设置监听的端口
delay();
}
如上代码所述,Uart_SendStrData(unsigned char *msg)
函数是向串口发送数据的方法,此初始化函数Init_ESP01S()
调用串口发送函数来进行AT指令配置。
指令结尾记得附带回车换行符\r\n
其它在网络中的无线设备发送到ESP-01S的数据会被模块通过串口发送到单片机。数据格式如下:
+IPD,0,15:This is message
+IPD,<客户ID>,<信息长度>:<信息内容>
只需要在串口中断中接收解析以上的数据,就可以得到其它无线设备发送的信息。
串口调试助手:
- XCOM V2.0(PC板)
网络调试助手:
- 网络调试助手(Android版)
配置ESP-01S单片机实例代码:
- 51单片机实例代码 (提取码:9g42)
- 51单片机实例代码(github)
AT指令大全:
- ESP8266系列模块AT指令 (提取码:i8mx)