0


基于STM32设计的儿童乘车安全监测系统

一、前言

1.1 项目介绍

image.png

【1】项目功能介绍

随着社会的发展和科技的进步,儿童乘车安全问题越来越受到公众的关注。为了确保儿童在车辆内的安全,设计了一款基于STM32的儿童乘车安全监测系统。该系统可以实时监测车内环境,确保儿童处于舒适和安全的状态,同时为家长提供实时的车辆位置和安全信息,让家长随时了解儿童的安全状况。

本项目致力于开发一种儿童乘车安全监测系统,通过多个硬件模块和云端服务器相结合,实现对儿童乘车环境和安全状态的监测和保护。系统的核心硬件模块为STM32F103RCT6主控芯片,负责控制各个模块的工作和数据处理。环境监测模块包括DHT11模块、SGP30气体传感器模块和MPU6050模块,用来监测车内的温度、湿度、有害气体浓度和座椅倾斜度等数据。报警模块通过蜂鸣器和语音模块,当温度或有害气体浓度超过设定阈值时,触发报警信号提醒司机注意车辆驾驶安全。屏幕显示模块使用液晶显示屏,实时显示车内环境数据和座椅倾斜度,提醒司机关注儿童的安全状态。定位模块采用GPS定位,获取车辆的位置信息,实现对车辆位置的安全定位。无线传输模块使用4G模块进行数据传输,将采集到的数据通过MQTT协议上报至云端服务器,并与手机APP进行数据交互传输。云端服务器作为数据存储和交互平台,接收来自STM32和手机APP的数据,并提供数据查询和显示功能。手机APP通过HTTPS协议与云端服务器进行通信,在APP上显示实时车内环境数据、座椅倾斜度和车辆位置信息,并提供历史数据查询功能。

本项目能够实时监测儿童乘车的环境数据和座椅安全状态,及时发出报警提醒,提高司机对儿童乘车安全的关注度。同时,通过云端服务器和手机APP的数据交互,司机和家长可以随时了解车内环境状况和儿童的安全状态,为儿童乘车提供更加完善的保护。

整体功能描述:

(1)环境监测与显示:系统通过传感器模块监测车内的温湿度、有害气体浓度和座椅倾斜度等数据,并将这些数据实时显示在屏幕上,提醒司机关注车内环境。

(2)危险报警与提醒:当车内温度过高或有害气体浓度超标时,系统会触发蜂鸣器报警信号,提醒司机注意车内环境。同时,家长的手机APP也会收到提醒,以便及时采取措施。

(3)安全定位与追踪:系统利用GPS定位模块对车辆位置进行实时监测,并将位置信息上传至云端服务器。家长可以通过手机APP拉取服务器数据,实时了解车辆的位置和行驶轨迹。

(4)数据记录与分析:系统将采集的环境数据和座椅倾斜度等数据通过无线传输模块上传至云端服务器,记录历史数据。家长可以随时查询历史记录,了解儿童的安全状况和车辆行驶情况。

(5)语音预警与交互:当座椅倾斜度不适时,系统会通过语音模块进行报警提醒,提醒司机注意驾驶安全。同时,家长的手机APP也会收到提醒,以便及时与司机沟通调整。

本儿童乘车安全监测系统通过实时监测车内环境和车辆位置等信息,为家长和司机提供了全面的儿童安全保障,让家长随时了解儿童的安全状况,确保儿童的乘车安全。

【2】项目硬件模块介绍

(1)STM32F103RCT6主控芯片:作为整个系统的核心,负责控制各个模块的工作和数据处理。

(2)环境监测模块:

  • DHT11模块:用于监测车内的温度和湿度。
  • SGP30气体传感器模块:用于检测车内空气中的有害气体浓度,包括TVOC(总挥发性有机化合物)、CO2、甲醛等。
  • MPU6050模块:用于检测座椅的倾斜度,以判断儿童乘坐是否符合安全要求。

(3)报警模块:

  • 蜂鸣器:当温度过高或有害气体浓度超过设定阈值时,触发报警信号。
  • 语音模块:通过语音报警提醒司机注意车辆驾驶安全。

(4)屏幕显示模块:使用液晶显示屏实时显示车内环境数据和座椅倾斜度,以提醒司机关注儿童的安全状态。

(5)定位模块:采用GPS定位模块获取车辆的位置信息,实现对车辆位置的安全定位,实时上传到云端服务器。

(6)无线传输模块:使用4G模块进行数据传输,将采集到的数据通过MQTT协议上报至华为云物联网服务器,并与手机APP进行数据交互传输。

(7)云端服务器:采用华为云物联网服务器作为数据存储和交互平台,接收来自STM32和手机APP的数据,并提供数据查询和显示功能。

