Считать код с пульта ду ардуино

Урок 35. Универсальный ИК-пульт дистанционного управления

В этом уроке мы создадим универсальный ИК-пульт дистанционного управления. Шесть кнопок универсального ИК-пульта позволяют запрограммировать себя на передачу команды любого* другого ИК-пульта. Код кнопок сохраняется в энергонезависимую область памяти Arduino — EEPROM . Это значит, что Вам не придётся программировать кнопки при каждом включении универсального ИК-пульта.

*Универсальный ИК-пульт может воспроизводить сигналы только тех ИК-пультов, которые передают данные одним информационным пакетом не длиннее 32 бит, а также имеют (или нет) одинаковые пакеты удержания (пакеты повторов).

Нам понадобится:

  • Arduino Uno х 1шт.
  • Trema модуль — ИК-приёмник x 1шт.
  • Trema модуль — ИК-передатчик x 1шт.
  • Trema модуль — кнопка (синяя) x 7шт.
  • Trema модуль — зуммер x 1шт.
  • Trema Shield x 1шт.
  • Конструктор для создания каркаса.

Для реализации проекта нам необходимо установить библиотеку:

  • iarduino_IR для работы с ИК-приёмопередатчиками.
  • EEPROM — входит в стандартный набор Arduino IDE.

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

Все используемые в уроке модули, можно подключать к любым выводам Arduino, как цифровым, так и аналоговым. Номера выводов к которым подключены модули, указываются в скетче.

  • Trema-кнопки подключены к цифровым выводам 2-8.
  • Trema ИК-приёмник подключён к цифровому выводу 9.
  • Trema ИК-передатчик подключён к цифровому выводу 10.
  • Trema-зуммер подключён к цифровому выводу 11.
  • Все модули подключены к Arduino Uno через Trema Shield.

Алгоритм работы:

Отправка команд:
  • При нажатии на одну из 6 кнопок универсального ИК-пульта, он отправит команду, соответствующую нажатой кнопке.
  • Если нажатой кнопке команда не присвоена, то ИК-пульт издаст звуковой сигнал, сигнализирующий об ошибке.
Назначение команд кнопкам:
  • Для назначения команд кнопкам универсального ИК-пульта, нужно выполнить следующие действия:
    • Нажать на кнопку «запись команды» и, не отпуская её, нажать на ту кнопку универсального ИК-пульта, которой мы хотим присвоить команду с другого ИК-пульта.
    • Универсальный ИК-пульт издаст два коротких звуковых сигнала, сигнализируя о готовности принять данные.
    • Нажать на кнопку другого ИК-пульта, код которой мы хотим считать.
    • Как только код будет считан, универсальный ИК-пульт издаст короткий звуковой сигнал, сигнализирующий об успешной записи кода. Теперь можно отпустить все кнопки.
  • Можно присвоить одной кнопке — код одного пульта, а другой кнопке — код другого пульта. Так как для каждой кнопки, сохраняется не только код, но и протокол передачи данных.

Код программы:

Для генерации звука написана функция myTone(), вместо стандартной функции tone(), так как стандартная функция использует 2 аппаратный таймер, который уже используется библиотекой iarduino_IR.

Источник

Инфракрасный приёмник и пульт

Управление приборами через инфракрасный пульт дистанционного управления знаком каждому современному человеку — телевизор, музыкальный центр, кондиционер. К этому списку вы можете добавить и свой контроллер и управлять, например, роботом на Arduino.

ИК-датчики

Датчики, которые могут служить в качестве приёмника сигналов.

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

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

Библиотека IRremote

Для работы с инфракрасными датчиками используется популярная библиотека IRremote Arduino Library. Установить её можно через менеджер библиотек.

Библиотека поддерживает стандартные форматы NEC, SIRC, RC5, RC6, а также может принимать «сырые» данные.

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

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

Напишем простой скетч, который будет принимать сигналы от пульта и выводить их коды на экран в Serial Monitor.

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

Теперь вы можете нажимать кнопки пульта и получать данные. Вам надо обрабатывать получаемые данные и принимать решения, что делать с ними. Например, вы можете включать нужные светодиоды от кнопок 1, 2, 3 и т.д.

Вы будете получать данные в виде шестнадцатеричного значения типа FF02FD. Наверняка, вы будете также получать значения FFFFFFFF, которые означают, что нажатая клавиша удерживается.

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

У меня получились следующие результаты для цифровых кнопок.

Напишем скетч. Будем выводить названия кнопок на экран, кроме того кнопка 3 будет включать встроенный светодиод, а кнопка 7 его выключать.

Более сложный пример, когда определяется стандарт сигнала и сырые данные.

Источник

Arduino и ИК пульт

Описание

В наборе GyverKIT идёт комплект ИК управления:

  • Пульт с интерфейсом NEC
  • Приёмник TL1838
  • ИК светодиод

С его помощью можно:

  • Управлять своим устройством с пульта (комплектный пульт + приёмник)
  • Управлять своим устройством с любого пульта (от телевизора/люстры + приёмник)
  • Управлять телевизором, эмулируя его пульт (ИК светодиод)
  • Передавать данные с одной Ардуины на другую (ИК светодиод + приёмник), например библиотека GyverTransfer

