8-900-374-94-44
[email protected]
Slide Image
Меню

Коды ик пультов: Як визначити код пульта ДК PULTI.UA®| Інтернет-магазин Ваш пульт

Содержание

Перехват инфракрасных пультов с помощью Flipper Zero / Хабр

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем.

Предыдущие посты

Как выглядит тестирование электроники Flipper Zero




Как мы делаем корпус Flipper Zero безупречным




Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero




Как выглядит производство корпусов Flipper Zero изнутри




Altium 365 — как GitHub, но для разработки железа. Как мы делаем Flipper Zero




Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы




Делаем отладочную плату для Flipper Zero в Altium




Flipper Zero — план по производству и доставке




[Конкурс завершён] Помогите написать лор для Flipper Zero




Flipper Zero — предфинальные детали для пресс-форм, готовимся к запуску производства




Flipper Zero — в шаге от финальной версии железа




Псс, парень, не хочешь сделать модуль для Flipper Zero?




Flipper Zero — прогресс за сентябрь




Flipper Zero — давайте пилить вместе. Приглашаем разработчиков




Flipper Zero — как выйти на Кикстартер сидя на карантине на даче




Flipper Zero/One — теперь два устройства. Подготовка к Кикстартеру




[Flipper Zero] отказываемся от Raspberry Pi, делаем собственную плату с нуля. Поиск правильного WiFi чипа




Flipper Zero — пацанский мультитул-тамагочи для пентестера

Первый пост



Пульты от телевизоров, кондиционеров, музыкальных проигрывателей передают команды через ИК-порт. Инфракрасный порт во Flipper Zero позволяет рулить всеми ИК-устройствами: перехватывать сигналы пультов и сохранять их на SD-карту, брутфорсить неизвестные коды от бытовой техники и загружать свои коды пультов и новые протоколы.

В статье я покажу:

  • Как устроены инфракрасные приемники и передатчики
  • Какие бывают цифровые сигналы ИК-пультов
  • Перехват и анализ ИК-сигналов
  • Как с помощью Flipper Zero стать инфракрасным властелином


Как работает ИК-порт

Инфракрасное излучение — это невидимое для человека электромагнитное излучение с длиной волны от 0,7 до 1000 мкм. Бытовые пульты дистанционного управления используют ИК-сигнал для передачи данных и работают в диапазоне излучения 0,75..1,4 мкм. Микроконтроллер в пульте мигает инфракрасным светодиодом с определенной частотой — так цифровой сигнал становится ИК-сигналом.


Пульт передает данные пакетами ИК-импульсов

Для приема сигнала используют фотоприемник, который преобразует ИК-излучение в импульсы напряжения — с ними уже можно работать как с цифровым сигналом. Обычно в приемниках установлен темный фотофильтр, пропускающий излучение с нужной длиной волны, чтобы фильтровать помехи.

Как устроен ИК-порт во Flipper Zero

У ИК-порта Flipper Zero стоит специальное темное окошко — оно блокирует помехи от видимого света и пропускает ИК-излучение от пультов. Это помогает выделять полезный ИК-сигнал и убирать засветы видимого света. Именно этот фильтр мы привыкли видеть во всех ИК-портах. За ним уже расположены элементы приемника и передатчика.

Flipper Zero может быть как приемником, так и передатчиком ИК-сигнала.

[Видео] Расположение ИК-порта во Flipper Zero

Сразу за окошком ИК-порта расположена печатная плата. На ней с двух сторон расположено 3 ИК-светодиода — это передатчики сигнала. Их специально 3, чтобы увеличить мощность передачи. На нижней стороне печатной платы расположен фотоприемник TSOP, с помощью которого принимается ИК-сигнал. На выход TSOP выдает цифровой сигнал, который обрабатывается микроконтроллером STM32.

Ниже можно посмотреть интерактивную схему и 3D модель iButton платы, на которой установлены ИК-светодиоды, приемник TSOP, динамик и контакты iButton:


[Кликабельно] Схема и 3D модель платы ИК-порта

Ниже находится интерактивная схема проекта Altium, работающая прямо в теле поста Хабра. Попробуйте переключиться между вкладками SCH, PCB, 3D, BOM. Пока такой oEmbed элемент нельзя создать самостоятельно, но скоро эта функция будет доступна публично через Altium Viewer altium.
com/viewer/

Интерактивная схема и 3D модель платы ИК-порта

Приемник ИК-сигнала во Flipper Zero

Внутри Флиппера стоит цифровой приемник ИК-сигнала TSOP, поэтому он может перехватывать любые сигналы ИК-пультов. Если у вас телефон типа Xiaomi, в котором тоже есть ИК-порт, имейте в виду, что он может ТОЛЬКО передавать сигналы, но не может принимать.

Инфракрасный приемник во Флиппере достаточно чувствительный. Можно ловить сигнал даже стоя сбоку, между пультом и телевизором, не обязательно направлять пульт вплотную к приемнику Флиппера. Это пригождается, когда кто-то переключает каналы, стоя рядом с телевизором, а вы с Флиппером находитесь далеко. Например, когда в кафе бармен переключает телевизор, а вам хочется перехватить управление захватив сигнал.

[Видео] Захват ИК-сигнала

Так как декодинг инфракрасного сигнала происходит программно, потенциально Флиппер поддерживает прием и передачу любых кодов ИК-пультов. В том числе, неизвестных ему протоколов, которые не удалось распознать — в этом случае используется запись и воспроизведение сырого сигнала, без расшифровки.

[Видео] Демонстрация функции обучения: Флиппер захватывает два сигнала переключения каналов и управляет телевизором

Интерфейс сохраненных пультов во Флиппере отображается вертикально — так удобнее держать устройство в руке, направляя ИК-порт в сторону приемника.

