董振华*,何 淼
(金陵科技学院电子信息工程学院,江苏 南京)
教育部基础一司在《致全国中小学生家长的一封信》中表示,溺水排在导致中小学生非正常死亡因素的第一位[1]。针对溺水事件的发生,建立多方合作的预防机制,在江河湖泊、水库、池塘、水井等易发生溺水事故的危险区域设立安全警示区、警示牌和标语,及时采取防范措施,切实增强我国中小学生的防溺水安全意识。
目前大量的研究人员针对防溺水问题产开了研究与讨论,邱睿等研究了一款基于单片机的智能防溺水背心,并自主开发了智能手机终端APP,实现传感器数据与在线网络数据库的数据交换,通过心率数据与液位数据经模糊算法处理后进行溺水状态判断[2]。张晶开发了一款防溺水手环,通过压力传感器测量人体脉搏,湿度传感器测量系统外部水分,当触发溺水条件后,CPLD(Complex Programmable Logic Device)发出指令通过电磁阀对压缩气囊充气,为佩戴者提供适当浮力[3-4]。邹旭等基于zigbee 技术开展了泳池防溺水智能泳帽的研究,通过压力传感器检测溺水条件[5]。
本文介绍一种基于OpenMV 的行人检测系统,由STM32F4 单片机作为终端设备采集传感器数据,OpenMV 模块对视频进行人像识别并将处理后的数据发送给单片机,4G 模块将传感器数据打包后上传至在线网络数据库,Web 应用从数据库获取数据并在网页进行显示,本设计还加入了FreeRTOS,即实时操作系统,支持多个任务同时运行,提高了测量的效率,缩短了整体测量所需的时间,在运行摄像头识别任务的同时不会对温湿度、水位高度等数据的测量产生干扰,实现了监测水位、监测行人等功能。
本文是一种基于OpenMV 的行人检测系统,适用于在池塘、水库、河道等水域附近使用,通过对摄像头拍摄到的图像进行实时识别,如果检测到人像则会对人像位置进行数据处理,与管理员设置的安全阈值比较,并判断风险等级。
系统是基于传统的物联网架构进行设计的,主要由感知层、网络层、应用层三部分组成。整体架构如图1 所示。感知层在整个物联网框架中承担着数据采集的工作,在本设计中由北斗传感器、温湿度传感器、姿态传感器、OpenMV 模块、水位传感器等硬件构成。通过终端设备完成对与所需信息的采集任务。网络层在物联网架构中主要起着信息传递的作用,对比多种长距离无线通信技术,4G 通讯具有显著的特点,高数据速率、宽带传输、无线即时通讯与兼容性好等优势,结合MQTT 协议组成了本系统的数据传输模式。应用层在架构中主要是完成对数据进行处理的工作,阿里云物联网平台作为本系统的应用层,搭载了Web 应用,实现了数据校验、阈值报警、数据显示、位置信息图像显示、设备情况管理等功能。扩大了系统监管的地理范围,提高了管理员监按的效率,降低了突发意外事件的风险。
图1 系统整体框图
终端设备选用STM32F4 单片机作为主按芯片,该款芯片处理速度快,具有USART、ADC、IIC、RS485 等多种外设接口、同时具有高性能、低成本、功能小等特点。系统的外设由OpenMV、温湿度传感器、北斗传感器、水位传感器、4G 传感器、姿态传感器六个部分组成,如图2 所示,外设都与STM32F4 核心板建立通讯,通过实时操作系统将整体分为四个任务运行。任务一:4G 传感器将数据打包通过MQTT 协议上传服务器;任务二:设备安装环境的数据测量,如温湿度测量、水位测量、处理摄像头识别后的返回结果,根据判断的风险等级进行灯光与蜂鸣器的响应;任务三:设备状态数据的测量,姿态传感器与GPS/北斗传感器测量,保证设备处在正常姿态运行,无倒伏、倾斜状况发生;任务四:LCD 显示,实现实时测量数据显示,既可在Web 应用中查询历史与实时数据,又可在本地查看实时数据。
图2 系统硬件设计框图
4G 传感器选用的是EC200U-CN 传感器,插入SIM 卡实现4G 通讯,具有高数据速率、宽带传输、无线即时通讯与兼容性高等优势,即使在网络信号不稳定的区域,也不会发生数据传输不及时,保证了数据的实时性。每增加一个设备只需要单独组网即可,不会破坏原有的通讯线路,具有更好的拓展性。且4G 信息的传输种类更加丰富,包括图片、音频、视频等。
终端通过串口与4G 传感器通信,发布AT 指令进行交互,通过MQTT 通讯协议将测量的数据发送至网络数据库,部分AT 指令如表1 所示。
表1 AT 指令
数据的存储是基于阿里云生活物联网平台,每一台设备都具有其唯一身份的设备证书,包含ProductKey、DeviceName、DeviceSecret 三要素,设备证书不仅是作为设备身份识别的方法之一,更是设备后续与物联网平台交流的重要凭证。
温湿度传感器选用DHT22,该款传感器可在室外零下环境中工作,适用全国大部分地区的温湿度采集工作。该器件采用简化的单总线通信,当主机(MCU)发起一次起始信号后,DHT22 从休眠模式转到高速模式。待主机开始信号结束后,DHT22 发送响应信号,从数据总线SDA 串行传输40Bit 的数据,先发送字节的高位;发送数据结束触发一次信息采集,采集结束后传感器自动转入休眠模式,直到下一次通信来临。
水位测量选用WT53R-TTL 传感器,该款传感器选用高精度激光测距传感器,搭配相应的光学过滤盖片进行有效的滤除光学干扰。测距原理是设备安装高度减去设备测量至水面的距离得到水位高度。
OpenMV 的全称是open machine vision, 是由美国克里斯团队基于MicroPython 发起的开源机器视觉项目,其搭载了MicroPython 解释器,使其可以在嵌入式端进行python 开发。OpenMV 具有轻量化的优势,可以运行在MCU 上,具备处理高复杂度图像信息与高速图像信息的能力。OpenMV 进行人像识别的原理大致如下,首先利用OpenCV 对含有人像的正负样本数据集进行训练,生成只可供OpenCV 调用的cascade.xml 分类器,再将xml 格式的文件通过python转换成cascade 格式的OpenMV 可识别文件,后将生成的可识别格式文件导入OpenMV 即可进行图像识别。
风险等级判断的原理是:首先根据摄像头安装的位置将图像划分风险区,再按照边界拟出相对贴合的线性方程组,当单片机接收到来自OpenMV 的数据,计算坐标位于哪一风险区,当坐标位于黄色或红色区域时,单片机按制LED 与蜂鸣器发出警告,并在Web应用对管理员发出预警信息。
姿态传感器选用JY61P 传感器,该款传感器时基于MEMS 技术的高性能三维运动姿态测量系统。内部采用的是MPU6050 芯片,加入了STM8 的核心处理器,内部还结合了动力学解算与动态卡尔曼滤波算法,可实现高精度、高动态、实时补偿的三轴姿态角度。
GPS/ 北斗传感器选用ATK-S1216F8-BD GPS/北斗模块,传感器与单片机的通信接口采用UART 方式,输出的GPS/北斗定位数据采用NMEA-0183 协议(默认),按制协议为SkyTraq 协议。
该部分旨在为管理员提供更方便、更快捷的查看数据的方式,通过单片机外接的LCD 显示屏显示各个传感器实时获取到的数据,便于安装时调试设备,一目了然地查看各传感器是否正常工作,如图3 所示。
图3 LCD 显示
系统软件部分为物联网平台、数据库、Web 应用平台等,如图4 所示,物联网平台用于与4G 传感器通讯,接收4G 传感器上传的数据,验证格式后存储进数据库,Web 应用通过调用API 获取数据库的数据信息。最终将数据进行分类展示在不同的网页。
图4 软件系统设计框图
3.2.1 Web 应用获取数据
Web 应用通过HTTP 与物联网云平台交互,流程如图5 所示。
图5 云端调用流程
Web 云端通过调用获取云端资源Token 向阿里云IoT 云端请求资源令牌(Cloud Token);阿里云IoT云端接收到请求后返回CloudToken,以及对应的失效时间;Web 云端使用获取到的Cloud Token 调用阿里云IoT 云端某个具体的API。阿里云IoT 云端向返回请求的处理结果;在Cloud Token 失效前,Web 云端通过调用刷新云端资源Token 接口对当前Cloud Token进行续期,如果Cloud Token 已经失效,则需重新调用获取云端资源Token 接口来获取新的Cloud Token 及其对应的失效时间。
3.2.2 Web 应用设计
Web 应用共设计有4 个页面,分别是首页、设备管理页、设备属性页、设备地图页。网站通过管理员用户名与密码登录;首页用于设备的产品展示与介绍;设备管理页用于查看设备的所属、创建时间以及对设备数量进行增删操作。设备属性页用于展示设备的在线状态、风险等级、温湿度、姿态角等传感器数据。设备地图页可以清晰地显示出设备所在的地理位置,便于管理员对大量设备进行管理,提高管按的效率,当突发意外事件时,管理员可以迅速地协调人员赶往意外地点。
本文基于物联网技术,开发了这款基于OpenMV的行人检测系统,以STM32F429 单片机作为终端设备,利用OpenMV 进行人像识别,通过4G 传感器与网络数据库进行数据交互,实现了对视频中人像的位置数据进行计算判断并生成风险等级以及周边环境数据的测量。通过软硬件结合的方式,在一定程度上实现了行人检测设备的智能化、自动化。但是OpenMV的准确率还有待进一步的提高,技术上每1%的提高都意味着溺水身亡风险的有效降低,有效地保障溺水者的人身安全。