(8)手机APP模块:

  • Qt开发的Android手机APP:通过HTTPS协议与华为云物联网服务器进行通信,实现与服务器的数据交互和显示功能。
  • 数据显示界面:显示实时车内环境数据、座椅倾斜度和车辆位置信息。
  • 提醒功能:接收报警信息并进行提醒,同时提供历史数据查询功能。

以上是儿童乘车安全监测系统的功能模块组成,通过这些模块的协同工作,可以实现对儿童乘车环境和安全状态的监测和保护。

【3】MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT的设计原则是轻量级和简单性,因此具有出色的网络效率。其特别的设计使得它能以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。

MQTT协议工作在TCP/IP协议上,能够保证数据的可靠传输。是一种基于标准的消息传递协议或规则集,主要用于机器对机器的通信,智能传感器、可穿戴设备等物联网(IoT)设备通常必须通过带宽有限的资源受限网络来传输和接收数据。MQTT协议具有低带宽占用、低协议开销以及高可靠性等优点。每条MQTT消息标题可以短至2个字节,相比之下,HTTP等协议的每条消息开销要高得多。这些特性使得MQTT在物联网、小型设备、移动应用等方面有较广泛的应用。由于其低带宽占用、低协议开销以及高可靠性等优点,MQTT在物联网领域中已逐渐成为最热门的协议,也是国内外各大物联网平台最主流的传输协议。

【4】创新性介绍

(1)全方位的环境监测:系统能够实时监测车内的温湿度、有害气体浓度和座椅倾斜度等多个环境因素,为儿童提供更加全面和精准的安全保障。

(2)智能预警与报警:通过设定阈值,系统可以在环境参数超标或座椅倾斜度不适时触发报警信号,及时提醒司机注意驾驶安全,同时家长的手机APP也会收到提醒,实现智能预警与报警功能。

(3)安全定位与追踪:通过GPS定位模块,系统可以实时监测车辆的位置信息,并将位置数据上传至云端服务器,家长可以随时了解车辆的位置和行驶轨迹,增强儿童的安全保障。

(4)数据记录与分析:系统将采集的环境数据和座椅倾斜度等数据上传至云端服务器,记录历史数据,方便家长随时查询历史记录,了解儿童的安全状况和车辆行驶情况,为家长提供更加全面的数据分析服务。

本项目的创新性在于通过全方位的监测、智能预警与报警、安全定位与追踪以及数据记录与分析等功能,为儿童提供更加全面、精准的安全保障,同时也为家长提供更加便捷、高效的安全监管服务。

1.2 设计思路

本项目主要基于STM32主控芯片,结合各种传感器和无线传输模块,实现儿童乘车安全监测系统的各项功能。

(1)系统架构设计:根据项目需求,将整个系统划分为环境监测模块、危险报警模块、屏幕显示模块、安全定位模块、数据记录模块和语音预警模块等多个功能模块,明确各模块的功能和相互关系。

(2)硬件设计:

  • 主控芯片选择STM32F103RCT6,该芯片具有丰富的外设资源和强大的处理能力,能够满足系统的需求。
  • 环境监测模块使用DHT11模块来测量车内温湿度,使用SGP30气体传感器模块来检测有害气体浓度(如TVOC、CO2、甲醛等),使用MPU6050模块来监测座椅倾斜度。
  • 危险报警模块使用蜂鸣器进行声音报警,同时通过无线传输模块将报警信息发送给父母的手机APP。
  • 屏幕显示模块用于实时显示车内环境数据和座椅倾斜度等信息。
  • 安全定位模块使用GPS定位模块对车辆位置进行安全定位,并将当前位置上传至云端服务器。
  • 数据记录模块将采集到的温湿度、有害气体浓度、座椅倾斜度等数据通过无线传输模块上传至云端服务器,并记录历史数据。
  • 语音预警模块利用语音模块进行报警提醒,提醒司机注意车辆驾驶安全。

(3)软件设计:

  • 主控芯片的程序采用C语言编写,利用Keil开发工具进行编译和调试。
  • 无线传输模块采用4G模块,利用MQTT协议与华为云物联网服务器进行通信完成数据交互传输。需要编写MQTT客户端程序来实现数据的发布和订阅功能。
  • 手机APP采用Qt开发,开发Android手机APP,利用HTTPS协议与华为云物联网服务器进行交互通信,完成数据传输和数据显示。需要编写HTTP客户端程序来实现与服务器的通信功能。

(4)云端服务器:

  • 云端服务器采用华为云物联网服务器,用于存储和管理儿童乘车安全监测系统的数据。需要配置相应的数据库和接口来实现数据的存储和访问功能。

