基于STM32+华为云IOT设计智能称重系统


摘要:选择部署多个重量传感器和必要的算法、通过WiFi 通信模块、GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重、地图位置等重要信息,实现对称重系统的远程监测。

本文分享自华为云社区《基于STM32+华为云IOT设计智能称重系统》,作者:DS小龙哥

伴随着网络技术,各种通讯技术,传感器技术的飞速发展,物联网技术成为了当今技术领域发展为迅速的技术。而物联网技术的核心仍然是以互联网技术为基础的,物联网是新一代信息技术的重要组成部分,也是信息化时代的重要发展阶段。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。

本设计的模型来源于物流、矿山、高速公路等场合,车辆称重地螃的智能化升级要求,设计基于物联网的智能在线称重方案,开发智能称重控制器,合理选择部署多个重量传感器和必要的算法、通过WIFF通信模块、GPS定位模块,采集车辆重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重、地图位置等重要信息,实现对称重系统的远程监测。

随着物联网技术的逐步发展和日趋成熟,物联网技术是一个大而广的应用技术,并非仅仅局限于延伸应用。相信对地磅来说必然会有更多创新的应用实践。总的来说,地磅现代化、信息化、智能化一定紧随物联网技术的发展,而物联网技术的发展也必将促使地磅兴起新的技术革命。

1.设计的技术与硬件选项总结:

(1)云端通信模块采用ESP8266-WIFI

(2)联网通信模块采用:ESP8266

(3)GPS模块:采用ATGM336H双模GPS模块

(4)电子秤模块:用于称重

(5)物联网云平台:采用华为云物联网平台

设计总结:

(1)采用ESP8266连接OneNet上传称重数据和GPS数据到云端(采用HTTP协议)

云端上显示2个数据:GPS定位数据–地图显示,称重传感器的数据值

(2)3个称重传感器接一个秤面称重计算平均值

(3)本地OLED显示屏显示GPS经纬度数据、称重传感器的数据值。

(4)OLED设计一个页面显示并设置当前的报警上限。通过按键进行加减

当称重的阀值超出了设置阀值,蜂鸣器报警。

2. 硬件选型

2.1 STM32F103C8T6

STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。

2.2 电子秤传感器

HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。

2.3 ESP8266-wifi

2.4 GPS模块

2.5 蜂鸣器

3. 创建云端产品与设备

3.1 创建产品

地址:https://www.huaweicloud.com/?locale=zh-cn

3.2 创建设备

地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device

3.3 自定义模型数据

链接:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-dev/all-product/7211833377cf435c8c0580de390eedbe/product-detail/6277d70223aaf461a0f72a56
这个模型数据就是设备要上传的数据。

{
    "device_id": "6277d70223aaf461a0f72a56_weigh",
    "secret": "12345678"
}

服务ID: weigh
属性名称    数据类型    访问方式    描述        
weigh       int(整型)    可读       重量          
GPS       string(字符串)    可读      GPS定位信息

3.4 MQTT密匙生成

创建完产品、设备之后,接下来就需要知道如何通过MQTT协议登陆华为云服务器。

官方的详细介绍在这里:
https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

属性上报格式:
https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html

MQTT设备登陆密匙生成地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

DeviceId         6277d70223aaf461a0f72a56_weigh
DeviceSecret     12345678
ClientId        6277d70223aaf461a0f72a56_weigh_0_0_2022050814
Username        6277d70223aaf461a0f72a56_weigh
Password       0a3d097c6449b8526a562006a74c8c5e61ce63d6c831ea291560736a3332cf77

华为云物联网平台的域名是: 161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
华为云物联网平台的IP地址是:121.36.42.100
在软件里参数填充正确之后,就看到设备已经连接成功了。
接下来打开设备页面,可以看到设备已经在线了。

3.5 主题订阅与发布

//订阅主题: 平台下发消息给设备
$oc/devices/6277d70223aaf461a0f72a56_weigh/sys/messages/down
//设备上报数据
$oc/devices/6277d70223aaf461a0f72a56_weigh/sys/properties/report
//上报的属性消息 (一次可以上报多个属性,在json里增加就行了)
{"services": [{"service_id": "weigh","properties":{"GPS":"lat:12.345,lng:45.678"}}]}

通过MQTT客户端软件模拟上报测试:

查看控制台页面,数据已经上传成功了。

3.6 应用侧开发

为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的API接口、SDK接口,为了方便通用一点,我这里采用了API接口完成数据交互,上位机软件采用QT开发。

帮助文档地址: https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html

设备属性就是设备上传的传感器状态数据信息,应用侧提供了API接口,可以主动向设备端下发请求指令;设备端收到指令之后需要按照约定的数据格式上报数据;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。

在使用接口时,最好先使用华为自己的调试接口测试。
https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ListProperties

上位机软件采用Qt框架设计,Qt是一个跨平台的C++图形用户界面应用程序框架。Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。

QT官网: 点击关注,第一时间了解华为云新鲜技术~