Анализ протокола игрушечного вертолёта на ИК-управлении. Вертолёт с инфракрасным ик управлением

Недавно друг притащил ко мне простенький игрушечный вертолёт:

Управляется он не по радио, а посредством инфракрасных сигналов. На самом вертолёте стоит обычный ДУ-приёмник, а значит используется несущая частота в 36-40кГц, и не составит труда разобраться в структуре сигналов, которые посылает пульт, чем я и решил заняться.

Сразу скажу, что вся эта затея изначально не имела никакого смысла, это просто статья о том, как развлекаются айтишники:)

После анализа сигнала с помощью ДУ-приёмника стало ясно, что используется модифицированный протокол пультов ДУ от Sony, который выглядит примерно так:

В протоколе Sony сначала посылается стартовый сигнал длительностью в 2,4мс, а затем передаются данные, которые кодируются длительностью паузы между сигналами: логический ноль - это 600 микросекунд, логическая единица - 1200 микросекунд.

В протоколе вертолётика отличается только длительность временных интервалов. Стартовый бит - примерно 2мс, ноль - 300 микросекунд, единица - 600 микросекунд. Увы, забыл сделать скриншот временной диаграммы. Таким образом передаются 4 байта. Оставалось только выяснить - за что они отвечают?

Делалось это тупо опытным путём. Выяснилось, что данные передаются старшими битами вперёд, а байты это:

  • Первый - поворот влево-вправо (разница в скорости вращения основных пропеллеров)
  • Второй - движение вперёд-назад (управление пропеллером на хвосте)
  • Третий - тяга вверх (скорость вращения пропеллеров)
  • Четвёртый - положение ручки калибровки поворота, непонятно, зачем оно вообще передаётся
При этом в первых трёх байтах младший бит всегда равен нулю, т.е. значения всегда чётные. Похоже, что сделано это для того, чтобы различать каналы, но наш вертолёт работал только с таким вариантом. Никакой контрольной суммы нет.

Если передать значения 128, 128, 254, 128 (0x80, 0x80, 0xFE, 0x80), то верторёт на полной скорости взлетает вертикально вверх. Плавно изменяя третий байт можно заставить его зависнуть в воздухе на одной высоте. Уменьшаем первый байт - вертолёт поворачивает влево, увеличиваем - вправо. Увеличиваем второй байт - летим вперёд, уменьшаем - назад. Всё достаточно просто, оставалось воспроизвести эти сигналы так, чтобы вертолёт поверил, что им управляет настоящий пульт.

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

Дальше было интересно это как-то использовать, например, управлять им с помощью каких-то необычных устройств. Выбор пал на виимоут и нунчак от Nintendo Wii, тем более там ещё и акселерометры есть. Если кто не в курсе, виимоут подключается к Wii через обычный блютус, соответственно без особых проблем его можно подключить и к компьютеру. Правда, видится он только как неизвестное HID устройство, а не игровой контроллер, но под Windows уже есть утилита, которая умеет с ним работать - GlovePIE.

На скорую руку был написан скрипт для GlovePIE, который позволял с помощью виимоута управлять курсором мыши. Моя же программа читала текущие координаты мыши и посылала данные на роутер, который передавал их в сеть моего умного дома (о ней я писал в другой статье), к которой уже был подключен ДУ-передатчик. Как ни странно, вся эта система работала быстро и стабильно.

Надо сказать, что таким образом управлять вертолётом стало гораздо удобнее, т.к. на родном пульте ручка тяги пружинит и стремится вернуться в первоначальное положение.

Видео этого безумия:

Недавно друг притащил ко мне простенький игрушечный вертолёт:

Управляется он не по радио, а посредством инфракрасных сигналов. На самом вертолёте стоит обычный ДУ-приёмник, а значит используется несущая частота в 36-40кГц, и не составит труда разобраться в структуре сигналов, которые посылает пульт, чем я и решил заняться.

Сразу скажу, что вся эта затея изначально не имела никакого смысла, это просто статья о том, как развлекаются айтишники:)

После анализа сигнала с помощью ДУ-приёмника стало ясно, что используется модифицированный протокол пультов ДУ от Sony, который выглядит примерно так:

В протоколе Sony сначала посылается стартовый сигнал длительностью в 2,4мс, а затем передаются данные, которые кодируются длительностью паузы между сигналами: логический ноль - это 600 микросекунд, логическая единица - 1200 микросекунд.

