基于移动通信的可穿戴式跌倒检测系统转让专利

申请号 : CN201410405808.8

文献号 : CN104173057B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈赟林奇亮胡琴曾晓洋

申请人 : 复旦大学

摘要 :

本发明属于人生安全监测技术领域,具体为一种基于移动通信的可穿戴式跌倒检测系统。本发明系统包括:一个带加速度检测的蓝牙外设、一个智能手机以及它们相应的软件系统。带加速度检测的蓝牙外设包括Ardunio系列的蓝牙通讯处理器模块、扩展板和三轴加速度芯片,这一硬件结构使用的电源是9V充电电池;智能手机是配备蓝牙4.0的Android 4.3及以上系统。带加速度检测的蓝牙外设由被测者随身携带在腰部位置,监测人体的实时加速度信息,并通过蓝牙4.0把数据发送到智能手机;智能手机负责处理接收到的数据,并通过一定的算法判断人是否发生跌倒,如果跌倒则在手机端给出报警提示。本发明系统使用方便,可供年老体弱者佩戴,能及时检测人是否发生跌倒;跌倒时,能及时予于救助。

权利要求 :

1.一种基于移动通信的可穿戴式跌倒检测系统,是基于Android、Arduino、蓝牙4.0和互联网技术的,其特征在于系统的硬件部分主要包括: Arduino系列的蓝牙通讯处理器模块Bluno、扩展板Gadgeteer Shield和三轴加速度传感器,以及智能手机;其中,所述的蓝牙通讯处理器模块Bluno、扩展板Gadgeteer Shield和三轴加速度传感器由被测者随身携带在腰部位置,三轴加速度传感器监测人体腰部的实时加速度信息,经由蓝牙通讯处理器模块Bluno接收,并以蓝牙4.0的通信方式发送给智能手机;智能手机接收到这些信息后,通过一个包含判断人体是否发生跌倒动作算法的数据处理模块,判断人体是否发生跌倒动作;如果跌倒,则在手机端给出警报提示;

判断人体是否发生跌倒动作算法具体如下:设人的正前方是三轴加速度传感器的Z轴方向,垂直向下即平行于人体躯干的方向是三轴加速度传感器的Y轴方向,向右是三轴加速度传感器的X轴方向;

首先,判断人是否处于落地时的碰撞状态,利用MATLAB工具进行数据统计分析,得出:如果垂直于人体躯干方向的加速度超过了正常平躺时的垂直于人体躯干方向的加速度的两倍,就认为发生了碰撞跌倒;这里,垂直于人体躯干方向的加速度用Z 、X轴的加速度的平方和来表示;设正常平躺时的垂直于人体躯干方向的加速度的两倍值为第一阈值,用 来表示;

然后,判断人是否处于平躺状态,如果在0.5秒内平行于人体躯干方向的加速度一直在零附近的某值波动很少,那就认为人是摔倒了;这里,平行于人体躯干方向的加速度用Y轴的加速度的平方来表示,设零附近的某值为第二阈值,后面用 来表示;

具体判断步骤如下:设 时刻X、Y、Z轴的加速度值分别为: 、 、 , 时刻之后0.5秒Y轴的加速度值为 ;

步骤 1:

步骤2:

如果步骤1成立,就进行步骤2,如果步骤2成立,则判断跌倒成立;否则,判断为没有跌倒。

2.根据权利要求1所述的基于移动通信的可穿戴式跌倒检测系统,其特征在于还包括软件系统,该软件系统主要包括二部分,分别是Arduino读取、发送数据,和Android的数据处理及响应;其中:

Ardunio读取、发送数据中,Ardunio软件部分实现通过串口读取三轴加速度传感器的数据,并把数据通过Ardunio的串口发送出去;Ardunio硬件调试程序需要硬件上实现的功能是:每隔200ms蓝牙通讯处理器模块Bluno发送一次加速度信息,手机端写好接收代码,就分离出需要的加速度信息;

Android的数据处理及响应中,Android程序的执行流程如下:MainActivity执行,初始化程序→开启BleService ,完成手机端蓝牙的准备工作→开启 MainService ,数据处理和响应的开始。

