基于STM32的端到端物联网全栈开发二

大兔子大兔子 提交于 2021-02-05 17:05:51

阿里云IOT平台介绍

介绍阿里云物联网平台的几个功能以及优势,物联网的体系大致可以分为一下几个方面

 

阿里云物联网平台的主要产品架构

 

主要分为 IOT Hub (负责设备的接入)设备管理 (管理设备的生命周期 物模型)规则引擎(进一步处理设备上传的数据) 安全认证(所有设备在接入物联网平台时都需要鉴权信息和安全认证)

阿里云物联网平台的主要功能分为

 

 

阿里云提供开源的多种平台设备端代码,

 

 

 

 

 

 

同时阿里云物联网平台还提供服务端订阅消息的功能

 

物联网平台基础概念讲解

 

 

 

 

 

 

 

 

 

MQTT协议中有 订阅者 发布者 和代理 三个角色。

发布者将消息发布给代理。代理负责将来自发布者的消息进行存储处理,并将这些消息发送给订阅者。

发布者和订阅者通过不同的topic来进行消息的双向传输,设备可以往topic中发送消息,也可以从topic订阅消息,

topic类是相对于产品的概念: 在产品下定义了topic类之后,产品下所有的设备都会自动生成相应的topic,

物联网平台通信的模式

 

 

 

 

物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。在物联网平台中定义物模型即定义产品功能,完成功能定义后系统将自动生成该产品的物模型,物模型描述产品是什么,能做什么,可以对外提供哪些服务。物模型将产品功能类型分为3类 : 属性 服务 和 事件 ,定义了这3类功能即完成了物模型的定义。

 

回顾课程场景,与之相对应的有 3个属性 两个事件 和3个服务

 

 

平台提供设备拓扑关系管理服务,拓扑关系和设备连入物联网的方式有关。需要注意的是网关具有子设备管理模块,

平台提供设备数据管理服务,可以看到最近一次的快造数据和历史数据。

平台提供设备固件升级服务

 

数据上传的方式有两种

 

既然有Alink协议还需要透传的原因

 

设备云端透传的流程图,上下行数据都是自定义的二进制格式数据。数据的解析工作由云端的脚本解析引擎完成。

 

平台还提供服务端订阅功能,以下是配置服务端订阅后的流程。

 

当用户订阅topic之后,可以对设备数据进行处理和转发

 

利用规则引擎进行数据转发操作分为以下5种。

 

平台提供多语言的设备端SDK

 

 

 

-----------------------第三章 基于STM32节点设备接入阿里云平台

基于STM32的节点端介绍

 

使用Paho MQTT协议栈直连阿里云IOt 平台 :适用于功能受限的设备

使用linkkit c-sdk 和 tls通过MQTT协议直连阿里云 iot平台:适用于资源丰富的节点设备

 

 

 

 

STM32cubemx 中间件选择和集成 功耗估计 工程初始文件生成

STM32CubeProgrammer

可以读取和烧写STM32的片上闪存、选项字节、片外存储器等。

STM32CubeMonitor-power

可以实现监控MCU运行参数,并进行功耗测量

STM32cubemonitor-rf

cube扩展功能包一般是针对某个具体的应用,比如连接阿里云 I-cube 阿里云

X-CUBE I-CUBE

 

 

cubemx 5.1以插件的形式,将 IKS01A2板的驱动集成了。通过在cubemx的配置可以很方便的在任意带有IIC接口的STM32上使用该扩展板,甚至进一步在任意STM32上使用 IKS01A2板上的传感器。STM32CUBEMX的插件功能,如何把自己的驱动或者功能软件做成插件导入到cubemx中

 

 

固件版本 EMW3080 v2.1.2 通用版本固件包 解压缩文件后有两个固件包,一个是aii.bin(包括bootload),一个是ota.bin不包括bootload,可以通过串口或者jlink的swd进行更新

 

---------------------------------------第二节 使用Paho MQTT 客户端协议栈直连阿里云IoT平台

适用于资源受限的设备

以mqtt连接阿里云有两种步骤流程:

