
技术文章大纲ESP32 MPU6050 OLED 实验实验简介介绍实验目标通过ESP32读取MPU6050传感器的加速度和陀螺仪数据并在OLED屏幕上实时显示适用场景姿态检测、运动追踪、物联网设备监控硬件清单ESP32开发板的主要特性Wi-Fi/蓝牙、GPIO、ADC等MPU6050六轴传感器加速度计陀螺仪的功能与通信方式I²COLED屏幕SSD1306驱动I²C接口的特性与显示优势电路连接ESP32与MPU6050的接线图SCL→GPIO22SDA→GPIO21VCC→3.3VGND→GNDESP32与OLED的接线图SCL→同一GPIO22SDA→同一GPIO21共享I²C总线注意事项I²C地址冲突的解决方法MPU6050默认0x68OLED通常0x3C软件环境配置开发工具Arduino IDE或PlatformIO必需库的安装Adafruit_MPU6050或MPU6050_tockn用于传感器数据读取Adafruit_SSD1306和Adafruit_GFX用于OLED显示ESP32开发板包的安装Arduino IDE中的板管理代码实现// 引入IIC核心库、MPU6050库、OLED显示库 #include Wire.h #include Adafruit_MPU6050.h #include U8g2lib.h // 初始化OLED屏幕IIC版本12864 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset*/ U8X8_PIN_NONE); // 初始化MPU6050传感器 Adafruit_MPU6050 mpu; // 定义姿态数据变量 float pitch, roll, yaw; void setup(void) { Serial.begin(115200); // 启动IIC总线 Wire.begin(21,22); // SDA21, SCL22ESP32默认IIC引脚 // 初始化OLED屏幕 u8g2.begin(); u8g2.clearBuffer(); u8g2.drawStr(0,15,IIC Init Success!); u8g2.drawStr(0,35,MPU6050 Ready); u8g2.sendBuffer(); delay(1000); // 初始化MPU6050 if (!mpu.begin()) { Serial.println(MPU6050初始化失败); while (1) delay(10); // 初始化失败卡死提示 } Serial.println(MPU6050初始化成功); // 设置传感器测量范围 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); mpu.setGyroRange(MPU6050_RANGE_500_DEG); mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); delay(100); } void loop(void) { // 读取MPU6050原始数据 sensors_event_t a, g, temp; mpu.getEvent(a, g, temp); // 姿态角度计算适配追光系统姿态检测 pitch (atan2(a.acceleration.y, a.acceleration.z) * 180.0 / PI); roll (atan2(-a.acceleration.x, sqrt(a.acceleration.y*a.acceleration.y a.acceleration.z*a.acceleration.z)) * 180.0 / PI); // 串口打印数据调试用 Serial.print(俯仰角(Pitch): );Serial.print(pitch);Serial.println( °); Serial.print(横滚角(Roll): );Serial.print(roll);Serial.println( °); Serial.println(-------------------); // OLED屏幕实时显示数据 u8g2.clearBuffer(); u8g2.drawStr(0,15,Pitch:); u8g2.drawNum(50,15,3,abs(pitch)); u8g2.drawStr(80,15,deg); u8g2.drawStr(0,40,Roll:); u8g2.drawNum(50,40,3,abs(roll)); u8g2.drawStr(80,40,deg); u8g2.sendBuffer(); delay(200); // 刷新频率 }校准与优化MPU6050的校准方法静态偏移补偿数据滤波处理如简单移动平均或卡尔曼滤波降低刷新频率以优化显示稳定性实验结果与验证预期输出OLED屏幕实时显示三轴加速度m/s²和角速度rad/s常见问题排查无数据检查I²C地址与接线数据抖动确保传感器放置平稳扩展应用结合Wi-Fi上传数据至云端如MQTT协议增加姿态解算如互补滤波或DMP库实现欧拉角计算与外部设备联动如通过蓝牙发送警报参考资料关键库的GitHub链接Adafruit、Arduino社区数据手册MPU6050寄存器配置说明、SSD1306驱动协议