跌倒检测系统(自动保存的)(426)(自动保存的)_第1页
跌倒检测系统(自动保存的)(426)(自动保存的)_第2页
跌倒检测系统(自动保存的)(426)(自动保存的)_第3页
跌倒检测系统(自动保存的)(426)(自动保存的)_第4页
跌倒检测系统(自动保存的)(426)(自动保存的)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计 林奇亮 10300720138 1. 绪论1.1 课题背景2012年4月Google眼镜的发布,它具有和现在智能手机一样的功能,可以通过声音控制,拍照,打电话,收发邮件等功能,因为它强大的功能,赚取了大量眼球之后,也吹响了可穿戴设备走入普通大众世界号角。各大IT公司相继推出了自己的可穿戴是设备,可穿戴设备的产品正成一个井喷的趋势。除了智能眼镜,还有智能手表,三星,索尼,苹果都有自己的智能手表产品(苹果的iWatch还未发布)。新兴的可穿戴设备能否像iPhone开启智能手机时代一样创造奇迹?值得期待。穿戴式电子产品的定义,就是能够以穿着或配戴方式,附在使用者身上的电子装置。在应用领域上

2、,可分成:资讯娱乐(Infotainment)、运动健身(Fitness and Wellness)、医疗照护(Healthcare and Medical)、及工业/军事用(Industrial and Military)共四类。尤其以资讯娱乐、运动健身为市场成长最快的领域。由于穿戴式装置的种类广泛,使得各调研机构分析全球产值的数据,也有所不同。据BI Intelligence综合ABI Research、IMS、Juniper等调查机构的资料,乘以每台装置平均售价为42美元的结果后,预测2014年至2018年的市场产值分别约50、70、90、110、125亿美元。资策会MIC也预估2014

3、年市场规模达31亿美元,到2018年将成长到341亿美元。出货量部份,工业技术研究院IEK的调查显示,2013年装置数量约0.15亿台,到2018年将达到1.91亿台的水准。为让穿戴式装置产品有共通的开发平台与标准,Google率先于SXSW 2014 (互动多媒体节)会场中,宣布将推出基于Android平台的穿戴式装置SDK (开发工具),将智慧型手机作业系统平台的战线,延伸至智慧手表、运动手环等领域。可以说,可穿戴设备就是把我们的智能设备做的更加的人性化,人们可以摆脱数据线,可以摆脱固定的屏幕,同时,由于传感器和无线网络,大大拓展了人们的感知范围,为医疗,健身提供实时数据信息。同时,也让人

4、们之间的联系更加紧密。本课题希望通过开发防跌倒的可穿戴系统,为以后的可穿戴设备开发提供一个平台性的东西,可以随意添加传感器,添加无线连接方式等。穿戴设备使用的技术中,各种传感器技术,各种无线通讯方式都有可能用到,因此我们需要的是一个积木一般的开发平台。本课题采用Arduino控制板(一个开源的硬件平台),通过三轴加速度传感器采集人体的基本运动信息,通过蓝牙把实时数据发送到手机,在手机上处理数据,并作出摔倒警报。这一应用主要是针对人口老龄化,老人的看护问题。老人摔倒,往往会造成其他的一些伤害,如中风,骨折等等,而且一般的疾病突发也会导致摔倒,所以不管如何,老人摔倒都需要及时的得到救护。因此一个在

5、老人跌倒时及时呼救的应用非常有必要。1.2 研究现状穿戴式设备拥有多年的发展历史,思想和雏形在20世纪60年代即已出现,而具备可穿戴式智能设备形态的设备则于7080年代出现,史蒂夫·曼基于Apple-II 6502型计算机研制的可穿戴计算机原型即是其中的代表。随着计算机标准化软硬件以及互联网技术的高速发展,可穿戴式智能设备的形态开始变得多样化,逐渐在工业、医疗、军事、教育、娱乐等诸多领域表现出重要的研究价值和应用潜力。在学术科研层面,美国麻省理工学院、卡耐基梅隆大学、日本东京大学的工程学院以及韩国科学技术院等研究机构均有专门的实验室或研究组专注于可穿戴智能设备的研究,拥有多项创新性的

6、专利与技术。而中国学者也在20世纪90年代后期开展可穿戴智能设备研究。在机构与相关活动领域,美国电气和电子工程师协会成立了可穿戴IT技术委员会,并在多个学术期刊设立了可穿戴计算的专栏。国际性的可穿戴智能设备学术会议IEEE ISWC自1997年首次召开以来,已举办了18届。在中国国家自然科学基金委的支持下,由中国计算机学会、中国自动化学会、中国人工智能学会等主办召开了3届全国性的可穿戴计算学术会议。另外,中国国家自然科学基金委和中国国家“863计划”也支持了多项可穿戴式智能设备相关技术产品研发项目。可穿戴设备需要整合多种技术,目前比较多使用的主要有嵌入技术,识别技术(语音、手势、眼球等)、传感