В протоколе вертолётика отличается только длительность временных интервалов. Стартовый бит - примерно 2мс, ноль - 300 микросекунд, единица - 600 микросекунд. Увы, забыл сделать скриншот временной диаграммы. Таким образом передаются 4 байта. Оставалось только выяснить - за что они отвечают?

Делалось это тупо опытным путём. Выяснилось, что данные передаются старшими битами вперёд, а байты это:

  • Первый - поворот влево-вправо (разница в скорости вращения основных пропеллеров)
  • Второй - движение вперёд-назад (управление пропеллером на хвосте)
  • Третий - тяга вверх (скорость вращения пропеллеров)
  • Четвёртый - положение ручки калибровки поворота, непонятно, зачем оно вообще передаётся
При этом в первых трёх байтах младший бит всегда равен нулю, т.е. значения всегда чётные. Похоже, что сделано это для того, чтобы различать каналы, но наш вертолёт работал только с таким вариантом. Никакой контрольной суммы нет.

Если передать значения 128, 128, 254, 128 (0x80, 0x80, 0xFE, 0x80), то верторёт на полной скорости взлетает вертикально вверх. Плавно изменяя третий байт можно заставить его зависнуть в воздухе на одной высоте. Уменьшаем первый байт - вертолёт поворачивает влево, увеличиваем - вправо. Увеличиваем второй байт - летим вперёд, уменьшаем - назад. Всё достаточно просто, оставалось воспроизвести эти сигналы так, чтобы вертолёт поверил, что им управляет настоящий пульт.

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

Дальше было интересно это как-то использовать, например, управлять им с помощью каких-то необычных устройств. Выбор пал на виимоут и нунчак от Nintendo Wii, тем более там ещё и акселерометры есть. Если кто не в курсе, виимоут подключается к Wii через обычный блютус, соответственно без особых проблем его можно подключить и к компьютеру. Правда, видится он только как неизвестное HID устройство, а не игровой контроллер, но под Windows уже есть утилита, которая умеет с ним работать - GlovePIE.

На скорую руку был написан скрипт для GlovePIE, который позволял с помощью виимоута управлять курсором мыши. Моя же программа читала текущие координаты мыши и посылала данные на роутер, который передавал их в сеть моего умного дома (о ней я писал в другой статье), к которой уже был подключен ДУ-передатчик. Как ни странно, вся эта система работала быстро и стабильно.

Надо сказать, что таким образом управлять вертолётом стало гораздо удобнее, т.к. на родном пульте ручка тяги пружинит и стремится вернуться в первоначальное положение.

Видео этого безумия:

Всем добра!
Вертолет был заказан 16 октября 2015г. Выслана посылка на следующий день, а получена 12.12.2015.
Посылка без трека. Пришла в простом пакете. На удивление коробка не получила повреждений.

Скрин заказа:


Была распродажа, и на тот момент он обошелся примерно в 5$.

Коробочка из приятного на ощупь плотного глянцевого картона.

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






На снимке виден штатный кабель для зарядки вертолета. Вертолет имеет Li аккумулятор 3,7 В емкостью 75 mАh. Заряжается быстро - примерно 15-20 минут. Время полета около 5 минут.


Его можно спокойно заряжать и через USB, если имеется подходящий кабель. У меня подошел кабель от нано-квадрика Syma X12.
Инфракрасный пульт работает от 4-х батареек АА. Винта для закрепления крышки батарейного отсека не оказалось в коробке. Но крышка не выпадает и без него. Батарейки так же в комплекте отсутствуют. На органы управления надеваются небольшие удлинители белого цвета, которые в «походном» состоянии прикреплены на прозрачной крышке.

Вертолет имеет механический выключатель, ИК-приемник, и белый яркий светодиод.



Также видны два мотора, которые вращают винты через шестеренки. Вертолет выполнен по соосной схеме - задний винт бутафорский.

Теперь о полете - это мой первый вертолет, и он был взят на пробу. Пока с управлением совладать тяжеловато. Левый стик отвечает за газ, правый - разворот влево-вправо. На месте практически невозможно зависнуть. Летит он при взлете всегда вперед. Нужна практика, а посадить вертолет без падения очень тяжело. Поэтому у меня такое чувство, что он может умереть раньше, чем научишься им управлять. Не исключено, что дело в не совсем прямых руках. Про пульт можно сказать, что несмотря на ИК связь, в помещении сигнал не теряется, направлять пультом в «муху» необязательно. На улице не проверял - погода пока не летная.
Вот так выглядит во включенном состоянии:


