一种智能手机传感器数据在线采集与实时处理方法.pdf

上传人:r5 文档编号:1531921 上传时间:2018-06-22 格式:PDF 页数:16 大小:2.19MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510066034.5

申请日:

2015.02.09

公开号:

CN104615528A

公开日:

2015.05.13

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/32申请日:20150209|||公开

IPC分类号:

G06F11/32; G06F11/34; H04M1/725

主分类号:

G06F11/32

申请人:

兰州理工大学

发明人:

赵宏; 郭立渌; 金保召; 周春龙; 杨鹏

地址:

730050甘肃省兰州市七里河区兰工坪路287号

优先权:

专利代理机构:

甘肃省知识产权事务中心62100

代理人:

马英

PDF下载: PDF下载
内容摘要

一种实时分析、处理手机内置传感器数据的方法,该方法利用智能手机App应用实时采集内置传感器数据,利用智能手机通过内置蓝牙模块将采集到的数据实时发送到上位机,上位机利用蓝牙适配器接收智能手机发送的传感器数据,上位机中的MATLAB软件异步读取虚拟串口数据,分析、处理并绘制实时波形。本发明可以解决在实验过程中手机内置传感器数据采集、分析、处理三位一体的实时同步性问题。

权利要求书

权利要求书1.  一种智能手机传感器数据在线采集与实时处理方法,包括智能手机及安装有MATLAB软件的上位机,其特征在于:该处理方法利用智能手机App应用实时采集内置传感器数据,利用智能手机通过内置蓝牙模块将采集到的数据实时发送到上位机,上位机利用蓝牙适配器接收智能手机发送的传感器数据,上位机中的MATLAB软件异步读取虚拟串口数据,分析、处理并绘制实时波形。 2.  根据权利要求1所述的一种智能手机传感器数据在线采集与实时处理方法,其特征在于:该处理方法的具体步骤为:     步骤1:安装智能手机App,该App具有手机内置传感器数据采集和蓝牙通信功能;     步骤2:上位机开启蓝牙功能,然后利用蓝牙适配器驱动软件创建蓝牙COM虚拟串口,并通过计算机管理中设备管理器查看虚拟出的串口编号,该步骤完成后上位机将作为蓝牙通信服务端等待智能手机配对连接请求;     步骤3:打开智能手机App应用,选择传感器类型并设定采样频率,开启蓝牙功能,根据设置的蓝牙名字搜索上位机蓝牙适配器并建立配对连接,待连接成功后便可通过该App利用手机蓝牙通信向上位机实时发送内置传感器采集到的数据;     步骤4:上位机中MATLAB软件通过串口操作相关函数异步读取COM虚拟串口接收到的字符流数据,经解析后把字符流转化为实际数值型数据,然后利用MATLAB函数进行处理、分析,并将处理结果数据不断迭代存入6*N定长矩阵M中,其中N根据显示窗口长度设定,即每读入一个完整数据该矩阵就把最新数据加入,同时丢弃较早存入的数据,维持矩阵的长度为固定值N,然后利用绘图函数绘制当前矩阵M中存放数据的波形,最后循环调用刷屏函数绘制不同时刻每帧的波形,实现动态数据波形显示效果。 3.  根据权利要求2所述的一种智能手机传感器数据在线采集与实时处理方法,其特征在于:所述步骤3中手机APP与上位机之间的蓝牙通信其具体方法为: 蓝牙Client端首先获得BluetoothAdapter对象,通过Client端Adapter对象的getRemoteDevice(address)方法获得设备BluetoothDevice,其中参数address是Server端设备的MAC地址;BluetoothDevice调用createRfcommSocketToServiceRecord(MY_UUID)方法获得Socket对象,其中的MY_UUID是Server端的UUID;通过Socket.connect()方法发送连接请求,这是一个堵塞操作,等待Server端的应答;如果这个过程没有配对,系统会弹出对话框进行配对;在Server端先获得BluetoothAdapter对象,通过Server端Adapter对象的adapter.listenUsingRfcommWithServiceRecord(Name,MY_UUID)方法获得ServerSocket对象;其中,Name是一个服务名字可以自己指定,MY_UUID是Server端的UUID;ServerSocket调用accept()阻塞操作方法监听客户端连接,直到Client端有连接请求;如果这个过程没有配对,系统会弹出对话框进行配对。 4.  根据权利要求2所述的一种智能手机传感器数据在线采集与实时处理方法,其特征在于:所述步骤4中上位机中MATLAB软件读取串口接收到的字符流数据的解析方法为: 通过Socket.getOutputStream()方法获得字符输出流outputStream对象,该对象中的write方法用来实现数据的发送;SDK源码中该方法的实现原型为:publicvoid write (byte[] buffer),其限定参数只能为字符数组,因此无论传输任何类型的数据都必须首先按照预定义的转换格式,将实际数据转换为字符数组类型,之后才能调用write方法以字符流的方式发送出去;鉴于SDK这种传输实现方式的限制,导致数据接收端也必须对接收到的字符流重新按预定义解析格式对数据做解析才能得到实际数据格式;所述预定义解析格式是预定义解析格式1或预定义解析格式2,预定义解析格式1是在字符流数据中加入标记字符,如‘A’、‘O’辅助解析,其形式如字符序列【xAyAzxOyOz】所示;预定义解析格式2是根据多路数据特性分块进行解析,其形式如字符序列【x y z x y z】所示。 5.  根据权利要求1所述的一种智能手机传感器数据在线采集与实时处理方法,其特征在于:所述内置传感器包括加速度传感器、方向传感器、陀螺仪、环境光传感器、麦克风、Wi-Fi。

