<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于STM32的無(wú)線(xiàn)飛鼠(二)

基于STM32的無(wú)線(xiàn)飛鼠(二)

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
在前一篇博客中講了下一些題外話(huà),從本篇開(kāi)始講講重點(diǎn)的知識,說(shuō)說(shuō)無(wú)線(xiàn)飛鼠過(guò)程用到的模塊

細說(shuō)MPU6050

  • 一、 MPU6050簡(jiǎn)介
  • 二、 細節問(wèn)題
  • 三、 相關(guān)技術(shù)
  • 四、 操作步驟
  • 五、 實(shí)現代碼

一、 MPU6050簡(jiǎn)介

MPU6050集成了3軸加速度和3軸陀螺儀,是一款不錯的傳感器模塊,可以用在很多方面,比如:四軸飛控、空中鼠標、兩輪平衡車(chē)、GPS定位方面、游戲機、3D遙控器、平板設備等等,此模塊給我們提供了強大的數據供應,由于將加速度和陀螺儀集成到了一起,免去了組合這兩個(gè)模塊時(shí)之間的軸差問(wèn)題,減少了包裝問(wèn)題,這兩年很火,成了DIY制作者的最?lèi)?ài)。

本文引用地址:http://dyxdggzs.com/article/201611/318472.htm

二、 細節問(wèn)題

在淘寶上買(mǎi)MPU6050時(shí),要注意一下幾點(diǎn):

  1. 查看賣(mài)家給出的介紹信息,是否刻意夸大,結合自己所學(xué)的知識進(jìn)行判斷。比如:當時(shí)在某個(gè)論壇上看到某位大神將的,tb上說(shuō)他們的模塊采用高性能的微處理器和先進(jìn)的動(dòng)力學(xué)解算與卡爾曼動(dòng)態(tài)濾波算法,能夠快速求解出模塊當前的實(shí)時(shí)運動(dòng)姿態(tài)。細心的你就會(huì )發(fā)現它的這種處理器根本就不能提供這種需求,也就是會(huì )所計算不出來(lái)。(STM8是8位的單片機,能做姿態(tài)解算和濾波嗎?)……想了下都有點(diǎn)搞笑.這個(gè)論壇上有詳細的解說(shuō):http://www.geek-workshop.com/thread-5820-1-1.html
  2. 不要讓模塊受到碰撞,否則會(huì )影響他的性能。

三、相關(guān)技術(shù)

MPU6050數據是用IIC進(jìn)行讀取的,So必須學(xué)會(huì )IIC。類(lèi)似于USB協(xié)議,不過(guò)和USB比起來(lái)可以說(shuō)是小巫見(jiàn)大巫。

  1. IIC技術(shù)概述
    IIC 即Inter-Integrated Circuit(集成電路總線(xiàn)),這種總線(xiàn)類(lèi)型是 由飛利浦半導體公司在八十年代初設計出來(lái)的兩線(xiàn)式串行總線(xiàn)
    特點(diǎn):接口線(xiàn)少、器件封裝形式小、通信速率較高
    IIC總線(xiàn)只有兩根雙向信號線(xiàn),如下圖所示:
  2. IIC數據傳輸
    數據有效位的定義:
    ? IIC總線(xiàn)在進(jìn)行數據傳輸時(shí),時(shí)鐘信號為高電平期間,數據線(xiàn)上的數據必須保持穩定,只有在時(shí)鐘線(xiàn)上的信號為低電平期間,數據線(xiàn)的高電平或低電平狀態(tài)才允許變化
    起始和停止條件:
    ? 當SCL線(xiàn)是高電平時(shí),SDA線(xiàn)從高電平向低電平切換,這個(gè)情況視為起始條件。
    ? 當SCL線(xiàn)是高電平時(shí),SDA線(xiàn)有低電平向高電平切換,表示停止條件
    數據傳輸格式:
  3. IIC總線(xiàn)尋址
    IIC總線(xiàn)規定:從機地址有第一個(gè)字節的7位組成
    (想要插入表格,可是在這里不會(huì )用了,直接從world中截張圖算了)

  4. IIC總線(xiàn)編號
    從機的地址有固定部分和可編程部分組成。在一個(gè)系統中可能希望接入多個(gè)相同的從機,從機地址中科編程部分決定了可接入總線(xiàn)該類(lèi)期間的最大數目

    例如:一個(gè)從機的7位尋址中有4為是固定的,3位是可編程的,那個(gè)這時(shí)僅能尋址8個(gè)同類(lèi)期間。

  5. STM32F103中的IIC
    這里主要看下載STM32中,IIC是怎么個(gè)分布:


