基于加速度传感器的老人跌倒检测系统_第1页
基于加速度传感器的老人跌倒检测系统_第2页
基于加速度传感器的老人跌倒检测系统_第3页
基于加速度传感器的老人跌倒检测系统_第4页
基于加速度传感器的老人跌倒检测系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

..高级操作系统期末论文题目基于加速度传感器的老人跌倒检测报警系统基于加速度传感器的老人跌倒检测报警系统摘要:在社会逐渐走向老龄化的今天,单独生活的老年人的行动平安已经成为社会的重要问题。以前大多数的报警系统多采用按键式的报警方式,实际上,来年人摔倒时,常常失去自我意识,所以单纯依靠老年人摔倒后主动触发报警具备一定的风险。随着开源的Android平台移动终端操作系统的推出,这一系统具备广泛的兼容性,为了减少老年人因跌倒造成的身心伤害,利用当前android手机集成的加速度传感器进展人体跌倒的检测,当检测到人体发生跌倒时对老人当前的位置进展定位并调用SMS将摔倒的信息和位置信息发送到预先设置的紧急联系人手机,可以提高老年人摔倒报警的准确性。关键词:加速度传感器;跌到检测;定位;SMSAbstract:Today,graduallyagingsociety,theelderlylivingalonesafetyhasbeeanimportantproblemofsocialaction.Beforemostofthealarmsystemusetouch-tonephonesmorealarmway,infact,whenpeoplefallnextyear,oftenloseconsciousness,sorelyoninitiativetotriggerthealarmaftertheelderlyfallhaveacertainrisk.Asopen-sourceAndroidplatformofmobileterminaloperatingsystem,theintroductionofthesystemhaveawiderangeofpatibility,inordertoreducethephysicalandmentaldamagecausedbythefallintheelderly,usingthecurrentAndroidintegrationaccelerationsensorfallsforhumandetection,whenthedetectedhumanbodyfalloccursonthecurrentpositionoftheoldmantolocateandinvoketheSMSwillfallinformationandlocationinformationsenttothepresetemergencycontactphone,canimprovetheaccuracyoftheelderlyfallalarm.Keywords:accelerationsensor;detect;location;SMS..1前言1.1研究背景及意义随着我国人口老龄化的趋势,如何照看老年人成为社会各界关注的问题。再加上现在"空巢老人〞的现象已经成为人口老龄化的一种社会问题,引起了社会各界的高度关注。跌倒对于老年人来说是一项重大的威胁,如何准确检测出跌倒并及时发出报警求助信息,使老年人跌倒伤害降到最低,是人体安康监护领域中非常具有研究价值的问题。因此,开发具有便携性、高精度性、实时性以及自动报警功能的无线跌倒检测系统,在人体发生跌倒行为时,第一时间检测出并发出警报信息进展求助,是整个社会的需要。传统的跌倒检测技术在设备、场景等方面具有较大的局限性,随着人工智能、无线通信、微电子技术以及生理信号检测与处理等技术的开展,使得人体运动状态信息的检测获得帮助。伴随着科技的进步,移动终端已经成为了每一个现代人生活中所必不可少的根本用品。现阶段无线宽带网络的迅猛开展也悄然地改变着人们的生活方式。目前的网络已经可以很好地满足用户对于高速移动数据的需求,从而促使手持设备向智能化、多媒体化开展。另外Android的系统架构及开发原理使它成为当前手持设备中具有可移植的操作系统。当然,更为重要的是Android的开源性降低了其开发本钱,Android使用Java作为程序开发的语言,为用户所提供大量的程序组件,用户可以直接在这些组件根底上构建自己的开发程序。现在的移动终端中也集成了多种传感设备,通过对外界变化的及时获取,计算出加速度、地理位置、身体情况等所需的信息。本文利用加速度传感器,开发出基于Android的App,对老年人的活动信息进展检测,在检测到异常情况时做出报警处理,使得老年人能够得到及时有效的救助,防止严重后果的发生。1.2国外的研究现状跌倒检测系统是一种个人远程监护系统,保护了老年人群的安康与平安,它可以有效检测老年人是否发生跌倒并及时报警。所以,跌倒检测技术愈发受到社会各界的重视。从现今国外的研究成果来看,关于老年人摔倒时进展报警的方法种类繁多,根据各项产品在研发和使用中得到的摔倒信息的形式和来源不同,主要的方法可以分为以下几类:1.老年人自主启动的摔倒报警系统设备要求老年人摔倒时自主报警,所以使用者必须具备一定程度的自救能力和自主活动能力,并且只有在该用户摔倒时,保持清醒才能保证报警功能的顺利实施。所以这也存在着很大的平安隐患:如果使用者由于摔倒对身体机能造成损伤,失去了自我启动设备的行动能力,无法及时按下报警按钮,这种设备就将失去它的报警功能。2.利用视频图像信息检测的摔倒报警系统在使用时,可以设置在老年人易发生摔倒的地方,这种报警方式主要是利用视频图像检测设备实时捕捉老年人的活动,当老年人在图像信息中出现非正常情况下的身体移动或位置姿态变化时,检测摔倒行为的发生,实现自动报警。它有利于老年人的身体自由活动,但是使用具有空间上的局限性。并且这种摔倒报警系统的使用,还有可能侵犯老年人的隐私。本文采用基于Android的App,只需要在老人的手机上安装上软件进展相应简单的设置,就可以实现检测和报警。2软件设计及分析2.1总体设计基于Android平台开发的老人跌倒检测报警系统主要用来对人体跌倒进展识别和报警,主要功能包括,通过获取到的加速度值和角速度值进展判别跌倒是否发生并用折线图对加速度变化的实时信息进展动态显示,使用百度地图定位功能获取到老人跌倒时所处的位置,用户需要进展紧急联系人设置以便检测到跌倒发生时系统进展自动报警,检测到跌倒时将用户位置和摔倒的信息以短信发送到紧急联系人手机上。该系统中跌倒的识别是一个难点,只进展加速度和角速度阈值设定的方式来判断摔倒是否发生测试结果会有一定的误差,要使测试结果更准确那么需要使用识别数据库。即将人体运动时可能发生的各种情况如正常行走、跑步、跌倒等的相关数据保存到数据库中,判别跌倒是否发生时只需要和数据库中的数据进展比照即可。2.2设计环境开发软件:Eclipse开发语言:Java+SQLite运行环境及以上加速度传感器简介加速度传感器是一种能够测量加速力的电子设备。通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。通过分析动态加速度,你可以分析出设备移动的方式。加速度传感器是一种能够测量加速力的电子设备。因此其的围比重力感应器要大,但是一般在手机被提到的加速度感应器时,其实就是指重力感应器,因此两者可以看作是等价的。加速度传感器应用于地震检波器设计、车祸报警、监测高压导线舞动、汽车平安、游戏控制、图像自动翻转、电子指南针倾斜校正、GPS导航系统死角的补偿、计步器功能、防手抖功能、设备或终端姿态检测等众多领域。跌到检测简介跌倒检测系统,其包括:一个或多个传感器,所述传感器用于监测跌倒检测系统的用户的运动以及用于生成相应的信号;用于根据用户身体状况的一个或多个测量结果确定阈值的模块;处理器,所述处理器用于分析信号以识别用户的跌倒、分析信号以识别跌倒。一般情况下,人体跌倒行为通常发生在2秒左右。跌倒过程中身体重心的瞬间移动会产生一个加速度,身体的倾倒也会产生一个偏离竖直方向的角度。在非跌倒状态如行走过程中,人体上躯干偏离Z轴的倾斜角处于一个相对平安的围,而跌倒后人体多处于俯卧、侧卧或仰卧的状态,躯干方向接近于水平,即偏离竖直方向的倾斜角接近90度。因此我们选取加速度和身体的倾斜角这两个特征作为判别跌倒与其它日常活动的依据。.2.2.3定位简介现在人们能实现的定位的方式很多百度地图就是其中一个,百度提供的一项网络地图搜索效劳,覆盖了国近400个城市、数千个区县。在百度地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离您最近的所有餐馆、学校、银行、公园等等。利用百度地图定位功能实时的知道用户所处的位置,要想到达目的地可以选择的路线信息等。2.2.4SMS短信效劳是一种存储和转发效劳。也就是说,短消息并不是直接从发送人发送到接收人,而始终通过短信效劳中心进展转发。如果接收人处于未连接状态〔可能已关闭〕,那么消息将在接收人再次连接时发送。SMS具有许多其他的重要功能。它既是一个庞大的直接面对用户的效劳部门,需要位于不同工作点的许多工作人员通过客户端同时对数据库进展操作3系统需求分析与概要设计3.1需求分析本系统是一个基于安卓系统的人体跌倒检测报警系统软件,通过使用此软件能够快捷的识别出人体是否跌倒,利用百度地图对人所处的位置进展定位,并使用SMS将位置和摔倒的信息发送到家人的手机上,本系统包括的功能有紧急联系人信息添加,百度地图定位,跌倒识别的信息用折线图显示,短信的发送。3.2系统概要设计3.2.1系统功能模块介绍〔1〕添加紧急联系人信息模块:用户点击联系人按钮后可以通过点击添加按钮进入紧急联系人信息页面进展信息的添加也可以点击通讯录从手机通讯录中选择添加。该模块中包含了两个子模块自主添加联系人模块和从通讯录选择添加联系人模块,模块界面如下列图所示:图3.1系统主界面图3.2紧急联系人信息模块界面〔2〕百度地图定位模块:当老人跌倒需要家人的帮助时就需要能知道老人当时所在的位置,所以利用百度地图里的定位功能实现实时定位。模块界面如下:图3.3百度地图模块界面〔3〕跌倒识别模块:现在的android手机中都已集成了加速度传感器,所以利用加速度传感器的和速度是否超过设定的阈值判定人体是否摔倒,并将信息用折线图显示。该模块中包含了加速度显示和折线图显示加速度值两个子模块,界面如下列图所示:图3.4跌倒识别模块界面〔4〕发送短信模块:当检测到用户摔倒时将用户的当前的所在位置和摔倒的信息发送到指定的紧急联系人的手机上。模块的界面如下列图所示:图3.5发送短息模块界面3.2.2功能模块构造图图3.6功能模块构造图系统流程图图3.7系统流程图4系统详细设计4.1联系人设置模块4.1.1代码设计紧急联系人设置的xml布局由两个Button和一个Textview组成,两个Button分别表示通过系统自己的添加界面添加紧急联系人和调用手机通讯录选择添加紧急联系人,Textview用来显示添加的紧急联系人信息〔包括,,地址〕模块局部代码如下:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact_info);show=(TextView)findViewById(R.id.show); Intenti=getIntent();/* *实现紧急联系人的添加*/ findViewById(R.id.add).setOnClickListener(newOnClickListener(){//调用"添加联系人信息〞页面OverridepublicvoidonClick(Viewv){ IntentjIntent=newIntent(ContactInfoActivity.this, AddContactActivity.class);//jIntent.putExtra("familyInfo",newfamilyInfo("","","")); startActivityForResult(jIntent,0); } });/* *实现通讯录中选取联系人 **/ findViewById(R.id.book).setOnClickListener(newOnClickListener(){OverridepublicvoidonClick(Viewv){ IntentbIntent=newIntent(ContactInfoActivity.this, PhoneActivity.class); startActivityForResult(bIntent,0); } }); }//处理接收的数据OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);//接收数据:采用Bundle传值 Bundlebundle=data.getExtras(); Stringname=bundle.getString("name"); Stringtelphone=bundle.getString("telphone"); Stringaddress=bundle.getString("address");show.setText("联系人信息:"+"\n:"+name+"\n:"+telphone+"\n地址:"+address);show.setTextSize(20); }4.1.2界面设计联系人设置模块界面如图所示。图4.1紧急联系人信息界面图4.2自主添加联系人模块4.2.1代码设计自主添加联系人activity_add_contact.xml布局主要由三个TextView来分别显示用户需要添加的、和地址信息、三个EditText分别由用户输入对应的信息、两个Button用来实现用户输入信息的存储并返回到另一个Activity将信息显示出来,取消按钮用来取消本次添加操作。模块的局部代码如下:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_contact);//接收数据 IntentjIntent=getIntent();//实现"联系人信息页〞到"添加联系人信息〞页name=(EditText)findViewById(R.id.editText1);telphone=(EditText)findViewById(R.id.editText2);address=(EditText)findViewById(R.id.editText3);//返回联系人信息页 findViewById(R.id.confirm).setOnClickListener(newOnClickListener(){OverridepublicvoidonClick(Viewv){ Bundlebundle=newBundle();bundle.putString("name",name.getText().toString());bundle.putString("telphone",telphone.getText().toString());bundle.putString("address",address.getText().toString()); Intentintent=newIntent(AddContactActivity.this, ContactInfoActivity.class);intent.putExtras(bundle); setResult(1,intent); finish(); } });4.2.2界面设计自主添加联系人模块界面如图和图所示。图4.2添加联系人界面图4.3取消按钮信息提示界面4.3通讯录获取联系人模块4.3.1代码设计通讯录获取联系人activity_phone.xml布局由ListView来显示从用户手机通讯录中读取出来的联系人信息,模块局部代码如下:publicclassGetNumber{publicstaticList<PhoneInfo>lists=newArrayList<PhoneInfo>();publicstaticStringgetNumber(Contextcontext){ Cursorcursor=context.getContentResolver().query(Phone.CONTENT_URI,null,null,null,null); StringphoneNumber; StringphoneName;while(cursor.moveToNext()){phoneNumber=cursor.getString(cursor.getColumnIndex(Phone.NUMBER));//phoneName=cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));// PhoneInfoinfo=newPhoneInfo(phoneName,phoneNumber);lists.add(info); System.out.println(phoneName); System.out.println(phoneNumber); }returnnull; }}4.3.2界面设计通讯录获取联系人模块界面如图所示。图4.4通讯录选择联系人信息界面4.4百度地图定位模块4.4.1代码设计百度地图定位activity_locationss.xml布局由一个Button来驱动用户调用百度地图API实现百度地图的定位,在实现百度地图定位时需要根据所建工程的包和Eclipse中的SHA1fingerprint信息来申请对应的APIkey并在配置文件中配置响应信息,还需要导入baidumapapi的包。模块的局部代码如下:publicclassMyLocationListennerimplementsBDLocationListener{OverridepublicvoidonReceiveLocation(BDLocationlocation){//mapview销毁后不在处理新接收的位置if(location==null||mMapView==null)return; MyLocationDatalocData=newMyLocationData.Builder() .accuracy(location.getRadius())//此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if(isFirstLoc){isFirstLoc=false; LatLngll=newLatLng(location.getLatitude(),location.getLongitude()); MapStatusUpdateu=MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u); } Stringaddr=location.getAddrStr();if(addr!=null){ Log.i("Test",addr); }else{ Log.i("Test","error"); }doublelongitude=location.getLongitude();doublelatitude=location.getLatitude();if(longitude>0&&latitude>0){ Log.i("Test",String.format("纬度:%f经度:%f",latitude,longitude)); LatLngptCenter=newLatLng(latitude,longitude);//反Geo搜索mSearch.reverseGeoCode(newReverseGeoCodeOption() .location(ptCenter)); }//停顿定位mLocClient.stop(); }publicvoidonReceivePoi(BDLocationpoiLocation){ } }4.4.2界面设计百度地图定位模块界面如图所示。图4.5百度地图定位信息界面4.5加速度信息显示模块4.5.1代码设计加速度信息显示activity_sensor.xml布局由一个TextView显示通过手机中的加速度传感器获取到的人体运动加速度的数据,此处需要计算加速度的合速度并设定相应的阈值,假设获取的合速度a超过了阈值那么表示人摔倒否那么属于正常情况。模块局部代码如下:/*功能:采集加速度传感器,得到传感器从外界采集的数据 */OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_sensor);showTextView=(TextView)findViewById(R.id.showTextView);sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);accelerometerSensor=sensorManager .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);sensorManager.registerListener(this,accelerometerSensor, SensorManager.SENSOR_DELAY_GAME); }//坐标轴都是手机从左侧到右侧的水平方向为x轴正向,从手机下部到上部为y轴正向,垂直于手机屏幕向上为z轴正向OverridepublicvoidonSensorChanged(SensorEventevent){if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){//x,y,z分别存储坐标轴x,y,z上的加速度floatx=event.values[0];floaty=event.values[1];floatz=event.values[2];//根据三个方向上的加速度值得到总的加速度值afloata=(float)Math.sqrt(x*x+y*y+z*z); System.out.println("和加速度a---------->"+a);//传感器从外界采集数据的时间间隔为10000微秒 System.out.println("x轴加速度x------------->"+x); System.out.println("y轴加速度------------->"+y); System.out.println("z轴加速度------------->"+z); Log.d("TAG","x----------->"+x); Log.d("TAG","y----------->"+y); Log.d("TAG","z----------->"+z);showTextView.setText("\t"+"合速度a---------->"+a+"\nX轴加速度---------->"+x+"\nY轴加速度---------->"+y+"\nZ轴加速度---------->"+z); }//将当前时间赋值给timestamptimestamp=event.timestamp; }4.5.2界面设计加速度信息显示模块界面如图所示。图4.6人体运动加速度信息显示界面4.6折线图显示合速度信息模块4.6.1代码设计折线图显示合速度activity_chart.xml布局由一个TextView、一个LinearLayout和一个Button组成,TextView反映折线图的容,LinearLayout用来显示折线图,Button用来返回上一级的Activity页面。代码如下图:OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_chart); LinearLayoutlayout=(LinearLayout)findViewById(R.id.linearlayout);//生成图表chart=ChartFactory.getTimeChartView(this,getDateDemoDataset(),getDemoRenderer(),"HH:mm:ss");layout.addView(chart,newLayoutParams(LayoutParams.WRAP_CONTENT,370));//为TextView添加事件// textview=(TextView)findViewById(R.id.myview);// textview.setOnClickListener(newView.OnClickListener Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(Viewv){ Toast.makeText(ChartActivity.this,"加速度",1).show(); Intentintent=newIntent();intent.setClass(ChartActivity.this,MainActivity.class); startActivity(intent); } });handler=newHandler(){OverridepublicvoidhandleMessage(Messagemsg){//刷新图表 updateChart();super.handleMessage(msg); }};task=newTimerTask(){Overridepublicvoidrun(){ Messagemessage=newMessage();message.what=200;handler.sendMessage(message); }};timer.schedule(task,2*1000,1000); }4.6.2界面设计折线图显示合速度信息模块界面如图所示。图4.7折线图显示人体运动加速度信息界面4.7发送短信模块4.7.1代码设计短信发送activity_sms.xml布局由两个TextView和两个EditView和一个Button组成,TextView用来作为用户发送短信时输入信息的提示,EditView用来给用户进展信息编辑,Button实现短信发送的操作。模块局部代码如下:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms);phone_number_editText=(EditText)findViewById(R.id.phone_number_editText);sms_content_editText=(EditText)findViewById(R.id.sms_content_editText);send_sms_button=(Button)findViewById(R.id.send_sms_button);send_sms_button.setOnClickListener(newOnClickListener(){OverridepublicvoidonClick(Viewarg0){ Stringphone_number=phone_number_editText.getText().toString().trim(); Stringsms_content=sms_content_editText.getText().toString().trim();if(phone_number.equals("")){ Toast.makeText(SMSActivity.this,R.string.str_remind_input_phone_number,Toast.LENGTH_LONG).show(); }else{ SmsManagersmsManager=SmsManager.getDefault();if(sms_content.length()>70){ List<String>contents=smsManager.divideMessage(sms_content);for(Stringsms:contents){smsManager.sendTextMessage(phone_number,null,sms,null,null); } }else{smsManager.sendTextMessage(phone_number,null,sms_content,null,null); } Toast.makeText(SMSActivity.this,R.string.str_remind_sms_send_finish,Toast.LENGTH_SHORT).show(); } } }); }4.7.2界面设计短信发送模块界面如图所示。图4.8短信发送界面4.8系统开发过程故障排除在整个系统开发的过程中,总会遇到各种各样的问题,现将局部问题及解决方法总结如下:在Activity中,获取被启动的Activity传回的信息时报空指针的错误,原因是布局文件中有些控件未被绑定组件,所以获取的值是空的。在利用百度地图进展定位时报错:Unabletoexecutedex:Multipledexfilesdefine,原因是重复定义support.v4的支持包,解决方法:删掉一个即可。在运行程序时报错:Pleasechecklogcatoutputformoredetails。原因是测试的手机存缺乏,解决方法:删除手机上的其他应用。点击按

温馨提示

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

评论

0/150

提交评论