(5)测试和验证:

  • 在硬件设计完成后,需要进行电路的布线和焊接工作,确保各个模块之间的连接正确无误。
  • 在软件开发完成后,需要进行单元测试和集成测试,确保各个功能模块能够正常工作。
  • 最后需要进行系统级的测试和验证,包括模拟实际场景下的数据采集和报警等功能,确保系统的稳定性和可靠性。

本项目开发过程中具体实施的步骤介绍:

(1)需求分析:明确项目需求,包括需要监测的环境参数、报警条件、数据传输方式等。

(2)硬件设计:根据需求分析,设计硬件电路,包括传感器接口电路、报警电路、无线传输模块接口电路等。同时,选择合适的传感器和无线传输模块,确保能够满足项目需求。

(3)软件设计:开发系统的软件程序,实现各功能模块的数据采集、处理、传输和显示等功能。采用C语言编写程序,利用STM32的库函数和MQTT协议进行通信,实现与华为云物联网服务器的数据交互。

(4)手机APP开发:采用Qt开发Android手机APP,实现与华为云物联网服务器的交互通信,完成数据传输和显示等功能。利用HTTPS协议进行安全通信,确保数据传输的安全性。

(5)系统集成与调试:将硬件电路和软件程序集成在一起,进行系统调试和测试,确保系统能够正常工作并实现预期的功能。同时,对手机APP进行测试,确保其与系统的交互通信正常。

(6)优化与改进:根据测试结果,对系统进行优化和改进,提高系统的稳定性和可靠性。

1.3 项目开发背景

【1】选题的意义

本项目的意义在于提高儿童乘车安全性,增强家长监管能力,推动物联网技术的应用和发展。随着社会的进步和科技的发展,人们对儿童乘车安全的关注度不断提高。

总结为下面3点:

(1)提高儿童乘车安全性:本项目通过实时监测儿童乘车时的环境参数和安全状况,及时发现潜在的安全隐患并采取相应的措施,能够有效地保护儿童的安全,减少意外事故的发生。

(2)增强家长监管能力:通过云端服务器的数据存储和分析,家长可以随时随地了解儿童乘车的安全状况和历史记录,增强了对儿童安全的监管能力,减轻了对儿童安全的担忧。

(3)推动物联网技术的应用:本项目采用了MQTT协议和HTTPS协议进行数据传输和交互,为物联网技术的应用提供了新的案例和实践经验,推动了物联网技术在儿童安全领域的应用和发展。

【2】研究过程中的主要问题和解决办法

在基于STM32设计的儿童乘车安全监测系统的研究设计过程中,也会遇到一些问题:

(1)数据采集和处理问题:由于需要监测多种环境参数和安全状况,需要确保数据采集的准确性和实时性。解决办法是采用高性能的传感器和主控芯片,同时优化软件算法,提高数据处理能力和响应速度。

(2)无线传输模块的稳定性和可靠性问题:无线传输模块是连接系统各个部分的关键组件,需要确保其稳定性和可靠性。解决办法是选择高品质的无线传输模块,并进行充分的测试和调试,确保其在各种情况下都能正常工作。

(3)云端服务器的数据存储和分析问题:云端服务器需要存储大量的历史数据,并进行实时分析,以提供家长监管和安全预警功能。解决办法是采用高性能的服务器和数据库系统,同时优化数据存储和分析算法,提高数据处理能力和响应速度。

(4)手机APP的用户体验和功能完善问题:手机APP是用户与系统交互的重要界面,需要提供良好的用户体验和功能完善。解决办法是进行充分的用户调研和测试,收集用户反馈和需求,不断优化手机APP的功能和界面设计。

本项目需要解决的主要问题包括数据采集和处理、无线传输模块的稳定性和可靠性、云端服务器的数据存储和分析以及手机APP的用户体验和功能完善。通过采取相应的解决办法,可以确保系统的稳定性和可靠性,提高用户体验和功能完善度。

【3】发展现状

在国内,儿童乘车安全监测系统已经得到了广泛的应用和推广。随着社会对儿童安全的重视程度不断提高,越来越多的家长开始关注并购买这种系统来保护孩子的安全。目前市场上已经有多家公司推出了各种类型的儿童乘车安全监测系统,功能各异,但主要都是通过传感器监测车内环境参数,并通过无线传输模块将数据传输至云端服务器,同时提供手机APP进行实时监测和提醒。这些系统在提高儿童乘车安全性方面发挥了积极的作用。

在国外,儿童乘车安全监测系统也得到了广泛的关注和应用。许多国家都有相关的法规和标准要求车辆必须配备儿童安全座椅,并且对儿童乘车安全监测系统的需求也在逐渐增加。一些知名的汽车制造商已经开始在他们的高端车型中集成了类似的系统,以提高车辆的安全性能。此外,一些科技公司也推出了专门针对儿童乘车安全的产品和服务,以满足市场的需求。