7、技术、连接技术、柔性显示技术等。嵌入技术是基本技术,任何小系统都需要,识别技术是使得可穿戴设备可行的必要技术,语音识别在很早就有研究,可以通过语音控制设备,不需要键盘,这样才能把设备做小,此外还有眼球,手势,这些都是已有的技术。传感技术也是多种多样,如加速度传感器,血糖传感器。链接技术包括各种低功耗互联,如蓝牙。柔性显示是显示屏幕必须的。还包括电池技术,芯片技术等等。就目前跌倒检测有下面三种方式,一是通过可穿戴的穿戴式传感器来监测,一是视频识别监测,还有一个是环境监测1。穿戴式传感器检测又可以分为姿势检测和运动状态检测,视频检测又可以分为身体轮廓检测,3D头部运动状态检测,静态检测,环境检测可

8、以细分为位置状态检测,姿势检测。具体的分类关系见下表:跌倒检测基于穿戴式传感器设备检测基于视频识别检测基于环境设备检测姿势检测运动状态检测位置检测姿势检测身体轮廓检测3D头部动作静态分析图1.1 跌倒检测的分类基于外界环境设备的跌倒检测,需要多个传感器设备同时运行,通过传感器间的相对参数变化来还原的人的时时姿势变化、以及环境声音、人体位置变化等信号判断是否发生动作。台湾Tso-Cho Chen 等人曾设计了一种跌倒检测系统,基于Zigbee技术建立了一个小型传感器网络,整个网络共有九个传感器节点,其中八个传感器节点布置在房间内,作为觉得参考点,一个节点在人身上,通过房间内的八个传感器节点与人体

9、上的传感器节点的相对位置的变化来还原人体的运动状态。2只要传感器的精度,数据传输速率足够高,这一个网络可以很好的还原人体的运动状态,这个系统的缺点是系统检测的范围只有在该网络覆盖区域,而且系统使用的传感器较多,单独为了检测跌倒过于庞大,不如穿戴式的灵活,优点也很明显,可靠性高,而且后期如果需要进一步扩展可以做成同时检测多人的运动状态的网络,只需添加人身上的传感器即可。基于视频检测的系统,主要是基于视频识别,把人体的轮廓从视频中分离出来,进而可以分离出一个运动向量,与跌倒时的向量相比较,判断相似度,推测出人是否跌倒。国内中北大学的陈颖鸣、陈树越等人3,国外加拿大的Rougier等人都曾成功进行过

10、相关识别实验4。这一系统的缺点是摄像机位置固定,检测范围有限。基于可穿戴式设备系统的检测,由于传感器一般嵌入到人的服饰中,包括衣帽、首饰、鞋子等,还有一些专门的设备如手环,手表,头环,耳机等等,为了迎合大众,一般会做的比较时尚,并且有许多其他的功能。这些传感器会时时将人的各种物理、生理状态传输到监测点,从而达到实时监测的目的。就跌倒检测而言,现在有两个方向,一个是通过压力传感器的检测系统,另一个则是基于加速度传感器。基于压力传感器的跌倒检测系统,重庆大学的石欣等人通过监测人足部脚掌和脚跟处压力的变化来判断是否发生了跌倒情况,通过无线通信模块GW100B发送给上位机做进一步的处理,识别成功率达到

11、85%以上。5这种方式可靠性高,但是由于传感器的位置,以及不同的人的体重的差异会有两个基本问题,一是使用寿命,二是需要初始化检测条件。还有就是人体的脚活动的范围较大,容易出现误判的情况,比如坐着脚悬空。基于加速度传感器设计,需要检测人体运动的实时加速度信息来判断是否处于跌倒状态,克罗地亚Petar Mostarac等人设计的穿戴检测系统有两个节点,分别戴在胸部和大腿上,通过两个节点各自的加速度变化、相对位置变化判断是否发生跌倒动作。6Valderrama等人在开发穿戴式跌倒检测系统时,选用Zigbee通讯技术,使用CC2430通信芯片,并在操作系统的设计上进行了优化,大大降低了设备功耗。7国内

12、于08年开始研究基于加速度传感器做的跌倒预警系统。重庆大学李冬等人的传感器系统基于无线传感器网络的Mica2和TinyOS节点,这是由UC Berkeley开发的一款针对于低功耗的无线传感器网。Mica2节点装配了Atmel ATmega 128 L微处理器,4 kB的RAM和一个433 MHz频率数据转换器,在300m的有效覆盖范围内传输速度可达384 KB/s。8,台湾Shih-Hau Fang等人则直接利用手机硬件平台,设计了一个基于安卓手机系统的跌倒检测程序。9就目前来说,基于穿戴式的跌倒检测系统在传感器选择上差异不大,区别主要在于无线传输的方式以及算法的设计。为了降低能耗,现在国际、

13、国内的相关设计几乎都是基于cc2430通信模块设计的。算法设计主要目的是为了提高判断的准确性,如Diansheng Chen等人的算法引入水平方向加速度的这一判断条件,每次先判断三轴加速度的平方和是否超标,再判断垂直方向加速度是否超标,两步来判断人是否摔倒。111.3 本文创新点2. 系统方案考量:应用功能上定义:是一个给人使用的跌倒检测系统,在人摔倒后能够发出警报给不在现场看护人员。从可穿戴设备的几种形式上来看,有比较独立的智能设备,有手机外设形设备,本应用功能上要求简单,所以选择手机外设这一路线来走,所以基本的系统方案应该是:做一个蓝牙耳机一样的外设,可以检测人是否摔倒。通过蓝牙把数据发送