Чтобы прочитать ИК-сигнал, нужно направить ИК-порт Флиппера на ИК-окошко пульта. Если вы находитесь не в поле, то сигнал, скорее всего, отразится от какой-нибудь поверхности и попадет на ИК-порт Флиппера, даже если ИК-окошко пульта направлено немного в другую сторону.

Для чтения ИК-сигнала нужно перейти в меню Infrared -> Learn new remote, откуда его можно сохранить как новый пульт. К одному пульту можно добавить несколько сигналов, выбрав нужный пульт в меню Infrared -> Saved remotes. В одном пульте может быть неограниченное число сигналов (кнопок).

Универсальный пульт из Flipper Zero

[Видео] Брутфорсим выключение телевизора в кафе

Flipper Zero можно использовать как универсальный пульт для управления любым телевизором, кондиционером или медиацентром. В этом режиме Флиппер перебирает сигналы всех известных ему кодов всех производителей по словарю, лежащему на SD-карте. Когда пользователь решает выключить телевизор, висящий в ресторане, ему не нужно искать пульт именно от этой модели телевизора. Достаточно нажать кнопку выключения в режиме универсального пульта, и Флиппер будет последовательно посылать команды выключения от всех телевизоров, которые он знает: Sony, Samsung, Panasonic… и так далее. Когда телевизор услышит свой сигнал, он отреагирует и выключится.

Такой перебор занимает время. Чем больше словарь, тем больше потребуется ждать, пока закончится перебор всех сигналов. Узнать, какой именно сигнал распознал телевизор, нельзя, так как у телевизора нет обратной связи.


Режим перебора сигналов по словарю

Чтобы воспользоваться режимом универсального пульта, нужно перейти в меню Infrared -> Universal library и выбрать тип устройства, которым нужно управлять.

Для проверки или редактирования словаря, на SD-карте нужно открыть или создать соответствующий файл. Например, для телевизоров файл словаря содержит примерно следующие строки:

#Имя кнопки  #Протокол  #Адрес  #Команда
POWER        NEC        A:08    C:17
VOL+         NEC        A:08    C:00
VOL-         NEC        A:08    C:01
CH+          NEC        A:08    C:02
CH-          NEC        A:08    C:03
MUTE         NEC        A:08    C:0B
....

Мы планируем поставлять словари вместе с прошивкой и хранить их в отдельном репозитории, куда все пользователи смогут предлагать свои коды и ключи.

Универсальные пульты отключения телевизора

Есть устройства, специально созданные для тех, кого раздражают телевизоры, и они хотят их выключить. В таких устройствах зашита база данных сигналов для выключения телевизоров разных производителей. Принцип работы такой же как у Флиппера: устройство просто перебирает по словарю все сигналы подряд, в надежде, что в какой-то сигнал подойдет. При этом база сигналов обычно захардкожена в прошивку, и ее не просто расширить.


Сравнение устройств отключения телевизоров с Флиппером

  • Кнопкус Артемия Лебедева — простое и красивое устройство в прорезиненном корпусе с одной кнопкой. После нажатия кнопки начинается перебор кодов. К сожалению список сигналов не очень большой, телевизор в офисе и дома не сработал. Дополнить базу данных сигналов в этом устройстве никак нельзя, внутри какой-то нонеймный микроконтроллер, который непонятно как прошивать.
  • TV B GONE — известный старый проект с открытой прошивкой и железом. Сразу 4 мощных ИК-диода делают его очень дальнобойным. Можно добавлять свои коды, но для этого потребуется программатор.

Главное отличие Флиппера в том, что его словарь для перебора хранится на SD-карте и может быть легко обновлен и дополнен. Также пользователи могут создавать свои словари для новых классов бытовой техники и автоматики. При этом Флиппер умеет принимать сигналы, и его можно обучить любым пультам, которых вдруг не нашлось в базе.

Инфракрасный фотоприемник TSOP


Фотоприемник TSOP-75538, используемый во Flipper Zero для приема ИК-сигнала

ИК-приемник во Флиппере — это микросхема TSOP-75338. Этот компонент сам фильтрует сигнал и поддерживает его на одном логическом уровне, усиливая при необходимости. Поэтому TSOP-75338 способен принять даже очень слабый сигнал от маленьких разряженных пультов или отраженный от стен. А встроенный усилитель позволяет всегда получать на выходе микросхемы одинаковые уровни, вне зависимости от силы ИК-сигнала. Это значительно упрощает программную обработку сигнала на стороне процессора.


Плата Flipper Zero, на которой расположен ИК-приемник и передатчик. Схема демонстрирует подключение ИК-приемника TSOP-75538

В схеме питания фотоприемника TSOP-75338 во Flipper Zero стоит RC-фильтр. Он нужен, так как микроконтроллер производит помеху на линиях питания, из-за чего цифровой сигнал на выходе фотоприемника может не соответствовать принимаемому сигналу. Для согласования уровней приемника-TSOP и микроконтроллера STM32 используется диод. На выходе TSOP-а микроконтроллер STM32 уже обрабатывает цифровой сигнал.


Функциональный состав ИК-приемника TSOP-75338:

  • ИК-фильтр
  • ИК-фотоприемник
  • Усилитель с фильтром на конкретную несущую частоту
  • Усилитель с автоматической регулировкой
  • Демодулятор-детектор, выделяющий огибающую

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

Наш приёмник предназначен для демодуляции сигнала с несущей частотой 38 кГц. Большинство пультов работает на несущей частоте 36-38 кГц.

Почему именно частотная модуляция