说明书

说明书一种智能手机传感器数据在线采集与实时处理方法
技术领域
本发明涉及一种对手机内置传感器数据做在线采集且实时处理与分析的方法,具体涉及一种通过手机蓝牙模块将手机传感器采集的数据实时传送至MATLAB做实时数值处理的方法。
背景技术
智能手机正在迅速成为个人计算和通讯的核心设备,得益于硬件技术的进步和移动互联网的普及。基于智能手机的感知手段日益丰富,可感知信息的维度不断增加,在健康、医疗、生活、交通、教育和娱乐等领域的应用层出不穷。目前,智能手机已内置了种类繁多的传感器;与此同时,越来越多的外置传感器也能通过无线网络或有线接口与智能手机相连。这些传感器提供了感知智能手机用户和环境的极佳途径。常见的智能手机内置传感器包括加速度传感器、方向传感器、磁力传感器、陀螺仪、GPS、距离传感器、环境光传感器、摄像头、麦克风、Wi-Fi、蓝牙、近场通讯(NFC)等,而且新版本的Android原生系统也不断增加智能手机对更多内置传感器的支持。为了获取手机内置传感器的强大感知能力,实现对传感器数据的实时采集、处理、分析变得十分必要。
目前,MATLAB是国内外学者使用最为广泛的数值分析软件,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,为科学研究、工程设计以及需要进行数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。MATLAB包括使用方便的一系列函数和工具,此外,还包括许多专门领域的模块集和工具箱,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。但是,其大部分情况下都是对已经采集好的数据进行离线处理,缺乏对实验数据实时处理的支持。当面对“实时对比不同数据处理方法效果优劣”和 “数据动态特征的捕获、分析、提取”等问题时,变的无能为力。因此开发一种能够将智能手机传感器数据在线采集并发送到上位机,由安装在上位机的MATLAB进行实时处理与分析的方法变得十分有意义。
发明内容
本发明提供一种智能手机传感器数据在线采集与实时处理方法,解决了手机内置传感器数据不能用MATLAB实时分析、处理的问题。
为此,所采用的技术方案为: 
一种智能手机传感器数据在线采集与实时处理方法,包括智能手机及安装有MATLAB软件的上位机,该处理方法利用智能手机App应用实时采集内置传感器数据,利用智能手机通过内置蓝牙模块将采集到的数据实时发送到上位机,上位机利用蓝牙适配器接收智能手机发送的传感器数据,上位机中的MATLAB软件异步读取虚拟串口数据,分析、处理并绘制实时波形。
该处理方法的具体步骤为:
    步骤1:安装智能手机App,该App具有手机内置传感器数据采集和蓝牙通信功能;
    步骤2:上位机开启蓝牙功能,然后利用蓝牙适配器驱动软件创建蓝牙COM虚拟串口,并通过计算机管理中设备管理器查看虚拟出的串口编号,该步骤完成后上位机将作为蓝牙通信服务端等待智能手机配对连接请求;
    步骤3:打开智能手机App应用,选择传感器类型并设定采样频率,开启蓝牙功能,根据设置的蓝牙名字搜索上位机蓝牙适配器并建立配对连接,待连接成功后便可通过该App利用手机蓝牙通信向上位机实时发送内置传感器采集到的数据;
    步骤4:上位机中MATLAB软件通过串口操作相关函数异步读取COM虚拟串口接收到的字符流数据,经解析后把字符流转化为实际数值型数据,然后利用MATLAB函数进行处理、分析,并将处理结果数据不断迭代存入6*N定长矩阵M中,其中N根据显示窗口长度设定,即每读入一个完整数据该矩阵就把最新数据加入,同时丢弃较早存入的数据,维持矩阵的长度为固定值N,然后利用绘图函数绘制当前矩阵M中存放数据的波形,最后循环调用刷屏函数绘制不同时刻每帧的波形,实现动态数据波形显示效果。
