0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

零知实验室 来源:PCB56242069 作者:PCB56242069 2025-02-20 16:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

零知增强板I2C通信

本教程将指导您如何使用零知增强板与MPU6050六轴传感器模块进行交互。MPU6050是一款含有三轴加速度计和三轴陀螺仪的传感器,能够测量设备的倾斜情况和旋转运动。

通过本教程,您将学习如何读取并处理这些数据,为您的项目添加运动检测和姿态控制功能。

一、硬件连接

在开始编程之前,首先需要正确连接MPU6050模块到零知增强板。

1.所需材料:

零知增强板

MPU6050六轴传感器模块

跳线若干

2.硬件连接示意图:

MPU6050模块的SCL和SDA分别连接到零知增强板的21、20号引脚

零知增强版 MPU6050
3.3V VCC
GND GND
21/SCL SCL
20/SDA SDA

wKgZPGe23x2ALOiIAASN-2GeUno622.png

完成以上步骤后,硬件连接就完成了。

二、代码实现

接下来,我们将编写代码来读取MPU6050的数据。

准备工作:

1.打开零知开源平台,选择零知增强板开发板

2.选择电脑连接的串口,验证代码并上传

wKgZPGe23yeAPoWXAAP_lOyOgCs823.png

完整源代码:

/* I2C interface MPU6050 demo
* powered by www.lingzhilab.com
*/
#include "MPU6050.h"
 
// 默认I2C地址为 0x68
// AD0 low = 0x68
// AD0 high = 0x69
 
MPU6050 accelgyro;
 
int16_t ax, ay, az;//三轴加速度值
int16_t gx, gy, gz;//三轴陀螺仪值
 
float nax,nay,naz;
float ngx,ngy,ngz;//转换后的实际值
 
#define LED_PIN LED_BUILTIN
bool blinkState = false;
 
void setup() {
 
    Serial.begin(9600);
 
    // MPU6050初始化设置
    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();
 
    // verify connection
    Serial.println("Testing device connections...");
	if(accelgyro.testConnection()){
		Serial.println("MPU6050 connection successful");
	}else{
		Serial.println("MPU6050 connection failed");
	}
    
    //使用LED进行指示
    pinMode(LED_PIN, OUTPUT);
	
//	accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度参数
//	accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺仪
}
 
void loop() {
    // 获取原始的数值:三轴加速度值和三轴陀螺仪数值
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
 
    // 分别获取
    //accelgyro.getAcceleration(&ax, &ay, &az);
    //accelgyro.getRotation(&gx, &gy, &gz);
 
    // 显示打印
    Serial.print(" acc:t");
    Serial.print(ax); Serial.print("t");
    Serial.print(ay); Serial.print("t");
    Serial.print(az); Serial.print("t");
	Serial.print("t gyro:t");
    Serial.print(gx); Serial.print("t");
    Serial.print(gy); Serial.print("t");
    Serial.println(gz);
	
	//实际数值转换
	accelgyro.readNormalizeAccel(&nax,&nay,&naz);
	accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
	Serial.print("Normalize acc:t");
    Serial.print(nax); Serial.print("t");
    Serial.print(nay); Serial.print("t");
    Serial.print(naz); Serial.print("t");
	Serial.print("t Normalize gyro:t");
    Serial.print(ngx); Serial.print("t");
    Serial.print(ngy); Serial.print("t");
    Serial.println(ngz);
 
    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
 
    delay(300);
}

三、实验结果

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

wKgZO2e23x6AVWFKAAA7RPeM1dY315.png

结果分析:
上传代码并打开串口监视器后,将看到加速度计和陀螺仪的原始数据以及归一化后的数据。

原始数据:

原始数据显示了MPU6050直接读取的数值,这些数值是传感器内部ADC转换后的数字量。

归一化数据:

归一化数据是将原始数据转换为实际的物理量(加速度单位为g,陀螺仪单位为度/秒)。这些数据更直观,便于进行后续的处理和分析。

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

