Подключение инфракрасного приемника к Arduino

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

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

Начнем с аппаратной части, нам потребуется ИК-приемник который и будет принимать наши сигналы с отправленные с пульта (если на картинке нет вашего приемника то гуглим, иначе можем сжечь его неправильным подключением). GND это минус, Vs это +5 вольт и Vo это выход нашего приемника.

Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino

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

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

Устанавливаем библиотеку и загружаем в Arduino тестовый скетч, открываем монитор порта (Ctrl+Shift+M в программе Arduino IDE), далее при нажатии кнопок на нашем ИК-пульте мы увидим коды кнопок которые принимает Arduino через ИК-приемник.

Подключение инфракрасного приемника к Arduino

Мы видим что наш ИК-пульт посылает сигналы в кодировке NEC и коды нажатых кнопок, а так же видим иногда текст "Received NEC: repeat; ignoring." это говорит о том что срабатывает защита от залипания кнопок (защита от дребезга кнопки или повторного нажатия в очень узкий промежуток времени).

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

*Следует учесть что мои коды кнопок выглядят так FF40BF, а в коде мы будем писать так 0xFF40BF, то есть добаляем к нашему коду кнопки 0x перед самим кодом.

#include <IRremote.h> // библиотека для ИК
int RECV_PIN = 6; // pin ИК приемника
IRrecv irrecv(RECV_PIN); // создаем объект получения сигнала с заданного порта
decode_results results; // переменная хранящая результат
int LED = 8; // pin нашего светодиода

void setup() {
	irrecv.enableIRIn(); // включаем ИК-приемник
	pinMode(LED, OUTPUT);	 // устанавливает режим работы - выход
}

void loop() {
	if (irrecv.decode(&results)) { // если есть сигнал
		if (results.value == 0xFF40BF) { // код моей кнопки "FF40BF". У Вас он будет свой!
			digitalWrite(LED, HIGH); // зажигаем светодиод
		}
		if (results.value == 0xFF32CD) { // код моей кнопки "FF32CD". У Вас он будет свой!
			digitalWrite(LED, LOW); // тушим светодиод
		}
		irrecv.resume(); // получаем следующее значение
	}
}

Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino

Теперь можно управлять с ИК-пульта чем вам вздумается ;)