所述步骤3中手机APP与上位机之间的蓝牙通信其具体方法为:
蓝牙Client端首先获得BluetoothAdapter对象,通过Client端Adapter对象的getRemoteDevice(address)方法获得设备BluetoothDevice,其中参数address是Server端设备的MAC地址;BluetoothDevice调用createRfcommSocketToServiceRecord(MY_UUID)方法获得Socket对象,其中的MY_UUID是Server端的UUID;通过Socket.connect()方法发送连接请求,这是一个堵塞操作,等待Server端的应答。如果这个过程没有配对,系统会弹出对话框进行配对。在Server端先获得BluetoothAdapter对象,通过Server端Adapter对象的adapter.listenUsingRfcommWithServiceRecord(Name,MY_UUID)方法获得ServerSocket对象;其中,Name是一个服务名字可以自己指定,MY_UUID是Server端的UUID;ServerSocket调用accept()阻塞操作方法监听客户端连接,直到Client端有连接请求;如果这个过程没有配对,系统会弹出对话框进行配对。
所述步骤4中上位机中MATLAB软件读取串口接收到的字符流数据的解析方法为:
通过Socket.getOutputStream()方法获得字符输出流outputStream对象,该对象中的write方法用来实现数据的发送;SDK源码中该方法的实现原型为:publicvoid write (byte[] buffer),其限定参数只能为字符数组,因此无论传输任何类型的数据都必须首先按照预定义的转换格式,将实际数据转换为字符数组类型,之后才能调用write方法以字符流的方式发送出去;鉴于SDK这种传输实现方式的限制,导致数据接收端也必须对接收到的字符流重新按预定义解析格式对数据做解析才能得到实际数据格式。所述预定义解析格式是预定义解析格式1或预定义解析格式2,预定义解析格式1是在字符流数据中加入标记字符,如‘A’、‘O’辅助解析,其形式如字符序列【xAyAzxOyOz】所示;预定义解析格式2是根据多路数据特性分块进行解析,其形式如字符序列【x y z x y z】所示。
所述内置传感器包括加速度传感器、方向传感器、陀螺仪、环境光传感器、麦克风、Wi-Fi。
与现有的手机传感器数据处理、分析方法和技术相比,本发明具有以下优点:(1)通过蓝牙实时传输手机传感器采集的原始数据,减小数据存储对手机内存空间的大量占用,同时无线传输使得实验中无需连线,彻底摆脱物理传输线路的限制,极大增强数据采集时手机的移动灵活性,只要在蓝牙可通信范围内(蓝牙4.0最远可达100m)都可进行大范围、复杂场所下实验数据的采集;(2)利用MATLAB强大数值处理能力对传感器数据做实时分析、处理,能有效解决场景1中传感器数据动态特征捕获、分析、提取的问题;(3)本发明所实现的软件示波器功能,能够动态绘制数据实时波形曲线,直观反映数据状态,为实验决策提供有效参考。
本发明解决了在实验过程中手机内置传感器数据采集、分析、处理三位一体的实时同步性问题,适用于将智能手机传感器采集的数据直接发送到上位机中,并在安装有MATLAB软件的上位机中对实验数据做实时分析。它为数据的在线采集、实时分析、处理及效果反馈提供便利手段,具有在线、实时、直观的优点。
附图说明
图1为本发明实现原理示意图;
图2为本发明实现整体架构图;
图3为本发明蓝牙Socket通信流程图;
图4为本发明串口调试助手获取的格式1型字符流;
图5为本发明预定义格式1解析示意图;
图6为本发明串口调试助手获取的格式2型字符流;
图7为本发明预定义格式2解析示意图;
图8为本发明数据波形动态绘制流程图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
在详细阐述本发明的技术方案之前,先说明它的应用场景:
场景1:传感器数据动态特征的捕获、提取、分析。手机内置传感器的采样频率一般都比较高,所以能够捕获很细微的状态变化。而这些反映细微状态变化的数据如果在采集完成后再做离线处理,就很难准确分析它与改变条件的实时关联性。特别是在数据特征波形波动非常剧烈、短暂的情况下,对数据做离线分析就显得没有足够说服力,因为离线分析很难判定此时的波动是由哪个实时状态量的改变所引起的。举例说明,我们在用手机内置加速度传感器做行人步态特征的提取,数据已采集完成并保存、送到上位机MATLAB中做步态特征分析,当离线数据特征波形中出现的一个轻微波动很难去定性的判断是由后脚蹬地,还是前脚落地或者手的抖动所引起。
场景2:借助MATLAB强大数值处理函数,实时对比不同数据处理方法效果优劣。手机传感器数据的分析要利用大量数字信号处理的相关方法实现滤波、去噪、和特征提取,针对该领域MATLAB开发了功能强大的模块集和工具箱,我们可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码,这就给我们在实验中尝试用不同方法去处理数据提供很大的方便。但是,任何数据处理方法都会造成系统时延,不同方法随着它的算法复杂性和计算量的不同而时延也存在较大差异。特别是在对实时性要求苛刻的情况下,过于复杂的数据处理方法即便能够取得理想效果,但造成过大的系统延时,进而引起卡顿现象,那么在这种实时性能要求下该方法也必须丢弃。所以,本专利提出的这种方法可以有效解决上述问题,实现根据实际性能要求,在MATLAB中尝试选用不同方法对数据进行处理,实时对比输出结果优劣,进而为选取合适处理方法的选择提供直接参考。
场景3:动态绘制实时波形曲线,直观反映数据状态。强大的绘图功能是MATLAB的特点之一,MATLAB提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。但高层绘图函数仅能提供一些相对简单的、常规的、静态的绘图功能,难以满足动态数据实时绘制,直观反映数据状态变化的要求。此外,MATLAB还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)当成一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。本专利通过操作底层绘制函数周期性刷新当前数据帧并同步移动坐标轴,实现数据波形动态实时绘制,更加直观的反映数据实时特性,达到软件示波器的效果。
本发明是一种实时分析、处理手机内置传感器数据的方法,该方法涉及智能手机内置传感器数据采集,手机与上位机之间蓝牙数据传输,上位机MATLAB虚拟串口数据读取及动态实时波形绘制三部分内容。具体方法如下:
步骤1:安装手机App,该App具有手机内置传感器数据采集和蓝牙通信功能。手机中采集各类传感器数据的一般方法是通过调用系统服务获取传感器管理器,然后注册传感器管理器及添加相关权限之后,就可以通过指定传感器参数常量来实现对各类传感器数据的操作;
步骤2:上位机开启蓝牙功能,然后利用蓝牙适配器驱动软件创建蓝牙COM虚拟串口,并通过计算机管理中设备管理器查看虚拟出的串口编号,该步骤完成后上位机将作为蓝牙通信服务端等待手机配对连接请求;
步骤3:打开手机App应用,选择传感器类型并设定采样频率,开启蓝牙功能,根据设置的蓝牙名字搜索上位机蓝牙适配器并建立配对连接,待连接成功后便可通过该App利用蓝牙通信向上位机实时发送内置传感器采集到的数据; 
步骤4:上位机中MATLAB软件通过串口操作相关函数异步读取COM串口接收到的字符流数据,经解析后把字符流转化为实际数值型数据,然后利用MATLAB函数进行处理、分析,并将处理结果数据不断迭代存入定长矩阵M中,即每读入一个完整数据该矩阵就把最新数据加入,同时丢弃较早存入的数据,然后利用绘图函数绘制当前矩阵中存放的N个数据的波形,最后循环调用刷屏函数绘制不同时刻每帧的波形,实现动态数据波形显示效果。
(1)   关于步骤3中数据通信做详细说明;
蓝牙是一种无线通信协议,传输速度可达1Mbit/s,主要适用于短程、无线外围设备进行小量数据传输。本专利使用Android蓝牙API主要有四种:                                               BluetoothAdapter,本地蓝牙适配器类,主要负责管理蓝牙的基本服务,包括初始化蓝牙设备、蓝牙配对、数据传输;BluetoothDevice,远程蓝牙设备类,通过BluetoothAdapter.getRemoteDevice(String)方法获得该对象;BluetoothSocket,蓝牙Socket类,类似于TCP/IP协议中的Socket,用于和远程蓝牙设备通信。通过BluetoothDevice.CreateRfcommSocketToServiceRecordDevice(UUID)方法获得该对象(Universally Unique Identifier,通用唯一标识符,它是指一台机器上生成的数字,保证对在同一时空中的所有机器都是唯一的)。BluetoothServerSocket,蓝牙ServerSocket,类似于TCP/IP协议中的ServerSocket,蓝牙Socket通常使用的协议是RFCOMM协议,也叫串行端口规范,它是无线射频通信协议的通道和端口,是一个面向连接、通过蓝牙模块进行的数据流传输方式。ServerSocket对象可以使用BluetoothAdapter.listenUsingRfcommWithServiceRecord(String name, UUID uuid)方法获得。
蓝牙通信一般过程如图3所示,在Client端先获得BluetoothAdapter对象,通过Client端Adapter对象的getRemoteDevice(address)方法获得设备BluetoothDevice,其中参数address是Server端设备的MAC地址。BluetoothDevice调用createRfcommSocketToServiceRecord(MY_UUID)方法获得Socket对象,其中的MY_UUID是Server端的UUID。发送连接请求通过Socket.connect()方法,这是一个堵塞操作,等待Server端的应答。如果这个过程没有配对,系统会弹出对话框进行配对。在Server端先获得BluetoothAdapter对象,通过Server端Adapter对象的adapter.listenUsingRfcommWithServiceRecord(Name,MY_UUID)获得ServerSocket对象。其中,Name是一个服务名字可以自己指定,MY_UUID是Server端的UUID。ServerSocket调用accept()阻塞操作监听客户端连接,知道Client端连接请求。如果这个过程没有配对,系统会弹出对话框进行配对。
(2)     关于步骤4中数据解析做详细说明;
通过Socket.getOutputStream()方法获得字符输出流outputStream对象,该对象中的write方法用来实现数据的发送。SDK源码中该方法的实现原型为:publicvoid write (byte[] buffer),可看到其限定参数只能为字符数组,这就表明无论传输任何类型的数据都必须首先按照预定义的转换格式,将实际数据转换为字符数组类型,然后才能调用write方法以字符流的方式发送出去,为了便于说明问题,将发送的字符流数据由上位机的串口调试助手软件显示出来,如图4所示。由于SDK中这种传输方式的限制,导致数据接收端也必须对接收到的字符流重新按预定义转换格式对数据做解析,从而得到实际的数据格式。下面以采集的内置加速度传感器与方向传感器三个轴向,共六路数据进行实例说明。预定义解析格式1,即【xAyAzxOyOz】格式(优点在于可以对多路数据灵活设定不同采样频率);所用数据来自图4中第六行部分数据;其一般解析过程,如图5所示;设置波特率、串行端口号、矩阵长度N;对指定串口不断循环读取得到原始字符流数据;检测’’空字符,出现则将字符流在此处截断,表示一帧结束;以‘A’字符对上步所截得字符串做分割,判断是否含字符‘A’,若含则分割得到3组表加速度三个轴向数据的字符串,若无则分割得到2组字符串,其中后面一组为空字符串,未含有用数据故舍弃;以‘O’字符再次对上步所得的2组不含‘A’的非空字符串进行分割,解析得到3组表示方向传感器三个轴向数据的字符串;将数据从字符串型转换为数值型数据;将解析出的数据放入矩阵M中,给后续分析、处理使用。预定义解析格式2,即【x y z x y z】格式(优点在于解析过程不需要额外的计算开销用于字符分割,所以解析速度更快),所用数据来自图6中第七行部分数据;其一般解析过程,如图7所示;设置波特率、串行端口号、矩阵长度N;对指定串口不断循环读取得到原始字符流数据;检测’’空字符,当出现时将字符流在此处截断,表示一帧结束;通过设定计数器变量i,当每读取一帧数据,将i值加1,并用6对i值取模,当模值为0时,则将这6个连续数据帧分别赋给加速度传感器和方向传感器的三个轴向共6个数据的字符串变量;将数据从字符串转换为数值型数据;将解析出的数据放入矩阵M中,给后续分析、处理使用。
所述预定义解析格式1、2同样适用于其它多路数据的解析。
(3)     关于步骤4中数据波形的动态绘制做详细说明;
解析出的数据不断加入矩阵中,随着数据的增多,会导致内存的大量消耗。而我们关注的数据是最新的,能反映在动态窗口中的数据,故本专利做如下处理,如图8所示。首先,当矩阵添加一个新数据的时候,删除最早的数据,将新数据不断迭代存入定长矩阵M中,维持矩阵的长度为固定值N。然后,利用绘图函数绘制当前矩阵存放数据的波形。最后,通过不断调用刷屏函数绘制不同时刻每帧的波形,实现动态波形数据的显示效果。

一种智能手机传感器数据在线采集与实时处理方法.pdf_第1页
第1页 / 共16页
一种智能手机传感器数据在线采集与实时处理方法.pdf_第2页
第2页 / 共16页
一种智能手机传感器数据在线采集与实时处理方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种智能手机传感器数据在线采集与实时处理方法.pdf》由会员分享,可在线阅读,更多相关《一种智能手机传感器数据在线采集与实时处理方法.pdf(16页珍藏版)》请在专利查询网上搜索。

一种实时分析、处理手机内置传感器数据的方法,该方法利用智能手机App应用实时采集内置传感器数据,利用智能手机通过内置蓝牙模块将采集到的数据实时发送到上位机,上位机利用蓝牙适配器接收智能手机发送的传感器数据,上位机中的MATLAB软件异步读取虚拟串口数据,分析、处理并绘制实时波形。本发明可以解决在实验过程中手机内置传感器数据采集、分析、处理三位一体的实时同步性问题。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1