1基于mqtt直连:按照阿里云iot平台自定义的,对连接报文里参数的要求根据在IoT平台所创建的产品设备的三元组信息来拼接出报文参数,然后发送mqtt connect这个连接报文,每个设备由于三元组不同发出的连接参数都是不同的,这种方式可以带 TLS或者不带TLS连接。

2 基于http认证授权,首先设备端会向一个固定的https服务器发送请求,报文的参数会包含 三元组中的两个信息。在服务器返回的参数中会包含下一步mqtt connect报文所需要的mqtt用户名和密码,mqtt地址和C证书等。现在介绍的是mqtt直连方式。如果想了解如何使用STM32基于http认证授权的方式来连接阿里云iot平台 可以搜索 I-Cube-aliyun

 

使用Paho MQTT 客户端协议栈直连阿里云IoT平台

 

初始化完成之后,就在用户终端等待用户输入历程运行需要的用户参数,包括 wifi热点 设备三元组信息,这两类信息如果事先已经烧到了MCU的flash,历程会给出5秒的等待时间,如果5秒内没有新的参数输入则使用已存在mcu里的参数配置,如果mcu片上闪存没有保存相关的信息的话,就会一直等待。根据输入的wifi热点和设备三元组信息代码由此计算连接阿里云平台的mqtt参数,并进行连接,连接成功之后,订阅两个消息主题,温度报警限制设置 和解除报警。以准备来自用户服务器下发的对应消息。

 

板子上电后有一个串口打印信息,按下黑色复位按钮,首次连接wifi需要按下蓝色按键。进入wifi参数配置。用户在此输入自己wifi的热点名称和密码。输入完毕后参数会被保存在flash中固定的位置,如果之前未曾输入则会一直等待用户输入。热点连接成功之后下一步就是使用用户自己的阿里云IoT平台侧参数进行MQTT连接。同样首次连接用户需要按下板上的蓝色按钮进入参数配置,分别是用户使用 阿里云时候所在的 regionID ProductKey device name device secret,输入完成后这些参数也会被保存在flash中,然后代码根据阿里云平台侧要求的MQTT参数进行计算。关于regionID字符串:阿里云服务在国内国外都开有多个区域,区域是指物理的数据中心,产品设备等资源创建成功后不能够更换区域 regionID 字符串查询页面 可以查询,但是目前阿里云IoT服务仅在华东二站开通,因此需要输入的regionID都是同一个,都是 cn-shanghai

 

阿里云IOT平台连接成功后订阅两个主题,并每5秒上报当前的 温湿度

 

节点连接阿里云IOT平台成功后,可以看到该设备上线的绿色标记,从日志服务的上行消息分析,也可以看到平台每5秒左右收到来自设备发布的信息。IoT平台收到消息后会通过http2协议转发到用户服务器上,后端应用把数据写入到数据库中,前端应用一方面可以看到设备是否上线的状态,以及当前的温湿度值都是和串口打印的一致,并且通过起止时间可以查询这一段时间内的温度和湿度的曲线值,在用户的前端页面用户可以修改并下发给设备温度报警阈值这个参数。

 

节点设备在串口打印的节点信息,

 

步骤:

登录阿里云->管理控制台->产品与服务 物联平台

在这个新建一个基础版的产品和设备,然后根据获取到的产品和设备信息,分别对设备端和应用端的后端程序进行配置,进行关联,然后才可以通过网页来监控和控制设备端。

在设备管理》产品 这个里可以创建新的产品。点击创建产品,选择基础版,点击下一步,输入产品的名称

 

 

点击完成就创建完成了一个新的产品。可以在产品下面添加设备,平台会自动给出设备的三元组信息。

 

 

在产品的Topic类列表下面看到自动生成的 Topic类,我们需要添加4个主题类,分别是高温报警的主题类 和 上报属性的主题类 ,这两个主题类是发布,阈值设定和解除报警的主题类是订阅

 

 

开通服务端订阅

应用程序是通过物联网平台的服务端订阅,来获取设备上传的一些消息的。在这里,我们需要启用服务端订阅这个功能,当启用这个功能之后,应用程序就可以订阅该产品类型下配置的所有消息。当物联网平台收到设备消息之后,平台就会立刻通过http/2的通道来推送消息到应用端

 

选择需要推送的消息,保存。至此,云端配置基本完成。

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!