MPU6050 (GY-521): подключение к ESP32 и Arduino

Акселерометр и гироскоп

Шесть осей движения: ускорение и угловая скорость по X, Y, Z. Для балансирующих роботов, измерения наклона и шагомеров.

Как работает

MPU6050 объединяет трёхосевой акселерометр (ускорение и направление силы тяжести) и трёхосевой гироскоп (скорость поворота). Подключается по I2C, адрес 0x68, а если вывод AD0 подтянуть к питанию — 0x69.

Наклон считают по акселерометру: atan2(ay, az). Он точен в покое, но шумит при движении. Гироскоп наоборот: быстрый, но интеграл его показаний «уплывает». Поэтому их объединяют — комплементарным фильтром или встроенным процессором движения (DMP).

Выводы

ВыводНазначение
INTвыход прерывания «данные готовы» или «движение»; для простого чтения не нужен
SCLтактовая линия I2C
SDAлиния данных I2C
VCCпитание
GNDобщий провод

Подключение к ESP32

MPU6050 (GY-521)ESP32
SCLGPIO22
SDAGPIO21
VCC3V3
GNDGND

Схема из примера «MPU6050: шесть чисел».

MPU6050: шесть чисел

Открыть пример целиком
Код скетча
#include <Adafruit_MPU6050.h>

Adafruit_MPU6050 mpu;

void setup() {
  Serial.begin(115200);
  delay(200);

  // begin() не только проверяет датчик, но и будит его. Скетч,
  // написанный без библиотеки и забывший про регистр питания,
  // получит ровно нули — и на столе, и здесь.
  if (!mpu.begin()) {
    Serial.println("MPU6050 не отвечает: проверьте адрес и провода");
    while (true) delay(1000);
  }

  mpu.setAccelerometerRange(MPU6050_RANGE_2_G);
  mpu.setGyroRange(MPU6050_RANGE_250_DEG);
}

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

  // Ускорение библиотека отдаёт в метрах на секунду в квадрате, а не в
  // единицах силы тяжести: делите на 9,81, если привычнее в g.
  Serial.printf("a %.2f %.2f %.2f м/с2   w %.2f %.2f %.2f рад/с   %.1f C\n",
                a.acceleration.x, a.acceleration.y, a.acceleration.z,
                g.gyro.x, g.gyro.y, g.gyro.z, temp.temperature);
  delay(500);
}

В железе

Шина I2C: ESP32 — SDA GPIO21, SCL GPIO22; Arduino Uno — A4 и A5. Модуль крепят жёстко: вибрация от крепления на проводах — это тоже «ускорение».

Частые ошибки

Другие детали