Цифровой ИК-сигнал накладывается на шумы и суммируется с ним

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

  • Шум в ИК-диапазоне создают многие источники света, так как источником ИК-излучения является выделяемое тепло. Поэтому фоновый шум будет иметь случайный характер. На гифке выше, для наглядности, он изображен как синусоида.
  • Полезный сигнал — пакеты ИК-импульсов, отправляемые пультом. Идеальный пакет импульсов выглядит как ровный меандр. Но такой сигнал возможно увидеть только при полном отсутствии шумов. В реальности меандр всегда будет накладываться на шум и суммироваться с ним.

Частотная модуляция позволяет отличить ИК-сигнал с данными от шума. Когда полезный ИК-сигнал мигает с частотой 38 кГц, то пульсации ИК-частоты видны на фоне непульсирующего излучения. Таким образом фотоприемник может судить о наличии сигнала и отличать его от засвета.

Передатчик ИК-сигнала во Flipper Zero


Схема подключения ИК-передатчика к микроконтроллеру во Флиппере

Передачей ИК-сигнала напрямую управляет микроконтроллер Флиппера STM32. Через внешний транзистор он посылает импульсы на светодиоды. Чтобы повысить мощность ИК-передатчика, используется сразу 3 светодиода вместо одного.


Импульсы на стороне передатчика преобразовываются в инвертированный цифровой сигнал на стороне приемника

Как и в пультах, данные с Flipper Zero передаются пакетами импульсов. В приемнике, из принятых пакетов импульсов, демодулятор формирует огибающие (меандры) и выдает их на выход. Зачастую цифровой сигнал на выходе приемника является инвертированной огибающей.

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

В основном передатчики работают с несущими частотами 30..50 кГц. Этот диапазон несущих частот при разработке первых передатчиков имел наименьший уровень помех для доступной элементной базы. Не путать с частотой самого ИК-излучения, соответствующей длине волны 940 нм (318,93 ТГц).

Анализируем ИК-протоколы с Arduino

Для быстрой проверки и отладки ИК-протоколов мы используем библиотеку IRMP от Arduino. На гитхабе можно найти инструкцию, как собрать устройство для анализа ИК-протоколов.


Схема анализатора ИК-протоколов на базе Arduino IRMP

Собрав все ИК-пульты в офисе, мы убедились, что почти все они имеют разные ИК-протоколы. Но безоговорочно доверять собранному анализатору тоже нельзя. Если ИК-протокол неизвестен, то анализатор на Arduino IRMP может распознавать его как протокол Siemens. Для приема ИК-сигнала мы используем непосредственно плату Флиппера. А многообразие известных ИК-протоколов в библиотеке IRMP позволяет быстрее разрабатывать софт.

[Видео] Анализатор ИК-протоколов на базе Arduino IRMP

Чем различаются ИК-протоколы

Следующие 4 фактора в своих сочетаниях дают разные ИК-протоколы:

  • способ кодирования бита информации
  • состав передаваемых данных
  • порядок передаваемых данных
  • несущая частота модуляции — часто лежит в диапазоне 36. .38 кГц

Способы кодирования бита информации


1. Метод интервалов

Биты кодируются разной

длительностью паузы

после пакета импульсов. Ширина пакетов импульсов одинаковая для “0” и “1″, различается только время паузы между пакетами.


При интервальном кодировании биты различаются только временем паузы между импульсами

2. Кодирование бита данных длительностью

Биты кодируются разной

длительностью пакетов импульсов

. Паузы между пакетами импульсов одинаковые для «0» и «1», различается ширина пакетов импульсов.


При кодировании битов длительностью различается ширина пакета импульсов для «0» и «1»

3. Бифазный метод

Биты кодируются

положением пакета импульсов и паузы

в передаваемом интервале. Длительности пакета импульсов и паузы постоянны. Сигнал разделен на 2 фазы. Логический «0» — первая фаза без импульсов, вторая с импульсами. Логическая «1» — первая фаза с импульсами, вторая без импульсов.


При кодировании битов бифазным методом изменяется положение паузы и пакета импульсов

4. Комбинирование предыдущих и редкие экзотические методы

Состав передаваемых данных:

  • команда управления
  • адрес устройства
  • проверочная информация
  • любая другая сервисная информация

Существуют ИК-протоколы, пытающиеся стать универсальными для нескольких типов оборудования. Наиболее известными являются форматы: RC5 и NEC.

К сожалению, наиболее известные, не значит наиболее встречаемые. Лично я встретил в своем окружении лишь два ИК-пульта с протоколом NEC и ни одного с RC5.

Очень часто производители аппаратуры используют свои собственные ИК-протоколы, даже внутри одних и тех же типов оборудования (например телевизоров). Поэтому часто пульты от разных производителей, а иногда и от разных моделей одного производителя, не могут работать с другими устройствами того же типа.

Список известных нам ИК-протоколов

