在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用第三方開源庫驅動MPU6050模塊

CHANBAEK ? 來源:魚香ROS ? 作者:小魚 ? 2023-07-13 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

你好,我是愛吃魚香ROS的小魚。上一節我們安裝好了MPU6050的三方庫,這一節我們嘗試使用該庫將我們板子上的IMU模塊驅動起來。

教程所使用硬件平臺為MicroROS學習板V1.0.0,可點擊閱讀原文購買及查看詳情

圖片

一、MPU6050介紹

首先我們了解下MPU6050模塊,從外觀看,長這個樣子

圖片

MPU6050 為全球首例集成六軸傳感器的運動處理組件,內置了運動融合引擎,用于手持和桌面的應用程序、游戲控制器、體感遙控以及其他消費電子設備。它內置一個三軸 MEMS 陀螺儀、一個三軸 MEMS 加速度計、一個數字運動處理引擎(DMP)以及用于第三方的數字傳感器接口的輔助 I2C 端口(常用于擴展磁力計)。當輔助 I2C 端口連接到一個三軸磁力計,MPU6050 能提供一個完整的九軸融合輸出到其主 I2C 端口。

在我們板子上的位置是這里

圖片

二、調用開源庫驅動

新建工程example06_mpu6050

圖片

2.1 添加依賴

修改platformio.ini

[env:featheresp32]
platform = espressif32
board = featheresp32
framework = arduino
lib_deps = 
    https://ghproxy.com/https://github.com/rfetick/MPU6050_light.git

2.2 復制樣例程序

該開源庫作者提供了開源庫的使用方式,將.pio/libdeps/featheresp32/MPU6050_light/examples/GetAllData/GetAllData.ino復制到main.cpp中。

/* Get all possible data from MPU6050
 * Accelerometer values are given as multiple of the gravity [1g = 9.81 m/s2]
 * Gyro values are given in deg/s
 * Angles are given in degrees
 * Note that X and Y are tilt angles and not pitch/roll.
 *
 * License: MIT
 */

#include "Wire.h"
#include < MPU6050_light.h >

MPU6050 mpu(Wire);

unsigned long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  
  byte status = mpu.begin();
  Serial.print(F("MPU6050 status: "));
  Serial.println(status);
  while(status!=0){ } // stop everything if could not connect to MPU6050
  
  Serial.println(F("Calculating offsets, do not move MPU6050"));
  delay(1000);
  mpu.calcOffsets(true,true); // gyro and accelero
  Serial.println("Done!n");
  
}

void loop() {
  mpu.update();

  if(millis() - timer > 1000){ // print data every second
    Serial.print(F("TEMPERATURE: "));Serial.println(mpu.getTemp());
    Serial.print(F("ACCELERO  X: "));Serial.print(mpu.getAccX());
    Serial.print("tY: ");Serial.print(mpu.getAccY());
    Serial.print("tZ: ");Serial.println(mpu.getAccZ());
  
    Serial.print(F("GYRO      X: "));Serial.print(mpu.getGyroX());
    Serial.print("tY: ");Serial.print(mpu.getGyroY());
    Serial.print("tZ: ");Serial.println(mpu.getGyroZ());
  
    Serial.print(F("ACC ANGLE X: "));Serial.print(mpu.getAccAngleX());
    Serial.print("tY: ");Serial.println(mpu.getAccAngleY());
    
    Serial.print(F("ANGLE     X: "));Serial.print(mpu.getAngleX());
    Serial.print("tY: ");Serial.print(mpu.getAngleY());
    Serial.print("tZ: ");Serial.println(mpu.getAngleZ());
    Serial.println(F("=====================================================n"));
    timer = millis();
  }

}

2.3 修改代碼

1.修改波特率 9600->115200

2.修改IO地址 Wire.begin();->Wire.begin(18, 19);

修改完后代碼,并附上小魚對代碼的注釋講解

#include "Wire.h"          // 導入I2C相關頭文件
#include < MPU6050_light.h > // 導入MPU6050庫

MPU6050 mpu(Wire); // 新建MPU6050對象mpu

unsigned long timer = 0;

void setup()
{
  Serial.begin(115200);
  Wire.begin(18, 19); // 初始化I2C,設置sda引腳為GPIO18,SCL引腳為GPIO19

  byte status = mpu.begin(); // 檢測IMU模塊狀態
  Serial.print(F("MPU6050 status: "));
  Serial.println(status);
  while (status != 0)
  {
  } // stop everything if could not connect to MPU6050

  Serial.println(F("Calculating offsets, do not move MPU6050"));
  delay(1000);
  mpu.calcOffsets(true, true); // gyro and accelero 校準
  Serial.println("Done!n");
}

void loop()
{
  mpu.update();

  if (millis() - timer > 1000)
  { // print data every second
    Serial.print(F("TEMPERATURE: "));
    Serial.println(mpu.getTemp()); // 溫度
    Serial.print(F("ACCELERO  X: "));
    Serial.print(mpu.getAccX()); // X軸加速度
    Serial.print("tY: ");
    Serial.print(mpu.getAccY()); // Y軸加速度
    Serial.print("tZ: ");
    Serial.println(mpu.getAccZ()); // Z軸加速度

    Serial.print(F("GYRO      X: "));
    Serial.print(mpu.getGyroX()); // X軸 角速度
    Serial.print("tY: ");
    Serial.print(mpu.getGyroY()); // Y軸 角速度
    Serial.print("tZ: ");
    Serial.println(mpu.getGyroZ()); // Z軸 角速度

    Serial.print(F("ACC ANGLE X: "));
    Serial.print(mpu.getAccAngleX()); // X軸角加速度
    Serial.print("tY: ");
    Serial.println(mpu.getAccAngleY()); // Y軸角加速度

    Serial.print(F("ANGLE     X: "));
    Serial.print(mpu.getAngleX()); // X角度
    Serial.print("tY: ");
    Serial.print(mpu.getAngleY()); // Y角度
    Serial.print("tZ: ");
    Serial.println(mpu.getAngleZ()); // Z角度
    Serial.println(F("=====================================================n"));
    timer = millis();
  }
}

三、編譯測試

保存代碼,編譯下載到開發板。打開串口監視器,查看結果。

圖片

結果

圖片

四、總結

本節我們通過調用開源庫實現了對IMU傳感器的的調用,如果你對該庫感興趣,可以隨時到.pio/libdeps/featheresp32/MPU6050_light/src/MPU6050_light.h查看源碼

class MPU6050{
  public:
    // INIT and BASIC FUNCTIONS
 MPU6050(TwoWire &w);
    byte begin(int gyro_config_num=1, int acc_config_num=0);
 ...

  private:
 ...
};

