程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Razor項目所感(上)

Razor項目所感(上)

編輯:C++入門知識

此項目基於Raspberry Pi上的linux平台進行開發,現仍在開發中。項目地址:

 

 

拍攝照片

 

視頻監控

 

 

自建熱點

 

先說一下MPU6050的器件通信,典型通信過程如下,前面為數據內容,後面為寄存器地址:
    1. 0x41 => 0x6B 設定時鐘, X軸時鐘
    2. 0x00 => 0x1B 陀螺儀量程,250°/s
    3. 0x00 => 0x1C 加速度計量程,2g
    4. 0x01 => 0x6B 喚醒
    5. 0x3B~0x48 觀察數據輸出,其中,各數據均為2字節長。 0x3B 加速度X, 0x3D 加速度Y, 0x3F 加速度Z, 0x41 溫度, 0x43 陀螺儀X, 0x45 陀螺儀Y, 0x47 陀螺儀Z
由於我是用的GY86模塊中HMC5883L的數據線接在了MPU6050的從I2C接口上,所以在訪問HMC5883L時要先打開MPU6050的bypass模式。HMC5883L的典型通信過程,格式同上:
    1. MPU6050 0x00 => 0x6A 關閉I2C Master 模式
    2. MPU6050 0x02 => 0x37 打開bypass模式
    3. HMC5883 0x70 => 0x00 Config A
    4. HMC5883 0x20 => 0x01 Config B
    5. HMC5883 0x00 => 0x02 連續輸出
    6. HMC5883 0x03~0x08 觀察數據輸出,其中,各數據均為2字節長。注意,0x03為X軸數據,0x05為Z軸數據,0x07為Y軸數據
以上通信過程已經夠基本使用,但我還不滿足,既然MPU6050可以代勞獲取HMC5883L的數據,為什麼我不用?這樣取數據時更方便,代碼實現更優雅。典型設置過程如下:   
    1. 0x20 => 0x6A 打開I2C Master模式
    2. 0x00 => 0x37 關閉bypass模式
    3. 0x0D => 0x24 設置操作從器件的時鐘及其他
    4. 0x9e => 0x25 設置從器件的操作模式及其地址
    5. 0x03 => 0x26 設置讀取從器件的起始寄存器地址
    6. 0x86 => 0x27 設置讀取從器件寄存器的長度及開關等
    7. HMC5883L寄存器0x03~0x08的數據會保存在MPU6050寄存器0x49~0x54中,並周期更新
若以上步驟後MPU6050可能獲取不到HMC5883的值,重置一下I2C SLV0試試。我當初就是怎麼試都不行,重置了一下,就一直Okay了。

氣壓計MS561101BA的驅動我還沒有搞定,他用的並不是標准I2C,大家可以參考FreeIMU中提供的驅動。

 

 

nRF的通信難點僅在SPI通信協議上,搞定了SPI,nRF就差不多了。之前我用TI的LM4F軟件模擬SPI就一直沒有搞定nRF,反復檢查代碼,甚至找來同學一起看也沒看出道道兒。電賽中被相同的問題絆到後,我才意識到問題所在,初始化操作延時不夠,單片機啟動延時不夠也是一方面。現在,我也只是把代碼安上去了,還沒有測試,在此也就不多說了。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved