Razor_AHRS_5DOF [20180715]: Сборка и прошивка трекера

Для сборки 5DOF трекера понадобятся:

  • Arduino Nano v3.0 или Arduino Pro Micro

  • Модуль верхнего сенсора. Любой из этих вариантов.

  • Модуль нижнего сенсора. Подойдёт GY-521 или GY-9250

  • Маломощный резистор с номиналом 3,0 kOm.

  • 1 … 2 метра жильного кабеля

  • Пара контактных разъёмов. Папа и мама.

  • Кабель мини- или микро USB, из комплекта Ардуино.


Модули сенсоров соединены с Ардуино так:

  • У Arduino Nano использованы контакты: "5V", "GND", "A5 (SCL)", "A4 (SDA)".

  • У Arduino Pro Micro использованы контакты: "VCC", "GND", "3 (SCL)", "2 (SDA)".

Контакт питания Ардуино "5V" или "VCC" следует подключить к контакту "VCC" или "VCC_IN" вашего сенсора. Только не следует подавать 5 вольт на вольтовый вход GY-85 и GY-91 "3V3" или "3.3V". Модуль этого может не пережить!

Остальные три контакта Arduino соединяются с одноименными контактами сенсора.

Соединение можно делать 4х-проводным кабелем длиной до двух метров.

Я выбрал такой вариант:

  • Arduino Nano v3.0

  • Верхний головной (Head) модуль GY-9250

  • Нижний шейный (Neck) модуль GY-521

  • Разъёмы: вилка PLS-4 из комплекта GY-521 и розетка BLS- 4.


Схема соединений:

Нижний модуль GY-521 подключен параллельно верхнему к контактам VCC, GND, SCL, SDA через пару разъёмов BLS-4 и PLS-4. Места пайки вилки PLS-4 залиты клеевым пистолетом. Недостаток этих разъёмов в том, что у них нет ключа, поэтому при подключении следует следить за соответствием контактов. Но вы можете использовать другие разъёмы.

Длина кабеля между модулями должна быть достаточной для свободного изменения ориентации головы при отклонении шеи от вертикали.

К нижнему модулю GY-521 подключен маломощный резистор с номиналом 3kOm или 3,3kOm. Резистор подключен между контактами AD0 и VCC. Благодаря этому I2C адрес нижнего модуля изменяется с 0x68 на 0x69 и скетч в Ардуино может различать верхний и нижний модули. При использовании в качестве нижнего модуля GY-9250 номинал резистора должен быть от 5,1kOm до 6,2kOm. Резистор нужен такого номинала, чтобы напряжение на контакте AD0 не превышало 3,3 В, но было не меньше 2,7 В.

Нижние “Neck” модули, GY-521 или GY-9250,

с подключенными резисторами:

После окончания пайки следует поместить Ардуино, верхний и нижний модули в корпуса, для защиты от замыканий и пыли:

Также нужно предусмотреть крепление верхнего модуля “Head” к голове, а нижнего модуля ”Neck” к шее. Я использовал ободки для волос. Вот что у меня получилось в результате:

Замечание: в результате экспериментов с OpenTrack выяснилось, что крепление нижнего модуля на шею ободком для волос - не очень удачное решение. Ободок постоянно пытается куда-нибудь сместиться, и на его положение на шее влияют повороты самой головы. Поэтому позднее я сделал крепление для нижнего модуля из отрезка толстого жесткого трёхжильного кабеля для трёхфазной проводки, с алюминиевыми проводами. Я изогнул его так, чтобы он свободно лежал на плечах у основания шеи, как короткий шарфик. Нижний модуль ”Neck” закрепил на "шарфике" термоклеем. Теперь модуль ”Neck” зафиксирован в районе 7-8 позвонков, а это уже не шея, а верхняя часть спины. Стало гораздо удобнее. Смещения не зависят от поворотов. Но нужно наклонять не шею, а плечи, то есть смещаться всей верхней половиной корпуса. Очень удобно.


Крепление датчика Neck на термоклее продержалось меньше недели. Теперь держится на винте M3. Загнутые вверх концы - чтобы грудь не царапать, и поправлять за них удобно:

Теперь нужно прошить Ардуино. Для прошивки понадобятся:


Если для вашей платы Ардуино еще не установлен драйвер, установите его. Драйвер обычно можно найти в папке %Arduino%\Drivers, или у производителя платы. После установки драйвера в системе должен появиться новый COM-port. Откройте "Диспетчер устройств". В разделе "Порты (COM и LPT)" найдите присвоенный Ардуино номер COM порта и запомните его. В моём случае это COM4:

Откройте скачанный скетч в среде Arduino. Помните, что в пути к папке "Razor_AHRS_5DOF_Tracker" не должно быть русских букв. В меню "Инструменты" выберите тип платы и номер COM-порта. В моем случае это Arduino Nano с процессором ATmega328P и порт COM4:

Перейдите на страницу файла "Menu.h". В начале страницы находится таблица с номерами вариантов верхних модулей и их краткое описание. Находим нужный номер варианта. В моём случае это вариант 8 “GY-9250 (MPU6500 + AK8963)”:

Сразу за таблицей находим строку

#define SensorVariant 2

и заменяем двойку на номер нашего варианта:

#define SensorVariant 8

Если вы подключили к Ардуино Bluetooth модуль, то найдите строку

#define OUTPUT__HAS_RN_BLUETOOTH 0

и замените значение 0 на 1:

#define OUTPUT__HAS_RN_BLUETOOTH 1

Никаких других изменений в скетче делать не нужно.

Теперь нужно скомпилировать скетч и загрузить прошивку в Ардуино, кнопками [Ctrl+U] или кнопкой [Загрузка]:

Загрузка завершена успешно. Закройте Arduino IDE.

После прошивки следует проверить работоспособность “железа”. Для этого скачайте и утилиту Razor_I2C_scanner: Razor_I2C_scanner

Запустите Razor_I2C_scanner:

Теперь нужно сделать следующее:

[1] - Выбрать COM port.

[2] - Нажать кнопку [Connect]

[3] - При удачном подключении нажать кнопку [Scan]

Видим, что обнаружены 3 I2C устройства: AK8963, MPU6500 и MPU6050 с AD0=1. Также видим, что определены типы модулей: GY-9250 и GY-521 с AD0=1. Значит, монтаж модулей выполнен верно.

Дополнительно на Ардуино светится светодиод на пине 13, если нижний модуль (Neck) распознан (режим 5DOF). Если подключен только верхний модуль, то светодиод на пине 13 погашен (режим 3DOF), это тоже нормальный режим работы трекера. Переключение между режимами 5DOF и 3DOF производится подключением или отключением разъёма нижнего модуля (Neck).

Подключение и отключение нижнего модуля можно делать только при отключенном питании (отключите USB кабель).

В режиме 3DOF отчёт сканера будет таким:

Если ни один из модулей не обнаружен, отчёт сканера будет таким:

И вот мы, наконец, добились правильного отчёта от модулей. Закройте I2C scanner. Теперь мы уверены в правильности сборки и прошивки “железа”. Приступим к калибровке и настройке 5DOF трекера:

Razor_AHRS_5DOF [20180715]: Калибровка и настройка трекера

Скачать скетч: Razor_AHRS_5DOF_Tracker

Razor AHRS 5DOF [20180715]: Самодельный инерционный 5DOF трекер