ESP32-S3 控制 MPU6050模块
ESP32-S3 MPU6050模块实验 —— XYZ运动检测
本实验通过 ESP32-S3 与 MPU6050模块 实现对加速度与陀螺仪数据的检测,并在串口监视器输出 XYZ 值。
一、实验名称
MPU6050模块实验
二、接线说明
| MPU6050模块 | ESP32-S3 引脚 |
|---|---|
| VCC | 3V3 |
| GND | GND |
| SCL | 21 |
| SDA | 47 |
三、实验现象
- 程序下载成功后,当 MPU6050 模块检测到运动时,串口监视器输出对应的加速度 (AccelX/Y/Z) 和角速度 (GyroX/Y/Z) 值。
四、注意事项
-
需要导入以下库:
Adafruit_BusIO-1.14.5.zipAdafruit_GFX_Library-1.11.9.zipAdafruit_MPU6050-2.2.6.zip
-
可参考压缩包解压后的 examples 使用方法。
五、完整代码示例
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
#define SCL 21
#define SDA 47
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10); // 等待串口打开
Serial.println("Adafruit MPU6050 test!");
Wire.begin(SDA, SCL);
// 初始化 MPU6050
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) delay(10);
}
Serial.println("MPU6050 Found!");
// 设置运动检测参数
mpu.setHighPassFilter(MPU6050_HIGHPASS_0_63_HZ);
mpu.setMotionDetectionThreshold(1);
mpu.setMotionDetectionDuration(20);
mpu.setInterruptPinLatch(true);
mpu.setInterruptPinPolarity(true);
mpu.setMotionInterrupt(true);
Serial.println("");
delay(100);
}
void loop() {
// 检测到运动中断
if (mpu.getMotionInterruptStatus()) {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// 输出加速度和角速度数据
Serial.print("AccelX:");
Serial.print(a.acceleration.x);
Serial.print(",");
Serial.print("AccelY:");
Serial.print(a.acceleration.y);
Serial.print(",");
Serial.print("AccelZ:");
Serial.print(a.acceleration.z);
Serial.print(", GyroX:");
Serial.print(g.gyro.x);
Serial.print(",");
Serial.print("GyroY:");
Serial.print(g.gyro.y);
Serial.print(",");
Serial.print("GyroZ:");
Serial.print(g.gyro.z);
Serial.println("");
}
delay(10);
}

浙公网安备 33010602011771号