14、到手机,手机再做出相应的响应。要实现这样的功能,最简单的想法就是一个跌倒呼救系统,在被检测的人的身上放置一个开关,在人摔倒后按下开关就报警,但是应用面对的情形不会如此简单,因为在人摔倒后有可能没有行为能力,所以必须是做出可以自动报警的系统。作为一个检测系统,绝对不能限制人的活动范围,或给人带来很大的不便,所以,必须是无线的,因为线越多,很不方便。最后是被检测者与我们的报警接收者之间的距离必须是可以在不同的房间,甚至更远,因为如果只是近距离,那人自己就可以快速看到人有么有摔倒,意义不大,所以必须可以远距离传输。最后使用者是人,要从人的其他行为中剥离出摔倒这样动作的特性,我们才能够检测出摔倒。从以

15、上的分析,我们大致可以知道一些系统的基本要求,无线的传输方式,能够区分人的不同行为状态,必须具有报警功能,就这三部分。系统可以抽象成以下几个部分:数据采集模块,数据传输模块,数据处理模块,报警和提示模块。系统功能框图如下:2.1 数据源选择数据的采集必须明确数据采集的对象和目的,本应用数据采集的目的就是为了区分我们人的不同的运动状态,在人摔倒后可以自动发出报警信号。而对于人的运动状态最好的检测方式就是采用一个三轴加速度传感器来作为数据采集模块,因为人一动就一定会有加速度的变化。脚上的压力在人体运动时也是会明显变化,而且是有规律的变化,因此脚上的压力也是反应人体运动状态的非常有意义的物理量。这里

16、选择使用加速度传感器,一是因为做为可穿戴设备,放在脚下,或集成到鞋里都不是很理想,而且,由于是在脚下的缘故,稳定性,使用寿命都难于保证。因此选择加速度作为采集的数据。再是选择数据采集的部位,不同部位对于算法的复杂度有很大的影响。我们可以看下人在不同的运动状态下不同的身体部位的状态。站立步行跑步静坐起蹲摔倒手腕无法确定无法确定无法确定无法确定无法确定无法确定大腿竖直竖直摆动竖直<->水平 摆动水平水平<->竖直水平脚掌水平着地水平着地,倾斜离地水平着地,倾斜离地,竖直水平着地水平着地竖直(一般)脊柱竖直竖直竖直,倾斜竖直竖直,倾斜水平踝关节竖直竖直,倾斜竖直,水平,活动范

17、围较大竖直竖直,倾斜水平,倾斜表2.1 身体在不同运动情形下时各部位的基本状态由上表可以看出,手腕在各种运动情形下,由于人的手腕活动的范围太大,手上动作也多,难以精确的区分人的不同运动状态;大腿上活动性不是很强,从状态上来看就只有两种,可以作为判断摔倒的一个采集点,但是不太方便携带,不适合长时间佩戴物品;脚掌在这里需要使用压力传感器,如前所述,稳定性和使用寿命都难以保证,不好。最佳的数据采集部位是脊柱,一般的在腰部位即可,从状态上来说,脊柱可能的状态很少,就只有水平竖直两个,比大腿活动性小得多,而且在腰带部位携带物品很常见。踝关节跟手腕比来说稍微好可预见性强一点,但还是活动性太强。由此,数据采

18、集的位置的优劣大致:手腕<踝关节<大腿<脚掌<脊柱。所以数据采集点选择在脊柱位置。2.2 数据传输方式从这个应用的实用性出发,硬件要尽可能简单便宜,而且现在移动互联网的普及,智能手机的普及,把这个应用作为手机的一个外设来做是最理想的实现方法。因为如果作为一个外设来做,那么硬件上的东西应该就只有一个传感器和无线传输电路。最为常用与手机互联的,便宜又省电的就是蓝牙,手机蓝牙的传输距离一般是8-30米,10米是一般的手机都必须稳定实现的一个距离。从可用性上来讲,距离稍微有点近,但是可以通过手机接入移动网络,距离太短的限制理论上是可以弥补的。所以选择蓝牙作为无线通讯的模块。数据

19、传输方式选择蓝牙。2.3 数据处理既然数据已经可以传输到手机,那么数据处理可以有两个位置可以完成,一是硬件上的单片机,二是手机,手机的处理能力可以保证复杂的算法可以非常有效的实现。这里选择在智能手机上做数据处理,具体的分析见系统方案设计。2.4 报警及提示模块这一模块应该没有多少考量的余地,可以在外设上和我们的手机上都做看情况而定,如果外设上有了报警,可以方便救护人员快速的找到需要救助者。手机上的提示处理给出报警铃音,还可以通过电话,短信的方式来通知其他的人。2.5 系统方案设计通过上面的各模块分析后,我们已经基本定义好了各个模块的功能,以及通过什么来实现,大致需要一个可以收集和通过蓝牙发送实

