基于STM32的孕妇安全监护设备开发
2019-05-21梁金梅程琪彬刘持标
梁金梅, 程琪彬,刘持标
(1.三明学院 信息工程学院,福建 三明365004;2.物联网应用福建省高校工程研究中心,福建 三明365004)
全面二胎政策带来的生育高峰, 使得孕妇人群不断扩大, 孕妇是需要被照顾监护的特殊群体,却因为社会发展的需要又不得不在怀孕期间或多或少的投入到工作之中, 使得孕妇在独处的时间内安全问题得不到保障给家人带来极大担忧[1]。目前市场上针对孕妇的可穿戴式设备主要是为了解决孕吐或方便胎儿产检等方面问题[2-3],却从未拥有一款针对孕妇自身安全问题进行监护的产品,因此开发一款可随时随地监护孕妇安全的便携设备势在必行。
本文开发的孕妇监护设备主要由硬件终端、Web 服务器端的数据管理系统以及Android 客户端APP 三部分组成。硬件终端即孕妇随身携带的监护设备,用于孕妇所处环境数据的采集、身体特征的监测、地理位置的定位及是否发生碰撞的监测。Web 服务器运行在云服务器端,可供系统管理员对所有设备进行用户管理和数据的查阅。Android 客户端供孕妇自己及家人实时查看终端监测的数据,若数据发生异常,服务器端即时通告用户,从而实现了远程监护孕妇安全的功能。下面将从系统总体组成、设备的硬件设计、Web 服务器端和Android 客户端的设计与实现四个方面做详细介绍。
1 系统总体组成
如图1为孕妇安全监护设备系统总体框图。其中终端硬件部分设计成可穿戴式设备,以STM32微处理器作为核心[4],连接温度传感器用于采集孕妇所处的环境数据,心率传感器实时检测孕妇的心率,碰撞传感器可检测孕妇是否发生摔跤或碰撞,GPS 模块可实时定位孕妇所处位置,硬件终端采集的数据通过GPRS 无线通信模块传输到Web 服务器端进行管理。Web 服务器的运行是基于云服务器的环境,采用SSM(即Spring + Spring MVC + MyBatis)框架开发[5],实现了设备数据管理、用户管理、用户设置等功能。Android 客户端基于一款支持HTML5 的集成开发环境HBuilder 开发[6],实现了可视化的数据查阅、设备绑定、安全通告等功能。图2显示了Web 服务器端和Android 客户端总体功能。
图1 孕妇监护系统设备系统总体框图
图2 孕妇监护设备系统软件功能框图
2 孕妇监护设备的硬件设计
硬件终端的设计主要包括原理图的设计和PCB 电路板的制作及布线。本文采用Altiumdesinger软件进行电路设计, 图3为孕妇监护设备的硬件原理图。该硬件终端组件包括STM32 微处理器、GPRS 无线通信模块、心率传感器、温度传感器、GPS 模块、电源模块等。
图3 终端硬件原理图
2.1 STM32 微处理器
STM32 微处理器采用STMF103系列芯片, 它是STM32F103 系列中高性能、 高配置的Cortex-M3 内核32 位处理器,它的尺寸仅为10 mm×10 mm×1.4 mm, 适合用于便携设备。包含2 个12 位的ADC 和51 个通用IO 口, 工作频率能达到72 MHz,能对各类信息进行高效处理,并具有低功耗、睡眠模式、停机和待机模式, 大大提高了设备的续航能力。本设计中主要用微处理器内部的AD 转换器、定时器、多功能双向的I/O 口等功能, 图4为STM32 微处理器的原理图。
图4 STM32 微处理器原理图
2.2 GPRS 模块
本文选取GPRS 模块作为无线通信模块, 该模块可以保证孕妇在户外与服务器间的通信不间断。GPRS 应用被激活后,将一直保持在线,类似于无线专用网络服务。硬件上GPRS 模块的U_TXD和U_RXD 发送接收引脚需与STM32 微处理器连接。GPRS 模块的软件实现主要通过AT 指令集的方式。在模块启动后首先绑定云服务器IP 地址及端口号,与服务器建立连接;其次将传感器采集的心率、温度等数据每2 s 向服务器发送一次,图5为GPRS 模块用网络服务相关AT 指令实现传输数据的主要代码。
图5 GPRS 模块发送数据的主要代码
2.3 心率传感器
心率传感器是一款用于脉搏心率测量的光电反射式模拟传感器。其基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏测量的,主要由光源和光电变换器两部分组成。光源一般采用对动脉血中氧和血红蛋白有选择性的一定波长(500~700nm)的二极管。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生变化,此时由光电变换器接收人体组织反射的光线,转化成电信号并将其放大和输出[7]。硬件上心率传感器的数据输出引脚必须与STM32 微处理器的ADC 通道连接。传感器将采集的模拟信号传输给STM32 微处理器,微处理器内部的ADC再转换成数字信号,最后通过简单计算可得到心率值。
2.4 GPS 模块
GPS 模块采用的ATGM336H-5X-3X, 该型号跟踪灵敏度为-162 dBm,定位精度为2.5 m,首次定位时间为32 s,且功耗低。硬件上GRS模块的U_TXD 和U_RXD 发送接收引脚需与STM32 微处理器连接,图6为GPS 模块原理图。GPS 模块可获取到孕妇所在位置的经度值和纬度值,将该数值发送到服务器端,服务器通过调用地图提供的API 可精准定位出孕妇所在位置。
图6 GPS 模块原理图
2.5 碰撞传感器
碰撞传感器采用的是碰撞开关又称限位开关、行程开关,属于接触式机械开关。当发送碰撞时,开关的连杆驱动开关的接点引起闭合的接点分断或者断开的接点闭合,由开关接点开、合状态的改变去控制电路和电机。本文通过接收碰撞传感器的高低电平判定孕妇是否发生碰撞。
3 Web 服务器端的设计与实现
服务器端的运行基于阿里云服务器的环境,即在阿里云服务器上搭建Tomcat 服务器,这样便于服务器管理员随时随处登录后台查询管理数据。本文Web 服务器的实现采用SSM 框架 (即Spring +Spring MVC + MyBatis),这个是继SSH 之后,目前比较主流的Java EE 企业级框架[5]。
Web 服务器端主要包括用户管理、 数据查看与管理、 用户信息反馈等功能。图7界面展示了Web 服务端的所有功能列表及终端数据的查看。Web 服务器数据采用MySQL 数据库管理, 表项包含了数据表、设备表、用户表、用户反馈表等。服务端另外一个重要功能就是孕妇设备终端数据异常时,向客户发送危险通告。服务端收到的终端数据超过设定阈值时判定当前孕妇遇到危险情况,会向绑定了该孕妇设备的所有客户以短信的形式发送危险通告, 该功能的实现需要通过云服务器控制台设置短信服务。
图7 Web 服务器端数据查看界面
4 Android 客户端的设计与实现
Android 客户端的开发采用HBuilder 集成开发环境,HBuilder 是DCloud(数字天堂)推出的一款支持HTML5 的Web 开发IDE。本文Android 客户端与服务器端的数据交互主要采用AJAX 技术[8],即客户端向服务器发送AJAX 请求并解析服务器响应的数据。客户端以异步方式从服务器端获取数据。图8为Android 客户端以POST 方式向服务器请求心率数据的核心代码。
图8 Android 客户端AJAX 请求核心代码
Android 客户端主要实现了用户数据查询、设备绑定、安全通告等功能。用户注册并登录成功之后,通过扫码绑定相关设备,可实时查看当前孕妇身处环境温度值,观察孕妇心率,实时定位孕妇所处位置,也可查看某一项数据一段时间内的变化情况。图9为客户端各项数据的实时显示,图10 以折线图的形式显示心率数据的变化。
图9 客户端实时数据图
图10 心率数据折线图
5 结论
本文开发的孕妇监护设备是一款便携的随身设备, 同时配套了对应的Web 服务器管理系统及Android 客户端应用App。孕妇可随身携带该设备, 孕妇自己及家人通过Android 端App 邦定设备后,可实时监测孕妇所处的环境及孕妇身体特征,若遇到环境不宜、身体特征异常或碰撞等危险情况,会即时发送通告,家人通过App 定位到孕妇所在位置便可采取施救措施,这就为孕妇提供了非常好的安全保障。随着孕妇群体的激增,用户对该类产品的需求越来越大,因此开发该款设备具有重大的应用价值和市场前景。本设备作为可穿戴式设备在硬件功耗方面还存在不足,下一步的研究目标是低功耗的窄带物联网NB-IoT 通讯技术。