说明书 :

基于移动通信的可穿戴式跌倒检测系统

技术领域

[0001] 本发明属于人生安全监测技术领域,具体涉及一种基于移动通信的可穿戴式跌倒检测系统。

背景技术

[0002] 可穿戴设备需要整合多种技术,目前比较多使用的主要有嵌入技术,识别技术(语音、手势、眼球等)、传感技术、连接技术、柔性显示技术等。嵌入技术是基本技术,任何小系
统都需要,识别技术是使得可穿戴设备可行的必要技术,语音识别在很早就有研究,可以通
过语音控制设备,不需要键盘,这样才能把设备做小,此外还有眼球,手势,这些都是已有的
技术。传感技术也是多种多样,如加速度传感器,血糖传感器。链接技术包括各种低功耗互
联,如蓝牙。柔性显示是显示屏幕必须的。还包括电池技术,芯片技术等等。为让穿戴式装
置产品有共通的开发平台与标准,Google率先于SXSW 2014 (互动多媒体节)会场中,宣
布将推出基于Android平台的穿戴式装置SDK (开发工具),将智能手机作业系统平台延
伸至智慧手表、运动手环等领域。可以说,可穿戴设备就是把智能设备做的更加的人性化,
人们可以摆脱数据线,可以摆脱固定的屏幕,同时,由于传感器和无线网络,大大拓展了人
们的感知范围,为医疗,健身提供实时数据信息。同时,也让人们之间的联系更加紧密。可
穿戴设备需要整合多种技术,目前比较多使用的主要有嵌入技术,识别技术(语音、手势、眼
球等)、传感技术、连接技术、柔性显示技术等。嵌入技术是基本技术,任何小系统都需要,识
别技术是使得可穿戴设备可行的必要技术,语音识别在很早就有研究,可以通过语音控制
设备,不需要键盘,这样才能把设备做小,此外还有眼球,手势,这些都是已有的技术。传感
技术也是多种多样,如加速度传感器,血糖传感器。链接技术包括各种低功耗互联,如蓝牙。
柔性显示是显示屏幕必须的。还包括电池技术,芯片技术等等。
[0003] 现在移动通信网络几乎覆盖了所以的城市,人们的生活因为移动互联网发生了巨大的变化,通过手机上互联网,手机付款,手机打车,因为移动互联网,把大所有的人都联系
在了一起。
[0004] Android系统是Google开发的一款开源移动OS,Android中文名被国内用户俗称“安卓”。Android操作系统是基于Linux内核设计,使用了Google公司自己开发的Dalvik
Java虚拟机。目前Android操作系统已经成为全球最大的智能手机操作系统,Android完
全开源,平台从底层操作系统到上层的用户界面和应用程序都不存在任何阻碍产业创新的
专有权障碍。开源的特性使得Android平台会拥有越来越壮大的开发者队伍,并且随着用
户与应用的日益丰富,使得Android这个崭新的平台走向成熟与稳定。开发队伍和硬件提
供商包括了业内主要的手机生产商,HTC、三星、摩托罗拉、LG、索爱、华硕、宏碁、华为、中兴、
夏普、联想、魅族等数百家巨头推出了基于Android操作系统的智能手机或平板电脑。而
且Android现在已经不在局限于智能手机,还有平板电脑以及智能电视,目前摩托罗拉、三
星、LG、HTC、宏碁、华硕等公司均推出了平板电脑,同时国内的创维、TCL等厂商已经推出了
Android智能电视,最终将会有更多的智能家电、机顶盒、车载电子设备的出现。
[0005] Ardunio 是一个开放源代码的单芯片微电脑,它使用了Atmel AVR单片机,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O 接口板,并且具有使用
类似Java,C 语言的Processing/Wiring开发环境。Arduino可以使用 Arduino 语言与
Macromedia Flash、Processing、Max/MSP、Pure Data和SuperCollider等软件,结合电子
元件,例如开关或传感器或其他控制器件、LED、步进马达或其他输出装置,作出互动作品。
Arduino也可以独立运作成为一个可以跟软件沟通的接口。
[0006] 蓝牙4.0作为一项全新推出的技术,现在已经获得了广泛的支持。其中的BLE(Bluetooth Low Energy)功能更是为小数据低功耗传输提供了很大的便利,一般一颗纽扣
电池可以支持一个BLE设备工作半年以上时间。在医疗电子,可穿戴设备拥有广阔的前景。