Protocol Name Details
SIRCS Sony
NEC NEC with 32 bits, 16 address + 8 + 8 command bits, Pioneer, JVC, Toshiba, NoName etc
NEC16 NEC with 16 bits (incl. sync)
NEC42 NEC with 42 bits
SAMSUNG Samsung
SAMSUNG32 Samsung32: no sync pulse at bit 16, length 32 instead of 37
SAMSUNG48 air conditioner with SAMSUNG protocol (48 bits)
LGAIR LG air conditioner
MATSUSHITA Matsushita
TECHNICS Technics, similar to Matsushita, but 22 instead of 24 bits
KASEIKYO Kaseikyo (Panasonic etc)
PANASONIC Panasonic (Beamer), start bits similar to KASEIKYO
MITSU_HEAVY Mitsubishi-Heavy Aircondition, similar timing as Panasonic beamer
RECS80 Philips, Thomson, Nordmende, Telefunken, Saba
RC5 Philips etc
DENON Denon, Sharp
RC6 Philips etc
APPLE Apple, very similar to NEC
RECS80EXT Philips, Technisat, Thomson, Nordmende, Telefunken, Saba
NUBERT Nubert
BANG_OLUFSEN Bang & Olufsen
GRUNDIG Grundig
NOKIA Nokia
SIEMENS Siemens, e. g. Gigaset
FDC FDC keyboard
RCCAR RC Car
JVC JVC (NEC with 16 bits)
RC6A RC6A, e.g. Kathrein, XBOX
NIKON Nikon
RUWIDO Ruwido, e.g. T-Home Mediareceiver
IR60 IR60 (SDA2008)
KATHREIN Kathrein
NETBOX Netbox keyboard (bitserial)
LEGO LEGO Power Functions RC
THOMSON Thomson
BOSE BOSE
A1TVBOX A1 TV Box
ORTEK ORTEK — Hama
TELEFUNKEN Telefunken (1560)
ROOMBA iRobot Roomba vacuum cleaner
RCMM32 Fujitsu-Siemens (Activy remote control)
RCMM24 Fujitsu-Siemens (Activy keyboard)
RCMM12 Fujitsu-Siemens (Activy keyboard)
SPEAKER Another loudspeaker protocol, similar to Nubert
MERLIN Merlin (Pollin 620 185)
PENTAX Pentax camera
FAN FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit
S100 very similar to RC5, but 14 instead of 13 data bits
ACP24 Stiebel Eltron ACP24 air conditioner
VINCENT Vincent
SAMSUNGAH SAMSUNG AH
IRMP16 IRMP specific protocol for data transfer, e. g. between two microcontrollers via IR
GREE Gree climate
RCII RC II Infra Red Remote Control Protocol for FM8
METZ METZ
ONKYO Like NEC but with 16 address + 16 command bits


Смотрим ИК-сигнал осциллографом

[Видео] Захват инфракрасного сигнала с помощью осциллографа

Чтобы увидеть, как выглядит передаваемый ИК-сигнал от пульта, надежнее всего использовать осциллограф. Он не демодулирует и не инвертирует принимаемый сигнал, а отображает его «как есть». Это полезно при отладке. Что должно приходить, я покажу на примере ИК-протокола NEC.


Осциллограмма популярного протокола NEC

При передаче кодированной посылки, в начале передатчик формирует преамбулу, которая представляет собой один или несколько пакетов импульсов. Это позволяет приемнику определить необходимый уровень усиления и фона. Но есть протоколы и без преамбулы, например, Sharp.

Далее данные передаются в виде нулей и единиц, в зависимости от метода кодирования бита. Порядок следования, признак начала, метод кодирования и количество данных определяются протоколом передачи.

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

Команда в NEC, помимо преамбулы, состоит из байта адреса и байта номера-команды. По номеру-команды устройство понимает, что именно нужно выполнять. Байты адреса и номера-команды дублируются инверсными значениями, для проверки целостности передачи. В конце команды дополнительно стоит стоп-бит.

В коде повтора после преамбулы содержится логическая “1” — стоп бит.

Логический “0” и “1” в протоколе NEC определяются интервалами: вначале передается пакет импульсов, после которого идет пауза, задающая значение бита.

Инфракрасный щуп для осциллографа


Осциллограф записывает ИК-сигнал пульта с помощью Silver-bullet

Для захвата ИК-импульсов на осциллографе я использовал самодельный щуп Silver Bullet, придуманный автором программы AnalysIR. Это просто ИК-светодиод и резистор, запаянные в аудио-штекер RCA, который подключен через переходник BNC->RCA к осциллографу. Собирается за пять минут. Все компоненты для сборки такого щупа можно купить в ЧИП и ДИП.


Схема щупа для захвата ИК-сигнала на осциллографе

Когда ИК-излучение пульта попадает на ИК-светодиод щупа, через него начинает проходить небольшой ток. Этот ток создает разницу напряжения на выводах светодиода, которую отчетливо видно на осциллографе. Для получения на осциллографе четкого сигнала важно, чтобы передатчик вплотную прислонялся к щупу.

Что не так с кондиционерами


Пульты от кондиционеров посылают один большой пакет с полным списком настроек

Пульты от кондиционеров представляют собой полноценные устройства с экранчиком, и, при управлении кондиционером, мы смотрим не на кондиционер, а на экран пульта. Там устанавливается температура, мощность вентилятора и т. д. При этом, сам пульт не знает, услышал ли его сигнал кондиционер, он просто посылает сигнал каждый раз при изменении настроек на пульте.

Но что произойдет, если мы уйдет в другую комнату с пультом от кондиционера, изменим настройки температуры на пульте, но кондиционер не услышит сигнал в момент нажатия на пульт? Допустим на кондиционере сохранилось значение 19°C, мы ушли в другую комнату и полностью поменяли все настройки на пульте, поставили 30°C. Потом подошли к кондиционеру снова и нажали кнопку на пульте, поднимающую температуру на 1°C вверх. Если бы пульт просто посылал нажатие каждой кнопки, как это делают другие пульты, на кондиционере бы установилась температура 20°C, а на экране пульта мы бы увидели 31°C. Получилась бы рассинхронизация данных на пульте и в памяти кондиционера.

Поэтому пульты от кондиционеров, в отличие от остальной техники, передают не команду нажатой кнопки, а сразу целиком все параметры кондиционера, которые видны на экранчике пульта. То есть всегда шлют ВСЕ данные отображаемые на экране пульта в одном большом пакете.

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

[Видео] Захват ИК-сигналов программой AnalysIR, используя приемник IR-toy

Для разных кондиционеров данные с пульта могут быть совершенно различными. Помимо отличий в хранении данных, существуют модели с разными уровнями мощностей, контролем влажности, зональностью и прочим. Из-за этого посылаемые данные иногда имеют большой размер и могут передаваться за несколько посылок.

