GY-521 — модуль с гироскопом, акселерометром и термометром MPU-6050 для Ардуино
Датчики определения положения в пространстве широко используются в мобильных устройствах, а для самоделок чаще всего применяются в квадрокоптерах.
Также, его можно применить в светящемся шлеме! Удобно, не правда ли? Наклонил голову вправо — загорелось правое «полушарие» =) влево — левое, согнул голову в шее — сзади на шлеме высветился стоп-сигнал! Вот только, думаю, моей шеи хватит минут на 5 таких упражнений, потом — коллдаун, в виде боли на неделю обеспечен.
Итак, заказал — прислали, теперь нужно разобраться и продемонстрировать функционал для Вас, уважаемые читатели Муськи.
Пришло с треком, не известно, почему, но в Киеве посылку держали неделю (или это глюки системы треккинга). Дошла чуть менее, чем за три недели. Упаковано в три слоя утеплителя — для амортизации. Сам модуль — внутри запаянного пакетика со штрих-кодом на наклейке:
Размеры платы: 20×16мм. В комплекте два набора штыревых контактов: ровные и загнутые — удобно, не придется гнуть или ровнять.
Большие отверстия не металлизированы, как на картинке в магазине, поэтому, если Вы будите их прикручивать болтами к «минусу», эффекта не будет. Я заливаю их термоклеем, а он, образуя «шапочки», надёжно фиксирует плату.
Отвертия контактов металлизированы отлично, паяются без проблем.
Модуль GY-521 включает понижающий линейный стабилизатор для питания от 5В, красный светодиод питания и обвязку, обеспечивающую работу по протоколу I2C.
Взята из статьи про такой же модуль — cxem.net/mc/mc324.php
MPU-6050 снабжен акселерометром, гироскопом и термометром. Зачем нужен термометр — не понятно, вероятно, его было удобно разместить в этой микросхеме. Или, действительно, есть такие варианты применения, о которых я не знаю, где тебя вертят и греют нужно вертеться в пространстве и знать температуру =)
Или, в процессе интенсивной работы с устройством, оно может нагреваться и нужно контролировать его температуру и нагрузку.
Характеристики:
— 16-битный АЦП,
— напряжение питания 3-5В,
— поддержка протокола «IIC» (может, I2C ?),
— диапазон ускорений: ± 2 ± 4 ± 8 ± 16g,
— диапазон «гиро»: ± 250 500 1000 2000 ° / s,
— покрытие иммерсионным золотом вместо лужения,
— ток при работе последнего примера составил 5.3 мА и 1.2 мА когда устройство не успело стартовать (питание на модуль было подано после выполнения setup() контроллером)
Подключение к Arduino
Для интерфейса I2C у Ардуино имеются контакты A4 (SDA) и A5 (SCL), да-а, это те, которые расположены чёрти-где (на одной плате у меня они были справа от контроллера, на другой с левого края). В коде нужно использовать библиотеку Wire, прочитать о ней можно туточки. Минимальная схема во Fritzing такая:
… а значит у нас уже не 8 лишних штырьков, а целых двенадцать!
Тестирование
InvenSense MPU-6050
June 2012
WHO_AM_I: 68, error = 0
PWR_MGMT_1: 40, error = 0
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 12180, 9468, -9168
temperature: 22.153 degrees Celsius
gyro x,y,z: -462, -5303, -490,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 13204, 8928, -7420
temperature: 22.482 degrees Celsius
gyro x,y,z: 282, -2012, -956,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: -1276, 7932, -16232
temperature: 22.435 degrees Celsius
gyro x,y,z: -1168, 1159, 1258,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 6216, 10604, -12796
temperature: 22.576 degrees Celsius
gyro x,y,z: -2161, 4363, 2176,
Более приятный глазу пример описан в этой статье. Там реализована трансляция положения предмета в реальном времени! Для повторения эксперимента, нужно скачать по ссылкам в конце той статьи:
скетч для Ардуино — GY_521_send_serial (в atmega128 у меня залилось без проблем)
и прогу для 3D-рендеринга ShowGY521Data.
Последнюю нужно запускать в IDE Processing, статья была написана в 2013 году и для нормальной работы, качать лучше версию 1.5.1, в исходнике нужно подправить номер порта:
short portIndex = 1;
в строке 15 вместо 1 поставить порядковый номер COM-порта, но не номер из его имени (у меня, при подключении программатора, появляется один порт «COM15», я исправил на 0, если у Вас, допустим, есть порты «COM8» и «COM10», причем, последний соединён с Ардуино, то ничего исправлять не надо);
myPort = new Serial(this, portName, 38400);
в строке 42 поставить скорость, которая была в скетче для Ардуино — 19200.
Запускаем программу…
видим три объекта, моделирующих гироскоп, акселерометр и нечто «средне».
После определённого времени кручения платой, показания гироскопа сбиваются:это нормально и об этом написано в статье, упомянутой выше.
Примечательно, что если нажать ресет и перезагрузить плату в произвольном положении, то реальное положение в пространстве будет показывать акселерометр, гироскоп же сориентироваться в изначальное положение:Суть этого вяления раскрыта в первом комментарии к этой статье от AndyBig.
Думаю, можно будет реализовать с помощью этого модуля какую-нибудь «неваляшку», шлем обклеивать светодиодами как-то рука не поднимается.
Тестовая установка
, о котором я писал ранее, был пересмотрен, урезан и сокращён (кстати, на этом фото заметно отличие в качестве металлизации отверстий обозреваемой платы и дешевой платы Ардуино):
если отсоединить тентакли шлейф от креплений, то откроются два ряда контактов, у которых нужно «поотламывать половинки», — в результате получится разъем, удобно вставляющийся в отверстия макетной платы. Для пущей надёжности, нужно проклеить корпус, т.к. держаться на одних контактах конструкция не будет.
всё ещё может напугать, но на самом деле бояться нечего:
спаял с обратной стороны контакты, прозвонил их тестером — и можно подключать. Лично моя практика показывает, что лучше потратить пару секунд на предварительную проверку, чем ткнуть «не туда» и спалить девайс… Я так спалил Orange Pi PC =)
Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.
Источник: