STM32与ESP8266结合使用MQTT协议实现数据发送至oneNET云平台串口通信详解
前言:这是基于STM32和ESP8266 WIFI模块的实战应用,全程干货满满,筑波已经踩玩了全部的坑,可放心食用。接下来我仔细介绍一下我的开发历程,希望对大家的学习有所帮助,也欢迎各位大佬来详细指出错误!!!
前提是自己已经烧录好了固件!!!!!
可以去安信可里寻找适合自己的固件,在乐鑫网站找烧录软件,这里不再解释。
AT固件汇总 | 安信可科技 https://www.espressif.com.cn/en/support/download/other-tools
准备材料:ESP8266模块,STM32开发板,oneNET云平台账号,CH340,ST-Link V2,串口i烧录助手(筑波用的是XCOM)
首先先给大家观看最后成果
1.串口发送

2.云平台显示


一,在onenet平台创建设备,再在产品下创建设备(初次创建设备没有连接过显示为未激活)
1.产品开发
2.这是设置你的物联网模型的,我自己设置的是关于光照的,根据自己的需求设计,注意选择数据流和选择MQTT
这里筑波已经添加了,刚创建的基本都是未激活。
二,发送AT指令(筑波用的是XCOM)
MQTT AT 命令集 – ESP32 – — ESP-AT 用户指南 latest 文档https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/MQTT_AT_Commands.html#cmd-mqttconn
1、AT //测试指令
2、AT+RST //复位指令
3、AT+CWMODE=1 //=1模式设置为station
4、AT+CWDHCP=1,1 //启动DHCP
5、AT+CWJAP=“WIFI名”,“密码”
6、 AT+MQTTUSERCFG=0,1,"设备ID","产品ID","上面得到的token",0,0,""
7、 AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
第七个直接复制即可
8、 AT+MQTTSUB=0,"$sys/产品ID/设备ID/thing/property/post/reply",1
9、AT+MQTTPUB=0,"$sys/产品ID/设备ID/thing/property/post","{\"id\":\"123\"\,\"params\":{\"属性标识符\":{\"value\":上传的数据}}}",0,0
注意:一定要记住自己的设备ID,产品名称,token!!!标识符后面会讲。当发送到7.时你会发现你的设备成功上云。后面两个诗订阅主题的发送步骤,属性标识符就是自己的
token算法_开发者文档_OneNETOneNET开发者文档 时间戳(Unix timestamp)转换工具 – 在线工具

这是计算时间戳的工具最好选择未来时间,比如今天4.13我就选择4.30。填入et
发送AT指令7之后就会显示设备在线不过想让它接收数据就必须要订阅。
8、 AT+MQTTSUB=0,"$sys/产品ID/设备ID/thing/property/post/reply",1
只用把设备ID和产品ID修改即可
9、AT+MQTTPUB=0,"$sys/产品ID/设备ID/thing/property/post","{\"id\":\"123\"\,\"params\":{\"属性标识符\":{\"value\":上传的数据}}}",0,0
注意的时必须是自己的属性标识符,筑波的时LUX者可以自己自定义,而且如果你的是int类型就不可以发送小数,必须是整形,不然会接受不到,如果是float类型就可以发送小数如23.6,如果在属性页面显示undefined就说明你的串口发送时标识符错误了。

按以上步骤基本就可以实现串口发送数据使云平台接收以及WIFI模块成功上云。
作者:阿拉斯加无名


