赞
踩
摘要:本文讲述一种使用STM32F103C8T6控制器+ESP8266使用MATT连接阿里云的方法,可以搭配这篇文章中的云Web或移动开发,实现物联网功能并在电脑网页或手机网页让硬件的数据可视化,实验时间2022年5月21日。
【1】MQTT连接指令如下,使用串口助手电脑直接连接ESP8266发送一下代码可以连接到阿里云上面,这次我们要用STM32F103C8T6控制器对ESP8266发出一下指令,这些指令的内容阿里云中已经给出了,具体解释请见下面链接:一种ESP8266使用MQTT连接阿里云和云Web方法_@于千的博客-CSDN博客_esp8266 mqtt连接
- AT+RST
- AT+CWMODE=1
- AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"
- AT+CWJAP="HONOR30Pro","123456789"
- AT+MQTTUSERCFG=0,1,"NULL","esp8266A&a12YPHONE7S","642715e19fdbedec9b88dc2d50800a9c10cbd7d7145a54d0755373305d",0,0,""
- AT+MQTTCLIENTID=0,"a12YPHONE7S.esp8266A|securemode=2\,signmethod=hmacsha256\,timestamp=1649410494149|"
- AT+MQTTCONN=0,"a12YPHONE7S.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
- AT+MQTTSUB=0,"/sys/a12YPHONE7S/esp8266A/thing/service/property/set",1
- AT+MQTTPUB=0,"/sys/a12YPHONE7S/esp8266A/thing/event/property/post","{\"id\":1649429569996\,\"params\":{\"CurrentTemperature\":41}\,\"version\":\"1.0\"\,\"method\":\"thing.event.property.post\"}",1,0
- AT+MQTTPUB=0,"/sys/a12YPHONE7S/esp8266A/thing/event/property/post","{\"id\":1649475904347\,\"params\":{\"AirConPowerConsumption\":50\,\"AirConVolt\":80\,\"RunTimes\":100}\,\"version\":\"1.0\"\,\"method\":\"thing.event.property.post\"}",1,0
-
-
但是我们在STM32中放入的串口指令并不能直接COPY上面的代码,因为C语言在字符串中的一些特殊字符需要改变比如" 变为\" ,\变为\\。所以在工程代码中发送的指令已经更改。
【2】下面介绍我的工程代码如何移植其他工程中,首先把esp8266.c、esp8266.h、mqtt.c、mqtt.h添加到你的工程里面,如下图:
【3】接下来,连接参数我设置在mqtt.h中,打开如下图。按照按时修改,把WiFi换成你的,把MQTT连接参数换成你的,还有你的MQTT订阅主题的地址。
【4】修改好以后就可以在main函数中初始化ESP8266了,把ESP8266_Init(115200);添加到main函数中去,事实上这是串口2的初始化。
【5】下一步,添加ESP8266_STA_MQTTClient_Test();函数到main函数中,这个函数的执行就是把上面的MQTT连接指令从串口2中发送出去,如果上面的修改是严格按照规定操作的,这个函数运行完ESP8266就已经连接到阿里云了。
【6】阿里云的设备已经在线,这时候来使用ESP8266_MQTTPUB_ME(A,B,C,D,E,F,G);函数,其中入口参数为char型,一种int型、float型转char型以及回转方法_@于千的博客-CSDN博客,所以无论想要发送什么数据都要转为char型来发送,而在阿里云添加的物模型数据可以是任意格式,这之间没有冲突,如下图:
通常先int、float一个变量,当控制器检测到数据时,赋值给它,再把它转换为char型的字符串A、B、C等等,在执行ESP8266_MQTTPUB_ME(A,B,C,D,E,F,G);函数,数据就被发送到阿里云上啦!
链接:mqtt.c mqtt.h
提取码:0723
链接:esp8266.c esp8266.h
提取码:0723
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。