Пульт на ардуино своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

ИК приемник и инфракрасный пульт дистанционного управления – самый распространенный и простой способ управления электронной аппаратурой. Инфракрасный спектр излучения не виден человеческим глазом, но он отлично принимается ИК приемниками, которые встроены в электронные приборы. Модули Arduino ir remote используются для управления различной техникой в прямой видимости.

Принцип действия ИК пульта

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

  • Твердотельные излучатели (ИК светодиоды) стоят дешево и они компактны.
  • Инфракрасные лучи не воспринимаются и не фиксируются человеческим глазом.
  • ИК приемники также дешево стоят, и они имеют небольшие размеры.
  • Малые помехи, так как передатчик и приемник настроены на одну частоту.
  • Отсутствует негативное влияние на здоровье человека.
  • Высокий показатель отражения от большинства материалов.
  • IR излучатели не влияют на работу других устройств.

Инфракрасный IR датчик ардуино

Работа пульта осуществляется следующим образом. При нажатии кнопки происходит кодирование сигнала в инфракрасном свете, приемник принимает его и выполняет требуемое действие. Информация кодируется в виде логической последовательности пакетов импульсов с определенной частотой. Приемник получает эту последовательность и выполняет демодулирование данных. Для приема сигнала используется микросхема, в которой содержатся фотоприемник (фотодиод), усилители, полосовой фильтр, демодулятор (детектор, который позволяет выделить огибающую сигнала) и выходной транзистор. Также в ней установлены фильтры – электрический и оптический. Работают такие устройства на расстоянии до 40 метров. ИК способ передачи данных существует во многих устройствах: в бытовых приборах, в промышленной технике, компьютерах, оптоволоконных линиях.

IR приемник Arduino

Для считывания IR сигнала понадобятся сама плата Ардуино, макет, приемник IR сигнала и перемычки. Существует огромное множество различных приемников, но лучше использовать TSOP312 или другие соответствующие для Ардуино. Данные от пульта к приемнику могут передаваться по протоколу RC5 или NEC.

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

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

Инфракрасный IR датчик ардуино

Подключение IR приемника к ардуино

Выходы IR приемника подключают к Ардуино к портам GND, 5V и цифровому входу. Схема подключения датчика к 11 цифровому пину изображена ниже.

Вот так выглядит схема с модулем инфракрасного приемника:

Схема подключение инфракрасный IR датчикардуино

Библиотеки для работы с IR

Для чтения информации используется пример IRrecvDumpV2 из библиотеки. Если пульт уже существует в списке распознаваемых, то сканирование не потребуется. Для считывания кодов нужно запустить среду ARduino IDE и открыть пример IRrecvDemo из IRremote.

Существует и вторая библиотека для работы с ИК сигналами – это IRLib. Она похожа по своему функционалу на предыдущую. По сравнению с IRremote в IRLib имеется пример для определения частоты ИК датчика. Но первая библиотека проще и удобнее в использовании.

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

Оператор decode_results нужен для того, чтобы присвоить полученному сигналу имя переменной results .

Затем после загрузки программы нужно открыть последовательный монитор и нажимать кнопки на пульте. На экране будут появляться различные коды. Нужно сделать пометку с тем, к какой кнопке соотносится полученный код. Удобнее полученные данные записать в таблицу. После этот код можно записать в программу, чтобы можно было управлять прибором. Коды записываются в память самой платы ардуино EEPROM, что очень удобно, так как не придется программировать кнопки при каждом включении пульта.

Заключение

Использование Arduino ir remote упрощает жизнь пользователю. В качестве пульта дистанционного управления может выступать мобильный телефон, планшет или компьютер – для этого только нужен специальный софт. При помощи Ардуино можно централизовать все управление. Одной кнопкой на пульте можно выполнить сразу несколько действий – например, включить одновременно телевизор и Blu-Ray.

Управляем Ардуино ИК пультом.
ссылка на канал YOUTUBE
Сегодня мой рассказ будет как собрать пульт на Ардуино
Всего одной кнопкой на пульте можно включить сразу несколько устройств.
Например, включить одновременно телевизор, компьютер, вентилятор, и выключить свет.
А можно выключить сразу всё и лечь спать.
Для удобства просмотра подключим семисегментный светодиодный (LED) индикатора к Ардуино для вывода нажатия кнопки.

