Ардуино ик пульт. ИК-пульт для Arduino: создание универсального пульта управления

Как создать универсальный ИК-пульт на базе Arduino. Какие компоненты нужны для сборки ИК-пульта. Как запрограммировать Arduino для работы с ИК-сигналами. Каковы преимущества самодельного ИК-пульта на Arduino.

Содержание

Принцип работы ИК-пульта дистанционного управления

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

  • При нажатии кнопки на пульте генерируется определенный код команды
  • Этот код преобразуется в последовательность ИК-импульсов
  • ИК-светодиод на пульте излучает эти импульсы
  • ИК-приемник в управляемом устройстве принимает сигнал
  • Микроконтроллер устройства декодирует принятый сигнал и выполняет соответствующее действие

Частота ИК-сигнала обычно составляет 38 кГц. Это позволяет отличать команды пульта от фонового ИК-излучения.

Необходимые компоненты для сборки ИК-пульта на Arduino

Для создания универсального ИК-пульта на базе Arduino потребуются следующие компоненты:


  • Arduino (например, Arduino UNO или Arduino Nano)
  • ИК-светодиод
  • Резистор 100 Ом
  • Кнопки для управления
  • LCD дисплей (опционально, для отображения меню)
  • Макетная плата
  • Соединительные провода
  • Батарейный отсек

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

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

Схема подключения компонентов ИК-пульта на Arduino выглядит следующим образом:

  1. ИК-светодиод подключается анодом к пину 3 Arduino через резистор 100 Ом
  2. Катод ИК-светодиода подключается к GND
  3. Кнопки подключаются одним выводом к пинам Arduino (например, 4, 5, 6, 7), а другим — к GND
  4. При использовании LCD дисплея он подключается по стандартной схеме к Arduino

Важно правильно подобрать номинал резистора для ИК-светодиода. Слишком маленькое сопротивление может вывести светодиод из строя.

Программирование Arduino для работы с ИК-сигналами

Для работы с ИК-сигналами в Arduino используется библиотека IRremote. Основные этапы программирования:


  1. Установка библиотеки IRremote
  2. Инициализация объекта IRsend в скетче
  3. Считывание нажатий кнопок
  4. Генерация соответствующих ИК-кодов
  5. Отправка ИК-сигналов с помощью функции IRsend.sendNEC()

Пример кода для отправки ИК-команды:


#include <IRremote.h>

IRsend irsend;

void setup() {
  // Настройка пинов кнопок
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {
    irsend.sendNEC(0x1234567, 32); // Отправка ИК-кода
    delay(100);
  }
}

Создание меню и интерфейса пользователя

Для удобства использования универсального пульта стоит создать простой интерфейс пользователя:

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

Пример структуры меню:

  1. Выбор устройства (ТВ, DVD, кондиционер и т.д.)
  2. Выбор команды для устройства
  3. Отправка выбранной команды
  4. Режим обучения новым кодам

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


Программирование новых ИК-кодов

Чтобы сделать пульт по-настоящему универсальным, нужно добавить возможность программирования новых ИК-кодов:

  1. Подключите ИК-приемник к Arduino
  2. Реализуйте режим обучения в программе
  3. При активации режима обучения считывайте коды с оригинальных пультов
  4. Сохраняйте полученные коды в EEPROM Arduino
  5. Добавьте возможность назначать сохраненные коды кнопкам пульта

Это позволит легко добавлять управление новыми устройствами без перепрограммирования Arduino.

Оптимизация энергопотребления пульта

Для увеличения времени автономной работы пульта от батарей важно оптимизировать его энергопотребление:

  • Используйте режим сна Arduino между нажатиями кнопок
  • Отключайте неиспользуемые модули (например, АЦП)
  • Применяйте LCD дисплей с низким энергопотреблением
  • Оптимизируйте код для уменьшения времени активной работы
  • Используйте качественные алкалиновые или литиевые батареи

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

Преимущества самодельного ИК-пульта на Arduino

Создание универсального ИК-пульта на базе Arduino имеет ряд преимуществ:


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

Самодельный пульт может стать незаменимым устройством в умном доме, объединив управление всей техникой.

Расширение функциональности пульта

На базе созданного ИК-пульта можно реализовать дополнительные полезные функции:

  • Добавление модуля Bluetooth для управления со смартфона
  • Реализация голосового управления
  • Создание сценариев для управления несколькими устройствами
  • Добавление датчика движения для автоматического включения
  • Интеграция с системами умного дома

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

