Вычисление углов наклона (Roll/Pitch/Yaw) из данных MPU6050 на Arduino Nano в Visuino
Компоненты и материалы
- Arduino Nano R3 (или совместимая плата) — 1 шт.
- Модуль MPU-6050 (акселерометр + гироскоп) — 1 шт. (SparkFun или аналогичный)
- 4 перемычки «мама-мама»
Инструменты и ПО
- Arduino IDE 1.6.7+ (обязательно!)
- Visuino — графическая среда разработки для Arduino (visuino.com)
О проекте
Ранее я показывал подключение MPU9250. Здесь — упрощенный вариант для MPU-6050: только акселерометр и гироскоп, без компаса. Задача — преобразовать ускорения по осям X, Y, Z в 3D-углы ориентации (Roll, Pitch, Yaw) и выводить их в Visuino (Scope, Gauges).
Шаг 1: Подключение MPU-6050 к Arduino Nano (I2C)
| MPU-6050 | Arduino Nano | Провод |
|---|---|---|
| VCC | 5V | Красный |
| GND | GND | Черный |
| SCL | A5 | Желтый |
| SDA | A4 | Зеленый |
Шаг 2: Настройка Visuino
- Запустите Visuino.
- Кликните «Tools» на компоненте Arduino → выберите Arduino Nano.
Шаг 3: Добавление компонентов в Visuino
- Accelerometer Gyroscope MPU6000/MPU6050 I2C (фильтр «6050» в Toolbox) — кидаем в рабочую область.
- Acceleration To Angle (фильтр «angle») — кидаем рядом.
- Соедините выходы Out (X, Y, Z ускорения) компонента MPU6050 с входами In (X, Y, Z) компонента AccelerationToAngle. Visuino разведет провода автоматически.
- Соедините Out (I2C) компонента MPU6050 с In (I2C канал) компонента Arduino.
Шаг 4: Пакетная передача данных (Packet + 3 Binary Analog)
Для вывода углов в Scope/Instruments Visuino упакуем 3 канала в пакет.
- Добавьте компонент Packet (фильтр «packet»).
- В Object Inspector → Head Marker → «...» → введите заголовок пакета, напр.
55 55(два байта 0x55). - Кнопка «Tools» у Packet → Elements → добавьте 3 элемента «Binary Analog».
- Соедините выходы Out (X, Y, Z углы) компонента AccelerationToAngle с входами In трех Binary Analog элементов пакета.
- Соедините Out пакета с In канала Serial[0] компонента Arduino.
Шаг 5: Генерация, компиляция и загрузка
- В Visuino нажмите F9 (или кнопку Generate) — откроется Arduino IDE с сгенерированным кодом.
- В Arduino IDE нажмите Upload.
Шаг 6: Запуск и наблюдение
- В Visuino выберите COM-порт.
- В выпадающем списке «Format:» выберите Packet1.
- Нажмите Connect.
- Вкладка Scope — графики Roll/Pitch/Yaw во времени.
- Вкладка Instruments — аналоговые индикаторы (Gauges) для каждого угла.
Результат
Вы получили работающую систему: MPU-6050 → Arduino Nano → Visuino, визуализирующую 3D-ориентацию в реальном времени. Проект Visuino можно скачать (прикреплен к статье).
Важные замечания
- MPU-6050 выдает углы только по акселерометру (Roll, Pitch). Yaw (рыскание) по акселерометру определить нельзя — нужен гироскоп/магнетометр (MPU9250) или фильтрация (Madgwick/Mahony). Компонент Acceleration To Angle в Visuino считает именно Roll/Pitch.
- Для стабильных показаний рекомендуется калибровка смещения (offsets) MPU-6050.
- Visuino — платный софт (есть trial), но для обучения и простых проектов очень удобен.
Производственный процесс
- Акселерометры: принцип работы и сферы применения
- Оптимизация высокоточного измерения наклона: основы акселерометров
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Интеграция барометрического датчика BMP180 с Raspberry Pi по I2C
- Передача данных температуры и влажности между двумя Arduino через Firebase
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Цифровой стадиометр на Arduino: отслеживание роста лазерным датчиком VL53L0X
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа
- Умный водяной пистолет с датчиком движения на Arduino Nano