可以看到,這里是通過面向對象的方式將MPU6050封裝成了一個類,我們使用的時候也是通過實例化后使用的,所以下一節我們將學習如何在我們的工程里使用面向對象的方式進行封裝。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2564

    文章

    52834

    瀏覽量

    765805
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1539

    瀏覽量

    127479
  • 學習板
    +關注

    關注

    0

    文章

    46

    瀏覽量

    12362
  • MPU6050
    +關注

    關注

    39

    文章

    310

    瀏覽量

    72957
  • ROS
    ROS
    +關注

    關注

    1

    文章

    286

    瀏覽量

    17665
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    proteus第三方元器件

    本帖最后由 eehome 于 2013-1-5 09:59 編輯 網上找的,_proteus第三方元器件。解壓后直接安裝。
    發表于 12-05 08:23

    如何把第三方加到PROTEUS中?

    新手求教,弱弱的問下,下了一個第三方,說是要先安裝,再添加路徑,可是我下來的第三方沒有看到安裝文件啊。還望指教如何添加!
    發表于 06-15 22:32

    Proteus 第三方元件

    第三方元件,基本包含大部分常用元件的,分享給大家。
    發表于 04-16 22:06

    第三方dll調用問題!!!

    第三方dll,沒有.h,labview怎么實現調用,dll可以用VS打開,類說明也有
    發表于 05-11 09:14

    proteus第三方元件

    proteus第三方元件
    發表于 05-26 10:44

    下載python第三方

    python第三方的下載
    發表于 07-02 13:12

    怎樣去調用一個第三方驅動

    怎樣去調用一個第三方驅動呢?如何用IIC驅動Terawins的圖像處理芯片T613呢?
    發表于 03-04 06:59

    鴻蒙開源第三方組件資料合集

    1、鴻蒙開源第三方組件——日志工具組件Timber_ohosTimber_ohos是一個帶有小型可擴展API的日志工具組件,它可以給開發者提供統一的API接口,來記錄不同類型的日志,幫助開發者管理
    發表于 03-23 09:53

    使用MPU6050開源將板子上的IMU模塊驅動起來

    連接到一個軸磁力計,MPU6050 能提供一個完整的九軸融合輸出到其主 I2C 端口。  二、調用開源驅動  新建工程example06
    發表于 03-28 14:46

    Arduino與MPU6050的通信

    為避免糾纏于電路細節,我們直接使用集成的MPU6050模塊MPU6050的數據接口用的是I2C總線協議,因此我們需要Wire程序的幫助來實現Arduino與
    發表于 11-07 14:25 ?8210次閱讀
    Arduino與<b class='flag-5'>MPU6050</b>的通信

    移動應用第三方自動檢測和分類

    移動應用中,廣泛使用第三方來幫助開發和增強應用功能.很多關于移動應用分析以及訪問控制的研究工作,需要在分析之前對第三方進行檢測、過濾或者對其進行功能分類.當前,大部分研究工作都以使
    發表于 12-29 14:35 ?0次下載

    MPU6050簡介

    MPU6050簡介什么是MPU6050MPU6050的特點MPU6050框圖MPU6050初始化MPU6050—DMP使用介紹
    發表于 12-06 11:51 ?78次下載
    <b class='flag-5'>MPU6050</b>簡介

    MPU6050教程開源分享

    電子發燒友網站提供《MPU6050教程開源分享.zip》資料免費下載
    發表于 06-25 15:18 ?11次下載
    <b class='flag-5'>MPU6050</b>教程<b class='flag-5'>開源</b>分享

    MPU6050運動跟蹤設備開源分享

    電子發燒友網站提供《MPU6050運動跟蹤設備開源分享.zip》資料免費下載
    發表于 06-29 14:57 ?7次下載
    <b class='flag-5'>MPU6050</b>運動跟蹤設備<b class='flag-5'>開源</b>分享

    學會安裝第三方開源

    你好,我是愛吃魚香ROS的小魚。秉承著拒絕重復造輪子的ROS精神,本節我們學習如何在我們的工程里安裝第三方開源
    的頭像 發表于 07-13 14:35 ?1331次閱讀
    學會安裝<b class='flag-5'>第三方</b><b class='flag-5'>開源</b><b class='flag-5'>庫</b>
    主站蜘蛛池模板: 欧美网站在线 | 亚洲涩色 | 色中色资源 | 国产又粗又大又爽又免费 | 久久综合九色综合97婷婷群聊 | 欧美午夜精品久久久久久黑人 | 四虎国产精品永久在线看 | 中文字幕在线色 | 免费观看在线观看 | 婷婷亚洲综合五月天在线 | 欧美日韩不卡码一区二区三区 | 国产精品电影一区 | 天天操天天干天天 | 国产www色 | 国产无套视频在线观看香蕉 | 黄色录像大全 | 色色色色色色色色色色色色 | 美女视频大全美女视频黄 | avtt天堂网永久资源 | 男人的天堂免费网站 | 天天av天天翘天天综合网 | 免费在线观看一区二区 | 妖精视频亚洲 | 黄色免费在线网址 | 天天摸天天做天天爽 | 中文天堂最新版在线中文 | 免费手机黄色网址 | 久久久午夜精品 | 国产伦精品一区二区三区免 | 久久欧洲视频 | 狠狠色丁香久久综合婷婷 | 特色毛片| 天天干天天干天天色 | 特黄特黄一级高清免费大片 | 性欧美xxx 不卡视频 | 久久精品99无色码中文字幕 | 国产精品29页 | 波多野结衣在线视频观看 | 国模视频一区二区 | 在线二区| 久久本道综合色狠狠五月 |