摘要:本文介绍基于STM32微控制器、BC26 NBIOT模组和华为云IOT平台,实现了一款智能井盖系统。
本文分享自华为云社区《基于STM32+NBIOT+华为云IOT设计的智能井盖》,作者:DS小龙哥 。
智能井盖是一种通过物联网技术实现对井盖状态监测和管理的设备。当前介绍基于STM32微控制器,BC26 NBIOT模组以及华为云IOT平台设计一款智能井盖系统。该系统通过光线传感器、霍尔传感器、温湿度传感器等设备实现井盖状态的实时监测,通过NBIOT网络将数据上传到华为云IOT平台,再通过云平台下发控制指令实现远程管理。
应用场景
智能井盖系统可以广泛应用于城市管理、交通建设等领域,其中具体应用场景包括:
(2)提供实时环境监测数据,帮助提升城市环境监测能力;
(3)利用NBIOT网络和华为云平台的远程控制功能,可以实现智能井盖的开关控制和监管,避免人工操作不便和监管不到位引起的危险。
二、硬件设计
本系统的硬件设计主要包括传感器模块和控制模块两部分,其中传感器模块主要负责采集井盖状态信息,控制模块则负责数据处理和通信。
【1】传感器模块
(1)光线传感器:光线传感器用于感知井盖上方光线强度,判断井盖是否露出地面。当井盖被遮住时,光线传感器输出低电平;当井盖暴露在外时,光线传感器输出高电平。
(2)霍尔传感器:霍尔传感器用于感知井盖状态(开/关),当井盖开启时,霍尔传感器输出高电平;当井盖关闭时,霍尔传感器输出低电平。
(3)温度传感器和湿度传感器:温度传感器和湿度传感器用于感知井盖下方的环境温湿度,实时反馈给系统,便于监测井盖下方环境状况。
【2】控制模块
(1)STM32微控制器:使用STM32F103C8T6微控制器,主要负责传感器数据采集、处理和控制模块与NBIOT模组之间的通信。
(2)BC26 NBIOT模组:使用BC26 NBIOT模组,通过NBIOT网络将采集到的井盖状态数据上传到华为云IOT平台,同时支持远程控制井盖开关。
(3)LED指示灯:采用不同颜色的LED指示灯,将井盖状态(开/关、异常、低电量)实时反馈给用户。
软件设计 软件设计主要包括STM32微控制器程序设计和华为云IOT平台开发两部分。
STM32微控制器程序设计: 主要包括三个模块:传感器采集模块、数据处理模块和通信模块。其中传感器采集模块负责采集传感器数据并进行处理;数据处理模块根据采集的数据进行逻辑处理,判断井盖状态;通信模块负责与NBIOT模组之间的通信,将处理后的数据上传至华为云IOT平台。
三、华为云IOT平台开发
在华为云IOT平台上,需要进行设备接入、数据模型定义、规则引擎配置和应用开发等四个核心模块的开发。其中,设备接入模块包括设备注册、获取设备证书、建立连接等步骤,以保障设备与云平台之间的安全通信;数据模型定义模块需要根据实际需求定义相应的数据模型,包括上传数据格式、设备属性和服务等。规则引擎配置模块需要完成实时消息推送、远程控制和告警等功能。应用开发模块则是将完整的智能井盖系统进行打包,为用户提供统一的操作接口。
华为云官网: https://www.huaweicloud.com/
打开官网,搜索物联网,就能快速找到 设备接入IoTDA
。
3.1 物联网平台介绍
华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。
使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。
物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。
设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。
业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。
3.2 开通物联网服务
地址: https://www.huaweicloud.com/product/iothub.html
开通标准版免费单元。
开通之后,点击总览
,查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。
总结:
端口号: MQTT (1883)| MQTTS (8883) 接入地址: a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com
根据域名地址得到IP地址信息:
Microsoft Windows [版本 10.0.19044.2846] (c) Microsoft Corporation。保留所有权利。 ? C:\Users\11266>ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com ? 正在 Ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com [121.36.42.100] 具有 32 字节的数据: 来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31 来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31 来自 121.36.42.100 的回复: 字节=32 时间=36ms TTL=31 来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31 ? 121.36.42.100 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 36ms,最长 = 37ms,平均 = 36ms ? C:\Users\11266>
MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。
3.3 创建产品
(1)创建产品
点击右上角创建产品。
(2)填写产品信息
根据自己产品名字填写,设备类型选择自定义类型。
(3)添加自定义模型
产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。
模型简单来说: 就是存放设备上传到云平台的数据。比如:环境温度、环境湿度、环境烟雾浓度、火焰检测状态图等等,这些我们都可以单独创建一个模型保存。
3.4 添加设备
产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。
(1)注册设备
点击右上角注册设备。
(2)根据自己的设备填写
在弹出的对话框里填写自己设备的信息。根据自己设备详细情况填写。
(3)保存设备信息
创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。