发明内容

[0007] 本发明的目的在于提供一种基于移动通信的可穿戴式跌倒检测系统,使跌倒的人及时得到救助,避免更严重的后果。
[0008] 本发明提供的基于移动通信的可穿戴式跌倒检测系统,是基于Android、Arduino、蓝牙4.0和互联网等技术的,系统的硬件部分主要包括:蓝牙通讯处理器模块Bluno(其上
含有蓝牙芯片TI CC2540和微处理器ATmega328)、扩展板Gadgeteer Shield、三轴加速度
传感器芯片(如ADXL345)和智能手机(如小米手机2S)。所述的蓝牙通讯处理器模块、扩展
板和三轴加速度传感器使用9V充电电池供电,由被测者随身携带在腰部位置,三轴加速度
传感器监测人体腰部的实时加速度信息,经由蓝牙通讯处理器模块接收,并以蓝牙4.0的
通信方式发送给智能手机;智能手机负责处理接收到的数据,并通过一个包含判断人体是
否发生跌倒动作算法的数据处理模块,判断人体是否发生跌倒动作;如果跌倒,则在手机端
给出警报提示。(注:此处支持的手机可以是配备了蓝牙4.0的 Android 4.3及以上系统的
其它手机)
[0009] 穿戴时加速度传感器在人体的腹部位置,人的正前方是加速度传感器的Z轴,垂直向下是Y轴方向,向右是人体的X轴方向。但是在实际中,由于穿戴位置的不确定性(如
传感器穿戴在腰左侧),Z、X就不再是代表人的正前、正右,但是垂直向下(平行于人体躯干)
的加速度一定是Y轴的加速度,垂直于人体躯干的加速度一定是Z 、X轴的合加速度。
[0010] 通过用MATLAB工具分析跌倒与走路、坐着、躺着、直立、电梯、上楼梯、跑步、起蹲的对比数据后,得到本发明的核心判断是否发生跌倒的算法,具体描述如下:
[0011] 首先,判断人是否处于落地时的碰撞状态。通过利用MATLAB工具进行数据统计分析后,得出:如果垂直于人体躯干方向的加速度(这里用Z 、X轴的加速度的平方和来表
示)超过了正常平躺时的垂直于人体躯干方向的加速度的两倍(设该值为阈值1,后面用 来表示),就认为发生了碰撞跌倒。该步骤可用来滤掉走路、坐着、躺着、直立、乘
电梯、上楼梯等等情形。剩下跑步、起蹲等动作较大的情形没有区分出来。
[0012] 然后,判断人是否处于平躺状态。如果在0.5秒内平行于人体躯干方向的加速度(这里用Y轴的加速度的平方来表示)一直在零附近的某值波动很少(设该某值为阈值2,后
面用 来表示),那就认为人是摔倒了。
[0013] 具体判断步骤如下:这里设 时刻X、Y、Z轴的加速度值分别为: 、 、, 时刻之后0.5秒Y轴的加速度值为 ;
[0014] 步骤 1:
[0015]
[0016] 步骤2 :
[0017]
[0018] 如果步骤1成立,就进行步骤2,如果步骤2成立,则判断跌倒成立;否则,判断为没有跌倒。跌倒检测核心算法流程见图2。
[0019] 通过利用MATLAB工具进行数据统计分析后,得出:本发明中,阈值1一般可取值为4 -3
3.6x10,阈值2一般可取值为1600,两者的单位为mg*mg,其中g是重力加速度,m为10 。
[0020] 本发明中,所述软件系统主要包括二部分,分别是Arduino读取、发送数据,以及Android的数据处理及响应。
[0021] Ardunio软件部分实现通过串口读取三轴加速度传感器的数据,并把数据通过Ardunio的串口发送出去。Ardunio程序执行的流程如图3所示。
[0022] Ardunio软件部分,实现通过串口读取三轴加速度传感器的数据,并把数据通过Ardunio的串口发送出去;
[0023] Android软件部分,Ardunio硬件调试程序需要硬件上实现的功能是:每隔200ms蓝牙发送一次加速度信息,手机端写好接收代码,就分离出需要的加速度信息;
[0024] Android程序的执行流程如下:
[0025] MainActivity执行(初始化程序) →开启BleService (完成蓝牙的准备工作)→开启 MainService (数据处理和响应的开始);
[0026] 这里数据的处理和响应都没有做具体化,只是在MainActivity里直接把所有接收到的数据显示出来。Android软件执行流程图如图5所示。
[0027] 本发明中,手机端的报警系统选择Notification方式,通过软件把消息通过移动网络发送出去。如果单纯是蓝牙的传输距离,那就大大限制了这一个设计的使用范围。本
发明采用软件加上拨打电话的功能,通过移动网络,大大的扩展信息发布范围。
[0028] 本发明系统使用方便,可供年老体弱者佩戴,能及时检测人是否发生跌倒;跌倒时,能及时予于救助。

