深圳市组创微电子有限公司
销售部:15338833908采购部:0755-8299 4126行政部:0755-8299 4126
咨询电话
0755-8299 4141

蓝牙技术

蓝牙运动检测系统


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

随着传感器技术的发展,现代工业控制变得更加精准,更多实时检测处理传感器得到了广泛应用。在车载应用中,传统的传感器测控网络为有线式监控网络,使用屏蔽线或导线进行信号传输。在汽车控制系统上集成了许多不同的传感器装置,用以测量汽车是否正常工作。可通过查看汽车各传感器的参数值进行故障诊断等操作,而对车身整体的运动检测传感器目前研究尚浅。因此,文中提出一款基于蓝牙无线技术的汽车车载运动状态检测装置,该装置是基于TCP/IP协议的网络化智能传感器。相比普通的基于现场总线的传感器,该传感器不仅体积小,安装便捷性也得以提升。本传感器适合安装于车辆内部各个位置,通过蓝牙无线信号传输将本系统与汽车控制系统及其他检测系统区分开来,以降低信号冗余度,减少信号拥堵。因此本系统可称为独立的运动检测装置。

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

一、运动检测系统功能分析

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

(1)传感器数据获取模块。利用动态卡尔曼滤波等算法,对原始传感器进行采集滤波整合处理;(2)传感器数据无线发送模块。掌握并运用蓝牙发送模块的参数及配置;(3)数据显示及保存模块。使用手机App进行数据接收及保存。

二、运动检测系统总体设计

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

图 1 运动检测系统总体模块框图

三、运动检测系统硬件设计框图

3.1 IMU惯性测量单元

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

图 2 IMU 惯性测量单元硬件组成框图

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

3.2 Bluetooth模块

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

图 3 蓝牙模块电路连接

四、运动检测系统传感器软件设计

4.1 IMU传感器数据采集

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

图 4 IMU 数据采集过程

(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)使能角速度传感器(陀螺仪)和加速度传感器。

图 5 MPU6050 初始化

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

(3)对BMP180初始化:需要在软件中进行配置:(1)发出压力(或温度)转换命令;(2)一段时间后从UP(UT)寄存器读取原始数据;(3)若要得到摄氏温度和hPa压力则需要用到校正数据,这些数据放在BMP085的E2PROM中,通过I2C可以在初始化时读出。

4.2蓝牙无线模块配置

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

五、手机安卓端软件

5.1运动检测系统总体设计

为完成手机端App的软件开发,首先建立其用例图,描述用户使用本App实现的目的。首先用户打开App图标进入软件,完成蓝牙设备的匹配连接,然后根据用户的需要选择用户希望获取的数据信息,最后用户保存需要的数据信息。根据实现的功能按照实现类方法进行划分。其中涉及蓝牙通信服务,用户与手机图形界面交互中的事件监听处理机制,及数据的实时动态刷新显示。在设计软件时设计了用例图和部署图。

5.2 App实现框架

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

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

由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_CH ANGE,M ES SAGE_READ,M ES SAGE_DEVICE_NAME,MESSAGE_TOAST。第一种状态表示蓝牙处于连接状态;第二种状态表示数据读取状态;第三种状态为设备名称读入状态;第四种状态为数据显示状态,可将数据显示在手机屏幕上。通过OnclickConfig(View v),ControlClick(View v)完成界面显示及跳转功能,在ControlClick中可以选择显示的内容,并根据按下的按键选择对应的输出数据。onRecordBtnClick(View v)方法是当用户按下“记录”键时将数据保存到SD卡中,当用户按下“停止”按钮时停止记录数据信息。

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()获取输出流,进行数据传输。

结语

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

以上就是我们深圳市组创微电子有限公司为您介绍的基于蓝牙技术的运动检测系统设计。如果您有蓝牙产品设计开发需求,可以放心交给我们,我们有丰富的智能电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、BLE蓝牙IC、双模蓝牙模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙开发、wifi技术等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。

注:部分图片内容来源于网络,如有侵权,请联系删除。

使用该技术的解决方案

  • 返回顶部