驴友花雕 发表于 2025-6-24 08:39:22

【Arduino 动手做】SEP32获取MPU-6050陀螺加速度和温度数值

MPU-6050 是一个带有 3 轴加速度计和 3 轴陀螺仪的模块。

MPU-6050 模块加速度计陀螺仪温度传感器
陀螺仪测量旋转速度 (rad/s),这是角度位置沿 X、Y 和 Z 轴(滚动、俯仰和偏航)随时间的变化。这允许我们确定对象的方向。

Roll Pitch 偏航角
加速度计测量加速度 (物体速度的变化率)。它感应重力等静态力(9.8m/s2) 或动态力(如振动或运动)进行验证。MPU-6050 可测量 X、Y 和 Z 轴上的加速度。理想情况下,在静态对象中,Z 轴上的加速度等于重力,并且在 X 轴和 Y 轴上应为零。

使用加速度计中的值,可以使用三角函数计算滚动角和俯仰角。但是,无法计算偏航。

我们可以将来自两个传感器的信息结合起来,以获得有关传感器方向的更准确信息。















驴友花雕 发表于 2025-6-24 08:41:46

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值

获取陀螺仪、加速度和温度读数(串行监视器)
项目代码

// Basic demo for accelerometer readings from Adafruit MPU6050

// ESP32 Guide: https://RandomNerdTutorials.com/esp32-mpu-6050-accelerometer-gyroscope-arduino/
// ESP8266 Guide: https://RandomNerdTutorials.com/esp8266-nodemcu-mpu-6050-accelerometer-gyroscope-arduino/
// Arduino Guide: https://RandomNerdTutorials.com/arduino-mpu-6050-accelerometer-gyroscope/

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
Serial.begin(115200);
while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

Serial.println("Adafruit MPU6050 test!");

// Try to initialize!
if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
}
Serial.println("MPU6050 Found!");

mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
Serial.print("Accelerometer range set to: ");
switch (mpu.getAccelerometerRange()) {
case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
}
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
Serial.print("Gyro range set to: ");
switch (mpu.getGyroRange()) {
case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
}

mpu.setFilterBandwidth(MPU6050_BAND_5_HZ);
Serial.print("Filter bandwidth set to: ");
switch (mpu.getFilterBandwidth()) {
case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
}

Serial.println("");
delay(100);
}

void loop() {
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);

/* Print out the values */
Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");

Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");

Serial.println("");
delay(500);
}

驴友花雕 发表于 2025-6-24 08:43:08

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值


驴友花雕 发表于 2025-6-24 08:44:25

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值

在 OLED 显示屏上显示陀螺仪和加速度读数
项目代码

// Basic OLED demo for accelerometer readings from Adafruit MPU6050

// ESP32 Guide: https://RandomNerdTutorials.com/esp32-mpu-6050-accelerometer-gyroscope-arduino/
// ESP8266 Guide: https://RandomNerdTutorials.com/esp8266-nodemcu-mpu-6050-accelerometer-gyroscope-arduino/
// Arduino Guide: https://RandomNerdTutorials.com/arduino-mpu-6050-accelerometer-gyroscope/

#include <Adafruit_MPU6050.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>

Adafruit_MPU6050 mpu;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);

void setup() {
Serial.begin(115200);
// while (!Serial);
Serial.println("MPU6050 OLED demo");

if (!mpu.begin()) {
    Serial.println("Sensor init failed");
    while (1)
      yield();
}
Serial.println("Found a MPU-6050 sensor");

// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for (;;)
      ; // Don't proceed, loop forever
}
display.display();
delay(500); // Pause for 2 seconds
display.setTextSize(1);
display.setTextColor(WHITE);
display.setRotation(0);
}

void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);

display.clearDisplay();
display.setCursor(0, 0);

Serial.print("Accelerometer ");
Serial.print("X: ");
Serial.print(a.acceleration.x, 1);
Serial.print(" m/s^2, ");
Serial.print("Y: ");
Serial.print(a.acceleration.y, 1);
Serial.print(" m/s^2, ");
Serial.print("Z: ");
Serial.print(a.acceleration.z, 1);
Serial.println(" m/s^2");

display.println("Accelerometer - m/s^2");
display.print(a.acceleration.x, 1);
display.print(", ");
display.print(a.acceleration.y, 1);
display.print(", ");
display.print(a.acceleration.z, 1);
display.println("");

Serial.print("Gyroscope ");
Serial.print("X: ");
Serial.print(g.gyro.x, 1);
Serial.print(" rps, ");
Serial.print("Y: ");
Serial.print(g.gyro.y, 1);
Serial.print(" rps, ");
Serial.print("Z: ");
Serial.print(g.gyro.z, 1);
Serial.println(" rps");

display.println("Gyroscope - rps");
display.print(g.gyro.x, 1);
display.print(", ");
display.print(g.gyro.y, 1);
display.print(", ");
display.print(g.gyro.z, 1);
display.println("");

display.display();
delay(100);
}

驴友花雕 发表于 2025-6-24 08:48:55

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值


驴友花雕 发表于 2025-6-24 08:54:23

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值

【Arduino 动手做】ESP32获取MPU-6050陀螺加速度和温度数值
项目链接:https://randomnerdtutorials.com/esp32-mpu-6050-accelerometer-gyroscope-arduino/
项目作者:Random Nerd Tutorials
项目代码:https://randomnerdtutorials.com/esp32-mpu-6050-accelerometer-gyroscope-arduino/



页: [1]
查看完整版本: 【Arduino 动手做】SEP32获取MPU-6050陀螺加速度和温度数值