附图说明

[0029] 图1为系统功能框图。
[0030] 图2为跌倒检测核心算法。
[0031] 图3为Ardunio硬件程序执行流程图。
[0032] 图4 为跌倒检测的Android 程序结构图。
[0033] 图5 为Android软件执行流程图。
[0034] 图6 为跌倒检测Android软件UI设计图。

具体实施方式

[0035] 下面结合附图对本发明整体的组成和功能进一步详细说明。
[0036] 本发明系统的硬件组成及实现的功能为: Arduino系列的蓝牙通讯处理器模块Bluno、扩展板Gadgeteer Shield和三轴加速度传感器芯片ADXL345,它们使用9V充电电池
供电,由被测者随身携带在腰部位置,三轴加速度传感器监测人体腰部的实时加速度信息,
经由蓝牙通讯处理器模块接收,并以蓝牙4.0的通信方式发送给小米2S智能手机;小米2S
智能手机负责处理接收到的数据,通过一定的算法判断人是否发生跌倒动作,如果跌倒,则
在手机端给出警报提示。
[0037] 蓝牙通讯处理器模块使用的是Bluno,它是一个板载支持BLE(蓝牙4.0 BluetoothLow Energy)的arduino兼容板,Bluno在从机模式下可以通过蓝牙4.0与其他任何支持蓝
牙4.0的设备(例如iOS设备,Android PC等)进行数据通信,也可以自己充电主机角色,与
另一块Bluno进行通信。
[0038] 扩展板使用的是Gadgeteer Shield,能直接插到Arduino R3控制上使用。Gadgeteer Shield具有6个Gadgeteer接口,可以接数字传感器、模拟传感器、IIC接口模
块、SPI接口模块等,在此基础上Gadgeteer Shield还保持原有扩展板的风格,扩展所有数
字口和模拟口为3PIN排针,可以直接使用DFRobot的系列传感器。
[0039] 三轴加速传感器芯片使用的是ADXL345,这是一款体积很小,且很薄的3轴加速度2
芯片,具有13位输出,测量范围是±16g,输出16位2进制数字信号,可以通过SPI和IC通
讯读取芯片数据。ADXL345非常适合在移动设备中使用。在本发明中使用的是集成了两种
接口的ADXL345模块,这里使用Gadgeteer Type I 接口,这种接口是在Ardunio开源硬件
里最常用的接口类型之一,通过这种接口连接不同的传感器,可以很方便的添加控制代码。
[0040] 蓝牙4.0作为一项全新推出的技术,现在已经获得了广泛的支持。其中的BLE(Bluetooth Low Energy)功能更是为小数据低功耗传输提供了很大的便利,一般一颗纽扣
电池可以支持一个BLE设备工作半年以上时间。在医疗电子,可穿戴设备和物联网领域拥
有广阔的前景。相对于wifi,BLE设备可以在没有路由器的情况下与蓝牙主机(如iOS设备,
Android手机,PC等)进行连接,传输数据,具有价格更低,功耗更低,使用更便捷的优势。相
对于zigbee,二者功耗类似,但蓝牙4.0现在已经成为了手机的标配,所以BLE在网络节点
较少的时候,拥有更便捷的优势。对于小数据低功耗的功能,iOS只支持BLE而不支持NFC,
Android也从4.3版本开始原生支持BLE协议了。有iOS的强推和其他系统的完善支持,
BLE设备会成为一个非常有市场前景的产品。
[0041] 穿戴时加速度传感器ADXL345在人体的腹部位置,人的正前方是加速度传感器的Z轴,垂直向下是Y轴方向,向右是人体的X轴方向。但是在实际中,由于穿戴位置的不确
定性(如传感器穿戴在腰左侧),Z、X就不再是代表人的正前、正右,但是垂直向下(平行于人
体躯干)的加速度一定是Y轴的加速度,垂直于人体躯干的加速度一定是Z 、X轴的合加速
度。
[0042] 通过用MATLAB工具分析跌倒与走路、坐着、躺着、直立、电梯、上楼梯、跑步、起蹲的对比数据后,得到本发明的核心判断算法描述如下:
[0043] 首先需要通过Z 、X轴合加速度(即垂直于人体躯干的加速度)的平方超过一定的阈值(设为阈值1,后面用 来表示),来滤掉走路、坐着、躺着、直立、乘电梯、上楼
梯等等情形。剩下跑步、起蹲等动作较大的情形没有区分出来。
[0044] 紧接着判断人是否处于平躺状态,如果在0.5秒内Y轴的加速度(即平行于人体躯干的加速度)一直在零附近的某些值波动很少,即其值的平方总小于一个稍大于0的阈值
(设为阈值2,后面用 来表示),那就说明人是摔倒了。具体判断步骤如下:(这里
设 时刻X、Y、Z轴的加速度值分别为: 、 、 , 时刻之后0.5秒Y轴的加速度
值为 )
[0045] 步骤 1:
[0046]
[0047] 步骤2 :
[0048]
[0049] 如果步骤1成立,就进行步骤2,如果步骤2成立,则判断跌倒成立;否则,判断为没有跌倒。跌倒检测核心算法流程见图2。
[0050] 整个系统的软件设计主要包括二部分,分别是Arduino读取、发送数据和Android的数据处理及响应。
[0051] Ardunio软件部分实现通过串口读取三轴加速度传感器的数据,并把数据通过Ardunio的串口发送出去。图3是Ardunio程序执行的流程图。
[0052] Ardunio硬件调试程序需要硬件上实现的功能是每隔200ms蓝牙发送一次加速度信息。手机端写好接收代码就可以分离出需要的加速度信息。
[0053] 跌倒检测的Android程序结构图如图4所示,其中的“主要活动”是程序负责UI界面,处理一些按钮活动,比如搜索蓝牙按钮的文字变化,以及把信息发给“蓝牙服务”处理,
还有界面上的显示,比如显示跌倒,第几次跌倒等信息。“后台主要服务”负责处理接收到的
蓝牙数据,把数据处理好后并作出相应的响应,比如报警,让主UI界面显示改变等等。“蓝
牙服务”负责处理所以的蓝牙活动,因为蓝牙的连接,断开,数据的接收和发送都必须在后
台完成,所以写成“服务”。同时,也是为了让程序能够在后台一直运行的关键。“广播接收
器”主要负责以上介绍的各个模块的数据,信息交换。这里不是一个简单的类,而是说一个
平台,在不同的模块里要有不同的实现。
[0054] Android程序的执行流程如下:
[0055] “主要活动”执行(初始化程序) → 开启“蓝牙服务”(完成蓝牙的准备工作)→开启 “后台主要服务”(数据处理和响应的开始)
[0056] 这里数据的处理和响应都没有做具体化,只是在“主要活动”里直接把所有接收到的数据显示出来。Android软件执行流程图如图5所示。
[0057] 软件的基本功能要求UI界面需要4个基本功能:
[0058] 1)蓝牙操作,提供蓝牙连接,设备搜索,断开连接等操作,显示当前蓝牙连接状态;
[0059] 2)显示当前的加速度信息以及跌倒信息等等;
[0060] 3)阈值调节,只是把输入值导入到算法中即可;
[0061] 4)使用Toast作为跌倒时的凸显文字。
[0062] 根据上面的基本描述,跌倒检测Android软件UI设计草图如图6所示。
[0063] 报警由两种方式,一种是通过Notification,另一种是使用MediaPlayer播放音乐。最终选择的是Notification方式,因为MediaPlayer方式受到很多限制,提示声音的
音量会因为媒体的声音关掉而影响,而Notification方式可以忽略这一影响,不管什么情
况下,Notification的声音都不会被关掉。更重要的是Notification方式可以在Android
手机在进入其他界面时可以快速的通过通知栏切回到程序主界面。
[0064] 通过软件把消息通过移动网络发送出去。如果单纯的蓝牙的传输距离,那就大大限制了这一个设计的使用范围,软件加上拨打电话的功能,通过移动网络,大大的扩展信息
发布范围。
[0065] 算法可以通过一个类封装起来,这里使用一个DataBuffer类,里面包含两个函数,一是数据更新函数dataRenew(),一是判断跌倒函数IsFallen();
[0066] dataRenew()使用一个移位寄存器的原理,代码如下:
[0067] publicvoid dataRenew(int x,int y,int z) //先更新基本的加速度数据
[0068] {
[0069] for(int i=9; i>0;i--)
[0070] {
[0071] xB[i] = xB[i-1];
[0072] yB[i] = yB[i-1];
[0073] zB[i] = zB[i-1];
[0074] }
[0075] xB[start] = x; //start 标志的是数据最新的位置,这里是start=0
[0076] yB[start] = y;
[0077] zB[start] = z+20;
[0078] }
[0079] IsFallen()函数按照前面的算法流程来编写,代码如下:
[0080] publicboolean IsFallen()
[0081] {
[0082] boolean flag = false;
[0083] if((xB[now]*xB[now]+zB[now]*zB[now] )> Threshold1)//水平运动速度过大
[0084] {
[0085] //区分上下跳动和摔倒
[0086] flag = true;
[0087] //区分是否还是站着
[0088] if(yB[now]
[0089] yB[now+1]
[0090] {
[0091] flag = false;
[0092] }
[0093] //进一步的判断条件
[0094] }
[0095] return flag;
[0096] }
[0097] 对于IsFallen函数,Threshold2和Threshold1可通过前面的算法求取完成,当然也可以通过前面的UI输入进一步调整。如果返回True表示摔倒,如果返回False表示
没有摔倒。
[0098] 本发明使用9.0V可充电电池供电,手机使用小米2S,安装Android原生4.3系统。工作时,正常的步骤如下:
[0099] 步骤1:插上电源,可以看到Bluno板上的蓝牙发送指示灯以5Hz的频率闪烁。
[0100] 步骤2:在手机端打开应用程序,软件显示打开蓝牙的提醒,选择打开蓝牙。点击搜索设备,就可以看蓝牙设备名BLE v1.6,选择连接。连接成功后,数据就会显示在软件的
UI数据显示框。
[0101] 步骤3:点击SendData,开始后台跌倒检测服务,这样软件的全部功能开启。这样以后,软件可以放到后台,进行其他活动,手机也可以锁屏。
[0102] 步骤4:当跌倒时,软件会在给出toast显示如“第2次摔倒”,同时发出叮咚声,在通知栏显示如“第2次摔倒”。
[0103] 跌倒报警漏报测试中,对4种跌倒情形:从左边跌倒、从右边跌倒、向前跌倒、向后跌倒,各测试5次。选了3个人做测试对象,总共采集了60组数据,漏报了1次,准确率达
到98.3%。
[0104] 日常活动的误报率测试中,对9种日常动作:走路(100m)、跑步(100m)、坐下、起身、原地跳跃、弯腰、起蹲、站起、躺下(并转身),各测试5次。选了3个人做测试对象,共计
有135组数据,误报了2次,分别出现在原地跳跃和弯腰的动作里,误判率是1.4%。