Советы по отладке и устранению неисправностей

При разработке ИК-пульта на Arduino могут возникнуть различные проблемы. Вот несколько советов по их устранению:


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

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


Универсальный ДУ ИК пульт на Ардуино

Изучив инструкцию, вы можете собрать на базе IR remote Arduino один универсальный ДУ пульт для телевизора, который заменит все пульты в вашем доме.

Для ИК пульта Ардуино вам понадобятся:

  • Arduino (я использовал дешевую копию Uno)
  • Плата LCD Keypad Shield
  • 1 инфракрасный светодиод
  • 1 инфракрасный датчик
  • Компьютер для запуска компилятора Arduino

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

  • Программа для приема сигналов (ссылка)
  • Основная программа (ссылка)
  • Видео программа (ссылка)

Шаг 1: Введение

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

Процесс связи между эмиттером (пультом) и ресивером (устройством) начинается с нажатия пользователем кнопки на пульте. Ресивер имеет генератор и чип с определенной конфигурацией, что позволяет ему принимать инфракрасные волны частотой 39 кГц. Каждое нажатие кнопки передает чипу определенный код, что позволяет устройству различать команды.

Доходя до инфракрасного светодиода, сигнал преобразуется в ряд импульсов (940 нм), а затем в квадратичную волну, которая отдает команду устройству.

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

Шаг 2: Аппаратное оборудование

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

Мы будем использовать Ардуино и LCD Keypad Shield для визуализации меню кодов пульта.

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

Шаг 3: Считывание кодов

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

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

Код взят из учебника Adafruit, я немного изменил его для простоты понимания.

После загрузки кода и подключения датчика мы переходим к вкладке «Tools» и нажимаем на «Serial Monitor». После этого вы увидите сообщение «Ready to decode IR!». Теперь нажатие кнопки на пульте, направленном на сенсор, будет считывать код.

Если вы используете предоставленную мной версию, показания появятся в форме кода, и код будет готов для вставки в программу Arduino. Чтобы не потерять этот код, можно создать .txt файл и вставить его туда.

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

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

Совет: если Arduino показывает сообщение «Serial port ‘COM3’ not found. Did you select the right one from the Tools > Serial Port menu?», значит, ваш Arduino не подключен или порт неисправен.

Как только все необходимые коды были получены, переходим к следующему шагу.

Шаг 4: Настройка кодов: меню и подменю

Перед загрузкой кодов нам нужно визуализировать их. Нужно создать меню с необходимыми функциями.

Создать меню несложно, но процедура довольно запутана. Я прокомментировал каждую часть кода для удобства.

Я бы хотел использовать библиотеку, но вместо этого решил создать единую монолитную программу, чтобы вам не пришлось скачивать что-либо еще. Это облегчит понимание устройства кода. Создание меню — очень полезный навык, необходимый для любого программиста.

Меню:

Как только вы открыли файл с кодом, в первую очередь нужно посмотреть на строки в зеленой рамке.

Эти константы ограничивают область меню и подменю. Отсчет начинается с числа 0, т.е. если ввести «2», программа создаст три меню.

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

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

Подменю:

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

Коды:

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

Необходимо скопировать и вставить коды, которые были получены при чтении сигналов устройства в соответствующие меню и подменю. Проследите, чтобы индексы сигналов совпадали, иначе пульт не будет работать.

После этого нужно сохранить полученный код.

Шаг 5: Проверка

После завершения манипуляций с кодом, убедитесь, что вы переставили контакт инфракрасного светодиода из цифрового разъема 3 в ground.

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

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

Ёмкость резистора для основы (выход посередине транзистора) должна составлять около 1-2 к.

Резистор может не понадобиться, так как здесь используется высокочастотное переключение, и светодиоды сами будут управлять мощностью. Я пробовал использовать стандартные ИК-светодиоды с питанием в 5 В от 3 разъема, это работало без проблем.

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

Arduino пульт – RoboCraft


Я частенько делаю роботов или игрушки на основе Arduino или подобных плат. И конечно хотелось управлять всем этим. Вариантов много, но я выбрал и опробовал три.

Самое первое, что мне пришло в голову это ИК пульт. Подключив к своему гусеничному шасси ИК приемник от старой игрушки, я начал искать решения насчет пульта. И здесь два варианта:

