一、 ESP8266 烧录固件
1.1 烧录
ESP8266中原本的固件是没有MQTT相关的AT指令的,需要通过烧录固件使其支持对应的AT指令。
参考链接:https://blog.csdn.net/qq_43819071/article/details/132111194
2.2 烧录过程中需要注意的问题
烧录之前确保ESP8266的各个引脚必须连接正确,I0必须接地。
3.3V/5V ------ 3.3V/5V
RX ------ TX
TX ------ RX
GND ------ GND
I0 ------ GND
在烧录成功之后,拔掉I0接口,使其进去工作模式,通过串口工具测试MQTT的AT指令能否正确连接。
二、STM32连接MQTT服务器
2.1 通过AT指令将ESP8266 设置为客户端
先将STM32 与ESP8266连接的串口初始化。我这里采用的是UART4,连接到的MQTT服务器是巴法云,官网:https://cloud.bemfa.com/,注册后即可正常连接
代码如下:
void Configure_ESP8266_MQTT(void)
{
rst_wifi();
delay_ms(500);
ESP8266_Clear();
//1 AT
while(ESP8266_SendCmd("AT\r\n\r", "OK", 200))
{
printf("AT Failed\r\n");
}
//2 将Wi-Fi模块设置为Station(STA)模式
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 50))
{
printf("STA Failed\r\n");
}
//3 连接WIFI的用户名和密码
while(ESP8266_SendCmd("AT+CWJAP=\"ChinaNet-NrgD\",\"rnq265xq\"\r\n", "OK", 500))
{
printf("WIFI Failed\r\n");
}
//4 设置MQTT相关属性
while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,\"clientid\",\"username\",\"password\",0,0,\"\"\r\n", "OK", 500))
{
printf("MQTT Failed\r\n");
}
//5 连接MQTT的ip
while(ESP8266_SendCmd("AT+MQTTCONN=0,\"bemfa.com\",9501,1\r\n", "OK",</