Не вызывает сомнения тот факт, что инфракрасное дистанционное управление широко распространено в повседневной жизни. Оно используется для управления различными бытовыми приборами, такими как телевизоры, стереосистемы, видеомагнитофоны и спутниковые приемники сигналов. Инфракрасное дистанционное управление состоит из инфракрасной передающей и инфракрасной приемной систем, то есть из инфракрасного дистанционного управления, инфракрасного приемного модуля и микроконтроллера с декодированием.
Инфракрасный передатчик в дистанционном управлении излучает сигнал носителя с частотой 38 кГц. Этот сигнал кодируется чипом кодирования в дистанционном управлении. Он состоит из секции кода пилота, пользовательского кода, обратного кода пользователя, кода данных и обратного кода данных. Интервал времени импульса используется для различия между сигналами 0 и 1, и кодирование состоит из этих 0 и 1 сигналов. Пользовательский код на одном и том же дистанционном управлении остается постоянным, в то время как код данных может различать клавиши.
FFA25D | FF629P | FFE21D |
FF22DD | FF02FD | FFC23D |
FFE01F | FFA857 | FF906F |
FF6897 | FF9867 | FFB04F |
FF30CF | FF18E7 | FF7A85 |
FF10EF | FF38C7 | FF5AA5 |
FF42BD | FF4AB5 | FF52AD |
Когда нажимается кнопка на дистанционном управлении, оно отправляет инфракрасный носительный сигнал. Когда ИК-приемник получает сигнал, программа декодирует носительный сигнал и определяет, какая клавиша была нажата. МК декодирует полученный сигнал 01, определяя, какая клавиша была нажата с помощью дистанционного управления. Инфракрасный приемник, который мы используем, - это инфракрасный приемный модуль. Он состоит в основном из инфракрасного приемного устройства, которое интегрирует в себе прием, усиление и демодуляцию. Внутренний интегральный схема модуля выполнена демодуляцию и может работать от приема инфракрасного сигнала до вывода и совместима с сигналами TTL. Кроме того, он подходит для инфракрасного дистанционного управления и передачи данных по инфракрасному каналу. Инфракрасный приемный модуль, изготовленный приемником, имеет всего три контакта: сигнальный провод, VCC и GND. Это очень удобно для взаимодействия с Arduino и другими микроконтроллерами.
Технические характеристики:
Рабочее напряжение: 3,3-5 В (постоянный ток)
Выходной сигнал: Цифровой сигнал
Угол приема: 90 градусов
Частота: 38 кГц
Дистанция приема: 10 м
Тестовый код:
//*************************************************************************************
/*
4wd BT Car
lesson 6.1
IR remote
https://alash-electronics.kz/blogs/wiki
*/
#include <IRremote.h> // Подключение библиотеки IRremote
int RECV_PIN = 3; // Определение пина IR-приемника как D3
IRrecv irrecv(RECV_PIN);
decode_results results; // Результаты декодирования будут храниться в results
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Включение приемника
}
void loop() {
if (irrecv.decode(&results)) // Если декодирование успешно, получен набор инфракрасных сигналов
{
Serial.println(results.value, HEX); // Вывод кода в 16-ричной системе
irrecv.resume(); // Получить следующее значение
}
delay(100);
}
//*************************************************************************************
Результат теста:
После успешной загрузки кода на плату, подключите компоненты согласно схеме подключения, затем подключите плату к компьютеру с помощью USB-кабеля для питания. После включения откройте последовательный монитор и установите скорость передачи данных на 9600. Вытащите пульт дистанционного управления и отправьте сигнал на инфракрасный приемник. Вы увидите значение клавиши, соответствующей нажатой клавише. Если удерживать клавишу слишком долго, то могут появиться символы с ошибками.
Объяснение кода:
irrecv.enableIRIn(): После включения декодирования инфракрасных сигналов будут приниматься IR-сигналы.
decode(): Функция "decode()" будет непрерывно проверять успешность декодирования.
irrecv.decode(&results): После успешного декодирования эта функция вернет "true" и результаты будут храниться в "results". После декодирования IR-сигналов выполняется функция "resume()", и продолжается прием следующего сигнала.
Практическое расширение:
Мы декодировали значение клавиши дистанционного управления. А как насчет управления светодиодом с помощью измеренного значения? Мы можем разработать эксперимент. Подключите светодиод к D9, затем нажмите клавиши на дистанционном управлении, чтобы включить и выключить светодиод.
//*************************************************************************************
/*
4wd BT Car
lesson 6.2
IR remote LED
https://alash-electronics.kz/blogs/wiki
*/
#include <IRremote.h>
int RECV_PIN = 3; // Определение пина IR-приемника как D3
int LED_PIN = 9; // Определение пина светодиода как 9
int a = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Инициализация IR-приемника
pinMode(LED_PIN, OUTPUT); // Установка пина светодиода как выход
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 0xFF02FD && (a == 0)) {
Serial.println("HIGH");
digitalWrite(LED_PIN, HIGH);
a = 1;
} else if (results.value == 0xFF02FD && (a == 1)) {
Serial.println("LOW");
digitalWrite(LED_PIN, LOW);
a = 0;
}
irrecv.resume();
}
}
//*************************************************************************************
После успешной загрузки кода на плату, подключите компоненты согласно схеме подключения, затем подключите плату к компьютеру с помощью USB-кабеля для питания. После включения нажмите клавишу "OK" на дистанционном управлении, чтобы включить и выключить светодиод.