1. использовать пульт от телевизора или другой техники, что есть под руками. Тогда возникает много возни, проблем и требует много времени. Вначале надо считать коды кнопок с пульта, а затем записать их в свою прошивку. Еще одна проблема заключается в том, что пульт посылает сигнал при нажатии кнопок один раз, не повторяет его (если устройство движется или далеко, то за один раз приемник может его не считать), и ничего не отправляет при отпускании кнопки, что весьма неудобно, когда надо управлять двигающейся техникой. Ну и не хочется управлять телевизором и машинкой одновременно.

2. сделать свой пульт.

Вот по второму путь я и пойду. Для основы использовал старый джойстик от приставки Sega. Там есть все что нужно. Четыре стрелки (удобно при управлении машинками) и 8 кнопок. В качестве «мозгов» Arduino Pro Mini 3.3v 8MHz.

Разобрав джойстик, видим плату с контролером, отпаиваем все провода от нее. Ножом разрезаем все дорожки у контролера на плате, чтобы он нам не мешал и не конфликтовал с Arduino. Около каждой кнопки есть небольшой кружок с оголённой дорожкой. Взяв паяльник, припаиваем к каждому кружку по проводу, а также найдя общий провод припаять и к нему провод. Завернув провода назад, получается примерно так:

С обратной стороны на двусторонний скотч приклеиваем нашу Arduino. Небольшое отступление по поводу выбора Arduino. В принципе можно использовать любую плату, главное чтобы она поместилась внутрь джойстика. Припаиваем повода по следующие схеме:
Джойстик Arduino
Стрелка вверх 2
Стрелка вниз 4
Стрелка влево 5
Стрелка вправо 6
Кнопка A 8
Кнопка B 10
Кнопка C 7
Кнопка X 12
Кнопка Y 11
Кнопка Z 9
Кнопка Start 14 (A0)
Кнопка Reset RST
ИК светодиод + 3
Общий GND


Сделал вывод для подключения USB-TTL. Кнопка Reset нужна для перезагрузки Arduino при прошивке.

Для индикации включения вставил светодиоды. А также выключателя.

В итоге получилось следующая конструкция:

Аккумуляторы внутрь не поместились, поэтому припаял к выключателю плюсовой провод от отсека для батареек, минус к GND Arduino. Приклеил отсек к задней крышке джойстика. Получает вот так:

Признаюсь честно сборка этого джойстика – дело не из легких. Провода норовят вылезти наружу или попадают под внутренние части не давая закрыть корпус. У меня получилось не сразу, но через попыток пять (плюс — минус десять) собрался.
При написании прошивки я записал случайный набор чисел (коды) на каждую команду. Эти коды использую при написание прошивки управляемого устройства. Коды посылаются по три раза, что исключает возможность пропуска команды. При отпускании кнопки также отправляется код, который используется для остановки управляемого устройства.
IR
Подвожу итог: управление уверенное, но дальность маленькая, возможно, проблема в недостаточном напряжении или силе тока вывод Arduino Pro Mini.

Так как ИК пульт меня не устроил, в тот же корпус добавил передатчик радио модуля на 433 МГц. Из-за несчастного случая прошивка не сохранилась. Опробовав этот вариант, могу сказать следующее: дальность хорошая, но как только включается нагрузка в виде электромотора, помехи мешают приему сигнала и управление отсутствует. Уверенно работает только с маленькими моторчиками (типа таких, которые стоят в SG-90)

Пульт на радио модуле меня тоже не устроил, поэтому перешел к третьему варианту – Bluetooth модулю. В пульт вставил HC-06. В интернете полно инструкции, поэтому не буду рассказывать про настройку подробно. У меня модуль HC-05 стоит на шасси и настроен на подключение к HC-06 в пульте. Логичнее наверно сделать наоборот, но для перехода в режим AT команд модуля HC-05 надо нажать кнопку на модуле (неудобно каждый раз когда я решу что-нибудь поменять разбирать пульт), а модулю HC-06 достаточно разъединения. И тогда достаточно записать специальную прошивку в ардуино (Arduino выступает в роли простого передатчика от компьютера к HC-06) и отправлять команды через терминальную программу или Arduino IDE . Модули работаю на скорости 57600, на мой взгляд, этого достаточно.
Отправка AT команд
Bluetooth пульт
Надеюсь вам было интересно. Если есть вопросы – пишите.

Программа Arduino IR Remote для управления мобильным роботом

Раскрытие информации: Некоторые ссылки ниже являются партнерскими ссылками. Это означает, что без каких-либо затрат для вас я буду получать партнерскую комиссию, если вы перейдете по ссылке и совершите покупку. Learn Robotics является участником партнерской программы Amazon Services LLC, партнерской рекламной программы, предназначенной для предоставления веб-сайтам возможности получать доход от рекламы за счет рекламы и ссылок на Amazon.com.