Из-за обилия кондиционеров с их функциями, создание удобного пользовательского интерфейса и правильной посылки данных — громоздкая задача. Сейчас мы можем работать с некоторыми кондиционерами, но поддержка большого количества моделей еще не реализована.

Как анализировать ИК-сигналы на компьютере


Схема использования программы AnalysIR с оборудованием IR-Toy

Для работы с ИК-сигналом на компьютере я использую программу AnalysIR. Это программа для анализа ИК-протоколов, которая поддерживает разные устройства для захвата ИК-сигнала. Самый простой вариант — это изготовить самодельный приемник на базе Arduino и TSOP, и подключить его по USB. Я использую IR-toy V2 в качестве приемника. Список поддерживаемых приемников: AnalysIR.pdf.

AnalysIR показывает не импульсы ИК-диодов, как это делает осциллограф, а огибающую ИК-сигнала. Получая огибающую, программа высчитывает задержки и длительности пакетов импульсов — все это записывается в лог и помогает анализировать неизвестные ИК-протоколы. AnalysIR знает более 100 ИК-протоколов и умеет автоматически их распознавать. Кстати автор программы предложил добавить поддержку Флиппера в качестве ИК-приемника. Что думаете об этой идее?

Наши соцсети

Узнавайте о новостях проекта Flipper Zero первыми в наших соцсетях!

_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________



Предзаказ Flipper Zero

Сейчас запущено производство первой партии Flipper Zero для бекеров заказавших устройство на Kickstarter. Вторая партия будет доступна для покупки осенью 2021. Вы можете зарезервировать устройство из второй партии заранее здесь https://shop.flipperzero.one/ Это важно для нас, чтобы более точно прогнозировать объемы производства.

Простейший сканер ИК-пультов дистанционного управления — radiohlam.ru

Многие радиолюбители хотели бы использовать для управления самодельными девайсами имеющиеся у них в наличии пульты управления от бытовой техники. Согласитесь, это гораздо удобнее, чем ваять для своих девайсов специальные пульты. Однако здесь возникает маленькая проблемка. Для того, чтобы ваш девайс реагировал на какой-то пульт и при этом отличал одни нажатые на пульте кнопки от других — необходимо знать протокол передачи данных пульта и коды нажимаемых кнопок. Причём, если протокол зачастую написан на самом пульте, то найти коды кнопок обычно практически нереально.

Описанное ниже устройство позволяет увидеть, услышать и записать на компьютер посланный пультом сигнал, ну и, соответственно, определить протокол передачи данных, коды нажатых кнопок, да и просто убедиться в исправности ИК-пульта в конце концов.

Заинтригованы, что же это за девайс? На самом деле идея очень и очень простая. Сигналы ИК-пультов достаточно низкочастотные и записать их можно с помощью обычной звуковой карты в обычный звуковой файл. После этого можно открыть записанный файл в любом звуковом редакторе (например, GoldWave) и посмотреть длительности импульсов, пауз и другую интересующую нас информацию.

Схема:

  1. U1 — стабилизатор питания LM7805
  2. U2 — интегральный фотоприёмник ILMS5360
  3. C1 — конденсатор 6,8 мкФ
  4. C2, С3 — конденсаторы 0,1 мкФ
  5. R1, R2 — резисторы 10 кОм и 2,2 кОм

Устройство подключается в разъём line-in звуковой карты компьютера. Соответственно, в микшере надо настроить вывод и запись звука от входа line-in. Свидетельством того, что ИК-сигналы нормально принимаются устройством и звуковой картой, служат характерные бипы из колонок при нажатии на кнопки пульта.

Поскольку девайс потребляет мизерный ток, то запитать его можно от любого источника, напряжением 6. .15 Вольт, например, от 5 батареек AA или от Кроны.

Для того, чтобы иметь возможность подстраивать амплитуду снимаемого звуковой картой сигнала, можно заменить резисторы R1, R2 на подстроечник 10-47 кОм (крайние выводы подключить на общий провод и выход фотоприёмника, а средний — на вход звуковой карты). Теперь у нас половина подстроечника — это как бы резистор R1, а другая половина — резистор R2. Вращая ручку подстроечника мы будем изменять номиналы R1, R2 и, соответственно, коэффициент деления образумого этими резисторами делителя напряжения, с которого мы и снимаем сигнал.

Фото готового девайса:

Печатная плата (DipTrace 2.1)

Фотоприёмник ILMS5360 рассчитан на частоту несущей 36 кГц, тем не менее сигналы на частоте несущей 38 кГц он тоже принимает, просто к этим сигналам у него гораздо более плохая чувствительность, поэтому посылать их нужно с близкого расстояния, практически в упор к фотоприёмнику.

Ниже приведён пример записанного ИК-сигнала, как он выглядит в звуковом редакторе:

Если вы хоть немного разбираетесь в протоколах ИК-пультов (если нет — почитайте описания некоторых протоколов), то по этому скану вам будет очевидно, что в данном случае имеет место манчестерское кодирование (потому что паузы и импульсы одной ширины), ну а дальше уже дело техники.

Вот и всё, удачи!

Понимание кодов ИК-пульта Sony, файлов LIRC и библиотеки Arduino

В этой статье описывается, как понимать ИК-коды Sony и как получить их из файлов LIRC. Статья предназначена для описания кодов для использования с моей инфракрасной удаленной библиотекой Arduino, но информация должна быть общеприменимой. Эта статья предназначена для аппаратных хакеров и предполагает, что вы знакомы с двоичными и шестнадцатеричными числами, так что будьте осторожны 🙂

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

ИК-передача кода

