当前位置:首考文秘网>范文大全 > 教学设计 > 基于蓝牙技术的运动检测系统设计

基于蓝牙技术的运动检测系统设计

时间:2023-05-18 12:20:04 教学设计 来源:网友投稿

zoޛ)j馐)3o@Oy}6M{ӭ4ӟO]汽车控制系统上集成了许多不同的传感器装置,用以测量汽车是否正常工作[3]。可通过查看汽车各传感器的参数值进行故障诊断等操作,而对车身整体的运动检测传感器目前研究尚浅[4]。因此,文中提出一款基于蓝牙无线技术的汽车车载运动状态检测装置,该装置是基于TCP /IP协议的网络化智能传感器。相比普通的基于现场总线的传感器,该传感器不仅体积小,安装便捷性也得以提升[5]。本传感器适合安装于车辆内部各个位置,通过蓝牙无线信号传输将本系统与汽车控制系统及其他检测系统区分开来,以降低信号冗余度,减少信号拥堵。因此本系统可称为独立的运动检测装置[6]。

在许多应用场合,不依靠外界而从自身内部获取自身运动状态信息十分重要,惯性测量单元就扮演了这一角色。惯性测量单元(Inertial Measurement Unit,IMU)由微型陀螺仪、微型加速度计、专用集成电路(ASIC)、嵌入式微机及相应的软件组成,内部采用I2C总线接口,可以测出载体的角速度、加速度等信息,属于微电子机械系统的一种[5]。微电子机械系统(Micro-Electro-Mechanical Systems,MEMS)采用较低的成本把具有特定功能的复杂系统置于一个小小的硅片上,并将各种微型探测传感器及微型机械装置与微电子元件集为一体,使得系统的集成化程度更高,传感器的体积更小。

1 系统功能分析

为分析蓝牙无线姿态检测传感器,可根据数据的传输过程将系统分为3个部分:

(1)传感器数据获取模块。利用动态卡尔曼滤波等算法,对原始传感器进行采集滤波整合处理;

(2)传感器数据无线发送模块。掌握并运用蓝牙发送模块的参数及配置;

(3)数据显示及保存模块。使用手机App进行数据接收及保存。

2 总体设计

本系统包含软件和硬件设计,硬件电路使用STM32系列的ARM芯片,使用I2C总线通信方式与加速度计陀螺仪通信,并使用串口与蓝牙芯片HC05通信,蓝牙模块发送数据至安卓手机端。软件编程使用Keil,IAR,Eciplse软件对模块编程。使用Keil软件完成对传感器数据信息的采集和数据打包处理;使用IAR完成对蓝牙模块的配置操作处理,设置蓝牙的发送模式,波特率等参数;使用Ecilpse完成手机端App的编程,使用手机自带的蓝牙通信接口获取数据,后将数据解析拆包,将得到的数据显示到手机屏幕并保存。系统总体模块框图如图1所示。

3 系统硬件设计框图

3.1 IMU惯性测量单元

IMU的主控制芯片选用STM32F103T8,ARM 32-bit Cortex-M3内核,它拥有64 KB的闪存存储器和20 KB的运行内存及7通道的DMA,7个定时器。通过8 MHz晶体和STM32内部的PLL,控制器可以运行在72 MHz主频上,由于姿态解算需要耗费大量内存进行数学运算,因此采用具有更快处理速度的芯片做更多解算优化[6]。IMU惯性测量单元硬件组成框图如图2所示。

IMU上的传感器通过I2C接口与STM32连接,同时传感器的数据中断引脚与STM32的IO相连,使得传感器在完成ADC轉换后,STM32可在第一时间读取最新、最快的数据,快速响应姿态变化,获取各传感器的状态和转换结果。其中,MPU6050为整合型6轴处理运动组件,包含三轴陀螺仪和三轴加速度器,可准确追踪快速与慢速动作[7]。HMC5883采用霍尼韦尔地磁传感器,具有对正交轴的低灵敏度固相结构,可用来测量地球磁场的方向和大小。BMP180是一款高精度、超低能耗的压力传感器,测量大气压力后可换算为海拔高度。

3.2 Bluetooth模块

传感器使用的SPP-C蓝牙模块是遵循V2.1+EDR蓝牙规范的智能无线数据模块。除P12,P5为特殊I/O口外,其他P口均为可编程输入/输出接口,其串口UART-TX与UART-RX均采用CMOS接口。该模块主要用于短距离的数据无线传输领域[8]。可以方便的与PC机的蓝牙设备相连,数据也可以在两个模块之间互通。蓝牙模块的硬件框图如图3所示。

4 传感器软件设计

4.1 IMU传感器数据采集

IMU数据采集流程包括数据采集处理芯片STM32和三个传感器的初始化,即首先对STM32芯片系统上电初始化,完成I2C接口初始化和串口初始化,然后对三个传感器的配置初始化,如图4所示。

4.1.1 对MPU6050初始化

MPU6050初始化如图5所示,软件配置流程如下:

(1)由电源管理寄存器1(0X6B)控制复位MPU6050;

(2)由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置角速度传感器和加速度传感器的满量程范围;

