ESP8266 是一款低成本、低功耗的Wi-Fi模块。它基于Tensilica的L106微处理器,并且内置Wi-Fi功能,适用于物联网(IoT)设备开发。ESP8266 可以通过AT指令集进行控制,支持与各种硬件平台(如STM32、Arduino等)通信,因此被广泛应用于智能家居、传感器监控、无线通信等领域。
ESP8266支持多种工作模式,包括:
ESP8266具备强大的功能,常见的通信协议有HTTP、TCP/IP、MQTT等,其中MQTT协议因其轻量级和高效的特性,在物联网应用中得到了广泛使用。

ESP8266 通常通过串口(UART)与单片机(如STM32、Arduino等)进行通信。在实际连接时,常用的是ESP8266的TX(发送)和RX(接收)引脚与单片机的串口RX和TX引脚连接。此外,ESP8266需要提供足够的电源,一般为3.3V电压。以下是基本的接线方式:
ESP8266引脚 | 单片机引脚 | 说明 |
|---|---|---|
VCC | 3.3V | 连接至3.3V电源 |
GND | GND | 连接至地 |
RX | TX (单片机) | 连接单片机的串口TX引脚 |
TX | RX (单片机) | 连接单片机的串口RX引脚 |
CH_PD | 3.3V | 使能引脚,需连接至3.3V供电 |
RST | GPIO引脚 | 用于复位(可选接线) |
注意:
要测试ESP8266是否正常工作,最简单的方式是通过AT指令进行通讯测试。具体步骤如下:
确保ESP8266已经正确接线并接入到单片机的串口(TX/RX引脚连接正确)。
使用串口调试工具(如Tera Term、Hyperterminal等),或者使用单片机的UART端口发送和接收数据。
常见的ESP8266波特率为115200或9600(取决于固件版本和配置),在串口调试工具中设置正确的波特率。
打开串口调试工具,输入以下AT指令并回车,测试ESP8266是否正常响应:
AT // 查询是否能连接并获得响应正常情况下,ESP8266会返回OK,如果没有响应,检查硬件连接是否正确,确保ESP8266已正确上电并且串口连接正常。
通过以下指令,可以进一步检查ESP8266的状态:
AT+GMR:查询ESP8266的固件版本。AT+CWMODE?:查询ESP8266当前的工作模式。AT+CWLAP:扫描可用的Wi-Fi网络。AT+CWJAP="SSID","password":连接Wi-Fi网络。如果ESP8266正常工作,它会返回相应的响应信息。
ESP8266使用AT指令进行配置和控制,下面是一些常用的AT指令及其功能:
AT指令 | 说明 |
|---|---|
AT | 检查ESP8266是否正常工作,若正常返回OK。 |
AT+GMR | 查询ESP8266的固件版本。 |
AT+CWMODE=1 | 设置ESP8266为STA模式(客户端模式)。 |
AT+CWMODE=2 | 设置ESP8266为AP模式(接入点模式)。 |
AT+CWMODE=3 | 设置ESP8266为STA+AP模式(同时作为客户端和接入点)。 |
AT+CWLAP | 扫描周围的Wi-Fi网络,返回可用的Wi-Fi网络列表。 |
AT+CWJAP="SSID","password" | 连接指定的Wi-Fi网络,使用SSID和password。 |
AT+CIFSR | 查询ESP8266的IP地址。 |
AT+CWQAP | 断开当前连接的Wi-Fi网络。 |
AT+PING="IP_address" | 测试ESP8266是否能够访问指定的IP地址。 |
AT+RST | 重启ESP8266。 |
ESP8266的MQTT功能可以通过AT指令进行配置,以下是与MQTT相关的常用AT指令:
AT指令 | 说明 |
|---|---|
AT+MQTTUSERCFG=0,1,"username","password",0,0 | 设置MQTT服务器的用户名和密码。 |
AT+MQTTCONN="server_address",port | 连接MQTT服务器,指定服务器地址和端口。 |
AT+MQTTSUB="topic",1 | 订阅指定的主题(topic)。 |
AT+MQTTPUB="topic","message",0,1 | 发布消息到指定的主题(topic)。 |
AT+MQTTUNSUB="topic" | 取消订阅指定的主题(topic)。 |
AT+MQTTDISCONN | 断开MQTT连接。 |
通过AT指令连接MQTT物联网服务器,可以按以下步骤进行:
设置MQTT服务器配置: 连接Wi-Fi后,使用AT+MQTTUSERCFG指令配置MQTT服务器的用户名、密码和相关参数:
AT+MQTTUSERCFG=0,1,"mqtt_username","mqtt_password",0,0连接MQTT服务器: 使用AT+MQTTCONN指令连接到MQTT服务器:
AT+MQTTCONN="mqtt.eclipse.org",1883这将连接到mqtt.eclipse.org服务器,端口为1883。
订阅主题: 使用AT+MQTTSUB指令订阅一个主题:
AT+MQTTSUB="home/temperature",1这将订阅主题home/temperature,并且在接收到该主题的消息时进行处理。
发布消息: 使用AT+MQTTPUB指令发布消息到MQTT服务器:
AT+MQTTPUB="home/temperature","25.6",0,1这将发布一个消息25.6到home/temperature主题。
断开MQTT连接: 使用AT+MQTTDISCONN断开MQTT连接:
AT+MQTTDISCONN将ESP8266与MQTT服务器连接起来通常需要完成以下步骤:
连接Wi-Fi网络: 使用AT+CWMODE=1设置ESP8266为STA模式,然后使用AT+CWJAP="SSID","password"指令连接到Wi-Fi网络。
连接MQTT服务器: 使用AT+MQTTCONN="server_address",port指令连接到MQTT物联网服务器,如:
AT+MQTTCONN="mqtt.eclipse.org",1883订阅主题: 通过AT+MQTTSUB指令订阅指定主题,以便接收来自MQTT服务器的消息。
AT+MQTTSUB="home/temperature",1AT+MQTTPUB指令将数据发送到MQTT服务器的主题:AT+MQTTPUB="home/temperature","25.6",0,1AT+MQTTDISCONN指令断开与MQTT服务器的连接。AT+MQTTDISCONN通过这些步骤,ESP8266能够成功连接到MQTT物联网服务器,进行数据发布与订阅。