При нажатии кнопки на пульте дистанционного управления Sony передается инфракрасный сигнал. Эта передача состоит из сигнала частотой 40 кГц, который включается и выключается по определенной схеме. Разные кнопки соответствуют разным кодам, которые вызывают включение и выключение сигнала по разным схемам.

Следующий сигнал показывает ИК-код, передаваемый для STOP на мой пульт дистанционного управления Sony CD (RM-DC335). При высоком уровне сигнала передается ИК-сигнал частотой 40 кГц, а при низком уровне сигнала ничего не передается. Другими словами, сигнал на самом деле быстро включается и выключается, хотя на рисунке он кажется включенным. (ИК-приемник демодулировал сигнал, поэтому вы не видите переходы 40 кГц.)

ИК-сигнал Sony начинается с 2400 мкс включения и 600 мкс отключения; это первый широкий импульс. Бит «1» передается с включением 1200 микросекунд и выключением 600 микросекунд, а бит «0» передается с включением 600 микросекунд и выключением 600 микросекунд. (Эта кодировка также называется кодировкой SIRC или SIRCS.)

Вы можете заметить, что «включенные» части формы сигнала кажутся шире, чем «выключенные», даже если обе должны составлять 600 микросекунд. Это результат работы ИК-приемника, который включается быстрее, чем выключается.

Приведенный выше сигнал представляет собой одну передачу 12-битного кода. Эта передача обычно повторяется до тех пор, пока кнопка удерживается нажатой, и не менее трех раз. Каждая передача начинается через 45 мс после начала предыдущей. Протокол Sony также поддерживает 15- и 20-битные коды, которые аналогичны приведенным выше, за исключением большего количества битов.

Дополнительную информацию о низкоуровневой передаче кодов Sony см. на сайте sbprojects.net.

Три способа интерпретации кодов

Кодировка Sony кажется простой, но существует несколько различных способов интерпретации сигнала. Я буду называть эти официальным декодированием , -битное декодирование и бит-1 декодирование . В разных источниках используется любой из этих трех, что может вызвать путаницу. Я объясню эти три расшифровки на примере предыдущей формы волны.

Официальная расшифровка

«Официальный» протокол Sony рассматривает 12-битный код как 7 битов команды и 5 битов адреса или устройства, при этом младший бит передается первым (то есть «назад»). Биты устройства определяют тип устройства, получающего код, а биты команды определяют конкретную команду для этого устройства. В этом примере биты устройства (желтые) равны 10001 при чтении справа налево, что составляет 17 десятичных знаков. Командные биты (синие) равны 0111000 при чтении справа налево, что составляет 56 десятичных знаков. Значение устройства 17 соответствует проигрывателю компакт-дисков, а команда 56 соответствует команде STOP (подробности).

15-битные коды Sony аналогичны, с 7 командными битами и 8 битами устройства. 20-битные коды Sony имеют 7 командных битов, 5 битов устройства и 8 расширенных битов устройства.

Битовое декодирование

Многие ИК-декодеры просто обрабатывают сигнал как последовательность битов, начиная со старшего бита. Я буду называть это -битное декодирование . Применяя эту интерпретацию к приведенному выше коду, код интерпретируется как 0001 1101 0001 двоичный, или 1d1 шестнадцатеричный, или 465 в десятичном виде. Обратите внимание, что последний бит на самом деле не состоит из 1200 микросекунд включения и 600 микросекунд выключения; он состоит из 1200 микросекунд включения, за которыми следует много времени выключения. Другими словами, передача отключена на 600 микросекунд, а затем продолжается до тех пор, пока не будет передан следующий код.

Альтернативная, но эквивалентная интерпретация состоит в том, чтобы рассматривать код как 2400-микросекундный заголовок, за которым следуют 12 битов, где каждый бит то выключен, то включен (а не включен, а затем выключен). Бит «1» — это 600 микросекунд выключено и 1200 микросекунд включено, а бит «0» — это 600 микросекунд выключено и 600 микросекунд включено. Это дает то же значение, что и раньше (232 десятичного числа), но позволяет избежать специальной обработки последнего бита.

Декодирование бит-1

Многие ИК-декодеры сбрасывают последний бит, который я назову 9.0023 бит-1 декодирование . Поскольку последний бит не заканчивается 600 микросекундами, некоторые алгоритмы ИК-декодирования обрабатывают сигнал как 11 битов данных, заканчивающихся 600 микросекундами как трейлер. В этой интерпретации приведенный выше код 000 1110 1000 двоичный, или 0e8 шестнадцатеричный, или 232 десятичный. (Обратите внимание, что удвоение этого значения и добавление 1 дает предыдущее декодирование 465.)

Обсуждение

Код действительно 17/44 или 465 или 232? Официальная расшифровка «правильная» в том смысле, что это то, что задумал производитель. Кроме того, он раскрывает внутреннюю структуру кода, и коды становятся более понятными. Например, кнопки 1-9иметь последовательные коды с официальной расшифровкой, но не с остальными. Другие расшифровки можно использовать, если вы последовательны; главное понимать, что в разных источниках используются разные расшифровки. Моя библиотека Arduino использует вторую -битную интерпретацию декодирования . Различные декодирования могут быть преобразованы из одной формы в другую с помощью двоичной арифметики.

Получение кодов с пульта

Вероятно, самый простой способ получить коды для вашего устройства — использовать имеющийся у вас пульт дистанционного управления и посмотреть, какие коды он передает. Вы можете использовать мою библиотеку Arduino IR для декодирования с демонстрационной программой IRrecvDump. Возьмите 3-контактный ИК-декодер, подключите его к Arduino, и тогда вы сможете считывать значения для каждого нажатия кнопки на последовательном порту.