(3)由中断使能寄存器(0X38)配置中断;

(4)由用户控制寄存器(0X6A)设置AUX I2C接口;

(5)由FIFO使能寄存器(0X23)设置FIFO;

(6)由采样率分频寄存器(0X19)配置陀螺仪采样率;

(7)由配置寄存器(0X1A)设置数字低通滤波器;

(8)由电源管理寄存器1(0X6B)设置系统时钟。一般选择x轴陀螺PLL作為时钟源,以获得更高精度的时钟;

(9)由电源管理寄存器2(0X6C)使能角速度传感器(陀螺仪)和加速度传感器。

4.1.2 对HMC5883初始化

HMC5883初始化程序如图6所示。在软件中设置HMC5883的工作模式0,为连续测量模式。在连续测量模式下,装置不断测量,并将数据更新至数据寄存器。由配置寄存器A设置测量输出过程中的采样平均数为8个周期,75 Hz的输出速率。然后使用HMC5883L传感器内部产生的标准磁场进行初步标定,最后读取校正后磁力计ADC的值。

4.1.3 对BMP180初始化

BMP180的初始化如图7所示,需要在软件中进行配置:

(1)发出压力(或温度)转换命令;

(2)一段时间后从UP(UT)寄存器读取原始数据;

(3)若要得到摄氏温度和hPa 压力则需要用到校正数据,这些数据放在BMP085的E2PROM中,通过I2C可以在初始化时读出。

4.2 蓝牙无线模块配置

蓝牙HC05是主从一体的蓝牙串口模块,可以使其工作在主或从机状态。当蓝牙设备配对连接成功后,无需考虑蓝牙内部的通信协议,直接将蓝牙作为串口使用。连接建立后,两设备共同使用一通道,一个设备发送数据到通道中,另一个设备可以接收通道中的数据。为建立这种通道连接,需要将蓝牙设置为能进行配对连接的AT模式。使用蓝牙模块的AT指令对其进行配置,将模块设置为从机模式,依次输入指令:

AT+NAME=Bluetooth-Slave //蓝牙名称为Bluetooth-Slave

AT+ROLE=0 // 蓝牙模式为从模式

AT+CMODE=0 // 蓝牙连接模式为任意地址连接模式

AT+PSWD=1234 // 蓝牙配对密码为1234

AT+UART=9600,0,0 // 蓝牙通信串口波特率为9 600,停止位1位,无校验位

AT+RMAAD // 清空配对列表

5 手机安卓端软件

5.1 系统总体设计

为完成手机端App的软件开发,首先建立其用例图,描述用户使用本App实现的目的。首先用户打开App图标进入软件,完成蓝牙设备的匹配连接,然后根据用户的需要选择用户希望获取的数据信息,最后用户保存需要的数据信息。

根据实现的功能按照实现类方法进行划分。其中涉及蓝牙通信服务,用户与手机图形界面交互中的事件监听处理机制,及数据的实时动态刷新显示。在设计软件时设计了用例图和部署图,具体如图8和图9所示。

5.2 App实现框架

在AndriodMenifest.xml文件列出了应用程序提供的功能,凡需要用到的组件都要在此进行配置及注册,包括Activity、Intent、Service及ContentProvider。当使用到系统中内置的应用(如电话服务、互联网服务、短信服务、GPS服务等)时还需在此文件中声明使用权限,该文件也是所有Android应用程序都需要的文件,描述了程序包的全局变量,包括公开的应用程序组件和每个组件的实现类,及可以操作的数据资源,运行空间等。

软件中的Activity是Android的核心类,其作用相当于c中的主函数。该类的全名是android.app.Activity。Activity相当于C/S程序中的窗体(Form)或Web程序的页面。每一个Activity提供了一个可视化区域。在这个区域中可以放置各种Android控件,如按钮、图像、文本框等。

其软件框架如图10所示,由AndroidMenifest.xml文件配置软件安卓运行版本条件,并先执行DeviceListActivity.java获取设备列表,使用Intent调用DataMonitor.java程序。DeviceListActivity继承了Activity类,DataMonitor继承了FragmentActivity类。两者在执行时都调用BluetoothService.Java函数以完成蓝牙通信。DeviceListActivity.java和DataMonitor.java都由可视化组件View及其子类组成,这些组件按照XML布局文件在指定位置的窗口上摆放。

5.3 数据处理及显示

DataMonitor是一个继承了FragmentActivity的类,FragmentActivity 继承自Activity,它提供了操作Fragment的方法,因此可在Activity中嵌入Fragment来实现需要的布局效果。在DataMonitor中首先实现的是oncreate方法,该方法在DataMonitor初始化时调用蓝牙连接,通过setContentView方法将View放到Activity上。绑定后,Activity会显示View上的控件。其余的是继承父类的onStart(),onResume(),onPause(),onStop()和onDestroy()方法,未对其修改,完成Activity生命周期的重载基本方法。

