STM32+华为云IOT制作酒驾监控系统:上车就监控


摘要:设计一种安装在驾驶室内,能根据具体功能进行鉴别酒精浓度的系统,一起监督行车安全。

本文分享自华为云社区《基于STM32+华为云IOT设计的酒驾监控系统【玩转华为云】》,作者: DS小龙哥。

1. 前言

随着人们生活水平的提高,为了减少和杜绝车祸的现象越来越多,所引发的交通事故也引起了人们的重视,为了减少和杜绝酒后驾车导致事故发生,当前设计了一种安装在驾驶室内,能根据具体功能进行鉴别酒精浓度的系统,当识别到酒驾之后会发出警报,并发送短信给指定紧急联系人,通知家人通知酒驾,一起监督行车安全。并将GPS数据上传到华为云物联网平台,调用地图模块显示具体位置,主控芯片采用STM32单片机,GSM模块采用IM800C。系统还带了一块LCD显示屏,可以实时显示检测的酒精含量,酒精超标后,本地蜂鸣器也会发出警报,提醒驾驶员。

测量酒驾的标准是:

(1)饮酒驾车是指车辆驾驶人员血液中的酒精含量大于或者等于20mg/100ml,小于80mg/100ml的驾驶行为。(2)醉酒驾车是指车辆驾驶人员血液中的酒精含量大于或者等于80mg/100ml的驾驶行为。

需要使用的硬件如下:

(1)STM32系统板

(2)酒精检测传感器

(3)LCD显示屏

(4)供电模块

(5)SIM800C模块

(6)蜂鸣器模块

(7)GPS模块–采用SIM800C内部的GPS功能获取GPS数据。

为了测试,搞了几口二锅头。

上位机采用QT开发,调用华为云的应用侧接口获取设备上传的数据。再调用百度接口,获取GPS定位的位置。

2. 登录华为云创建云端设备

2.1 创建产品

华为运官网: https://www.huaweicloud.com/

在这里可以查看接入的协议的端口号和地址。

MQTT (1883)    a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

我们设备接入的协议选择MQTT,端口对应是1883

接下来继续创建产品,点击产品页面,点击右上角创建产品:

2.2 创建设备

这是我的设备信息:

设备ID
625cd29cecf9c41c38215ba5_1126626497

设备密钥
1126626497
    
{
    "device_id": "625cd29cecf9c41c38215ba5_1126626497",
    "secret": "1126626497"
}

2.3 产品模型定义

这一步就是设置上报设备的属性,也就是设备的数据类型定义。

2.4 生成MQTT登录密匙

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

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

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

下面就得到了MQTT协议设备登录的参数。

2.5 使用MQTT客户端软件登录

所有的参数已经得到,接下来采用MQTT客户端登录华为云进行测试。

华为云物联网平台的域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

华为云物联网平台的IP地址是: 121.36.42.100

在软件里参数填充正确之后,就看到设备已经连接成功了。

接下来打开设备页面,可以看到设备已经在线了。

2.6 上报数据

官方文档: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

在这个文档里介绍了MQTT上报数据的格式。

总结的格式:

//订阅主题: 平台下发消息给设备
$oc/devices/625cd29cecf9c41c38215ba5_1126626497/sys/messages/down

//设备上报数据
$oc/devices/625cd29cecf9c41c38215ba5_1126626497/sys/properties/report

//上报的属性消息 (一次可以上报多个属性,在json里增加就行了)
{"services": [{"service_id": "MQ3","properties":{"MQ3":50}}]}

到此,设备数据已经上报成功,如果需要增加更多的属性,按照流程继续增加即可。

3. STM32代码实现

酒精浓度传感器的预热时间要20秒~1分钟左右,这段时间之后采集的数据才会稳定。预热模块会发热,烫手,这个是正常现象。

3.1 系统原理图

3.2 程序下载

通过USB进行程序下载: 下载软件在软件包目录下。

点击开始编程之后,点击板子上的复位键即可下载程序,如果失败,重试几次即可。正常的效果如下。

正常程序运行之后,打开串口调试助手看到的初始化信息如下:

3.3 字体取模

3.4 main.c代码

keil工程可以在这里get: IoT物联网社区 

添加华为云IoT小助手微信号(hwc-iot),回复“阅读”获取更多资讯

 

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