文章内容:
STM32标准库通过串口发送AT指令完成与ESP8266的控制实现接入华为云物联网平台,并完成基本通信与控制,包括设备属性上报和命令下发解析与响应,并将相关代码打包成HuaweiIOT_at_esp8266.c和HuaweiIOT_at_esp8266.h驱动文件。
一、华为云物联网平台创建产品与设备
1. 创建产品、注册设备、添加属性
(1). 创建产品
点击进入:华为云物联网平台控制台
2.注册设备
此时可获取设备ID和密钥:
device id:“61fb2d7fde9933029be5ff9e_esp8266_test01”
secret:“自己设定的密钥”
3.添加属性
4.获取MQTT三元组(ClientId、Username、Password)
我们可以通过华为云提供的官方产品帮助文档中,根据参数描述自己计算出三元组;或者我们可以使用下面的网页来帮助我们生成三元组
华为云物联网平台MQTT三元组在线生成
补充:平台接入地址为:iot-mqtts.cn-north-4.myhuaweicloud.com,端口号:1883
此时我们已经获取了下面这些信息,就可以使用MQTT.fx客户端软件进行登录测试
device_id: 61fb2d7fde9933029be5ff9e_esp8266_test01
secret: “自己设定的密钥”
ClientId: 61fb2d7fde9933029be5ff9e_esp8266_test01_0_0_2022020310
Username:61fb2d7fde9933029be5ff9e_esp8266_test01
Password:xxxxxxxxxx计算出来的秘钥xxxxxxxxxxxxxxxxxxxx
MQTT_Address:iot-mqtts.cn-north-4.myhuaweicloud.com
MQTT_Port:1883
2. 使用MQTT.fx进行测试
(1).登录MQTT测试
填写我们能上面获得的相关信息,创建完后点击Connect,右上角会有绿色提示灯即代表登录成功
(2).查看在线状态
(3). 添加服务、属性、命令
(4).常用的Topic
topic手册
a)设备上报属性
$oc/devices/{device_id}/sys/properties/report(需将“{device_id}”替换为所需的设备id)
b)平台下发命令
$oc/devices/{device_id}/sys/commands/#(需将“{device_id}”替换为所需的设备id)
c) 数据格式
{"services":[{"service_id":"你的服务id","properties":{"你的属性名称": 设置的值}}]
d)上报测试
监控运维的在线调试中可查看具体信息
e)下发测试
接下来我们就可以通过对其他设备的编程控制来代替mqtt.fx实现基本通信与控制啦
二、STM32标准库AT+ESP8266+华为云物联网平台
1.下载工程示例
点击下载:Gitee/ IOT趣制作 / STM32ExampleCode-12-ESP8266-IOT-HUAWEI
2. esp8266_at_HuaweiIOT驱动
在上面下载的工程链接中的"\HARDWARE\HuaweiIOT_at_esp8266"目录下有对应的驱动文件,使用时我们将这两个文件拷贝到自己工程的驱动库中。
3. 驱动库的使用
打开HuaweiIOT_at_esp8266.c文件,我们按照提示完成库的基本配置:
(1)添加引用库的头文件
(2)将HuaweIOT.h中宏定义的数据进行补齐
(3)将下面变量的声明拷贝至main.c
(4)将USART1_IRQHandler()串口接收中断处理函数拷贝至main.c,系统中断函数无需额外声明
(5)初始化并上报属性
HuaweiIot_init(); //华为云物联网平台初始化
HuaweiIot_DevDate_publish("temp",23);//上报温度:23摄氏度
至此完成华为云物联网平台的设备属性上报与命令控制的代码编程,具体可以参考下面示例工程的运行效果。
4. 示例
1)打开工程
-esp8266(esp01s)模块\STM32+esp8266接入华为云示例工程\USER”中有keil工程的启动文件,然后按上述操作补全代码:
2)编译烧录运行
按下复位键,可出现下图信息
同时在“监控运维->在线调试”中选择自己的设备:
设备上线与属性上报数据记录:
命令下发与设备响应:
功能:在定时上报温度信息的同时,能够接收云平台的命令完成LED的远程控制。