在确保蓝牙已经连接的情况下使用handler接口完成Activity的Widget与应用程序中线程的交互。重写handler类中的handleMessage方法,通过该方法接收信息。接收的信息表示当前时刻接收消息的状态,分别为MESSAGE_STATE_CHANGE,MESSAGE_READ,MESSAGE_DEVICE_NAME,MESSAGE_TOAST。第一种状态表示蓝牙处于连接状态;第二种状态表示数据读取状态;第三种状态为设备名称读入状态;第四种状态为数据显示状态,可将数据显示在手机屏幕上。通过OnclickConfig(View v),ControlClick(View v)完成界面显示及跳转功能,在ControlClick中可以选择显示的内容,并根据按下的按键选择对应的输出数据。onRecordBtnClick(View v)方法是当用户按下“记录”键时将数据保存到SD卡中,当用户按下“停止”按钮时停止记录数据信息。DataMonitor内部成员及方法函数如图11所示。

5.4 蓝牙传输BluetoothService

对蓝牙进行开发,首先在AndroidManifest.xml文件中加入管理员权限和蓝牙开发权限,开启蓝牙后,用isEnabled()查询当前蓝牙设备的状态,若返回为false,则表示蓝牙设备没有开启,需要封装一个ACTION_REQUEST_ENABLE请求到intent,调用startActivityForResult()方法使能蓝牙设备。使用BluetoothAdapter类的方法可以查找远端设备,使用mArrayAdapter.Add方法显示可以配对的蓝牙设备集,以便选取一个设备进行通信。

扫描设备只需调用startDiscovery()方法,应用程序为了ACTION_FOUND动作需要注册一个BroadcastReceiver来接收设备扫描到的信息。使能自身设备,将ACTION_REQUEST_DISCOVERABLE动作封装在intent中并调用startActivityForResult(Intent, int)方法。

建立两个蓝牙设备之间的连接,完成客户端和服务器端的代码。一个开启服务来监听,一个发起连接请求(使用服务器端设备的MAC地址)。当他们都拥有一个蓝牙套接字在同一RFECOMM信道上时,可认为他们之间已经连接上了。getInptuStream()获取输入流,getOutputStream()获取输出流,进行数据传输。蓝牙连接示意图如图12所示。

6 传感器数据测试

打开蓝牙传感器,开启启动开关后,指示灯不停闪烁,则表明设备运转正常。手机首先开启蓝牙功能,然后打开App界面,进入界面后点击搜索设备,可选择HC-02。选择该设备后,会有一个配对过程,输入配对码0000,即可完成两者的配对。显示的数据可选择加速度,角速度,角度等并点击记录按钮,数据将会保存;点击停止按钮,则会有提示信息、数据保存的文件及路径。传感器实物及手机App端如图13所示。

手机内部有集成惯性传感器,可对手机的姿态进行实时监测,其中重力感应装置会根据手机的状态自动旋转屏幕。手机中的记步工具利用手机内部的惯性传感器进行记步。我们打开手机记步工具,同时开启无线蓝牙传感器进行姿态检测。将得到的数据txt文件导入电脑,并分析z轴加速度曲线。根据曲线的波峰个数来判定步数,然后再将其与手机记步工具进行对比[3]。加速度曲线如图14所示。

当我们行走50步时,得到传感器数据记录值。取其中的z轴记录值进行分析,通过Matlab将z轴数据绘制成图14所示的曲线。得到加速度幅值大于1.2的波峰个数,计算为49个,误差仅为2%。然后在记步工具显示的数据为953-905=48步。可以看出记步工具得出的数据没有本系统精确。

7 结 语

本文中,我们提出了一种基于蓝牙和惯性测量单元的无线位姿传感器检测系统,针对传感器的硬件和软件进行设计。使用整合型6轴处理运动组件MPU6050、BMP180、HMC5883和STM32组成IMU(惯性测量单元),将数据通过蓝牙发送至手机端,然后显示,并将数据保存在手机端。文中设计的系统具有较好的实时性,且精度满足一般运动物体的检测要求。

参考文献

[1]贾利亚.安卓平台下跌倒检测技术的研究与实现[D].南昌:南昌航空大学,2015.

[2]林英禄.运动数据的实时监测与健康评价模型的研究[D].上海:华东师范大学,2015.

[3]吴忠泽.基于智能移动终端的人体运动状态监测系统的设计与实现[D].广州:华南理工大学,2013.

[4]林英禄.运动数据的实时监测与健康评价模型的研究[D].上海:华东师范大学,2015.

[5]楊志海.远程护理中老年人跌倒检测研究[D].大连:大连海事大学,2015.

[6]孟妍.可穿戴式心电采集与处理方法的研究[D].天津:天津理工大学,2014.

[7]赵婧.基于可穿戴技术的信息处理与数据融合算法研究[D].北京:北京服装学院,2014.

[8]陈瑾.穿戴式人体姿态监测系统研究和设计[D].长沙:中南大学,2014.

推荐访问:检测系统 蓝牙技术 运动 设计

版权所有:首考文秘网 2015-2024 未经授权禁止复制或建立镜像[首考文秘网]所有资源完全免费共享

Powered by 首考文秘网 © All Rights Reserved.。备案号:冀ICP备15026071号-91