ESP32 Inertial Measurement Unit (IMU)
ESP32 慣性元件 Inertial Measurement Unit (IMU)
系統方塊圖
MPU6050_DMP6_Teapot程式碼
MPU6050_DMP6_Teapot程式碼功能
- 通過include相應的函式庫(I2Cdev.h 和 MPU6050_6Axis_MotionApps_V6_12.h)來設置 MPU6050 模組
- 初始化 I2C 通信和串口通信
- 測試 MPU6050 模組的連接狀態
- 初始化 DMP(Digital Motion Processor)並校準 MPU6050 模組的加速度計和陀螺儀
- 啟用 DMP 功能,並設置中斷監聽以檢測新的數據包
- 在主循環(loop)中讀取 MPU6050 的數據包,根據需要處理數據,例如顯示四元數、歐拉角、加速度等
- 根據需求,將數據以不同的格式輸出,例如 InvenSense Teapot demo 格式,並通過 LED 燈的閃爍來指示模組的活動狀態
MPU Plane程式碼
MPU Plane程式碼功能 通過MPU6050 DMP接收從傳感器獲取的姿態數據,並將其應用於3D飛機模型的模擬,以實現模型根據物體的姿態而旋轉
- include必要的函式庫與變數宣告
- 在setup()函數中,設置視窗大小、燈光和圖形渲染參數,並初始化串口連接
- 在draw()函數中,定義了畫面的渲染邏輯
- 設置背景顏色
- 將3D場景的原點移到視窗中心
- 根據從MPU6050接收到的四元數數據,將3D模型進行旋轉
- 繪製3D飛機模型
- serialEvent()函數是一個串口事件處理函數,當從串口接收到數據時被調用
- 解析從MPU6050接收到的數據包
- 提取四元數數據和相關的姿態角度數據
- 將四元數轉換為歐拉角和偏航-俯仰-翻滾角度
- 輸出數據以進行調試
結果展示
2.Kalman Filter
系統方塊圖
MPU6050_KalmanFliter程式碼
MPU6050_KalmanFliter程式碼功能
- include必要的函式庫與變數宣告
- 在 setup() 函式中,初始化串口通信和 I2C 通信,並設置 MPU6050 感測器,獲取加速度計和陀螺儀的數據,並通過數據計算出初始角度
- 在 loop() 函式中,負責持續更新感測器數據並計算物體的傾斜角度,使用加速度計和陀螺儀數據進行角度計算,並應用 Kalman 和 Complementary 兩種濾波器來獲得較為準確和穩定的角度估計值
- 在 Serial.print() 函式中,負責數據輸出,通過串口輸出計算得到的角度數據,可以在監控式窗看到其計算結果
結果展示