20、时加速度信息的外设,一个带蓝牙功能的智能手机。两者的分工这里最后做一下分工模式对比,最后选取一个最佳的方案,大致有以下几种。大致需要如下功能模块,在不同的方案中可以选择不同的位置来实现它们1数据采集2数据处理3报警用户界面方案1方案2方案3方案4手机1,2,32,33外设1,2,311,2方案优点不需要外设集成度高通过手机来处理数据,算法可以更加复杂,精确度会高外设处理好数据后再给手机发数据,数据量可以大大减少,省电方案缺点手机的携带位置会变,难以做算法,而且准确性会大大降低不符合系统设计要求,需要额外的服务器蓝牙需要不断地发送实时数据,会比较耗电外设处理能力有限,无法开发高级算法,外设处理数

21、据需要耗费额外的电能表2.2 方案选择考量表格通过上表,我们可以大致排除1,2两个方案,在3,4两个方案中选择,从耗电量上来说,是减少发送数据量和数据处理的交换,一次数据的发送和一次数据的实时处理那个更加耗电,这里没有一个明确的数量级的概念,但是,有一个很明确的考量就是系统升级,如果我们的跌倒算法有了更新,或者我们的应用有了其他类似功能,我们肯定不会到硬件上去重新修改,在手机软件上做算法更新是最经济实惠的方式。所以,这里选择在手机端实现数据处理。方案设计最终可以表述为:通过三轴加速度计测量人腰部的加速度信息,通过蓝牙把数据发送到手机,在手机端通过一定的算法判定人是否摔倒,摔倒则在手机的给出提示

22、。3. 硬件电路设计3.1 加速度传感器使用的三轴加速芯片是ADXL345,这是一款体积很小,且很薄的3轴加速度芯片,具有13位输出,测量范围是±16g,输出16位2进制数字信号,可以通过SPI和I2C通讯读取芯片数据。ADXL345非常适合在移动设备中使用。它车辆的静态重力加速度在倾斜感应应用,在抖动和运动加速度测量中。它的分辨率可以达到4mg/LSB,这个分辨率可以使得感应到的倾斜变化达到小于1.0°的变化。其他的是特殊感应的功能也有提供。如通过设定一定的加速度阈值来判断一个物体属于活跃或非活跃状态。単击和双击感应。自由落体感应。这些功能可以通过芯片提供的中断输出来得到