Как вариант, можно посмотреть передаваемые коды с помощью осциллографа. Для приведенных выше диаграмм я использовал модуль ИК-приемника, подключенный к двум резисторам (для снижения напряжения), подключенным к линейному входу моего ПК. Я использовал программу Zeitnitz Soundcard Oscilloscope для отображения сигнала. Это позволяет вам точно видеть, что передается, но вам нужно будет смотреть на экран, записывать кучу 0 и 1 и преобразовывать двоичное значение, чтобы получить свои коды.

Получение кодов из файлов LIRC

Лучшим источником ИК-кодов, который я нашел, является проект Linux Infrared Remote Control (lirc.org), который имеет огромную коллекцию файлов конфигурации для различных пультов. (LIRC также включает в себя большую коллекцию драйверов устройств для многих типов аппаратных средств ИК-ввода/вывода и программную библиотеку.)

Формат файла конфигурации LIRC задокументирован на WinLIRC, но я приведу несколько примеров.

Битовое декодирование

Файл RM-S530 LIRC обрабатывает коды как 12-битные, используя то, что я называю 9-битным.0023 бит декодирования :

 начать дистанционно
  имя Сони
  бит 12
  флаги SPACE_ENC|CONST_LENGTH
  эп. 30
  аэп 100
  заголовок 2470 557
  один 1243 556
  ноль 644 556
  разрыв 45076
  min_repeat 2
  toggle_bit 0
      начать коды
          спать 0x00000000000000061
          cd_stop 0x000000000000001D1
. ..
 

Этот файл указывает, что каждая запись имеет длину 12 бит. Заголовок состоит из включения на 2470 микросекунд и выключения на 557 микросекунд. Один бит состоит из включения в течение 1243 микросекунд и выключения в течение 556 микросекунд. Нулевой бит состоит из включенного в течение 644 микросекунд и выключенного в течение 556 микросекунд. Коды повторяются как минимум еще 2 раза с промежутком 45076 микросекунд от начала до начала, поскольку коды имеют постоянную длину (CONST_LENGTH).

Вам может быть интересно, почему эти значения времени не соответствуют официальным значениям 2400, 1200 и 600 микросекунд. Во-первых, данные LIRC обычно измеряются с реальных пультов, поэтому реальные тайминги не совсем соответствуют теории. Во-вторых, ИК-сенсоры имеют некоторую задержку в обнаружении «включено» и «выключено», и они обычно растягивают время «включения» примерно на 100 микросекунд, в равной степени сокращая время «выключения».

Затем файл LIRC содержит шестнадцатеричный код, связанный с каждой кнопкой. Например, код СТОП CD имеет шестнадцатеричное значение 1D1, то есть такое же значение, как описано ранее.

Декодирование бита 1

Файл LIRC для пульта RM-D302 обрабатывает коды как 11 бит и замыкающий импульс. Это то, что я называю декодированием бит-1 :

 начать дистанционно
  название RM-D302
  бит 11
  флаги SPACE_ENC|CONST_LENGTH
  эп. 30
  аэп 100
  заголовок 2367 638
  один 1166 637
  ноль 565 637
  дорожка 1166
  разрыв 45101
  min_repeat 2
  toggle_bit 0
      начать коды
          cd_stop 0x000000000000000E8
 

Ключевыми отличиями от предыдущего файла являются поле ptrail, указывающее замыкающий импульс длительностью 1166 микросекунд; и количество битов 11 вместо 12. Обратите внимание, что значение кода отличается от первого файла, даже если ИК-передача точно такая же. Шестнадцатеричный код 0E8 такой же, как описано ранее в разделе , декодирование бит-1.

Биты Pre_data и Post_data

Некоторые файлы LIRC разбивают коды на постоянные биты pre_data, сам код и постоянные биты post_data. Например, файл для моего пульта RM-D335:

 начать удаленное
  имя SONY
  бит 7
  флаги SPACE_ENC
  эп. 20
  0
  заголовок 2563 520
  один 1274 520
  ноль 671 520
  1274
  post_data_bits 4
  post_data 0x8
  разрыв 25040
  min_repeat 2
      начать коды
          ПРОДОЛЖИТЬ 0x0000000000000005C
...
          СТОП 0x000000000000000E
...
 

В этом файле указано, что каждая запись кода имеет длину 7 бит, но есть также 4 бита пост-данных. Это означает, что после передачи 7 битов для кода передаются 4 дополнительных бита с шестнадцатеричным значением «пост-данных» 0x8, т.е. 1000 двоичных.

Собрав это вместе, кнопка STOP имеет шестнадцатеричное значение 0E, что соответствует семи битам 000 1110. За этим следуют четыре бита почтовых данных 1000, поэтому общая передача составляет одиннадцать битов 000 1110 1000, что составляет 0E8 шестнадцатеричное, то же самое. как и раньше для бит-1 декодирования .

Еще одна вещь, на которую следует обратить внимание в этом файле LIRC, это то, что он не имеет флага CONST_LENGTH, а промежуток составляет 25 мс вместо 45 мс. Это указывает на то, что разрыв находится от конца одного кода до начала следующего, а не от начала одного кода до начала следующего. Указание разрыва между кодами — это не то, как на самом деле определяются коды Sony, это достаточно близко.

Сводка LIRC

Обратите внимание, что все эти файлы LIRC указывают на одну и ту же ИК-передачу; они просто интерпретируют это по-разному. Первый файл определяет код STOP как 1D1, второй как E8 и третий как 0E.

Что это значит для тебя? Если вы хотите получить код Sony из файла LIRC и использовать его с библиотекой Arduino, вам потребуется 12-битный (или 15-, или 20-битный) код для передачи в библиотеку (-битное декодирование ). Найдите код в файле и извлеките указанное количество битов. Если есть какие-либо биты pre_data или post_data, добавьте их соответствующим образом. Если результат короче на один бит, а файл LIRC имеет значение ptrail, добавьте 1 бит в конце, чтобы преобразовать из бит-1 декодирование до бит декодирование . Преобразуйте результат в шестнадцатеричный формат, и у вас должен получиться правильный код для вашего устройства, который можно использовать с библиотекой Arduino.

