[Arduino资料] 零知开源——MPU6050六轴传感器模块实践教程,轻松实现运动检测!

[复制链接]
 楼主| lingzhiLab 发表于 2025-2-20 13:46 | 显示全部楼层 |阅读模式
本帖最后由 lingzhiLab 于 2025-2-20 13:47 编辑

#申请原创#
零知增强板I2C通信      
      本教程将指导您如何使用零知增强板与MPU6050六轴传感器模块进行交互。MPU6050是一款含有三轴加速度计和三轴陀螺仪的传感器,能够测量设备的倾斜情况和旋转运动。
     通过本教程,您将学习如何读取并处理这些数据,为您的项目添加运动检测和姿态控制功能。

一、硬件连接      
       在开始编程之前,首先需要正确连接MPU6050模块到零知增强板。
1.所需材料:
零知增强板
MPU6050六轴传感器模块
跳线若干

2.硬件连接示意图:      
       MPU6050模块的SCL和SDA分别连接到零知增强板的21、20号引脚
                           零知增强版   
                        
                            MPU6050   
                        
                        3.3V
                        
                        VCC
                        
                        GND
                        
                        GND
                        
                        21/SCL
                        
                        SCL
                        
                        20/SDA
                        
                        SDA
                        
80b33bcea60b479c995d8bd6b19d1157.png

       完成以上步骤后,硬件连接就完成了。
二、代码实现        
       接下来,我们将编写代码来读取MPU6050的数据。
1.准备工作:
打开零知开源平台,选择零知增强板开发板
选择电脑连接的串口,验证代码并上传

fbdcc591849e4409b06ac4dc5cb8739e.png


2.完整源代码:
  1. /* I2C interface MPU6050 demo
  2. * powered by www.lingzhilab.com
  3. */
  4. #include "MPU6050.h"

  5. // 默认I2C地址为 0x68
  6. // AD0 low = 0x68
  7. // AD0 high = 0x69

  8. MPU6050 accelgyro;

  9. int16_t ax, ay, az;//三轴加速度值
  10. int16_t gx, gy, gz;//三轴陀螺仪值

  11. float nax,nay,naz;
  12. float ngx,ngy,ngz;//转换后的实际值

  13. #define LED_PIN LED_BUILTIN
  14. bool blinkState = false;

  15. void setup() {

  16.     Serial.begin(9600);

  17.     // MPU6050初始化设置
  18.     Serial.println("Initializing I2C devices...");
  19.     accelgyro.initialize();

  20.     // verify connection
  21.     Serial.println("Testing device connections...");
  22.         if(accelgyro.testConnection()){
  23.                 Serial.println("MPU6050 connection successful");
  24.         }else{
  25.                 Serial.println("MPU6050 connection failed");
  26.         }
  27.    
  28.     //使用LED进行指示
  29.     pinMode(LED_PIN, OUTPUT);
  30.         
  31. //        accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度参数
  32. //        accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺仪
  33. }

  34. void loop() {
  35.     // 获取原始的数值:三轴加速度值和三轴陀螺仪数值
  36.     accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  37.     // 分别获取
  38.     //accelgyro.getAcceleration(&ax, &ay, &az);
  39.     //accelgyro.getRotation(&gx, &gy, &gz);

  40.     // 显示打印
  41.     Serial.print(" acc:\t");
  42.     Serial.print(ax); Serial.print("\t");
  43.     Serial.print(ay); Serial.print("\t");
  44.     Serial.print(az); Serial.print("\t");
  45.         Serial.print("\t gyro:\t");
  46.     Serial.print(gx); Serial.print("\t");
  47.     Serial.print(gy); Serial.print("\t");
  48.     Serial.println(gz);
  49.         
  50.         //实际数值转换
  51.         accelgyro.readNormalizeAccel(&nax,&nay,&naz);
  52.         accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
  53.         Serial.print("Normalize acc:\t");
  54.     Serial.print(nax); Serial.print("\t");
  55.     Serial.print(nay); Serial.print("\t");
  56.     Serial.print(naz); Serial.print("\t");
  57.         Serial.print("\t Normalize gyro:\t");
  58.     Serial.print(ngx); Serial.print("\t");
  59.     Serial.print(ngy); Serial.print("\t");
  60.     Serial.println(ngz);

  61.     // blink LED to indicate activity
  62.     blinkState = !blinkState;
  63.     digitalWrite(LED_PIN, blinkState);

  64.     delay(300);
  65. }


三、实验结果         
       将代码验证上传到零知增强板,打开串口监视器,设置波特率为9600。观察测量到的加速计和陀螺仪输出数据
7430c8402a3447c0b554c4ef2923ddce.png

       结果分析:      
       上传代码并打开串口监视器后,将看到加速度计和陀螺仪的原始数据以及归一化后的数据。
原始数据:
原始数据显示了MPU6050直接读取的数值,这些数值是传感器内部ADC转换后的数字量。
归一化数据:
归一化数据是将原始数据转换为实际的物理量(加速度单位为g,陀螺仪单位为度/秒)。这些数据更直观,便于进行后续的处理和分析。

       通过本教程,您已经学会了如何使用零知增强板和MPU6050模块来读取运动数据。这些数据可以用于各种应用,如姿态控制、平衡机器人、运动跟踪等。您可以根据项目需求进一步处理和分析这些数据。

       完整工程参考:通过网盘分享的文件:MPU6050.rar
      链接: https://pan.baidu.com/s/1nHM_Uh29d-DEb4zKxlAoGQ 提取码: kyrc


您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

22

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部