Инфракрасный приёмник и пульт
Управление приборами через инфракрасный пульт дистанционного управления знаком каждому современному человеку — телевизор, музыкальный центр, кондиционер. К этому списку вы можете добавить и свой контроллер и управлять, например, роботом на Arduino.
ИК-датчики
Датчики, которые могут служить в качестве приёмника сигналов.
Инфракрасный пульт дистанционного управления
Скорее всего у вас уже есть инфракрасный пульт дистанционного управления, например, от телевизора, который вы можете использовать в своих опытах. В стартовых наборах для Arduino как правило к ИК-датчику прилагается дополнительно маленький пульт от магнитолы.
Библиотека IRremote
Для работы с инфракрасными датчиками используется популярная библиотека IRremote Arduino Library. Установить её можно через менеджер библиотек.
Библиотека поддерживает стандартные форматы NEC, SIRC, RC5, RC6, а также может принимать «сырые» данные.
После установки библиотеки вам станут доступны несколько примеров, которые можете изучить самостоятельно.
В интернете встречал предупреждение, что библиотека может конфликтовать с встроенной библиотекой RobotIRremote из-за схожести классов. Поэтому можно временно переместить мешающую библиотеку в другое место. У меня проблемы не было.
Напишем простой скетч, который будет принимать сигналы от пульта и выводить их коды на экран в Serial Monitor.
Этот пример работает для пульта от магнитолы, который представлен на рисунке. Но вполне возможно, что для какого-то другого пульта этого будет недостаточно, в примерах к библиотеки используется более сложный код, который умеет работать с пультами разных фирм.
Теперь вы можете нажимать кнопки пульта и получать данные. Вам надо обрабатывать получаемые данные и принимать решения, что делать с ними. Например, вы можете включать нужные светодиоды от кнопок 1, 2, 3 и т.д.
Вы будете получать данные в виде шестнадцатеричного значения типа FF02FD. Наверняка, вы будете также получать значения FFFFFFFF, которые означают, что нажатая клавиша удерживается.
Обычно первый скетч используется для сбора информации, чтобы сопоставить сигналы с кнопками пульта. Их нужно аккуратно записать на бумажке, а потом написать второй скетч, который будет использовать сигналы по назначению.
У меня получились следующие результаты для цифровых кнопок.
Напишем скетч. Будем выводить названия кнопок на экран, кроме того кнопка 3 будет включать встроенный светодиод, а кнопка 7 его выключать.
Более сложный пример, когда определяется стандарт сигнала и сырые данные.
KY-022 – модуль ИК приёмника (IRremote). Подключение к Arduino.
Продолжаем изучать модули из набора «37 in 1 Sensors Kit for Arduino». В предыдущих уроках мы рассмотрели модуль ИК-передатчика KY-005. Сегодня рассмотрим модуль ИК приёмника KY-022. Который позволит получать сигнал с ИК-передатчика и управлять периферийными устройствами. У меня уже есть ряд проектов на Arduino с использованием ИК приёмника.
Описание модуля ИК-приемника KY-022.
Модуль ИК-приемника Arduino KY-022, реагирует на инфракрасный свет 38 кГц.
KY-022 Технические характеристики.
Этот модуль состоит из ИК-приемника на базе «VS1838B», резистора 1 кОм и светодиода. Работает вместе с модулем ИК-передатчика KY-005. Совместимость с популярными электронными платформами, такими как Arduino, Raspberry Pi и ESP8266.
Напряжение низкого уровня
Напряжение высокого уровня
Фильтр окружающего света
Схема подключения KY-022 к Arduino.
Подключите линию питания (посередине) и землю (-) к +5 и GND соответственно. Также, необходимо подключить сигнал (S) к контакту 11 на Arduino. Сигнал на приемник будем отправлять с помощью пульта ДУ.
Подключение KY-022:
- S – сигнальный контакт
- VСС – «+» питания
- GND – общий
Схема подключения KY-022 к Arduino UNO.
Схема подключения KY-022 к Arduino NANO.
KY-022 скетч для Arduino.
В следующем скетче Arduino используется библиотека IRremote для приема и обработки инфракрасных сигналов. В уроке использую пульт ДУ для последовательной отправки данных на модуль KY-022.
Ссылки на необходимые материалы и библиотеку для данного примера KY-022 Arduino можно найти в разделе «Файлы для скачивания».
После того как скетч загружен и IR приемник подключен, можно проверить, какой код соответствует той или иной кнопке пульта ДУ. Поочередно нажимаем на кнопки, и в мониторе последовательного порта (Ctrl+Shift+M) вы уведите следующее.
У вас скорее всего возник вопрос: «Что за повторяющая команда FFFFFFFF«? Эта команда выводится, когда мы долго удерживаем кнопку на пульте и на Ардуино приходит одинаковая команда. В этом нет ничего страшного, а иногда это даже полезно. На основе получения данных в таком виде, я сделал управление машинкой, с помощью пульта ДУ. При этом машинка едет только тогда, когда нажата кнопка пульта. Отпускаем и машина перестает ехать или поворачивать.
Само простое, чем можно управлять — это включение и выключения встроенного светодиода на плату Arduino при помощи пульта дистанционного управления и инфракрасного приемника KY-022.
Схема подключения, как и в примере выше. Коды кнопок моего пульта, которые я буду использовать для примера:
У вашего пульта команды будут другие, если он не такой же модели, как у меня. Большинство наборов для Arduino оснащены пультом данной модели.
Скетч включения светодиода с помощью пульта ДУ.
Вот так можно легко научить Arduino принимать команды с пульта.
Понравился Урок KY-022 – модуль ИК приёмника. Подключение к Arduino? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Arduino и ИК пульт
Описание
В наборе GyverKIT идёт комплект ИК управления:
- Пульт с интерфейсом NEC
- Приёмник TL1838
- ИК светодиод
С его помощью можно:
- Управлять своим устройством с пульта (комплектный пульт + приёмник)
- Управлять своим устройством с любого пульта (от телевизора/люстры + приёмник)
- Управлять телевизором, эмулируя его пульт (ИК светодиод)
- Передавать данные с одной Ардуины на другую (ИК светодиод + приёмник), например библиотека GyverTransfer
Подключение
Модуль ИК приёмника подключается следующим образом:
- S: сигнальный пин, любой цифровой пин МК
- -: GND
- Средний (не подписан): VCC
Библиотеки
- IRremote – очень тяжёлая универсальная “стандартная” библиотека
- IRLremote – более оптимизированная и продвинутая библиотека от NicoHood
- NecDecoder – наша библиотека для интерфейса NEC (Hash), на котором работают все китайские пульты
В примерах на этом сайте мы будем использовать NecDecoder как очень лёгкую и простую в использовании. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию NecDecoder. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Примеры для библиотеки NecDecoder версии 2.x!
Перед использованием нужно знать коды кнопок пульта, загружаем вот этот пример и открываем порт:
Нажимаем кнопку на пульте – получаем её код
ИК-приёмник (Trema-модуль)
Общие сведения:
Trema-модуль ИК-приёмник — позволяет управлять проектами на расстоянии с помощью обычного ИК-пульта от телевизора или другой техники. Исполнен в линейке Trema-модулей, что позволяет включать модуль в проект, без пайки и макетных плат.
Видео:
Спецификация:
- Входное напряжение: 2,7 . 5,5 В
- Потребляемый ток: 0,65 … 1,05 мА (при Vсс = 5В) номинально 0,9 мА
- Несущая частота: 38 кГц
- Длинна световой волны: 850 … 1050 нм (пропускаемая фильтром более 80%)
- Чувствительность: 0,17… 30000 мW/м2 (к мощности светового потока)
- Расстояние приёма: до 45 м
- Рабочая температура: -25 … 85 °C
- Угол направленности: ±45°
Все модули линейки «Trema» выполнены в одном формате
Подключение:
Модуль подключается к любому цифровому выводу arduino. В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield .
Модуль удобно подключать 3 способами, в зависимости от ситуации:
Способ — 1 : Используя проводной шлейф и Piranha UNO
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.
Способ — 2 : Используя Trema Set Shield
Модуль можно подключить к любому из цифровых входов Trema Set Shield.
Способ — 3 : Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Подробнее о модуле:
Модуль ИК-приёмника построен на базе модуля TSOP2238, который снабжён:
- фильтром светового потока;
- фотодиодом;
- предусилителем;
- полосовым фильтром несущей частоты — 38 кГц;
- демодулятором;
- операционным усилителем;
- блоками защиты от помех (электромагнитных, световых, пульсаций напряжения)
Благодаря своим характеристикам модуль позволяет работать с большинством ИК-пультов.
Для приёма данных с ИК-пультов, предлагаем воспользоваться библиотекой iarduino_IR, которая позволяет работать с ИК-приёмником и(или) ИК-передатчиком.
Библиотека использует второй аппаратный таймер,
НЕ ВЫВОДИТЕ СИГНАЛЫ ШИМ НА 3 ИЛИ 11 ВЫВОД!
Подробнее про установку библиотеки читайте в нашей инструкции..
Дополнительная информация по работе с модулем:
Пакеты: Практически все пульты отправляют не только информационный пакет (указывающий тип устройства и код нажатой кнопки), но и пакеты повтора, сообщающие устройству об удержании нажатой кнопки. Таким образом принимающее устройство может реагировать на нажатие кнопки однократно или в течении всего времени её удержания.
Например: нажимая и удерживая кнопку с номером телевизионного канала, телевизор переключится на данный канал только один раз. В то время, как нажимая и удерживая кнопку увеличения громкости, телевизор будет её увеличивать в течении всего времени удержания кнопки.
Количество информационных пакетов у большинства пультов равно одному, но некоторые устройства, например кондиционеры, используют 2, 3 и более информационных пакетов.
Состав пакетов: Информационный пакет несёт информацию о коде производителя, типе устройства, коде нажатой кнопки и т.д. Пакеты повтора могут частично или полностью совпадать с информационным пакетом, копировать его биты с инверсией, или не нести никакой информации, представляя последовательность из нескольких одинаковых, для каждого пакета повтора, битов.
Длительность пауз между пакетами: обычно не превышает 200мс.
Протоколы передачи данных: определяют следующие, основные, параметры:
- несущую частоту;
- способ кодирования информации, длительность импульсов и пауз передаваемых битов;
- количество информационных пакетов:
- состав информационного пакета и пакетов повторов;
- длительность пауз между пакетами;
- наличие и форму сигналов Start, Stop и Toggle;
Несущая частота: у большинства пультов равна 38 кГц, именно на эту частоту настроен Trema ИК-приёмник.
Кодирование информации: это принцип передачи битов данных. Выделим три основных вида кодирования, при которых каждый бит передаётся последовательностью из одного импульса и одной паузы:
- кодирование длиной импульсов — сначала передаётся импульс, длина которого зависит от значения передаваемого бита, затем следует пауза, длина которой не зависит от значения бита. Например: в протоколе SIRC (Sony), длина импульса для бита «1» = 1200мкс, а для бита «0» = 600мкс, длина пауз всегда равна 600мкс. Таким образом можно отличить «1» от «0» по длине импульса.
- кодирование длинной пауз — сначала передаётся импульс, длина которого не зависит от значения передаваемого бита, затем следует пауза, длина которой зависит от значения бита. Например: в протоколе NEC, длина паузы для бита «1» = 1687,5мкс, а для бита «0» = 562,5мкс, длина импульсов всегда равна 562,5мкс. Таким образом можно отличить «1» от «0» по длине паузы.
- бифазное кодирование — длина импульса равна длине паузы, а их последовательность определяет тип передаваемого бита. Например: в протоколе RS5 (Philips), для бита «1» импульс следует за паузой, а для бита «0» пауза следует за импульсом. Для протокола NRC (Nokia), наоборот, для бита «1» пауза следует за импульсом, а для бита «0» импульс следует за паузой.
Сигналы Start, Stop и Toggle: по своему названию располагаются в начале, конце или середине пакета.
Stop: При кодировании длинной паузы, нельзя определить значение последнего бита в пакете, так как после пакета следует большая пауза, и последний бит будет всегда определяться как «1», поэтому в пакет добавляется сигнал Stop представляющий из себя импульс не несущий никакой информации.
Start: При бифазном кодировании требуется подать сигнал Start, так как невозможно начать передачу пакета с паузы.
Toggle: Это бит, который меняет своё значение при каждом новом нажатии на кнопку, используется в протоколах RS5, RS5X, RS6 (Philips), где пакеты повторов полностью повторяют данные информационного пакета. Таким образом принимающее устройство может отличить удержание кнопки от её повторного нажатия.
Примеры:
Проверка наличия данных поступивших с ИК-пульта, осуществляется функцией check(). Эта функция реагирует на нажатие кнопок ИК-пульта, но если её вызывать с параметром true , то она будет реагировать и на удержание кнопок.
Чтение данных с любого пульта, реагируем только на нажатие кнопок:
В данном скетче функция check() вызывается без аргументов, значит и реагирует она только на нажатия кнопок ИК-пульта.
Чтение данных с любого пульта, реагируем на удержание кнопок:
В данном скетче функция check() вызывается с параметром true , значит и реагирует она как на нажатия, так и на удержания кнопок ИК-пульта.
Чтение данных с любого пульта, с указанием как реагировать на какие кнопки.
В данном скетче функция check() вызывается с параметром true , значит она реагирует как на нажатия, так и на удержания кнопок ИК-пульта. Но вывод данных в монитор последовательного порта осуществляется только при установленном флаге flgKey , который сбрасывается при удержании кнопок с кодами 0xFF30CF , 0xFF18E7 и 0xFF7A85 . Получается что на 3 кнопки скетч реагирует только при нажатии, а на остальные кнопки, как на нажатие, так и на удержание.
Чтение данных только с тех пультов, которые работают по указанному протоколу:
В данном скетче, в коде setup(), указан протокол передачи данных, который редко совпадает у разных производителей ИК-пультов. Значит функция check() в коде loop() будет реагировать только на те ИК-пульты, которые поддерживают указанный протокол.
Получение протокола передачи данных и типа кодировки:
В данном примере описано как получить протокол передачи данных ИК-пультов. В статье Wiki ИК-передатчик, описано, как передавать коды кнопок по указанному протоколу.
Таким образом, можно создать скетч ИК-передатчика для имитации сигналов различных ИК-пультов. В результате, устройства будут реагировать на ИК-передатчик, как на собственный ИК-пульт.