完整工程参考:

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2574

    文章

    54382

    浏览量

    786128
  • 运动检测
    +关注

    关注

    0

    文章

    40

    浏览量

    12807
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源——STM32F407VET6驱动SHT41温湿度传感器完整教程

    目基于STM32F407VET6增强板,实现SHT41高精度温湿度传感器的驱动和数据采集。SHT41是Sensirion推出的新一代数字温湿度
    发表于 07-10 12:01

    G-sensor运动检测功能开源:解锁硬件创新的无限可能!

    G-sensor(重力传感器)作为感知加速度变化的核心技术,如今其运动检测功能的完整源码全面开放。开发者可深入内核算法,定制灵敏度和检测模型,从智能设备到工业监测,这项开源技术为硬件创
    的头像 发表于 07-07 10:13 846次阅读
    G-sensor<b class='flag-5'>运动检测</b>功能<b class='flag-5'>开源</b>:解锁硬件创新的无限可能!

    小安派BW21-CBV-Kit入门教程之DMP6读取MPU6050数据

    本示例将演示使用 DMP6 从 MPU6050 获取数据。MPU6050 配备了数字运动处理 (DMP),用于处理运动算法的计算,如转换为
    的头像 发表于 06-19 14:20 648次阅读
    小安派BW21-CBV-Kit入门教程之DMP6读取<b class='flag-5'>MPU6050</b>数据

    开源——STM32F103RBT6驱动 ICM20948 九传感器及 vofa + 上位机可视化教程

    STM32F1本教程使用标准板(STM32F103RBT6)通过I2C驱动ICM20948九传感器实现姿态解算,并通过串口将数据实时
    发表于 06-09 14:53

    开源——STM32F103RBT6驱动 ICM20948 九传感器及 vofa + 上位机可视化教程

    本教程使用标准板(STM32F103RBT6)通过I2C驱动ICM20948九传感器实现姿态解算,并通过串口将数据实时发送至VOFA
    的头像 发表于 06-09 14:01 1215次阅读
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>开源</b>——STM32F103RBT6驱动 ICM20948 九<b class='flag-5'>轴</b><b class='flag-5'>传感器</b>及 vofa + 上位机可视化教程

    经验——STM32F4驱动ICM20948 九运动传感器 + VOFA上位机可视化验证与抗漂移优化

    系统中,ICM20948作为高性能9运动传感器(3加速度+3陀螺仪+3磁力计),理论上能
    发表于 06-06 10:03

    开源——STM32F1驱动MAX31865读取三线PT100温度传感器

    ;quot;Status: OK",异常显示具体错误)2. 串口输出内容 打开开源平台的串口监视(波特率115200),将看到以下格式数据和
    发表于 05-23 18:27

    STM32F103对ADS1298和MPU6050同时采集数据会出现ADS1298数据丢失

    你好,请问我用STM32F103对ADS1298和MPU6050同时采集数据为何会出现ADS1298数据丢失,而单独对期中任何一个传感器单独进行数据采集就没有任何问题
    发表于 03-22 17:29

    关于mpu6050问题

    我很早之前买了一个,我现在使用这个mpu6050,我在调mpu6050数据时候,数据抖动特别大,我没动这个mpu6050,它自己都有抖动,然后本来放在水平,他的机械中值是2.5,但是我水平抖动后,机械中值突然变成了-258,这是
    发表于 03-09 17:17

    mpu6050航向角漂移很严重的原因及解决方法

    mpu6050航向角漂移很严重的原因及解决方案
    的头像 发表于 03-01 11:47 4198次阅读

    开源——ESP8266+MPU6050 实现运动姿态检测

    ESP8266的I2C通信        在运动姿态检测、机器人平衡控制、VR头戴设备等应用中,MPU6050(三
    的头像 发表于 02-20 17:54 2808次阅读
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>开源</b>——ESP8266+<b class='flag-5'>MPU6050</b> <b class='flag-5'>实现</b><b class='flag-5'>运动</b>姿态<b class='flag-5'>检测</b>

    开源——ESP8266+MPU6050 实现运动姿态检测

    ESP8266学习教程 在运动姿态检测、机器人平衡控制、VR头戴设备等应用中,MPU6050(三
    发表于 02-20 17:44

    开源——MPU6050传感器模块实践教程,轻松实现运动检测

    本帖最后由 PCB56242069 于 2025-2-20 17:27 编辑 ​增强板I2C通信 本教程将指导您如何使用增强板与
    发表于 02-20 15:53

    STM32单片机+MPU6050设计一个电子水平仪

    本项目基于STM32F103C8T6单片机设计一款电子水平仪。STM32F103C8T6作为一种性能强大的微控制,具有较高的计算能力和丰富的外设接口,能够满足项目对实时数据处理和显示控制的需求。该单片机将与MPU6050传感器
    的头像 发表于 01-09 11:14 2622次阅读
    STM32单片机+<b class='flag-5'>MPU6050</b>设计一个电子水平仪

    MPU6050读取数据有问题

    在调试MPU6050时读取原始数据只有X在变化,Y和Z的数据一直没有变化,已经调试两天了,这个是读取的数据
    发表于 12-09 10:40