儿童乘车安全监测系统在国内外都得到了广泛的应用和发展。随着社会的发展和人们对儿童安全的重视程度的提高,这种系统的需求将会越来越大。目前市场上已经有多种类型的儿童乘车安全监测系统可供选择,功能各异,但都能够有效地提高儿童乘车的安全性。未来,随着技术的不断进步和创新,儿童乘车安全监测系统将会更加智能化、精准化,为保障儿童乘车安全做出更大的贡献。

【4】参考文献

参考文献可以在知网、百度学术、或者在其他学术搜索引擎中搜索相关的关键词,可以获取最多的相关文献。

markdown

复制代码

1. 李芯怡,孙梦茹,郭思蔷等.基于STM32F103型单片机的新型车载护童报警装置设计[J].电子设计工程,2021,29(10):101-104+110. 2. 刘琼琼,游专,张永生等.基于STM32与GSM的车载儿童安全智能报警系统的设计[J].价值工程,2017,36(33):76-77. 3. 罗聪,李辉,彭旺等.基于STM32的智能安全监护系统设计[J].仪表技术,2022,No.391(05):18-20. 4. 张潮城,奚维立,张敬博等.基于STM32的儿童管家设计[J].科技与创新,2017,No.75(03):112-113. 5. 基于STM32的数据通信智能安全婴儿车设计 [2018-08-23] 6. 翟亚芳,张天鹏,赵建周等.基于STM32的家庭智能安防控制系统设计[J].黑龙江大学自然科学学报,2016,33(01):118-123. 7. 寇为刚,郑克诚.基于STM32单片机的智能家庭安防系统设计与实现[J].无线互联科技,2018,15(21):47-49. 8. 马 鹏飞. “Custody and Alarm System Based on STM32.” (2017). 1254-1261. 9. Xuejiao Liao, Weipeng Shen et al. “Design of intelligent home safety protection system with STM32.” 3rd International Conference on Electronic Materials and Information Engineering (EMIE 2023) (2023). 

1.4 开发工具的选择

上位机的开发选择Qt框架,编程语言采用C++;Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。Qt能轻松创建具有原生C++性能的连接设备、用户界面(UI)和应用程序。它功能强大且结构紧凑,拥有直观的工具和库。

image-20230218001243591

image-20230218001219105

STM32的编程语言选择C语言,C语言执行效率高,大学里主学的C语言,C语言编译出来的可执行文件最接近于机器码,汇编语言执行效率最高,但是汇编的移植性比较差,目前在一些操作系统内核里还有一些低配的单片机使用的较多,平常的单片机编程还是以C语言为主。C语言的执行效率仅次于汇编,语法理解简单、代码通用性强,也支持跨平台,在嵌入式底层、单片机编程里用的非常多,当前的设计就是采用C语言开发。

开发工具选择Keil,keil是一家世界领先的嵌入式微控制器软件开发商,在2015年,keil被ARM公司收购。因为当前芯片选择的是STM32F103系列,STMF103是属于ARM公司的芯片构架、Cortex-M3内核系列的芯片,所以使用Kile来开发STM32是有先天优势的,而keil在各大高校使用的也非常多,很多教科书里都是以keil来教学,开发51单片机、STM32单片机等等。目前作为MCU芯片开发的软件也不只是keil一家独大,IAR在MCU微处理器开发领域里也使用的非常多,IAR扩展性更强,也支持STM32开发,也支持其他芯片,比如:CC2530,51单片机的开发。从软件的使用上来讲,IAR比keil更加简洁,功能相对少一些。如果之前使用过keil,而且使用频率较多,已经习惯再使用IAR是有点不适应界面的。

image-20221210225339928

1.5 系统框架图

image-20231018230727774

整体模块交互简图:

lua

复制代码

            +------------+             +-----------------+             |           |   WiFi /     |                 |             | 环境监测模块+--------------+云端服务器模块 |             |           |   4G         |                 |             +------------+             +-----------------+                       \                           |                       \                           |                         \                         |                         v                         v +-------------------+ 报警模块   +-----------------------------+ |                   +------------>+                             | | 屏幕显示模块       |             | 手机APP                     | |                   <-------------+                             | +-------------------+   定位模块 +-----------------------------+ 

其中,环境监测模块、报警模块、屏幕显示模块、安全定位模块和数据记录模块全部集成在STM32主控芯片上,与4G模块进行数据传输,实现与云端服务器和手机APP的数据交互。云端服务器模块作为数据存储和交互平台,接收来自STM32和手机APP的数据,并提供数据查询和显示功能。手机APP模块通过HTTPS协议与云端服务器进行通信,实现数据的查询和显示功能。