四、操作步驟

  1. 熟悉MPU6050管腳


    上圖是我自己的模塊,由于連上了線(xiàn),管腳不是很清楚,可以看著(zhù)一張,管腳和清楚的。
  2. 管腳功能介紹

    這里已經(jīng)很詳細的介紹了各個(gè)管腳的功能,在心里就有個(gè)大概了解,在后面編寫(xiě)代碼中就會(huì )明白好多,更多細節可以查看手冊的!

五、實(shí)現代碼

當時(shí)開(kāi)始做這個(gè)東西的時(shí)候參考了原子、野火的各個(gè)例子,再次感謝你們。

代碼塊

MPU初始化:

void MPU_Init(){ANBT_I2C_Configuration();       //IIC初始化delay_ms(30);AnBT_DMP_MPU6050_Init();        //MPU6050 的DMP初始化}

下邊是讀取陀螺儀的數據函數:

void Read_Gyro_data(short *rxbuf){unsigned long sensor_timestamp;unsigned char i = 0;short gyro[3], accel[3], sensors;//陀螺儀存放數組,加速度存放數組,返回狀態(tài)量unsigned char more;long quat[4];       //四元數存放數組dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more);if(sensors & INV_WXYZ_QUAT){rxbuf[0] = gyro[0];rxbuf[1] = gyro[1];rxbuf[2] = gyro[2];printf("rnRead_Gyro_data gyro:rn");for (i = 0; i < 3; i++){printf(" %d ",gyro[i]);}printf("rn");}}

其實(shí)參考了圓點(diǎn)博士的開(kāi)源代碼的,看了下匿名四軸下位機協(xié)議,當初試了下自己獲取的數據是否正確,很不錯的,下面是匿名的協(xié)議:

/** 函數名:Data_Send_Status* 描述  :數據發(fā)送 傳感器  的狀態(tài)根據匿名四軸最新上位機編寫(xiě)的顯示姿態(tài)的程序* 輸入  :Pitch:俯仰角Roll :橫滾角Yaw  :航向角gyro :陀螺儀accel:加速度* 輸出  :* 調用  :*/ void Data_Send_Status(float Pitch,float Roll,float Yaw,int16_t *gyro,int16_t *accel){unsigned char i = 0;unsigned char j = 0;unsigned char _cnt = 0,sum = 0;unsigned int _temp;u8 data_to_send[12] = {0};      //發(fā)送數組,初始化為0data_to_send[_cnt++] = 0xAA;    // 幀頭 170data_to_send[_cnt++] = 0xAA;    //      170data_to_send[_cnt++] = 0x01;    // 功能字 1data_to_send[_cnt++] = 0;       // 長(cháng)度   0//橫滾角_temp = (int)(Roll * 100);   data_to_send[_cnt++] = BYTE1(_temp);  // 高 8 位data_to_send[_cnt++] = BYTE0(_temp);  // 低8位//俯仰角_temp = 0 - (int)(Pitch * 100);data_to_send[_cnt++] = BYTE1(_temp);data_to_send[_cnt++] = BYTE0(_temp);//航向角_temp = (int)(Yaw * 100);data_to_send[_cnt++] = BYTE1(_temp);data_to_send[_cnt++] = BYTE0(_temp);data_to_send[3] = _cnt - 4;     //數據長(cháng)度//和校驗for(i = 0;i < _cnt;i++)sum += data_to_send[i];data_to_send[_cnt++] = sum;data_to_send[_cnt++] = 国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>