西北民族大学电气工程学院 刘艳艳
该项目的名称是“基于单片机的老人监护系统”。本系统可以通过脉搏心率传感器检测老人的脉搏状态,把老人的数据状态在单片机内部进行处理,然后反馈到PC端通过上位机显示出来,这样可以让我们随时随地了解到老人现在的身体情况,以便对老人的突发情况能够做出及时的预防和处理!而且如今,随着老人年纪不断的增长,身体体质不断的衰弱,在上楼梯或者走斜坡的时候很容易会发生摔倒或跌倒,如果不及时的接收到治疗,很可能会造成很严重的后果。本套系统可以通过三轴加速传感器实时检测老人是否跌倒以及GPS模块定位功能,当老人跌倒时,本系统会自动发送老人所在位置的经纬度短信通知你和报警,让老人得到快速和有效的治疗。不仅如此,随着老人年纪不断的增长,自身的体质和免疫力不断的下降,本套系统可以通过传感器不断的检测外界的情况,例如湿度,温度,PM2.5!再将数据反馈到手机或液晶屏上,以便你及时的对老人进行增添衣物和对疾病的预防。
本智能医疗系统是由STM32最小系统、GSM模块、三轴陀螺仪、稳压模块、HX-M02 WIFI无线透传模块、Arduino UNO单片机及拓展板、心率脉搏检测装置等部分构成。
本系统设计将STM32最小系统以及外设电路作为中央控制器,Arduino uno单片机及拓展板作为辅助控制器。辅助控制器首先通过温湿度传感器将老人外界环境采集到的数值进行判断,并将采集到的数值通过WIFI无线透传模块发送到服务器端的数据库中。其装置本身还配有三轴陀螺仪和心率脉搏传感器,当遇到老人突然发生摔倒事件或心率脉搏突发异常时,本系统会自动的报警并发送短信到指定的移动号码上。具体的实施过程为:(1)随着老人年龄不断的增长,其抵抗力变得越来越弱,为了更及时有效的预防外界环境的变化所给老人的感冒、着凉。本系统通过HX-M02 WIFI无线透传模块实时的将采集到的温度、湿度发送到云端数据库中,再通过编写手机客户端对数据库实时的读取,使得无论在何时何地都可以知道老人周围环境的数值,以便提醒老人是否添加衣物。(2)本系统还可以通过脉搏心率传感器检测老人的脉搏状态,把老人的数据状态在Arduino UNO单片机内部进行处理,然后反馈到PC端通过上位机显示出来,这样可以让我们随时随地了解到老人现在的身体情况,以便对老人的突发情况能够做出及时的预防和处理。(3)在对老人的姿态检测方面,我们决定采用MPU6050三轴陀螺仪对老人的姿态角度进行实时解析,以及再使用三轴加速度计来对老人是否摔倒的检测。(4)在检测老人是否摔倒的软件编程方面,我们决定将三轴陀螺仪和三轴加速度计采集到的值进行控制算法处理,例如:PID算法、卡尔曼滤波算法、互补滤波算法。使得传感器能更好的检测到老人的姿态,减少传感器的误检。(5)当老人摔倒时,STM32单片机会通过串口通信使GSM模块向指定的号码拨打电话或发送短信,使得老人能够得到及时得到有效的治疗。(6)本系统还集成了GPS定位功能,当老人摔倒后,本系统会自动进行定位,并将老人所在位置的经纬度坐标通过文本短信形式发送到指定号码的移动设备上(7)由于本系统要实时上传采集到的数据,因此我们选用WIFI模块连接手机热点或者4G模块热点进行数据的接收与发送,这也打破了传统意义上网线连接的局限性。在对WIFI无线透传模块的配置中,我们通过串口对WIFI模块所要连接的热点进行用户名、密码、连接服务器地址进行写入。配置完成后,我们只需将热点的用户名、密码设置成与其配置的一致。就可以自动的连接并进行服务器数据的交互。
图1 基于单片机的老人监护系统硬件框图
主控芯片STM32F103RBT6是以ARM 32的Cortex—M3为内核的处理器,最高工作频率可达72MHz,内置大容量高速存储器,为处理老人大量的姿态算法数据提供了足够的内存和处理时间;具备FSMC灵活的静态存储器控制器,用其来驱动液晶屏极大地提高了刷新率;同时,它内嵌有支持CAN 2.0B的控制器,无需外扩专用芯片便可以组成CAN网络。因此作为此次模拟系统的中央控制器。
而作为辅助处理线程的Arduino uno是基于ATmega328P的单片机开发板。该开发板由14路数字输入/输出引脚(其中6路可以用作PWM输出)、6路模拟输入、1个16MHz的石英晶体振荡器、一个USB接口、1个电源接头、1个ICSP数据头以及1个复位按钮组成。Uno包含了单片机运行所需的所有要素,只需用USB连接线将其连接到计算机,或利用AC-DC适配器或电池供电后即可启动。Uno的特色在于将Atmega16U2编程为一个USB-to-serial转换器,以便能简单、轻松和自由地安装驱动程序。
MPU-6050整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP:Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术。我们将MPU6050陀螺仪模块与STM32最小系统板连接,单片机通过IIC总线通讯协议读取转化采集到的角度姿态。并通过软件滤波方式使输入的数据变得更加平滑与连续,从而系统检测变得更加稳定。
在STM32最小系统板的程序设计上,通过编程对寄存器操作以及SCL、CLK、SDA时序逻辑的转变从而使得温湿度传感器以及MPU6050三轴陀螺仪模块正常检测。在检测老人是否摔倒的程序编写上,我们将MPU6050陀螺仪检测到的倾角数值通过卡尔曼滤波算法、低通滤波算法、PID算法使数值的变化曲线趋近于平滑的曲线,以便能够更好的对老人姿态进行准确的检测。当单片机检测到老人摔倒后,再通过单片机的串口通信开启GPS定位功能,将老人所在位置的经纬度通过GSM模块短信文本发送到指定号码的移动设备上,以便老人能够得到及时的救治。
由于脉搏传感器检测信号为模拟量,为了将其转化为数字量,我们需要接入ADC0832芯片以及外设电路,并通过单片机内自带的AD通道将其数值采集转换。当检测到老人的脉搏发生异常时,通过IO的高低电平转换,控制GSM通过单品机的串口通信向指定的号码拨打电话和报警。作为拓展,我们将Arduino连接HX-M02 WiFi模块,并通过外网传输将单片机采集到的温湿度数值以及脉搏传感器数值分别发送到程序指定的云服务数据库中,我们仅需在另一终端上登录指定数据库就可以将数值显示出来。
为了将检测结果更能简单方便的显示给用户,我们决定使用手机应用程序来读取数据库中老人身体状态的数值。因此我们将采用Andriod Studio软件来进行安卓程序的编写。在软件的开发中,我们设计了登录界面、老人状态显示界面。并通过添加方法将登录、注册功能写入,增加了其系统的安全性。当我们登录成功后,页面会自动跳转到老人状态显示界面。在此界面中,文本框显示老人的身体状态数值,以及对数值进行分析得出合理性的建议。在数据的接收和分析中,我们在云服务器中创建一个网页,并通过PHP语言编写条件的逻辑判断以及对数据库的读写操作,从而实现数据的交互传输。
本文通过对老人监护系统的硬件电路选择以及软件控制程序编写的介绍,系统结合了硬件优化结构的电路控制和单片机滤波程序控制两种方式,先经过模拟电路初步调节,再通过单片机程序软件逐步精细优化、以及安卓应用程序的不断测试修改。在测试过程中,表现出了稳定、灵活、高效的特点,能够有效体现系统的方便智能,具有广阔的应用前景、市场价值。