下面是对整体项目模块功能分类描述:
模块功能环境监测模块监测车内温湿度、有害气体浓度、座椅倾斜度等数据报警模块当温度或有害气体浓度超过设定阈值时,触发蜂鸣器报警信号和语音报警提醒屏幕显示模块实时显示采集的车内环境数据和座椅倾斜度安全定位模块利用GPS定位模块对车辆位置进行安全定位数据记录模块将采集的环境数据通过无线传输模块上传至云端服务器,记录历史数据无线传输模块使用4G模块进行数据传输,实现与云端服务器的数据交互云端服务器模块以华为云物联网服务器作为数据存储和交互平台手机APP模块与云端服务器进行数据交互,实现数据查询和显示功能

二、硬件选型

【1】MPU6050陀螺仪

链接:detail.tmall.com/item.htm?id…

image-20230208140700768

MPU6050是由三个陀螺仪和三个加速度传感器组成的6轴运动处理组件,是一款六轴(三轴加速度+三轴角速度(陀螺仪))传感器。

内部主要结构由 陀螺仪、加速度计、数字运动处理器DMP(Digital Motion Processor)组成。

MPU6050含有两个IIC接口,第一IIC接口可作为主接口给单片机传输数据;第二IIC接口用于连接一个第三方数字传感器(如外部磁力传感器等),然后通过这个IIC接口输出完整的9轴信号,否则只有6轴。

那么三轴、六轴、九轴传感器,这些传感器指的什么?其中到底又有哪些区别呢?

实际上,只要说到多少轴的传感器一般是就是指加速度传感器(即加速计)、角速度传感器(即陀螺仪)、磁感应传感器(即电子罗盘)。这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴的力,因此也常常被称为3轴加速度计、3轴陀螺仪、3轴磁力计。

上面3类传感器有其各自的功能特点及应用,比如加速计可以测量设备的测斜情况,陀螺仪可以测量设备自身的旋转运动,还有磁力计可以定位设备的方位。通过它们相互组合和匹配融合又可以衍生出更多的不同应用,在叫法上通过这样简单的轴数上相加的可以变成六轴传感器或者九轴传感器。  

六轴传感器:通常指的是三轴加速度计+三轴陀螺仪,三轴加速器是检测横向加速的,三轴陀螺仪是检测角度旋转和平衡的,可以用在体感游戏上。

九轴传感器:就是三轴加速度计+三轴陀螺仪+三轴磁强计的组合,在飞行器上是广泛应用的。 另外,在九轴传感器基础上在加入气压传感器,从而能获取海拔高度的数据,也有人把这些传感器组合称为十轴传感器。

【2】STM32开发板

链接:detail.tmall.com/item.htm?sp…

主控CPU采用STM32F103RCT6,这颗芯片包括48 KB SRAM、256 KB Flash、2个基本定时器、4个通用定时器、2个高级定时器、51个通用IO口、5个串口、2个DMA控制器、3个SPI、2个I2C、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口,芯片属于大容量类型,配置较高,整体符合硬件选型设计。当前选择的这款开发板自带了一个1.4寸的TFT-LCD彩屏,可以显示当前传感器数据以及一些运行状态信息。

image-20230919172644969

【3】PCB板

链接:detail.tmall.com/item.htm?sp…

image-20221031234443667

【4】蜂鸣器模块

链接:detail.tmall.com/item.htm?al…

image-20230226222801899

【5】USB下载线

链接:detail.tmall.com/item.htm?ar…

image-20221208211912983

【6】母对母杜邦线(两排)

作用: 连接模块与单片机。

链接:detail.tmall.com/item.htm?al…

image-20230131094715648

【7】DHT11温湿度模块

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有可靠性与卓越的长期稳定性,成本低、相对湿度和温度测量、快响应、抗干扰能力强、信号传输距离长、数字信号输出、精确校准。传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。可用于暖通空调、除湿器、测试及检测设备、消费品、汽车、自动控制、数据记录器、气象站、家电、湿度调节器、医疗、其他相关湿度检测控制。

特点如下:

1、可以检测周围环境的湿度

2、可以检测周围环境的温度

3、湿度测量范围:20%-95%(0度-50度范围)湿度测量误差:+-5%4、温度测量范围:o度-50度温度测量误差:+-2度

4、工作电压3.3V-5V

5、输出形式数字输出

detail.tmall.com/item.htm?id…

image-20220319211432662

image-20220319211455249

【8】SGP30气体传感器模块

链接:item.taobao.com/item.htm?sp…

image-20230208114723757

SGP30是一款单一芯片上具有多个传感元件的金属氧化物气体传感器内集成4个气体传感元件,具有完全校准的空气质量输出信号,另外SGP易于集成,能够将金属氧化物气体传感器集成到移动设备中,为智能家居,家电和物联网应用中的环境监测开辟了新的可能性。