Если вам понравилась моя статья об управлении мобильным роботом Arduino с помощью Bluetooth-клавиатуры, то вас ждет настоящее удовольствие! На этой неделе статья будет посвящена использованию инфракрасного (ИК) датчика для управления роботом Arduino с помощью пульта от телевизора.

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

Все, что касается инфракрасного излучения

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

Он забыл упомянуть роботов в своем видео, но для этого и предназначен этот урок!

Наша задача

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

Шаг 1. Загрузите и добавьте библиотеку IR Remote с Github

Рафи Хан любезно написал библиотеку IR Remote, которая упростит нашу разработку для этого проекта. Идите вперед и загрузите копию его библиотеки здесь.

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

Шаг 2. Запустите тестовый удаленный код

Часть A. Откройте пример программы, IRrecvDemo.ino ( Файл > Примеры > IRremote > IRrecvDem o )

Часть B . Подключите ИК-датчик к контакту 11 на вашем Arduino (подойдет любой доступный контакт ШИМ, просто убедитесь, что вы изменили значение int RECV_PIN = 11; на контакт, к которому подключен ваш датчик.)

Часть C.  Загрузите код на Arduino. Откройте серийный монитор. Затем нажмите несколько кнопок на пульте. Вы должны увидеть разные шестнадцатеричные значения, отображаемые в последовательном мониторе для каждой нажатой кнопки. Вот визуальное изображение того, как это должно выглядеть. (Ваши шестнадцатеричные значения могут отличаться). Ряд F означает, что был получен другой HEX-код.

HEX-значения, полученные при нажатии кнопок на моем пульте дистанционного управления телевизором

Шаг 3. Сопоставьте каждую кнопку с функцией управления

Мы собираемся изменить этот код IRrecvDemo, чтобы получать и возвращать results.value как unsigned long. Это немного упростит сравнение показаний, а не преобразование в HEX. Как только у нас будет чтение, мы затем инициируем robot.go() или команду перемещения на роботе.

Ты можешь двигаться?

Если вы не записали код для включения двигателей (т. е. вы не можете двигаться вперед, назад, влево, вправо или остановиться), то ВЫ ДОЛЖНЫ сначала написать этот код. Если ваш робот использует L298N, тогда не стесняйтесь использовать мою библиотеку Create Robot. Установите эту библиотеку так же, как мы сделали для библиотеки IR Remote, и обязательно следуйте README.md для получения инструкций по подключению и программированию. После того, как вы настроили и заработали код перемещения, перейдите к следующим шагам.

Мыслительный процесс. Обязательно прочитайте этот абзац!

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

Шаг 3. Проверка кода

Посмотрите видеообзор. Иногда картинка (или видео) стоит тысячи слов.

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

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

ИК-пульт + робот Arduino = простой пульт дистанционного управления

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

В то время как я предоставил основу для использования ИК-пульта дистанционного управления для управления движением робота, я предлагаю вам использовать другие кнопки для управления скоростью, датчиками и режимами. И если вы примите участие в этом вызове, ПОЖАЛУЙСТА, поделитесь своим проектом со мной в Facebook или Instagram (отметьте @learnrobotics)! Мне нравится видеть, чем занимаются мои читатели!

Вот и все!

Спасибо, что ознакомились со статьей этой недели! Если вам понравился этот урок, и вы хотите увидеть больше подобных, пожалуйста, оставьте комментарий ниже.

ИК-пульт дистанционного управления и приемник для Arduino

  • {{выделение}}

9,95 $

Номер детали: VUPN6334

Купить 1+ 9,95 $  
Купить 10+ 8,59 $ Сохранить задачу%
prices.length > 1″ border=»0″ cellpadding=»0″ cellspacing=»0″>
Купить {{ price.low }}+ ${{ parseFloat(price.price).toFixed(2) }} Сохранить {{ Math.floor(((product_selected().prices[0].price — price.price) / product_selected().prices[0].price) * 100) }}%  

Посмотреть корзину »

{{ product_selected().in_stock }} в наличии для немедленной отправки.

Этот продукт не доступен в настоящее время.

Посмотреть корзину »

Recommended Products

{{ rp[‘product_title’] }}

${{ rp[‘product_price’] }}

Product Description


VS1838B TL1838 IR Receiver Remote Control VS1838 HX1838 Kit for Arduino

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

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

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