Посмотрим, что у нас получилось. Мы подключили ИК приёмник к Ардуино, подключили семисегментный индикатор, блок реле, и электромоторчик.

Вложенные файлы.

На выставке CES 2020 также было представлено новое поколение плат Arduino Portenta. Оно было разработано на требовательные промышленные приложения. Portenta H7 поддерживает код Arduino, Python и JavaScript, что делает его доступным для разработчиков с различными знаниями языков .

Производитель Arduino запускает новую серию плат Nano - Arduino Nano 33 BLE. Платы имеют те же размеры, что и плата Ардуино Нано, на чипе U-blox NINA-B306 с микроконтроллером Nordic nRF52840 и беспроводным модулем Bluetooth BLE

Cегодня я расскажу как создать универсальный пульт на плате arduino, с помощью которого можно управлять телевизором и плеером с экрана мобильного телефона на ОС Android.

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

Для начала нам потребуется инфракрасный приемник TSOP1138 и плата Arduino Приемник подключаем по схеме на фото и с помощью библиотеки IRremote читаем коды кнопок пультов


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

Все оформляем в таблицу, в которой под надписью TV прочитанные коды кнопок для телевизора а под надписью Player - для плеера

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

Потом отключаем приемник инфракрасных сигналов от платы arduino и подключаем к ней блютуз модуль НС-05 и инфракрасный светодиод по схеме


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

Теперь в скетче меняем в строках коды кнопок 0x807F08F7 на свои из таблицы

где 12345678 ваш код из страницы


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

Скетч (будет много букв)

void loop() if (Serial.available() > 0) int x = Serial.read();
if (x == 49) y = 1;
>
if (x == 50) y = 2;
>
if (y == 1) < // коды кнопок для пульта от телевизора
if (x == 97) irsend.sendNEC(0x807F08F7, 32);
delay(40);
>
if (x == 98) irsend.sendNEC(0x807FA857, 32);
delay(40);
>
if (x == 99) irsend.sendNEC(0x807F708F, 32);
delay(40);
>
if (x == 100) irsend.sendNEC(0x807FF00F, 32);
delay(40);
>
if (x == 101) irsend.sendNEC(0x807F30CF, 32);
delay(40);
>
if (x == 102) irsend.sendNEC(0x807FB04F, 32);
delay(40);
>
if (x == 103) irsend.sendNEC(0x807F9867, 32);
delay(40);
>
if (x == 104) irsend.sendNEC(0x807F58A7, 32);
delay(40);
>
if (x == 105) irsend.sendNEC(0x807FD827, 32);
delay(40);
>
if (x == 106) irsend.sendNEC(0x807F38C7, 32);
delay(40);
>
if (x == 107) irsend.sendNEC(0x807F48B7, 32);
delay(40);
>
if (x == 108) irsend.sendNEC(0x807FB847, 32);
delay(40);
>
if (x == 109) irsend.sendNEC(0x807F6897, 32);
delay(40);
>
>
if (y == 2) < //коды кнопок пульта от медиаплеера
if (x == 97) irsend.sendNEC(0xFDC23D, 32);
delay(40);
>
if (x == 98) irsend.sendNEC(0xFDE01F, 32);
delay(40);
>
if (x == 99) irsend.sendNEC(0xFD18E7, 32);
delay(40);
>
if (x == 100) irsend.sendNEC(0xFDE817, 32);
delay(40);
>
if (x == 101) irsend.sendNEC(0xFDA857, 32);
delay(40);
>
if (x == 102) irsend.sendNEC(0xFD6897, 32);
delay(40);
>
if (x == 103) irsend.sendNEC(0xFDA857, 32);
delay(40);
>
if (x == 104) irsend.sendNEC(0xFD6897, 32);
delay(40);
>
if (x == 105) irsend.sendNEC(0xFDE817, 32);
delay(40);
>
if (x == 106) irsend.sendNEC(0xFD18E7, 32);
delay(40);
>
if (x == 107) irsend.sendNEC(0xFD9867, 32);
delay(40);
>
if (x == 108) irsend.sendNEC(0xFD28D7, 32);
delay(40);
>
if (x == 109) irsend.sendNEC(0xFD20DF, 32);
delay(40);
>
>
Serial.println(x);
Serial.println(y);
>
>


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

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

Подключение

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

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


Библиотеки

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

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

Примеры

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

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

Читайте также: