суббота, 27 февраля 2016 г.

Начинаем работать с ИК приемником, или будем управлять светодиодами с пульта.


Для реализации этого проекта нам понадобиться немного радиодеталей: ИК приемник (VS 1838B), пульт ДУ (подойдет любой, но я буду использовать пока пульт от набора ардуино), два резистора на 100-200 Ом, конденсатор 10 мкФ, три светодиода разных цветов, и макетные провода с макетной платой.


Теперь немного теории (без этого никуда). Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Наверняка в каждом доме найдётся немало таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. А можно ли с помощью ПДУ (пульт дистанционного управления) управлять нашей Arduino Uno? Оказывается да! Для начала поставим скромную задачу: с помощью ПДУ зажигать и гасить светодиоды.

Для начала нам понадобиться любой ИК пульт (если у вас остались старые ИК ПДУ, то вот можно найти им применение).  Такие устройства ИК работают испуская на инфракрасном светодиоде импульсы ИК излучения определённой частоты (приблизительно от 38 до 40 кГц). Соответственно приемник (в нашем случае это VS1838B) может принимать любой ИК излучение, но «ненужное» излучение (несущая) должно быть отфильтровано (иначе будут ложные срабатывания), и в итоге остаётся только «нужный» сигнал данных (который передается при нажатии на кнопку ПДУ).


Но вернемся к нашему приемнику ИК VS1838B. Важно его грамотно подключить. А для этого давайте сначала познакомимся с его выводами. Он имеет три вывода: если посмотреть на датчик со стороны приёмника ИК сигнала, как показано на рисунке, то слева будет — выход на контроллер, по центру — отрицательный контакт питания (земля), и справа — положительный контакт питания (2.7 — 5.5В).

 Далее собираем схему и давайте подключим библиотеку IRremote (ее можно будет загрузить с Яндекс диска по этой ссылке). Если кто еще не знает как это сделать, то вот здесь можно будет все наглядно посмотреть (ссылка на видео). Следующим этапом нам нужно убедиться, что наш ПДУ действительно подает сигналы на ИК приемник и все отображается в мониторе порта. Вообще для этого есть отдельный скетч (который можно загрузить из примера в библиотеке IRremote), но давайте сразу убьём обоих зайцев: возьмём готовый скетч (который мы в дальнейшем будем настраивать).

/*
 Arduino, ИК(IR) приемник и пульт управления
*/

// Подключаем библиотеку для работы с IR приемником
#include <IRremote.h>

#define LED_PIN
int IRRECV_PIN = 2;

// Для управления цветом светодиода используем 3 ШИМ порта
int bluePin = 9;
int greenPin = 10;
int redPin = 11;

// Выставляем, на каком порту весит выход IR приемника
IRrecv irrecv(IRRECV_PIN);

decode_results res;

void setup() {
  // Включаем последовательное соединение с ПК
  Serial.begin(9600);
  // Включаем IR приемник
  irrecv.enableIRIn();
  // НАстраиваем выходы для нашего RGB светодиода
  pinMode(bluePin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(redPin, OUTPUT);

}

void loop() {
  // Принимаем и декодируем сигнал
  if (irrecv.decode(&res)) {
   
    // Сохраняем полученное значение в переменной
    int value = res.value;
   
    // Выводим на монитор последовательного порта значения.
    Serial.println(value);
   
    // В зависимости от кода полученного сигнала, выполняем действия.
    // Для используемого пульта кнопки 1,2,3 - RGB свечение, 9 - выключение
    if (value == 26775){
      setColor(255, 0, 0);
    } else if (value == 12495){
      setColor(0, 255, 0);
    } else if (value == 6375){
      setColor(0, 0, 255);
    } else if (value == 31365){
      setColor(0, 0, 0);
    }
    // Даем команду получать следующее значение
    irrecv.resume();
  }
}

// Функция включения необходимого цвета на нашем RGB светодиоде
void setColor(int red, int green, int blue) {
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}


В вашем варианте коды от пульта могут быть другими, так что замените мои значения (от китайского ПДУ в базовом наборе ардуино) на те, которые вы сможете увидеть в мониторе порта. И собственно все! После замены перезагрузите скетч и попробуйте теперь с ИК ПДУ зажигать и гасить светодиоды. У меня это получилось так (посмотрите видео, где я не только демонстрирую работу ИК ПДУ но так же делюсь и дальнейшими планами по реализации этого проекта). 

1 комментарий:

  1. у тебя ошибка в схеме подключения ИК , стоит vcc,data,gnd, а должно быть vcc,gnd,data

    ОтветитьУдалить