Итого.
Плюсы:
+ маленький размер, тяжело повредить сам вертолет и что-то в помещении.
+ Li аккумулятор
+ яркая подсветка светит вниз
+ удобно переносить весь комплект в пульте
+ хорошая связь на ИК
+ можно заряжать от пульта или от USB (нужен доп. кабель)
Минусы:
- в комплекте нет зарядки от USB, и запасных лопастей
- не найдешь запасных частей, только подбирать или кохозить самому
- невозможно зависнуть на месте
- непросто управлять новичку

Video:


Всем добра!
Вертолет был заказан 16 октября 2015г. Выслана посылка на следующий день, а получена 12.12.2015.
Посылка без трека. Пришла в простом пакете. На удивление коробка не получила повреждений.

Скрин заказа:


Была распродажа, и на тот момент он обошелся примерно в 5$.

Коробочка из приятного на ощупь плотного глянцевого картона.

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






На снимке виден штатный кабель для зарядки вертолета. Вертолет имеет Li аккумулятор 3,7 В емкостью 75 mАh. Заряжается быстро - примерно 15-20 минут. Время полета около 5 минут.


Его можно спокойно заряжать и через USB, если имеется подходящий кабель. У меня подошел кабель от нано-квадрика Syma X12.
Инфракрасный пульт работает от 4-х батареек АА. Винта для закрепления крышки батарейного отсека не оказалось в коробке. Но крышка не выпадает и без него. Батарейки так же в комплекте отсутствуют. На органы управления надеваются небольшие удлинители белого цвета, которые в «походном» состоянии прикреплены на прозрачной крышке.

Вертолет имеет механический выключатель, ИК-приемник, и белый яркий светодиод.



Также видны два мотора, которые вращают винты через шестеренки. Вертолет выполнен по соосной схеме - задний винт бутафорский.

Теперь о полете - это мой первый вертолет, и он был взят на пробу. Пока с управлением совладать тяжеловато. Левый стик отвечает за газ, правый - разворот влево-вправо. На месте практически невозможно зависнуть. Летит он при взлете всегда вперед. Нужна практика, а посадить вертолет без падения очень тяжело. Поэтому у меня такое чувство, что он может умереть раньше, чем научишься им управлять. Не исключено, что дело в не совсем прямых руках. Про пульт можно сказать, что несмотря на ИК связь, в помещении сигнал не теряется, направлять пультом в «муху» необязательно. На улице не проверял - погода пока не летная.
Вот так выглядит во включенном состоянии:


Итого.
Плюсы:
+ маленький размер, тяжело повредить сам вертолет и что-то в помещении.
+ Li аккумулятор
+ яркая подсветка светит вниз
+ удобно переносить весь комплект в пульте
+ хорошая связь на ИК
+ можно заряжать от пульта или от USB (нужен доп. кабель)
Минусы:
- в комплекте нет зарядки от USB, и запасных лопастей
- не найдешь запасных частей, только подбирать или кохозить самому
- невозможно зависнуть на месте
- непросто управлять новичку

Video:


Общее описание

Радиоуправляемый вертолет имеет три канала управления. Благодаря соосной схеме несущего винта, эта модель не требует особых навыков управления и Вы легко сможете освоится с ней. Оригинальная конструкция и небольшой вес модели позволяет вертолету не бояться столкновений с препятствиями. На случай небольших повреждений, в комплект поставки включены запасные лопасти. Управление с помощью хвостового винта, позволяет разнообразить полет модели и значительно расширить ее возможности. Вертолет обладает встроенным аккумулятором, который заряжается непосредственно от передатчика.

Модель управляется по трем каналам: высота полета за счет изменения оборотов двигателей, направление полета по курсу (повороты влево и вправо) и тангаж (полет вперед и назад). Время полной зарядки 25 минут, полетное время составляет до 8 минут.

Описание

  • 3 канала управления;
  • миниатюрный размер;
  • легок в управлении;
  • предназначен для полетов в помещении;
  • отличная устойчивость и изумительная маневренность;

Комплектация

  • ЛА (Вертолет) 3-х канальный;
  • пульт управления;
  • запасные лопасти;
  • запасной хвостовой винт;

Требуется докупить: 6 элементов питания типа АА