23、。ADXL345里面还集成了一个拥有自有专利的32级的先进先出存储器,可以用来存储数据以减小对主处理器在读取数据上需要付出的代价。低功耗模式使得智能的以动作感应为基础的能耗管理是通过阈值感应和极低能耗的加速度感应来实现的。ADXL345是一个塑料封装的小而且很薄的3mm X 3mm X 1mm的,14条管脚的模块。该芯片很适合。下表是一些基本的特性。低功耗标准的使用2.5V供电情形下,测量模式可以低至40uA电流,在待启动状态下可以低至0.1uA分辨率固定的10-bit分辨率,当我们的测量范围变化的时候,最大的分辨率可达到13-bit(意味着在改变量程是,依然保持4mg/LSB的分辨率供电电压

24、 2.0V-3.6VI/O口的电压范围1.7V -电源电压通讯接口SPI(3线或4线), IIC中断功能有可以灵活配置的中断管脚可靠性10000g的碰撞依然有效 封装3*5*1 LGA封装表3.1 ADXL345的基本特性在本设计中使用的是集成了两种接口的ADXL345模块,如下图所示:图 3.1 使用 .NET Gadgeteer Type I接口的 ADXL345模块图3.2 ADXL345模块正面在这里介绍下Gadgeteer Type I 接口,这种接口都是在Ardunio开源硬件里最常用的接口类型,通过这种接口,我们可以很方便的添加代码和连接不同的传感器。3.2 面向对象开发方式的开

25、源硬件-.NET GadgeteerGadgeteer Type I接口源于.NET Gadgeteer开源硬件,在此我们简单介绍下.NET Gadgeteer的发展历史。最先开始时是.NET Micro Framework,虽然.NET Micro Framework已经有十几年的发展历史了,但是在全球范围内,.NET Micro Framework的知名度,远远低于它的近亲.NET Framework和.NET Compact Framework,其原因值得探究。.NET Micro Framework和.NET Framework,.NET Compact Framework,如果从名字

26、上理解,都是框架,但是.NET Micro Framework和其它两个不同的是它具有自启动功能,它不需要操作系统也能运行。这个特点将.NET Micro Framework逐渐演化为一个操作系统的角色。这导致.NET Micro Framework在早期发展过程中显得没有优势和特色。早期的.NET Micro Framework并没有直接对第三方开放,被微软当成.NET全战略的一环,以.NET Micro Framework为基础,推出一系列产品。目前比较火热的可穿戴设备,比如智能手表。而以.NET Micro Framework为核心的第一代产品就是智能手表,早在2003年的拉斯维加斯的C

27、omdex贸易展上,比尔盖茨就曾亲自戴着智能手表进行过推广。这项以.NET Micro Framework为核心发展起来的技术叫MSN Direct,除了手表产品外,还有可以预报天气的咖啡壶,GPS导航器等产品。接着以.NET Micro Framework为核心的第二代产品SideShow出现在市场上,以笔记本的第二屏、智能遥控器和智能键盘的面目出现,华硕、三星的笔记本就包含这样的SideShow显示屏。但是无论是MSN Direct,还是SideShow,这两代产品并不成功,这和微软早期强制推广.NET战略相关的,因为基于.NET技术开发此类产品,虽然开发比较快,但是对硬件资源需求比较高,

28、其.NET托管代码相比原生C+代码,速度要慢许多。所以此类产品批量生产,性价比肯定不高。2009年起始微软以Apache 2.0 license的授权方式完全开源.NET Micro Framework,并基于.NET Micro Framework推出第三代产品Netduino,微软其实是仿照Arduino产品而做的,产品命名还有实际硬件接口,都是学习Arduino。这样就发挥了.NET Micro Framework优势,小巧,开发迅速,并且采用强大的Visual Studio进行程序开发和在线调试,让所有的.NET程序员很容易进入到嵌入式领域进行相关开发,这不得不说在软硬件开发结合越来越

29、紧密的时代,对.NET程序员是一个福音。而其后推出的基于.NET Micro Framework技术的.NET Gadgeteer产品更是充分发挥了.NET Micro Framework优势,在Netduino产品的基础上,更上一层楼,青出于蓝而胜于蓝,完全演化成具有微软自己特色的产品。特别是微软定义的20种.NET Gadgeteer接口类型,应该是微软为工控领域制订OPC技术标准以来,最重要的一个接口标准。更具特色的是面向对象的硬件编程实现。以前我们每外接一个功能模块,都需要我们的程序员匠心独运,小心翼翼分配相关的Pin脚,并用心开发相关驱动,最终通过应用程序调用底层接口,进行数据交互。

30、但是使用.NET Gadgeteer标准的硬件,让我们抛弃了这些琐碎和繁杂的步骤,视每个外接模块为一个控件,通过一个面向对象方式,让核心主板和这些模块相连,自动完成接口初始化、模块初始化等工作。我们需要做的,就是顶层逻辑的实施和完善,这是硬件开发领域的面向对象编程,是一个具有里程碑意义的硬件开发变革。这些特色使得.NET Gadgeteer脱离了仅仅是学习硬件,电子产品小制作的范畴。结合目前的发展的如火如荼的3D打印技术,.NET Gadgeteer已经成为快速制作最终产品最好的选择。随着物联网的发展,.NET Gadgeteer可以方便接入各种传感器模块,并把相关数据上传到云端。玩转.NET

31、 Gadgeteer电子积木总结以上的所有就是,在我们的开发中,我们不在需要去管那些管脚的分配,通讯协议,开发环境给我们做好了所有的初始化工作,我们需要的就是使用一个写好的类,管理所有的基本逻辑功能。每一个控件都可以写成一个类,我们只需要调用就可以了。这个特色极大的方便了我们硬件的设计。图 3.3 常见的使用.NET Gadgeteer接口的主板图 3.4 .NET Gadgeteer 接口可以方便的连接不同模块3.3 蓝牙通讯和处理器模块 Ardunio 是一个开放源代码的单芯片微电脑,它使用了Atmel AVR单片机,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O

32、 接口板,并且具有使用类似Java,C 语言的Processing/Wiring开发环境。Arduino可以使用 Arduino 语言与 Macromedia Flash、Processing、Max/MSP、Pure Data和SuperCollider等软件,结合电子元件,例如开关或传感器或其他控制器件、LED、步进马达或其他输出装置,作出互动作品。Arduino也可以独立运作成为一个可以跟软件沟通的接口。 Ardunio的一些基本特色是l 基于创用CC开放源代码的电路图设计。l 免费下载,也可依需求自己修改,但需遵照姓名标示。您必须按照作者或授权人所指定的方式,表彰其姓名。l 依相同方式

33、分享,若您改变或转变著作,当散布该衍生著作时,您需采用与本著作相同或类似的授权条款。l Arduino 可使用 ICSP 线上烧入器,将 Bootloader 烧入新的 IC 芯片。l 可依据Arduino官方网站,取得硬件的设计档,加以调整电路板及元件,以符合自己实际设计的需求。l 可简单地与传感器,各式各样的电子元件连接,如 红外线、超音波、热敏电阻、光敏电阻、伺服马达等。l 支援多样的互动程式,如 Adobe Flash, Max/MSP, VVVV, Pure Data, C, Processing 等。l 使用低价格的微处理控制器 (Atmel AVR) (ATMEGA 8,168,

34、328等)。l USB 接口,不需外接电源。另外有提供直流(DC)电源输入。 Ardunio是由:Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis 和 Nicholas Zambetti组成的核心开发团队开发和维护。为保持设计的开放源码理念,因为版权法可以监管开源软件,却很难用在硬件上,他们决定采用共享创意许可。共享创意是为保护开放版权行为而出现的类似GPL的一种许可(license)。在共享创意许可下,任何人都被允许生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要付版税,甚至不用取得

35、 Arduino 团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino 团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的共享创意许可,以保证新版本的Arduino电路板也会一样的自由和开放。唯一被保留的只有Arduino这个名字。它被注册成了商标。如果有人想用这个名字卖电路板,那他们可能必须付一点商标费用给 Arduino 的核心开发团队成员。维基百科 如果我们想开发一款可穿戴的设备,比如智能手环,智能计步器等等。这些设备可以通过蓝牙4.0与你的手机通信。拖过低功耗的蓝牙4.0链接成星形低功耗网络,达成快速的实时通讯。许多软件工程师和硬件工程师都希望有

36、这样一个平台来实现以上功能。Bluno,就是一块集成了蓝牙4.0通讯模块的Ardunio Uno板。通过我们在IOS和Android手机应用的配合,我们可以快速开发出一款与手机通讯的硬件设备。而且低功耗的蓝牙是手机可穿戴周边的首选。该硬件平台为开发者提供了很大的只有度,在两个蓝牙设备之间实现无线通讯,主从机设置,无线烧录程序,甚至与PC建立一个蓝牙HID连接(意味着可以用来开发蓝牙键盘和蓝牙鼠标)。可以说就是一个自带蓝牙的Ardunio Uno板,由Ardunio的完善的开源平台,可以极大的方便我们的手机蓝牙周边设备的开发。图3.5 Bluno 正面图以下是一些Bluno的基本技术参数:l B

37、LE芯片: TI CC2540l 传输距离: 超过70ml 支持蓝牙远程更新Arduino程序l 支持蓝牙HIDl 支持iBeaconsl 支持AT指令配置BLEl 支持串口透传l 支持主从机切换l 支持通过usb更新BLE芯片程序l 输入电压: 接上USB时无须外部供电或外部7V12V DC输入l 微处理器: ATmega328l Bootloader: Arduino Unol 引脚排布同Arduino unol 尺寸: 60mm x 53mml 重量: 30g目前支持的手机硬件平台有:配备蓝牙4.0 Android 4.3及以上系统:l Nexus 4+l 小米2sl 三星Galaxy

38、s4l 三星Galaxy note 3推荐的安卓系统:l BLE 安卓 4.3 ROMs (Cyanogenmod Stable version) 推荐使用10.2及以上版本这里我们可以简单看一下这款产品的基本应用开发功能,下面是一个提供的实例:图3.6 开发实例图要实现我们的目的,还需要一款扩展板针对对Gadgeteer接口如下,如前面所说.NET Gadgeteer是微软推出的一个开源软件和开源硬件平台,是一套用于创造不同用途的小型电子设备的开源工具集,使用.NET Micro Framework和Visual Studio/Visual C# Express,结合硬件模块和.NET软件,

39、让用户能在不十分了解硬件知识的情况下,在数小时内创造出智能硬件,制造出快速原型设备,帮助教师设计新颖的交互教育仪器,帮助业余爱好者创造出想象中的事物。根据Gadgeteer协议开发了很多兼容的传感器和控制器,为了让Arduino的用户也能使用Gadgeteer模块,所以开发了这个Gadgeteer Shield扩展板,能直接插到Arduino R3控制上使用。Gadgeteer Shield具有6个Gadgeteer接口,可以接数字传感器、模拟传感器、IIC接口模块、SPI接口模块等,在此基础上Gadgeteer Shield还保持原有扩展板的风格,扩展所有数字口和模拟口为3PIN排针,可以直

40、接使用DFRobot的系列传感器。图3.7 Gadgeteer扩展板图3.7 Gadgeteer扩展板与Ardunio R3的连接3.4 最终硬件组成如下通过以上介绍的硬件我们可以搭建出我们最终的硬件平台,把Bluno和Gadgeteer和ADXL345如下图连接起来。图 3.8 硬件平台实物图3.5 软件开发环境l Android开发环境:Eclipse + ADT(Android develop tools) + SDK 图3.9 Android 开发界面l Ardunio Uno 开发环境以及程序烧录: Ardunio IDE ,需要安装我们需要的库文件,以及驱动。图 3.10 Ardu

41、nio 软件界面我们可以在Ardunio开源社区找到很多我们需要的代码,以及他人的开发实例。图3.11 开发交流社区3.6 硬件调试3.6.1 Bluno的基本编程方式在我们搭好硬件后,我们需要对单片机进行编程,这里简单介绍下Ardunio的编程。Ardunio语言是建立在C/C+基础上的,只不过Ardunio语言吧AVR单片机相关的一些参数设置函数化,不需要我们去了解他的底层,让不了解AVR单片机的人也可以轻松上手。语言的语法与C基本一致,这里主要介绍一下程序结构,任何一个工程(sketch)必须包含以下两个函数:void setup()这个函数只在系统初始化的时候执行一次,里面执行一些基本

42、的配置函数,如pinMode(ledPin,OUTPUT)等。void loop()这个函数是在setup()执行了之后,不停得循环执行的一个函数,由它控制Ardunio的运转。表 3.2 sketch必备函数还有一些其他的内置函数,这里挑几个具有代表性的:void digitalWrite(pin,value)数字端口的写函数Int digitalRead(pin,value)数字端口的读函数void analogRead(pin)模拟端口的读函数void analogWrite(pin,value)模拟端口的写函数Int Serial.print(data)串口发送数据函数Int Seri

43、al.read()串口接收数据函数表 3.3 一些常用的内置函数和所以的其他语言一样,Ardunio语言也有大量的库文件,使用这些库文件可以方便的实现我们的基本功能。EEPROMEEPROM读写程序库Ethernet以太网控制器程序库LiquidCrystalLCD控制程序库Servo舵机控制程序库WireTWI/I2C总线程序库MatrixLED矩阵控制程序库表 3.4 一些常用的库函数要想进一步了解Ardunio编程可以找到相关的书籍进一步研究,也可以到查看。3.6.2 电路板的加速度数据收集的调试我们通过Ardunio的调试常用串口读取三轴加速度传感器的数据,把数据通过Ardunio的串

44、口发送数据,程序片段如下:myADXL345是我们的ADXL345控制类,myBluno是我们Bluno板的控制类,上面代码的意思是先读取传感器上的加速度信息,在通过串口把数据发送出来(蓝牙也可发送串口数据,后面我们编程中会发现)。下图是我们的Ardunio接收到的数据。可见我们接收到的数据。图3.12 通过串口接收到的加速度传感器数据(1)数据只需考虑Z轴上数据即可,由于我们的测试幅度设置为±4g,所以这里是128为1g,我们再把加速度传感器转,测试放置方向相反情况下的,比如Z轴沿着我们的重力方向,Z轴逆着重力加速度方向,可以测出不同的几组数据,比如,把Z轴翻转后的到的测试结果如下

45、图所示:图3.12 通过串口接收到的加速度传感器数据(2)通过类似的方法我们可以依次测量各个方向的数据是否符合我们的数据预期。图示如下:图3.13 数据测试结果对数据做一个简单的统计得到如下结果:(重力在不同的方向上得到的数值)放置方式Z+Z-Y+Y-X+X-1108-145137-128129-1342108-145137-128129-1343108-145137-128129-1344108-145137-128129-1345108-145137-128129-1346108-145137-128129-1347108-145137-128129-1348108-145137-1281

46、29-1349108-145137-128129-13410108-145137-128129-13411108-145137-128129-13412108-145137-128129-13413108-145137-128129-13414108-145137-128129-13415108-145137-128129-13416108-145137-128129-13417108-145137-128129-13418108-145137-128129-13419108-145137-128129-13420108-145137-128129-13421108-145137-128129

47、-134表 3.5 数据统计表格(测试重力对应值)数据分析:如前面说256是2个单位重力加速度。这里可以通过上面的表格得到:X轴Y轴Z轴重力对应值126.5132.5131.5零点误差-18.54.5-2.5预期128128128表 3.6 数据分析结果13.6.3 电路板蓝牙模块与Android手机的通讯调试(蓝牙通讯把数据从板子发送到我们的手机,并打印在屏幕上)在此开始需要我们的蓝牙手机通讯编程,在此不多做介绍,使用Ardunio开发的PlainProtocal。先说硬件程序,片段如下:功能很简单,就是没隔200ms蓝牙发送一次加速度信息。我们手机端写好接收代码就可以分离出我们需要的加速度

48、信息。在手机端,程序的结构可以简单描述为如下的结构图图中的MainActivity是程序负责UI界面,处理一些按钮活动,比如搜索蓝牙按钮的文字变化,以及把信息发给BleService处理,还有界面上的显示,比如显示跌倒,第几次跌倒等信息。后台MainService负责处理接收到的蓝牙数据,把数据处理好后并作出相应的响应,比如报警,让主UI界面显示改变等等。BleService负责处理所以的蓝牙活动,因为蓝牙的连接,断开,数据的接收和发送都必须在后台完成,所以写成Service。同时,也是为了让程序能够在后台一直运行的关键。BroadcastReceiver主要负责以上介绍的各个模块的数据,信息

49、交换。这里不是一个简单的类,而是说一个平台,在不同的模块里要有不同的实现。程序的执行流程如下:MainActivity执行(初始化程序) à 开启BleService (完成蓝牙的准备工作)à开启 MainService (数据处理和响应的开始) 这里数据的处理和响应都没有做具体化,只是在MainActivity里直接把所有接收到的数据显示出来。实验实际图形如下:3.6.4 硬件通讯调试成功再进一步设计警报系统报警由两种方式,一种是通过Notification,另一种是使用MediaPlayer播放音乐。最终选择的是Notification方式,因为MediaPlayer方

50、式受到很多限制,提示声音的音量会因为媒体的声音关掉而影响,而Notification方式可以忽略这一影响,不管什么情况下,Notification的声音都不会被关掉。更重要的是Notification方式可以在我们的Android手机在进入其他界面时,在接到Notification时可以快速的通过通知切回到程序主界面。4. 算法设计4.1 摔倒时人运动特点4.1.1 理论基础在我们开法算法之前,我一定要能够区分出各种不同的跌倒情况,并且明确的不同跌倒的特点,只有在明确了这些特点之后,我们才能够开发出算法去检测这些特点,以把不同的跌倒情况检测出来。Xinguo Yu根据跌倒的现场情形研究出跌倒的

51、各种不同情形和各种不同情形下的特点,这里归纳如下:跌倒的情形有4种,睡觉的时候从床上跌下来,坐着时从椅子上跌下来,走路,跑动或者站着时跌倒,从梯子上或者其他高台上跌倒。这些跌倒有自己特有的特征也有各自独立的特征,这里列举如下1。清单(1)从床上跌下来:1. 整个过程持续时间为1到3秒,包含其他动作;2. 跌倒者开始时躺着;3. 身体下降的高度是躺着的床的高度;4. 身体最终是躺着清单(2)坐着时时跌倒1. 整个过程持续1到3秒,包含其他动作;2. 人开始一般上半身直立;3. 头部下降的高度是头到地面的高度,在此期间人的头部是自由落体运动;4. 最终身体可能是坐着或躺着清单(3)从高台上跌落1.

52、 跌倒过程持续1到2秒,包含一些其他的动作;2. 人开始一般为站着;3. 头部一般会碰到地面4. 跌倒的幅度比较大,人体最终碰到地面时,加速度会比较大,人的位置变化也比较大。5. 最终的状态一般处于平躺的状态。同时,关注到前人的研究成果,Williams12通过一个腰带上的设备来自动监测人体与地面的撞击和振动,一个水银倾斜开关来监测人是否摔倒,通过这一方法来监测人是否摔倒。Noury13,14,通过安装在人体腋窝下的一个加速度传感器的加速度超过一定的阈值,加上人体由竖直变水平这一过程,在加上人体摔倒后的动作缺乏,这三者一起来构成我们对跌倒的判断,这一方法的准确性在从5个人5种不同的跌倒情景各5

53、次的统计中获得的数据中达到了85%。Lindeman15 通过在人体的耳垂上安放一个3轴加速度传感器,通过3轴加速度传感器3轴的加速度阈值来确定一次跌倒:总的加速度比跌倒前高0.7m/s,总的加速度值比6g大。Zhang16通过在手机上的加速度传感器来监测人体的日常活动的加速度信息。Bourke17通过三轴加速度传感器阈值方法,加上双轴陀螺仪阈值的方法来监测一次跌倒,准确率高达100%。以上的方法中,最后一个结合陀螺仪和加速度传感器的方法最好,但是我们只使用一个3轴加速度计要完成所有工作,我们需要考虑其他方法。我设计了一个非常简洁高效的方法,这个方法与Williams的方法非常类似。从上面的跌

54、倒的不同方式来看,我们可以归纳出一下几个特点:1. 跌倒前上半身直立或接近直立2. 跌倒着地时一定有一个碰撞过程,碰撞方向的加速度会比较大3. 跌倒后身体上半身平躺综合上面的几个特点,我们的算法就集中在判断身体是否平躺,和碰撞方向的加速度是否超过阈值。我们的三轴加速度传感器安放在人体的腰部位置,表征图如下:(传感器安放位置示例图)(实际穿戴图)我们穿戴传感器在人体的腹部位置,人的正前方是加速度传感器的Z轴,垂直向下是Y轴方向,向右是人体的X轴方向。但是在实际中,由于穿戴位置的不确定性(如传感器穿戴在腰左侧),Z,X就不再是代表人的正前,正右。但是竖直方向是一定的,而这个正是我们算法所必须的。在

55、程序中,由于存储位置的变化,我们需要重新去判断哪个是代表重力方向,我们需要根据数据,去判断,重力方向的加速度相对其他方向来说大很多,所以很容易判断。我们只需要判断竖直方向,这里是Y方向上的加速度是否还大于重力加速度的一定百分比就可以判断人是否已经平躺,或接近平躺。倒下时的碰撞加速度可以通过Z轴和X轴的合成速度来表征,这些都是阈值判断就可以。我们再通过实测数据来确定我们的这些加速度的阈值。4.1.2 实测数据(自己的数据:静止,静坐,静卧,走路,跑步,起蹲,跌倒)为了区分出人的各种不同的运动状态,我们需要采集人处于各种不同的运动状态时的数据信息,再通过对比把各种不同的运动状态与跌倒状态区分开来,

56、这样我们的跌倒系统的算法就可以实现了。使用硬件调试时搭好的平台,我们采集了以下数据,安装我们预想的算法,需要知道两个量,一个是垂直于人体躯干的加速度,一个是平行于人体躯干的加速度。我们这里设 A 是水平方向的加速度,Z 表示平行于人体躯干的加速度,由于重力加速度的存在,我们可以通过A,和Z的大小,大概判断出人所处的状态是平躺还是直立。我们看下竖直站立和水平躺着时,A,Z曲线:从图中可以明显看出躺倒的特征,A方向的绝对值在125(既一个重力加速度的大小)附近波动,Z基本为零,没有速度。而站立正好相反,A接近为零,Z绝对值接近一个重力加速度。平躺站立A100-140 30 - 35Z-40-25 -130 - 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论