基于CC2541+MPU6050的蓝牙旋转魔方设计

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:zs83315
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘   要:文章基于CC2541及运动处理传感器MPU6050设计了一种无线旋转魔方,在转动魔方时,MPU6050传感器能够通过自带的DMP实时输出四元数,CC2541获取数据后计算出姿态角,并通过蓝牙传递给手机,从而在手机APP端能够实时显示旋转角度,并实现动态演示的效果。
  关键词:无线旋转魔方;运动处理传感器;蓝牙
  1    欧拉角计算原理
  在三维空间中的欧拉角旋转要转3次,描述一次旋转方向,可用余弦矩阵来表示:
  使用欧拉角微分方程来解算欧拉角:
  左侧是本次更新后的欧拉角,对应row,pit,yaw;右侧是上个周期测算出来的角度;求解这个微分方程就能解算出当前的欧拉角。欧拉角微分方程解算姿态关系简单、明了,概念直观、容易理解,但是欧拉角微分方程中包含了大量的三角运算,给实时解算带来了一定的困难。当俯仰角为90°时,方程式会出现万向节死锁“Gimbal Lock”,所以欧拉角方法只适用于水平姿态变化不大的情况,而不适用于全姿态飞行器的姿态确定。
  四元数法只求解4个未知量的线性微分方程组,计算量小、易于操作,是比较实用的工程方法。在平面(x,y)中的旋转可以用复数来表示,同样三维空间中的旋转可以用单位四元数来描述。定义一个四元数:
  用欧拉角描述的方向余弦矩阵用四元数描述则为:
  使用一阶龙哥库塔求解四元数微分方程:
  式中,gx,gy,gz为传感器所测出的值,T为测量周期。从MPU6050获得6个数据,分别是三轴加速度值和三轴角速度值ax,ay,az,gx,gy,gz。可以根据6个原始数据计算出姿势(欧拉角):俯仰角、偏航角、滚动角。最终由四元数方向余弦矩阵与欧拉角的换算关系,可以很方便地将四元数转换成欧拉角。
  本设计使用四元数法求解,降低了CC2541的运算能力需求,简化了设计。
  2    硬件系统设计
  本系统设计基于CC2541及运动处理传感器MPU6050,可在手机端实时显示物体的旋转姿态角。
  2.1  MPU6050接口电路设计
  MPU6050内部集成了3轴MEMS陀螺仪、3轴MEMS加速度计以及一个可扩展的数字运动处理器(Digital Motion Processor,DMP),可用两线式串行总线(Inter-Integrated Circuit,I2C)接口连接一个第三方的数字传感器,比如磁力计。扩展之后可以通过其I2C输出一个9轴的信号。MPU6050与CC2541接口电路设计如图1所示。
  VCC接3.3 V,GND接地,SCL I2C的时钟接CC2541 P1_5引脚,SDA I2C数据口接P1_6引脚。XDA,XCL可不接,AD0 MPU6050地址选择接地,INT mpu6050中断脚接P0_0。
  2.2  CC2541控制电路设计
  CC2541主控电路如图2所示,32,33脚外接32.768 KHz低频手表晶振,22,23脚接32 MHz的高频晶振。10,39,21,24,27,28,29,31为电源引脚,25,26脚通过滤波匹配电路接射频天线。
  2.3  电源电路
  电源电路(见图3)采用3端稳压芯片AMS1117,为系统提供3.3 V的工作电压。C1,C2,C3,C4为退耦电容。
  3    软件设计
  3.1  CC2541蓝牙程序
  本设计采用MPU6050内部自带的DMP,通过加载MPU6050的嵌入式运动驱动库,方便获取欧拉角。通过I2C接口读取到MPU6050的6个数据,经过姿态融合后就可以得到 Pitch,Roll,Yaw角。
  在蓝牙协议栈的KFD_ACCEL_MPU6050_READ_EVT任务事件时,调用KeyFobDemo_mpu6050Read()函数直接读取数据。每隔10 ms读取一次MPU6050的DMP输出,并保存到全局变量中:
  static short mpu6050_gyro[3] ={0,0,0}; static short mpu6050_accel[3]= {0,0,0};
  static short mpu6050_quat[4] = {0,0,0,0};//四元数存放数组
  3.2  Android  APP设计
  启动APP,通过蓝牙连接CC2541后,将执行函数:
  Constans.mBluetoothLeService.readCharacteristic(characteristic) 。启动一个读取操作,触发回调函数:
  private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver()
  该函数处理读取到的 20 个字节数据,并显示图形。
  getblePacket(byte[]packet)中的packet数组共20个字节,其中都是16位表示,高位在后:
  packet[0]~packet[1]是加速度的ax
  packet[2]~packet[3]是加速度的ay
  packet[4]~packet[5]是加速度的az
  packet[6]~packet[7]是陀螺仪的gx
  packet[8]~packet[9]是陀螺仪的gy packet[10]~packet[11]是陀螺儀的gz packet[12]~packet[19]是mpu6050的dmp输出的四元数
  计算出欧拉角: float []data = new float[3];
  调用函数实现立方体显示:
  mGLSurfaceView.onMpu6050Sensor(data[2], data[1], data[0]); 参数为欧拉角。APP端显示界面如4图所示,
  4    结语
  本设计基于CC2541及MPU6050,实现了蓝牙魔方设计。提出的欧拉角获取方法简单、实用,并能够以图形方式显示在手机端,有一定实用价值。
其他文献
女性心理学在批判心理学理论男性偏差的同时,站在女性的立场上提出了女性心理学应该由女性来研究的另一种不利于其发展的性别极端。这表明在研究中做到价值中立,促进“没有女性
针时指数失效模型研究了单参数指数分布的Bayes估计。确定了谊分布的可信区间:同时,讨论了单参数指数分布与两参数指数分布的Bayes风险问题.
加强校企合作,走产学研结合之路是应用型本科教育的要求,是适应市场的要求.文章结合河西学院生物工程专业教学的实践,阐述了应用型本科院校加强校企合作的现实意义及重要性,提出只
目的:探讨质量改进活动对降低癫痫患儿延续性护理失访率的效果。方法:2018年3月-2018年12月某儿童医院神经内科质量改进小组,开展了以降低癫痫患儿延续性护理失访率为课题的
2019年高考语文全国卷论述类文本阅读试题选取思路清晰条理的文艺评论作为选文,紧扣文体特点命制相应题目,通过平行转述、错位转述、变格转述等多样化的转述方式,考查考生对
第二语言习得是一个非常复杂的心理过程,涉及到许多相关因素。自该学科诞生以来,学者们从应用语言学、心理语言学、神经语言学、社会语言学等不同领域,从横断面和纵深面对第