【9】Air724UG 4G模块

链接:item.taobao.com/item.htm?ft…

固件版本选择:AT固件。 本模块是全网通模块,可以直接插自己的手机卡进行使用。

image-20240116171228986

注意:注意:注意:注意:注意!!!!!!! 要让商家送一排杜邦线,不然无法接线。

image-20240116171325725

【10】GPS模块

GPS模块正常定位后,模块上的LED灯会按照1秒钟闪烁一次。

返回的字段里GNRMC表示当前定位的GPS经纬度,解析代码只需要解析GNRMC字段。

第一次启动GPS模块,定位差不多要几分钟时间,定位成功后,第二次启动定位就很快,最好是在室外,室内信号差,定位时间更久。

bash

复制代码

$GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0.0,M,,*4F $GNGLL,2842.4158,N,11549.5439,E,114955.000,A,A*4D $GPGSA,A,3,10,31,18,,,,,,,,,,5.7,3.8,4.2*37 $BDGSA,A,3,07,10,,,,,,,,,,,5.7,3.8,4.2*2A $GPGSV,3,1,10,10,49,184,42,12,16,039,,14,54,341,,18,22,165,23*7B $GPGSV,3,2,10,22,11,318,,25,51,055,,26,24,205,,29,13,110,*7C $GPGSV,3,3,10,31,50,287,36,32,66,018,*7F $BDGSV,1,1,04,03,,,07,05,,,29,07,79,246,33,10,52,232,19*62 $GNRMC,114955.000,A,2842.4158,N,11549.5439,E,0.00,44.25,061117,,,A*4D $GNVTG,44.25,T,,M,0.00,N,0.00,K,A*14 $GNZDA,114955.000,06,11,2017,00,00*47 $GPTXT,01,01,01,ANTENNA OK*35   

链接:item.taobao.com/item.htm?ab…

image-20240116165939040

三、部署华为云物联网平台

华为云官网: www.huaweicloud.com/

打开官网,搜索物联网,就能快速找到

设备接入IoTDA

image-20221204193824815

3.1 物联网平台介绍

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。

使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。

物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。

设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。

业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。

img

3.2 开通物联网服务

地址: www.huaweicloud.com/product/iot…

image-20221204194233414

点击

立即创建

image-20240117134653452

正在创建标准版实例,需要等待片刻。

image-20240117134729401

创建完成之后,点击实例名称。 可以看到标准版实例的设备接入端口和地址。

image-20240425180759670

在上面也能看到 免费单元的限制。

image-20240425180817704

开通之后,点击

总览

,也能查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。

image-20240425180845461

总结:

scss

复制代码

端口号:   MQTT (1883)| MQTTS (8883) 接入地址:65b0f8a974.st1.iotda-device.cn-north-4.myhuaweicloud.com 

根据域名地址得到IP地址信息:

打开Windows电脑的命令行控制台终端,使用

ping

命令。

ping

一下即可。

ini

复制代码

Microsoft Windows [版本 10.0.19045.4170] (c) Microsoft Corporation。保留所有权利。 ​ C:\Users\11266>ping 65b0f8a974.st1.iotda-device.cn-north-4.myhuaweicloud.com ​ 正在 Ping 65b0f8a974.st1.iotda-device.cn-north-4.myhuaweicloud.com [117.78.5.125] 具有 32 字节的数据: 来自 117.78.5.125 的回复: 字节=32 时间=35ms TTL=93 来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93 来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93 来自 117.78.5.125 的回复: 字节=32 时间=39ms TTL=93 ​ 117.78.5.125 的 Ping 统计信息:    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位):    最短 = 35ms,最长 = 39ms,平均 = 36ms ​ C:\Users\11266> 

MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。

3.3 创建产品

(1)创建产品

image-20230109164412041

(2)填写产品信息

根据自己产品名字填写,设备类型选择自定义类型,协议选择MQTT协议。

(3)产品创建成功

产品创建成功之后,会弹出提示框。

(4)添加自定义模型

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。

模型简单来说: 就是存放设备上传到云平台的数据。

当前设备需要与云平台交互的属性如下: 接下来就按照下面的属性创建 华为云平台的模型。

objectivec

复制代码

上传到华为云物联网平台的信息: MPU6050      倾斜角度   (整型    只读) GPS         定位信息   (字符串  只读) SGP30 空气质量 (整型    只读) DHT11_T 环境温度 (整型    只读) DHT11_H 环境湿度 (整型    只读) BEEP            报警提醒         (BOOL类型 只读) 

3.4 添加设备

产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。

(1)注册设备