Получение кодов с сайта hifi-remote.com

Самый подробный сайт, который я нашел по кодам Sony, это hifi-remote.com/sony. Что интересно на этом сайте, так это то, что он анализирует структуру кодов. В то время как файлы LIRC просто перечисляют коды, сайт hifi-remote пытается объяснить, почему коды настроены именно так.

Обратите внимание, что этот сайт выражает коды в формате Sony, т. е. сначала старший значащий бит, и отделяет часть кода устройства от командной части кода. Также для 20-битного кода Sony 13-битный код устройства выражается как 5-битное значение и 8-битное значение, разделенные точкой. В результате вам может потребоваться выполнить некоторое двоичное преобразование и поменять местами биты, чтобы использовать эти коды.

Чтобы проработать пример, я могу найти данные для компакт-диска Sony. Существует несколько кодов устройств, но предположим, что на данный момент я знаю код своего устройства 17. В таблице указан код 56 для STOP. Преобразуйте 56 в 7-битное двоичное значение 0111000 и измените его, чтобы получить 0001110. Преобразуйте 17 в 5-битное двоичное значение 10001 и измените его, чтобы получить 10001. Соедините их вместе, чтобы получить et 000111010001, то есть 1D1 hex, как и раньше.

Чтобы проработать 20-битный пример, если у меня есть Sony VCR/DVD Combo с кодом устройства 26,83, сайт сообщает мне, что код для «мощности» равен 21. Преобразуйте 21 в 7-битное двоичное значение, 26 в 5-битное двоичное значение и 83 для 8-битного двоичного значения. Затем переверните и соедините биты: двоичный код 1010100 + 01011 + 11001010, который представляет собой a8bca в шестнадцатеричном формате. Для подтверждения в файле RMT-V501A LIRC мощность указана как A8B с post_data CA.

Чтобы использовать этот сайт, вам уже нужно знать код вашего устройства. Чтобы найти это, получите код для вашего устройства (например, с вашего существующего пульта дистанционного управления или из LIRC), разделите и поменяйте местами соответствующие биты и найдите код устройства на сайте. Кроме того, существует всего несколько различных кодов устройств для определенного типа устройств, поэтому вы можете просто попробовать их все и посмотреть, что работает.

На этом сайте также есть информация о «дискретных кодах». Чтобы понять дискретные коды, рассмотрите кнопку питания на пульте дистанционного управления, которая переключается между «вкл» и «выкл». Это может быть неудобно для автоматического управления, так как, не зная текущего состояния, вы не знаете, включит или выключит устройство отправка кода. Решением является «дискретный код», который предоставляет отдельные коды «включения» и «выключения». Дискретные коды также могут быть предоставлены для таких операций, как выбор входа или режима. Поскольку этих кодов нет на пульте, их трудно получить.

Другие сайты

Дополнительные файлы конфигурации доступны на сайте immote.psiloc.com. Они в формате LIRC, но переведены в XML. На сайте remotecentral.com есть масса информации о пультах, но в основном в проприетарных форматах.

Заключение

Надеюсь, это устранит некоторую путаницу с кодами дистанционного управления Sony, не добавляя дополнительной путаницы 🙂

Инфракрасный пульт дистанционного управления HD2-RC | Современные исследования

Тип: Аксессуары
Номер детали: 5024-004
Размер: 3000 в ширину x 4000 в высоту x 0,500 в глубину
Вес: 0,250
Распределение:
Выпущено: Апрель 2018 г.

Где купить


Чертеж изделия с ИК-пультом HD2-RC

Подробнее об аксессуарах

Contemporary Research предлагает различные аксессуары для продуктов, которые необходимы или улучшают функциональность AV-продуктов.

Об ИК-пульте HD2-RC

Беспроводной ИК-пульт HD2-RC для современных исследовательских тюнеров ATSC и декодеров QIP IPTV обеспечивает упрощенное и удобное ИК-управление.

Сопутствующее оборудование и программное обеспечение

AV-тюнеры

Удобные для интеграции тюнеры HDTV, управляемые через RS-232, которые могут принимать как цифровые, так и аналоговые каналы в форматах ATSC, QAM и NTSC.

Декодеры IPTV

Одноадресные или многоадресные декодеры UDP и RTP, совместимые с IPTV, которые будут принимать однопрограммные или многопрограммные транспортные потоки MPEG2 или H.264.

Управление телевизором и дисплеем

Централизованно управляемые системы управления, разработанные для упрощения ваших AV-технологий.

Полное описание и технические характеристики

Беспроводной ИК-пульт HD2-RC работает с тюнерами CR ATSC и декодерами QIP IPTV, обеспечивая упрощенное и удобное ИК-управление. Разработанный для обеспечения универсальности и экономичности, HD2-RC доступен по цене в несколько раз дешевле обычных пультов дистанционного управления для систем управления. В комплект входит все — от 4 щелочных батареек AAA до полнофункциональной панели, обеспечивающей управление продуктом и настройку тюнеров ATSC.

При весе менее 5 унций с батареями тонкий и аккуратный корпус позволяет легко управлять одной рукой. Тем не менее, HD2-RC не является легким, когда речь идет о мощности и производительности. Мощный ИК-светодиод обеспечивает надежное управление в пределах 10 м, а высокочастотная ИК-передача сводит к минимуму помехи от флуоресцентных ламп и других источников.

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

Совет: пульт дистанционного управления может выводить высокие или низкие ИК-частоты , что может помочь обойти помехи от флуоресцентных ламп.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *