- Рабочее объяснение:
- Расшифровка сигналов ИК-пульта дистанционного управления с использованием Arduino:
- Описание схемы:
- Описание кода:
Ранее мы рассмотрели множество типов домашней автоматизации с использованием различных технологий, таких как домашняя автоматизация на основе DTMF, домашняя автоматизация, управляемая ПК с использованием Arduino, домашняя автоматизация, управляемая Bluetooth. В этом проекте мы используем беспроводную ИК-связь для управления бытовой техникой. В этом проекте Arduino используется для управления всем процессом. Мы отправляем некоторые команды в систему управления с помощью пульта дистанционного управления IR TV / DVD / MP3 для управления бытовой техникой переменного тока. После получения сигнала от ИК-пульта Arduino отправляет соответствующий сигнал на реле, которые отвечают за включение или выключение бытовой техники через драйвер реле.
Рабочее объяснение:
Работа над этим проектом понятна. Когда мы нажимаем любую кнопку ИК-пульта дистанционного управления, пульт отправляет код в виде последовательности закодированных импульсов с частотой модуляции 38 кГц. Эти импульсы принимаются датчиком TSOP1738 и считываются Arduino, а затем Arduino декодирует полученную серию импульсов в шестнадцатеричное значение и сравнивает это декодированное значение с предварительно определенным шестнадцатеричным значением нажатой кнопки. Если происходит какое-либо совпадение, Arduino выполняет относительную операцию, и соответствующий результат также отображается на ЖК-дисплее 16x2 с помощью соответствующих команд. В этом проекте мы использовали 3 лампы разных цветов, для демонстрации которых обозначены Fan, Light и TV.
Есть много типов ИК-пультов дистанционного управления, доступных для различных устройств, но большинство из них работают с сигналом с частотой около 38 кГц. В этом проекте мы управляем бытовой техникой с помощью пульта дистанционного управления ИК-телевизором. Для обнаружения ИК-сигнала дистанционного управления мы используем ИК-приемник TSOP1738. Этот датчик TSOP1738 может воспринимать сигнал частоты 38 кГц. Работа ИК-пульта ДУ и TSOP1738 подробно описана в этой статье: ИК-передатчик и приемник.
Составные части:
- Arduino UNO
- TSOP1738
- ИК-пульт для ТВ / DVD
- ULN2003
- Реле 5 вольт
- Лампа с держателем
- Соединительные провода
- Хлебная доска
- ЖК-дисплей 16x2
- Источник питания
- PVT
- IC 7805
В этом проекте мы использовали кнопки с цифрами 7, 8 и 9 на ИК-пульте дистанционного управления для управления вентилятором, освещением и телевизором соответственно, а кнопка ВКЛ / ВЫКЛ (кнопка питания) используется для включения и выключения всех устройств одновременно.
Здесь мы использовали метод переключения для включения и выключения одного бытового прибора. Переключить метод есть не что иное, как получить это независимо от того, нажата ли кнопка нечетное количество раз или нечетное количество раз. Это можно найти, получив напоминание после деления его на 2 (i% 2), если есть какое-то напоминание, устройство будет включено, а если напоминание равно 0, оно будет выключено. Предположим, что клавиша 7 нажата на пульте дистанционного управления, а затем пульт отправляет сигнал на Arduino через ИК-приемник TSOP. Затем Arduino декодирует его и сохраняет декодированное значение в переменной результатов. Теперь переменная результатов имеет шестнадцатеричное значение 0x1FE00FF, после сопоставления его с предопределенным шестнадцатеричным значением ключа 7 (см. Изображение выше) Arduino включает вентилятор. Теперь, когда мы снова нажимаем ту же клавишу (клавишу 7), ИК отправляет тот же код. Arduino получает тот же код и сопоставляется с тем же кодом, что и раньше, но на этот раз вентилятор выключен из-за переключения бита (i% 2).
Расшифровка сигналов ИК-пульта дистанционного управления с использованием Arduino:
Вот список кодов удаленного декодирования DVD NEC типа:
Если вы не знаете декодированный выход для вашего ИК-пульта, его легко найти, просто выполните следующие действия:
- Загрузите удаленную ИК-библиотеку отсюда
- Разархивируйте его и поместите в папку «Библиотеки» Arduino. Затем переименуйте извлеченную папку в IRremote.
- Запустите приведенную ниже программу на своем Arduino и откройте окно Serial Monitor в Arduino IDE. Теперь нажмите любую кнопку ИК-пульта ДУ и посмотрите соответствующий декодированный шестнадцатеричный вывод в окне Serial Monitor.
* IRremote: IRrecvDemo - демонстрирует получение ИК-кодов с помощью IRrecv * ИК-детектор / демодулятор должен быть подключен к входу RECV_PIN. * Версия 0.1, июль 2009 г. * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Вышеупомянутая программа взята из папки «examples» библиотеки IRremote, вы можете просмотреть другие примеры, чтобы узнать больше об использовании ИК-пульта дистанционного управления. Вот как мы декодировали ИК-выход дистанционного управления.
Описание схемы:
Подключения этой схемы очень просты, здесь для отображения состояния бытовой техники используется жидкокристаллический дисплей, который напрямую подключен к Arduino в 4-битном режиме. Выводы данных ЖК-дисплея, а именно RS, EN, D4, D5, D6, D7, подключены к цифровому выводу Arduino номер 6, 7, 8, 9, 10, 11. А выходной вывод TSOP1738 напрямую подключен к цифровому выводу номер 14 (A) Arduino. И вывод Vcc подключен к +5 В, а вывод GND подключен к клемме заземления схемы. Драйвер реле, а именно ULN2003, также используется для управления реле. 5-вольтовые реле SPDT 3 используются для управления ОСВЕЩЕНИЕМ, ВЕНТИЛЯТОРОМ и ТВ. И реле подключены к контактам 3, 4 и 5 Arduino через драйвер реле ULN2003 для управления ОСВЕЩЕНИЕМ, ВЕНТИЛЯТОРОМ и ТВ соответственно.
Описание кода:
В программной части этого проекта. Прежде всего, в программировании мы включаем библиотеку для ИК-пульта дистанционного управления, которая легко доступна в Google. И определите контакт и объявите переменные.
#включают
Затем включаем заголовок для жидкокристаллического дисплея, а затем определяем выводы данных и управления для ЖК-дисплея и бытовой техники.
#включают
После этого нам нужно инициализировать ЖК-дисплей и указать направление вывода, которое используется для вентилятора, света и телевизора.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (Вентилятор, ВЫХОД); pinMode (Свет, ВЫХОД); pinMode (ТВ, ВЫХОД);
Как уже объяснялось, нижеприведенная часть кода используется для сравнения полученного шестнадцатеричного значения с уже определенным шестнадцатеричным кодом этой кнопки. Если он совпадает, то относительная операция выполняется с использованием соответствующих функций, указанных в коде.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); задержка (100); lcd.setCursor (0,0); lcd.print («Fan Light TV»); если (results.value == 0x1FE00FF) {я ++; int x = я% 2; digitalWrite (Fan, x);