STM32ExampleCode-12-ESP8266-IOT-HUAWEI

STM32ExampleCode-12-ESP8266-IOT-HUAWEI

文章内容:

    STM32标准库通过串口发送AT指令完成与ESP8266的控制实现接入华为云物联网平台,并完成基本通信与控制,包括设备属性上报和命令下发解析与响应,并将相关代码打包成HuaweiIOT_at_esp8266.c和HuaweiIOT_at_esp8266.h驱动文件。

一、华为云物联网平台创建产品与设备

1. 创建产品、注册设备、添加属性

(1). 创建产品

点击进入:华为云物联网平台控制台
Pic_STM32ExampleCode12_01.png
Pic_STM32ExampleCode12_02.png

2.注册设备

Pic_STM32ExampleCode12_03.png
Pic_STM32ExampleCode12_04.png
此时可获取设备ID和密钥:
device id:“61fb2d7fde9933029be5ff9e_esp8266_test01”
secret:“自己设定的密钥”

3.添加属性

Pic_STM32ExampleCode12_05.png
Pic_STM32ExampleCode12_06.png

4.获取MQTT三元组(ClientId、Username、Password)

我们可以通过华为云提供的官方产品帮助文档中,根据参数描述自己计算出三元组;或者我们可以使用下面的网页来帮助我们生成三元组
华为云物联网平台MQTT三元组在线生成
Pic_STM32ExampleCode12_07.jfif
Pic_STM32ExampleCode12_08.jfif
补充:平台接入地址为: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,右上角会有绿色提示灯即代表登录成功

Pic_STM32ExampleCode12_09.png
Pic_STM32ExampleCode12_10.png

(2).查看在线状态

Pic_STM32ExampleCode12_11.jfif

(3). 添加服务、属性、命令

Pic_STM32ExampleCode12_12.png

(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)上报测试

监控运维的在线调试中可查看具体信息
Pic_STM32ExampleCode12_13.jfif
Pic_STM32ExampleCode12_16.png
Pic_STM32ExampleCode12_15.png

e)下发测试

Pic_STM32ExampleCode12_16.png
接下来我们就可以通过对其他设备的编程控制来代替mqtt.fx实现基本通信与控制啦

二、STM32标准库AT+ESP8266+华为云物联网平台

1.下载工程示例

点击下载:Gitee/ IOT趣制作 / STM32ExampleCode-12-ESP8266-IOT-HUAWEI
Pic_STM32ExampleCode12_17.png

2. esp8266_at_HuaweiIOT驱动

在上面下载的工程链接中的"\HARDWARE\HuaweiIOT_at_esp8266"目录下有对应的驱动文件,使用时我们将这两个文件拷贝到自己工程的驱动库中。

Pic_STM32ExampleCode12_18.png

3. 驱动库的使用

打开HuaweiIOT_at_esp8266.c文件,我们按照提示完成库的基本配置:

(1)添加引用库的头文件

Pic_STM32ExampleCode12_19.png
Pic_STM32ExampleCode12_20.png

(2)将HuaweIOT.h中宏定义的数据进行补齐

Pic_STM32ExampleCode12_21.png
Pic_STM32ExampleCode12_21.png

(3)将下面变量的声明拷贝至main.c

Pic_STM32ExampleCode12_21.png
Pic_STM32ExampleCode12_21.png
Pic_STM32ExampleCode12_21.png
Pic_STM32ExampleCode12_21.png

(4)将USART1_IRQHandler()串口接收中断处理函数拷贝至main.c,系统中断函数无需额外声明

(5)初始化并上报属性

HuaweiIot_init();    //华为云物联网平台初始化
HuaweiIot_DevDate_publish("temp",23);//上报温度:23摄氏度
至此完成华为云物联网平台的设备属性上报与命令控制的代码编程,具体可以参考下面示例工程的运行效果。

4. 示例

1)打开工程

-esp8266(esp01s)模块\STM32+esp8266接入华为云示例工程\USER”中有keil工程的启动文件,然后按上述操作补全代码:
Pic_STM32ExampleCode12_21.png

2)编译烧录运行

按下复位键,可出现下图信息
Pic_STM32ExampleCode12_21.png

同时在“监控运维->在线调试”中选择自己的设备:

Pic_STM32ExampleCode12_21.png
Pic_STM32ExampleCode12_21.png

设备上线与属性上报数据记录:
Pic_STM32ExampleCode12_21.png
命令下发与设备响应:
Pic_STM32ExampleCode12_21.png
功能:在定时上报温度信息的同时,能够接收云平台的命令完成LED的远程控制。

Licensed under CC BY-NC-SA 4.0