Подключение

Модуль ИК приёмника подключается следующим образом:

  • S: сигнальный пин, любой цифровой пин МК
  • -: GND
  • Средний (не подписан): VCC

Библиотеки

  • IRremote – очень тяжёлая универсальная “стандартная” библиотека
  • IRLremote – более оптимизированная и продвинутая библиотека от NicoHood
  • NecDecoder – наша библиотека для интерфейса NEC (Hash), на котором работают все китайские пульты

В примерах на этом сайте мы будем использовать NecDecoder как очень лёгкую и простую в использовании. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию NecDecoder. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры

Примеры для библиотеки NecDecoder версии 2.x!

Перед использованием нужно знать коды кнопок пульта, загружаем вот этот пример и открываем порт:

Нажимаем кнопку на пульте – получаем её код

Источник

Урок 5 — Управление Arduino с помощью пульта ДУ (IR). Библиотека IRremote

При создании проектов на Arduino. Часто возникает вопрос, с помощью чего управлять проектом. И желательно на расстоянии. Кнопки уже не модно.

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

Для урока я буду использовать вот такой набор и Arduino UNO.

Купить пульт с IR приемником всего за 100 руб. можно тут.

Приемники могут быть распаянные как в моем случае.

И вот такого плана.

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

Подключаем к Arduino UNO вот по такой схеме. К другим Ардуинкам подключается аналогично.

Для работы нам понадобиться библиотека IRremote. Скачать ее можно тут.

С библиотекой устанавливается ряд примеров. Нам понадобиться IrrecvDemo.

После того как скетч загружен и IR приемник подключен можно проверить какой код соответствует той или иной кнопке пульта ДУ. Поднажимайте на кнопки и в мониторе последовательного порта (Ctrl+Shift+M) вы уведите следующее.

У вас возник наверное вопрос что за повторяющая команда FFFFFFFF. Это команда выводиться когда вы долго удерживаете кнопку на пульте и на Ардуино приходить одинаковая команда. В этом нет ни чего страшного, а иногда это даже полезно. На основе данной команды я сделал управление машинкой с помощью пульта ДУ. При этом машинка едет только тогда, когда нажата кнопка пульта. Отпускаем и машина перестает ехать и поворачивать.

Само простое, чем можно управлять это включение и выключения встроенного светодиода на плату Arduino при помощи пульта дистанционного управления и инфракрасного приемника.

Схема подключения как и в примере выше. Коды кнопок моего пульта:

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

Вот так можно легко научить вашу Arduinо понимать команды с пульта.

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Понравилась статья? Поделитесь ею с друзьями:

Источник

Универсальный пульт на Arduino

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

Пульт очень удобен в том, что на экране практически одни и те же кнопки используются для управления телевизором и плеером. Одно отличие в том, что кнопка «AV» в режиме управления телевизором меняется на кнопку «» (stop) при переходе в режим управления плеером. На картинках показано два режима, слева режим управления телевизором, справа — режим управления плеером.

Ну а сейчас я расскажу немного о создании такого пульта. Для устройства использовал пульт от телевизора ERGO и пульт от медиаплеера DUNE HD TV101W.

Для получения данных от пультов я использовал инфракрасный датчик TSOP1138 (аналог TSOP4838) на рабочей частоте 38 кГц и подключил его к плате Arduino по схеме:

Для начала нам потребуется прочитать коды кнопок пультов. Я воспользовался библиотекой IRremote и тестовым скетчем IRrecvDump.

Этот скетч на потребуется для определения кодировки передачи данных и считывания кода кнопок пультов.

В скетче в строке int RECV_PIN = 11; указываем наш пин под номером 4

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

На картинке пример сканирования кнопки включения от пульта телевизора и пульта плеера. Теперь формируем таблицу для кодов кнопок.

У меня получилось как на фото выше. Под надписью TV коды кнопок пульта от телевизора; под надписью Player — коды от пульта медиаплеера.

Теперь отключаем наш приемник инфракрасных сигналов от платы Arduino и подключаем к ней Bluetooth модуль HC-05 и инфракрасный светодиод по схеме на фото.

После этого переходим непосредственно к скетчу.

В скетче вам потребуется отредактировать коды кнопок, а именно в строках:

Значение 807F08F7 поменять на:

Где 12345678 — это код вашей кнопки.

После редактирования скетча по ваши коды кнопок заливаем скетч в плату Arduino и переходим к установке приложения на телефон.

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

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

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

Теперь мы снова вернулись на главный экран и уже можем управлять телевизором:

Для перехода в режим управления нам потребуется нажать кнопку с надписью «Player». Как я говорил раньше, у нас кнопка с надписью «AV» поменяется на кнопку ««:

Для отключения от нашего устройства просто зажмите кнопку «Power» на несколько секунд.

Ну и несколько фотографий моего готового устройства.

Получилось, вроде, неплохо. Жду комментарии к статье.

Источник

Adblock
detector