image-20240425181935561

(2)根据自己的设备填写

在弹出的对话框里根据自己的产品信息填写。

(3)保存设备信息

创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。

3.5 MQTT协议主题订阅与发布

(1)MQTT协议介绍

当前的设备是采用MQTT协议与华为云平台进行通信。

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。目前MQTT拥有各种平台和设备上的客户端,已经形成了初步的生态系统。

MQTT是一种消息队列协议,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单;MQTT协议是工作在TCP/IP协议上;由TCP/IP协议提供稳定的网络连接;所以,只要具备TCP协议栈的网络设备都可以使用MQTT协议。 本次设备采用的ESP8266就具备TCP协议栈,能够建立TCP连接,所以,配合STM32代码里封装的MQTT协议,就可以与华为云平台完成通信。

华为云的MQTT协议接入帮助文档在这里: support.huaweicloud.com/devg-iothub…

img

业务流程:

img

(2)华为云平台MQTT协议使用限制

描述限制支持的MQTT协议版本3.1.1与标准MQTT协议的区别支持Qos 0和Qos 1支持Topic自定义不支持QoS2不支持will、retain msgMQTTS支持的安全等级采用TCP通道基础 + TLS协议(最高TLSv1.3版本)单帐号每秒最大MQTT连接请求数无限制单个设备每分钟支持的最大MQTT连接数1单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关3KB/sMQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝1MBMQTT连接心跳时间建议值心跳时间限定为30至1200秒,推荐设置为120秒产品是否支持自定义Topic支持消息发布与订阅设备只能对自己的Topic进行消息发布与订阅每个订阅请求的最大订阅数无限制

(3)主题订阅格式

帮助文档地址:support.huaweicloud.com/devg-iothub…

image-20221207153310037

对于设备而言,一般会订阅平台下发消息给设备 这个主题。

设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。

如果设备想要知道平台下发的消息,需要订阅上面图片里标注的主题。

bash

复制代码

以当前设备为例,最终订阅主题的格式如下: $oc/devices/{device_id}/sys/messages/down     最终的格式: $oc/devices/662a2c5971d845632a06f9fb_dev1/sys/messages/down 

(4)主题发布格式

对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。

这个操作称为:属性上报。

帮助文档地址:support.huaweicloud.com/usermanual-…

image-20221207153637391

根据帮助文档的介绍, 当前设备发布主题,上报属性的格式总结如下:

bash

复制代码

发布的主题格式: $oc/devices/{device_id}/sys/properties/report 最终的格式: $oc/devices/662a2c5971d845632a06f9fb_dev1/sys/properties/report 发布主题时,需要上传数据,这个数据格式是JSON格式。 ​ 上传的JSON数据格式如下: ​ {  "services": [   {      "service_id": <填服务ID>,      "properties": {        "<填属性名称1>": <填属性值>,        "<填属性名称2>": <填属性值>,       ..........     }   } ] } 根据JSON格式,一次可以上传多个属性字段。 这个JSON格式里的,服务ID,属性字段名称,属性值类型,在前面创建产品的时候就已经介绍了,不记得可以翻到前面去查看。 ​ 根据这个格式,组合一次上传的属性数据: {"services": [{"service_id": "stm32","properties":{"MPU6050":90,"SGP30":18,"DHT11_T":10,"DHT11_H":30,"BEEP":1}}]} ​ ​ 上传到华为云物联网平台的信息: MPU6050      倾斜角度   (整型    只读) GPS         定位信息   (字符串  只读) SGP30 空气质量 (整型    只读) DHT11_T 环境温度 (整型    只读) DHT11_H 环境湿度 (整型    只读) BEEP            报警提醒         (BOOL类型 只读) 

3.6 MQTT三元组

MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。

接下来介绍,华为云平台的MQTT三元组参数如何得到。

(1)MQTT服务器地址

要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。

帮助文档地址:console.huaweicloud.com/iotdm/?regi…

image-20240425182456825

MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。

根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的)

复制代码

华为云的MQTT服务器地址:117.78.5.125 华为云的MQTT端口号:1883 

如何得到IP地址?如何域名转IP? 打开Windows的命令行输入以下命令。

复制代码

ping 65b0f8a974.st1.iotda-device.cn-north-4.myhuaweicloud.com 

image-20240425182610048

(2)生成MQTT三元组

华为云提供了一个在线工具,用来生成MQTT鉴权三元组: iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。

下面是打开的页面:

image-20240425183025893

填入设备的信息: (上面两行就是设备创建完成之后保存得到的)

直接得到三元组信息。

image-20240425183047578

得到三元组之后,设备端通过MQTT协议登录鉴权的时候,填入参数即可。

复制代码