Условия эксплуатации

  • Используйте только элементы питания с напряжением не менее 1,5 В. Некачественные батарейки значительно снижают дальность действия аппаратуры.
  • Перед каждым полетом проверяйте радиус действия Вашей аппаратуры. Убедитесь, что аккумуляторная батарея полностью заряжена, а передатчик снаряжен свежими элементами питания.
  • При чистке модели не используйте растворители. Это может привести к повреждению пластиковых деталей.
  • Всегда первым включайте питание передатчика, убедитесь, что ручка газа в положении «минимум» (сдвинута назад), и только после этого можно включать питание модели. Выключение производится ы обратной последовательности. Первым выключается питание модели, и только после этого выключается питание передатчика.

ВНИМАНИЕ: Рекомендуется производить полеты в просторном помещении, модель не предназначена для полетов на улице. Не производите полеты возле скоплений людей, особенно детей, а так же ближе 15 м от приборов, способных нарушить полет управляемых моделей.

Проблема Причина Решение
Индикатор передатчика не светится Элементы питания установлены без соблюдения полярности Установите элементы питания, соблюдая полярность
Элементы питания не достаточно заряжены Замените или зарядите элементы питания
Модель не подчиняется сигналам передатчика Инфракрасный луч не достигает приемника на модели Убедитесь, что инфракрасный луч достигает модели
Слишком сильные воздушные потоки Не используйте модель в местах с сильным воздушным потоком
Модель не набирает достаточную высоту Скорость вращения ротора не достаточна Увеличьте обороты ротора плавным движением ручки газа вверх
Модель не достаточно заряжена Полностью зарядите аккумулятор модели

Меры предосторожности

Внимание!

  • Не позволяйте модели слишком удаляться от Вас. Чем дальше модель, тем труднее правильно оценить ее положение и поведение в полете.
  • Всегда направляйте оптические датчики передатчика непосредственно на модель.
  • Яркий солнечный свет или освещение могут снижать или блокировать передачу сигнала.
  • В период обучения полеты рекомендуется выполнять на небольшой высоте. В случае ошибки в пилотировании можно будет просто убрать газ.
  • Минимальное помещение для полетов 4х4х3 метра. Избегайте сквозняков и направленных потоков воздуха.

ВАЖНО!

  • В случае непредвиденной аварии немедленно выключите мотор. Никогда не включайте двигатель, если что-либо препятствует вращению роторов.
  • Взлетайте только с ровной гладкой поверхности, медленно и плавно увеличивая обороты.
  • Перед взлетом убедитесь, что вокруг модели нет людей и посторонних предметов, с которыми может столкнуться модель.
  • Никогда не держите модель с вращающимися роторами на уровне лица.
  • Всегда смотрите на модель, не сосредотачивайте внимание на передатчике.
  • Не стойте за предметами, которые могут помешать быстро подойти к модели.
  • Следите за направлением и высотой полета, постоянно компенсируйте отклонение от намеченного направления движения небольшими плавными перемещениями ручек передатчика. Основная ошибка начинающих: резкое дерганье ручек в крайние положения, это приводит к потере управляемости и падению модели.
  • Триммируйте модель перед каждым полетом.
  • Никогда не берите модель за детали роторов.
  • Всегда выключайте питание модели, даже если роторы остановились автоматически.
  • Никогда не закрывайте и не заклеивайте излучатель передатчика.
  • Никогда не наклеивайте на модель никакие посторонние детали, это может повлечь ухудшение приема сигнала.
  • Не позволяйте детям запускать эту модель без присмотра взрослых.
  • Никогда не запускайте модель с поврежденными деталями.
  • Не разбирайте и не вносите изменений в конструкцию вертолета
  • Используйте только элементы с напряжением не менее 1.5 В. Некачественные батарейки значительно снижают дальность действия аппаратуры.
  • Не подвергайте модель и ее компоненты воздействию влаги. Это может привести к повреждению электроники.
  • Перед каждым полётом проверяйте радиус действия Вашей аппаратуры. Убедитесь, что аккумуляторная батарея полностью заряжена, а передатчик снаряжен свежими элементами питания.
  • При чистке модели не используйте растворители. Это может привести к повреждению платиковых деталей.
  • Всегда первым включайте питание передатчика, убедитесь, что ручка газа в положении «минимум» (сдвинута назад), и только после этого можно включать питание модели. Выключение производится в обратной последовательности. Первым выключается питание