王斯盾, 琚生根
(1. 后勤工程学院 后勤信息与军事物流工程系, 重庆 401311;2. 四川大学 计算机学院, 四川 成都 610065)
基于Android的嵌入式系统综合实验设计
王斯盾1, 琚生根2
(1. 后勤工程学院 后勤信息与军事物流工程系, 重庆 401311;2. 四川大学 计算机学院, 四川 成都 610065)
根据嵌入式系统实验教学中的问题,基于智能手机硬件平台和Android系统设计了嵌入式系统手机计步器综合实验。该实验包括传感器信号采集、算法实现、交互功能设计等Android程序开发的基本内容,实现了较为准确的手机计步功能。实验具有模块化、渐进式、开放性的特点,提升了学生实践和创新能力。
综合实验设计; 嵌入式系统; Android; 计步器
教育部提出要开展“新工科”的研究与实践,补齐工程教育与新兴产业和新经济发展有所脱节的短板[1]。嵌入式系统是一门实践性很强的课程,其实验项目的设计应该面向实际、面向新兴领域,提高工科学生解决实际问题的能力和创新能力。当前,移动互联网发展迅速,智能设备快速普及,移动应用程序开发已成为嵌入式系统开发的热门技术,相关岗位的人才需求十分旺盛。然而国内高校工科开设的相关实验和实践教学环节还远没有达到用人单位的期许[2]。
在目前嵌入式系统实验教学体系中,课程设置已显陈旧,缺乏工程化实践内容。一方面,传统的嵌入式实验教学平台体积庞大、体系复杂,需要花费大量时间讲解51-STM32嵌入式体系原理,实验项目的实用性差,难以激发学生的学习热情;另一方面,基于移动终端的嵌入式系统开发实验设置方兴未艾,存在没有典型教材、缺乏实验平台等问题[3]。
为了紧跟科技发展的前沿、培养学生的创新思维,必须突破传统教学中实验室的限制,鼓励学生利用开源平台完成实验,提高学习效率、快速进行实验开发。为此,利用谷歌公司提供的开源程序开发平台Android Studio和具有加速度传感器的智能手机,设计了一种基于Android系统的手机计步器综合实验。该实验包含传感器调用、计步功能实现、交互功能设计等Android程序开发基础知识。此实验内容新颖,具有较强实用性,能够让学生综合运用所学知识,初步掌握嵌入式系统的综合应用和Android程序开发技术。
目前,手机计步算法有峰值检测法[4]、自相关分析法[5]、动态阈值法[6]等,这些算法本质上都是检测人体行走过程中加速度出现的周期性正弦变化,通过判别加速度信号中连续的波峰和波谷个数来进行计步。本实验采用应用广泛、效果可靠的动态阈值法,在传统的峰值检测法基础上,设定动态阈值判定波峰和波谷。该方法对每一计步周期的判别都分为信号预处理和步态判别2个步骤。
信号预处理包括低通滤波和计算加速度向量模。由于传感器信号中含有随机噪声,直接进行步态判别误判概率较高;而采用低通滤波,可以有效滤除信号中偶然因素引起的脉冲干扰[7]。在人体行走过程中,加速度将沿某一方向呈周期变化,但因为无法判断手机放置的方向,所以不能采用某一轴的加速度信号判别。计算信号的向量模(SVM)可以将空间的加速度变化集合为一矢量进行分析[8]。加速度信号向量模SVMA定义为
式中,ax、ay、az分别表示x轴、y轴、z轴加速度。
步态判别采用峰值检测的原理,若检测到加速度信号向量模中连续的一个波峰和一个波谷则计为一步。由于人体行走状态的随机变化,加速度信号可能产生伪波峰或伪波谷;行走过程中手机放置的位置不同也会对加速度检测产生较大的影响,或因难以用统一的阈值判断波峰和波谷[9],导致步态的误判。因此,本实验通过设置时间窗和动态阈值,滤除伪波峰与伪波谷,弥补固定阈值的缺陷,提高步态检测精度,获得真实步态信息。
人体正常行走频率约为0.5 ~2.5 Hz,因此设定每两步之间的时间窗为0.4~2 s,如果连续两步的时间间隔小于0.4 s或大于2 s,则判定所测信号无效,将新的阈值点设为计步起点重新开始计步。根据人体在行走过程中加速度的连贯性设置一个动态阈值:第一步的阈值为9.7 m/s2,后续的阈值为前一步的峰值与谷值的均值,从而实现阈值的动态更新,使步态检测具有自适应性。实验流程如图1所示。
图1 实验流程图
根据计步器的功能和性能需求,将综合实验系统分为3个模块:信号采集模块、信号处理模块和交互设计模块。
信号采集模块主要是调用手机加速度传感器,采集3轴加速度信号,用于下一步的信号处理。
第一步,获得传感器管理器:
SensorManager=(SensorManager).getSystemService (SENSOR_SERVICE)
第二步,注册监听器,开始使用加速度传感器:
Sensor.TYPE_ACCELEROMETER.sm,registerListener(this,sm.getDefaultSensor(Sensor. TYPE_ACCELEROMETER), SensorManager. SENSOR_DELAY_UI)
其中,第3个参数表示选择传感器的采样频率,SENSOR_DELAY_UI是最慢的采样速率,一般为20 Hz。根据奈奎斯特定律,20 Hz已经满足设计的需要,不需要更快的采样速率消耗系统资源。
第三步,实现传感器的监听:
调用android.hardware.SensorEventListener接口,该接口可以监听传感器各种事件,此时就可以直接获取各传感器的信号。
第四步,解除注册:
退出程序后要对传感器解除注册,否则即使熄灭屏幕,传感器仍然会继续工作,消耗系统资源和电量。一般调用onResume注册监听器传感器,调用onPause解除注册。
信号处理模块包括对原始信号的预处理和步态判别两部分。
第一步,信号预处理。首先计算3轴加速度向量模,然后进行基于限幅滤波法的低通滤波,去除噪声,其核心代码为:
macc =(float) Math.sqrt(accel[0]*accel[0]+accel[1]*accel[1] + accel[2] * accel[2]) //计算加速度向量模
public static float LFValues(float value1,float value2)
{if((value1-value2>FZ)||(value2- value1)>FZ)}// 基于限幅滤波法的低通滤波,其中FZ为滤波器限定的幅值差
第二步,步态判别。首先判断计步起点,当加速度向量模大于更新的动态阈值时判定为起点。然后在时间窗内进行峰值检测,若峰峰值满足阈值,则计1步,同时更新动态阈值。核心代码如下:
/***时间窗判定***/
if((index>=10)&&(index<=100)){ //窗口时间判断
toplow=get Top Low Values( magnitude Accel);//更新峰谷值
return true; index++; return false; }
/***计算峰峰值***/
float topvalues=G; //G 为初始设置的峰峰值 9.7。
float lowvalues=G;
if(take Out>=topvalues){ //搜索波峰
topvalues=take Out;}
else if(take Out<=lowvalues){ //搜索波谷
lowvalues=take Out;}
values.add(topvalues); values.add(lowvalues);
return values;
交互模块包括文字显示、虚拟按键控制和历史记录3部分。
2.3.1 文字显示
文本采用TextView控件显示文字信息。需要在布局程序中设置文本的内容、大小、颜色、位置等信息[10],在主程序中完成对控件的调用。
2.3.2 虚拟按键控制
嵌入式系统手机计步器综合实验采用Button控件实现按键控制。在程序中,通过点击虚拟按键Button实现页面切换等功能,如触发开始、暂停等事件。与文字显示的TextView控件类似,在布局程序中设置按键的内容、大小、颜色、位置等信息,同时在主程序中的调用SetOnClikListener接口,为按键绑定一个监听器。这时候只要按键被点击,监听器对象事件就会被触发[11]。
2.3.3 历史记录
为了清晰显示每天步行运动的计数,提高软件的实用性,设计了历史记录的界面。
Android系统存储数据的方式有5种[12]:(1)共享首选项(SharedPreferences);(2)内部存储(internal storage);(3)外部存储(external storage);(4)数据库存储(SQLite database);(5)网络存储(Internet)。本设计采用internal storage存储模式,存储的数据只能被本软件访问,卸载软件的同时删除存储的数据。
第一步:调用Context的openFileOutput()函数。选择文件名和数据存储模式,同时返回一个FileOutputStream对象。设计数据存储模式选用Context.MODE_APPEND。存储前先检查文件是否存在,如果存在就追加数据,否则就创建新文件。
第二步:通过返回对象,调用write()函数写入数据,调用close()函数关闭流。
在Android Studio中将设计的软件生成APK文件,下载到手机进行实验测试。测试手机型号为华为P8,运行平台为Android 6.0。软件交互界面如图2所示。
图2 软件交互界面
软件共有2级界面:主界面有开始运动和历史记录等2个虚拟按键,第二级界面分为历史记录界面和计数界面。在主页面中点击历史记录进入历史记录界面,即可查看每天运动的步数;点击开始运动即进入计数界面。在计数界面中点击“开始”按键,计步开始,同时开始计时,每检测到行走一步,计步次数加一;点击暂停,计步结束,计时停止,同时将步数存入历史记录。
利用本软件对5人进行了步行计数测试。进行人工计数100步,软件测试分别为102步、105步、98步、109步和101步,与人工计数所得到的结果基本一致,正确率保持在90%以上,满足一般使用需求。
基于Android系统的手机计步器实验体现了嵌入式系统课程特点,使学生能综合利用数字信号处理、C语言设计、Java面向对象程序设计等课程内容,较系统地掌握Android应用软件开发的基础知识,提升解决实际问题的能力。同时,该实验具有开放性,在交互设计、计步算法的创新上留有众多细节问题,可以让学生进一步挖掘探索,激发学生对嵌入式课程学习的兴趣。此外,计步技术也是研究室内定位技术的基础,拓展本实验课题,可以满足更高层次的学习需求。
References)
[1] 吴爱华,侯永峰,杨秋波,等.加快发展和建设新工科主动适应和引领新经济[J].高等工程教育研究,2017(1):1-9.
[2] 朱轶,曹清华,单田华,等.基于Android、树莓派、Arduino、机器人的创客技能教育探索与实践[J].实验技术与管理,2016,33(6):172-176.
[3] 谢云,罗梓华.Android手机控制球形机器人实验设计与实现[J].实验技术与管理,2016,33(12):36-38.
[4] 韩文正,冯迪,李鹏,等.基于加速度传感器LIS3DH的计步器设计[J].传感器与微系统,2012(11):97-99.
[5] 陈国良,张言哲,杨洲.一种基于手机传感器自相关分析的计步器实现方法[J].中国惯性技术学报,2014,22(6):794-798.
[6] Zhao N. Full-featured pedometer design realized with 3-axis digital accelerometer[J].Analog Dialogue, 2010,44(6):1-5.
[7] 汪成亮,王小均.基于三轴传感器的老年人日常活动识别[J].电子学报,2017,45(3):570-576.
[8] 吴志强,曹蕾,王凯,等.基于智能手机的人体跌倒检测系统设计[J].计算机工程与设计,2014,35(4):1465-1470.
[9] 张霆,刘彩霞,何亮亮,等.基于柔性传感器的青少年健康实时监控系统设计[J].实验技术与管理,2017,34(2):77-79.
[10] 赵书兰.Android开发与实战[M].北京:电子工业出版社, 2013.
[11] 努德尔曼. Android应用UI设计模式[M].北京:人民邮电出版社, 2013.
[12] Android DeveloperUser Guide[EB/OL].[2017-05-16]. https://developer.android.com/studio/projects/ android-library.html.
Design of comprehensive experiment on embedded system based on Android
Wang Sidun1, Ju Shenggen2
(1. Department of Logistics Information and Military Logistics Engineering,Logistical Engineering University,Chongqing 401311, China; 2. School of Computer Science, Sichuan University, Chengdu 610065, China)
According to the problem in the experimental teaching of the embedded system, and based on the intelligent mobile phone hardware platform and Android system, a comprehensive experiment on the embedded system mobile phone pedometer is designed. The experiment includes the basic contents of the Android program development such as the sensor signal acquisition, algorithm realization, interactive function design, etc., achieving the more accurate function of countering steps by the mobile phone. The experiment embodies the characteristics of modularization, gradual progress and openness, and promotes students’ practical and innovative ability.
comprehensive experimental design; embedded system; Android; pedometer
10.16791/j.cnki.sjg.2017.12.040
2017-05-24
王斯盾(1993—),男,四川达州,硕士研究生,研究方向为智能检测与智能控制
E-mail:danube.live@qq.com
琚生根(1970—),男,安徽桐城,博士,教授,研究方向为智能信息处理,实验室建设与实验教学研究.
E-mail:jsg@scu.edu.cn
G642.423
A
1002-4956(2017)12-0168-04