ClientId 662a2c5971d845632a06f9fb_dev1_0_0_2024042510 Username 662a2c5971d845632a06f9fb_dev1 Password 5bcc5df45ce9e8bfe40c20408de495304a80bca79bf9e64e41f536b40723f177 

3.7 模拟设备登录测试

经过上面的步骤介绍,已经创建了产品,设备,数据模型,得到MQTT登录信息。 接下来就用MQTT客户端软件模拟真实的设备来登录平台。测试与服务器通信是否正常。

(1)填入登录信息

打开MQTT客户端软件,对号填入相关信息(就是上面的文本介绍)。然后,点击登录,订阅主题,发布主题。

image-20240425183927707

(2)打开网页查看

完成上面的操作之后,打开华为云网页后台,可以看到设备已经在线了。

到此,云平台的部署已经完成,设备已经可以正常上传数据了。

(3)MQTT登录测试参数总结

arduino

复制代码

MQTT服务器: 117.78.5.125 MQTT端口号: 183 //物联网服务器的设备信息 #define MQTT_ClientID "662a2c5971d845632a06f9fb_dev1_0_0_2024042510" #define MQTT_UserName "662a2c5971d845632a06f9fb_dev1" #define MQTT_PassWord "5bcc5df45ce9e8bfe40c20408de495304a80bca79bf9e64e41f536b40723f177" //订阅与发布的主题 #define SET_TOPIC "$oc/devices/662a2c5971d845632a06f9fb_dev1/sys/messages/down" //订阅 #define POST_TOPIC "$oc/devices/662a2c5971d845632a06f9fb_dev1/sys/properties/report" //发布 发布的数据: {"services": [{"service_id": "stm32","properties":{"MPU6050":90,"SGP30":18,"DHT11_T":10,"DHT11_H":30,"BEEP":1}}]}{"services": [{"service_id": "stm32","properties":{"MPU6050":90,"SGP30":18,"DHT11_T":10,"DHT11_H":30,"BEEP":1}}]} 

四、 Air724UG 模块调试过程

4.1 官方文档

官方文档地址:wiki.yinerda.com/index.php/A…

image-20240122155440449

4.2 模块调试接线

(1)拿到模块,先接好天线,再插好卡(卡的缺口朝外): 模块是全网通模块,只支持4G网络,支持 移动、联通、电信卡。

image-20240122212142783

模块的正面:

image-20240123092449013

image-20240122212100831

(2)串口调试接线。

接下来直接将模块与USB-TTL模块连接,接入到电脑的USB,使用串口调试助手测试模块是否工作正常。

模块接线说明如下:

lua

复制代码

(1)VIN接VCC ---> 接5V (2)GND接GND (3)RX连接TXD (4)TX连接RXD 

供电要求说明:

image-20240122211139623

接线实物图: (只需要接4根线即可)

image-20240122212230859

4.3 串口调试过程

接好线之后的整体效果:

image-20240122215716776

【1】AT命令

模块接好线,连接上电脑之后,发送AT命令测试模块是否正常(注意 勾选新行)。

说明: 第一次发送

AT

过去时,模块会匹配波特率,模块会自适应波特率; 第二次发送

AT

就会返回

OK

复制代码

AT OK 

image-20240122214002689

【2】读取模块厂商信息

objectivec

复制代码

AT+CGMI +CGMI: "AirM2M" OK 

image-20240122214430759

【3】读取详细的固件版本

objectivec

复制代码

AT+CGMR +CGMR: "AirM2M_Air724UG_V401853_LTE_AT" OK 

image-20240122214831021

【4】查询卡是否插好

功能:查询SIM卡是否正常,返回ready则表示SIM卡正常。

diff

复制代码

AT+CPIN? +CPIN: READY OK 

image-20240122214939091

【5】查询信号质量

查询模组的信号强度,第一个值为0-31则正常,99为不正常。

查询设置信号质量,如果大于20说明天线正常。

diff

复制代码

AT+CSQ +CSQ: 31,99 OK 

image-20240122215021509

【6】查询网络注册状态

查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。

diff

复制代码

AT+CREG? +CREG: 0,1 OK 

image-20240122215215598

【5】查询模组是否注册上GPRS网络

查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。

objectivec

复制代码

AT+CGREG? +CGREG: 0,1 OK 

image-20240122220107182

【6】查询附着GPRS网络

+CGATT:1 OK 状态=1,标明当前GPRS已经附着.

objectivec

复制代码

AT+CGATT? +CGATT: 1 OK 

image-20240122220334343


本文转载自: https://blog.csdn.net/CTZL123456/article/details/139474181
版权归原作者 Java-之父 所有, 如有侵权,请联系我们删除。

“基于STM32设计的儿童乘车安全监测系统”的评论:

还没有评论