Управляйте своим arduino с помощью пульта управления arduino+

Управляйте своим Arduino с помощью пульта управления

Разбираемся как контролировать что-либо в вашем доме с помощью простого пульта дистанционного управления и Ардуино.

Шаг 1. Что нужно

Вот что вам понадобится для контроля устройств через пульт управления и Ардуино:

  • Arduino (я использую UNO)
  • Макет без паяльника
  • Инфракрасный приемник
  • Беспаечные проводы
  • Любой пульт дистанционного управления

Шаг 2. Сборка приемника

Подключите инфракрасный приемник к макету и подключите его к вашему Arduino:

  • подключите правый штырь к 5V Arduino,
  • центральный вывод к GND,
  • левый штырь к цифровому выводу 11.

Шаг 3. Код проекта

Я использовал библиотеку IRremote для arduino. Вы можете скачать её ниже:

  1. Закройте среду разработки Arduino и разархивируйте ее в папку: arduino/libraries.
  2. Запустите Arduino >Шаг 4. Определение кнопок

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

  • появился код 50088119, вы нажали кнопку включения / выключения
  • код 50073839, кнопка «Открыть / закрыть»
  • и т.д.

Шаг 5: Контроль

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

Удачи всем любителям Arduino. Больше уроков смотрите в разделе Уроки Ардуино.

Урок 5 – Управление Arduino с помощью пульта ДУ (IR). Библиотека IRremote

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

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

Для урока я буду использовать вот такой набор и Arduino UNO.

Купить пульт с IR приемником всего за 100 руб. можно тут.

Приемники могут быть распаянные как в моем случае.

И вот такого плана.

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

Подключаем к Arduino UNO вот по такой схеме. К другим Ардуинкам подключается аналогично.

Для работы нам понадобиться библиотека IRremote. Скачать ее можно тут.

С библиотекой устанавливается ряд примеров. Нам понадобиться IrrecvDemo.

После того как скетч загружен и IR приемник подключен можно проверить какой код соответствует той или иной кнопке пульта ДУ. Поднажимайте на кнопки и в мониторе последовательного порта (Ctrl+Shift+M) вы уведите следующее.

У вас возник наверное вопрос что за повторяющая команда FFFFFFFF. Это команда выводиться когда вы долго удерживаете кнопку на пульте и на Ардуино приходить одинаковая команда. В этом нет ни чего страшного, а иногда это даже полезно. На основе данной команды я сделал управление машинкой с помощью пульта ДУ. При этом машинка едет только тогда, когда нажата кнопка пульта. Отпускаем и машина перестает ехать и поворачивать.

Само простое, чем можно управлять это включение и выключения встроенного светодиода на плату Arduino при помощи пульта дистанционного управления и инфракрасного приемника.

Схема подключения как и в примере выше. Коды кнопок моего пульта:

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

Вот так можно легко научить вашу Arduinо понимать команды с пульта.

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Понравилась статья? Поделитесь ею с друзьями:

FAMAT › Блог › ROBOTяга ARDUINO — 4. ИК управление.

РОБОТяга уже ездит… можем не очень контролируемо…www.drive2.ru/b/2816135/
Давайте заставим его слушать нас!
Есть самый простой способ управлять роботом — с помощью Инфракрасного излучения (ИК).
Не бойтесь, в ходе экспериментов никто не пострадает – ИК излучение будет излучать пульт управления из комплекта робота 🙂

Необходимо:
— ИК приемник с пультом — в наборе назывался «HX1838 Infrared Remote Control Module».
— Провода.
— Крепеж/двухсторонний скотч.

В комплекте с роботом идет:
ИК пульт Модель 042803. По всей видимости он «рождался» чтобы управлять автомобильными МР3 проигрывателями… Вообще нам подойдет практически любой пульт! Об этом я расскажу далее.

ИК приемник HX1838 с платой подключения «адаптером».

Данные приемника HX1838 можно увидеть здесь: dalincom.ru/datasheet/AX-1838HS.pdf
Электрическая схема “адаптера”:

Подключение:
Все, что нужно подключить — это ИК приемник.
Для этого ИК приемник нужно:
— вставить в имеющиеся разъемы «адаптера», или
— припаять в имеющиеся разъемы «адаптера».
Я выбрал – «вставить».
Далее подключаем плату с ИК к Arduino — подключение простое – смотрите таблицу ниже.
ВНИМАНИЕ: Если будите менять схему подключения – на 13 разъеме Arduino ИК датчик не работает.
ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения. Цвет проводов указал себе для удобства — он может быть любым 🙂

Осталось прикрепить ИК датчик к роботу – главное условие, чтобы ИК датчик был на видном месте для ИК сигналов… Я выбрал место в «корме» робота. Крепил винтом, но можно и на двух сторонний скотч.

Программирование.
Теперь самое интересное!
Научим РОБОТягу послушности 🙂

Но сначала немного про пульт…
Я уже писал, что нам подойдет почти любой пульт.
Все дело в том, что нам нужно только знать какие коды выдает пульт при нажатии каждой кнопки.
А это оказалось очень просто – вот например, тут написано как считать код с любого пульта — robotclass.ru/tutorials/arduino-ir-remote-control/ .
Если решите попробовать – не забудьте поменять разъем подключения ИК на 12 (для нашего робота).

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

Для Пульта модель 042803 вам не нужно этого делать, так как я уже узнал коды соответствующие каждой кнопке данного пульта – они в таблице ниже.
ПРИМЕЧАНИЕ: ИК пульт Модель 042803 использует кодировку NEC. Может, зачем то вам это пригодится 🙂

Скетч – тут тоже все просто, благодаря специальной библиотеке IRremote – она уже есть в Arduino IDE.
Каждому коду (кнопке) устанавливаем действие, которое должен делать робот и вперед!
В моем случае запрограммированы следующие кнопки:
2 – прямо;
8 – назад;
4 – поворот влево;
6 – поворот вправо;
5 – стоп.
В отличии от предыдущего примера управление движением моторов сгруппировано в функции, например ВПЕРЕД:
void forward (int a) // ВПЕРЕД
<
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, HIGH);
analogWrite (MotorRightSpeed, 150);
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, HIGH);
analogWrite (MotorLeftSpeed, 150);
delay (a * 50);
>

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

В этом скетче, кстати, не задействованы движения типа «разворот».
Можете поэкспериментировать и поменять, как вам понравится.
Кроме того можно поиграть со скоростями движения – ускориться или замедлиться.
Например, в команде ВПЕРЕД (см. выше) «условная» скорость (ШИМ) всего 150 из максимальной 255!
Но не рекомендую снижать ее ниже 100 – при таком значении робот будет очень вялым… и может вообще отказаться двигаться.

СКЕТЧ
[code]
//Управляем роботом с помощью ИК пульта Модель 042803. Для других пультов нужно менять коды.

// *********************** Установка выводов моторов ************************
int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA
int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1
int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2
int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3
int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4
int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB
int duration;

// ************************ Настройка ИК управления ************************
const int irReceiverPin = 12; // Инфокрасный датчик (D12)

long IRfront = 0x3D9AE3F7;//код пульта для кнопки 2 — ВПЕРЕД
long IRback = 0x1BC0157B;//код пульта для кнопки 8 — НАЗАД
long IRturnright = 0x449E79F;//код пульта для кнопки 6 — ВПРАВО
long IRturnleft = 0x8C22657B;//код пульта для кнопки 4 — ВЛЕВО
long IRstop = 0x488F3CBB;//код пульта для кнопки 5 — СТОП

IRrecv irrecv (irReceiverPin); // определение IRrecv для приема инфракрасных сигналов
decode_results results; // результаты декодирования ИК сигналов

//****************** Настраиваем параметры выводов ARDUINO ******************
pinMode (MotorLeftForward, OUTPUT);
pinMode (MotorLeftBack, OUTPUT);
pinMode (MotorLeftSpeed, OUTPUT);

pinMode (MotorRightForward, OUTPUT);
pinMode (MotorRightBack, OUTPUT);
pinMode (MotorRightSpeed, OUTPUT);

irrecv.enableIRIn (); // включение ИК декодирования
>
// ****************** Задаем основные направления движения ******************
void forward (int a) // ВПЕРЕД
<
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, HIGH);
analogWrite (MotorRightSpeed, 150);
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, HIGH);
analogWrite (MotorLeftSpeed, 150);
delay (a * 50);
>
void right (int b) // ПОВОРОТ ВПРАВО (одна сторона)
<
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, HIGH);
analogWrite (MotorLeftSpeed, 200);
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, LOW);
delay (b * 50);
>
void left (int c) // ПОВОРОТ ВЛЕВО (одна сторона)
<
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, HIGH);
analogWrite (MotorRightSpeed, 200);
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, LOW);
delay (c * 50);
>
void turnR (int d) // РАЗВОРОТ ВПРАВО (два стороны)
<
digitalWrite (MotorRightBack, HIGH);
digitalWrite (MotorRightForward, LOW);
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, HIGH);
delay (d * 50);
>
void turnL (int e) // РАЗВОРОТ ВЛЕВО (два стороны)
<
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, HIGH);
digitalWrite (MotorLeftBack, HIGH);
digitalWrite (MotorLeftForward, LOW);
delay (e * 50);
>
void stopp (int f) // СТОП
<
digitalWrite (MotorRightBack, LOW);
digitalWrite (MotorRightForward, LOW);
digitalWrite (MotorLeftBack, LOW);
digitalWrite (MotorLeftForward, LOW);
delay (f * 50);
>
void back (int g) // НАЗАД
<
digitalWrite (MotorRightBack, HIGH);
digitalWrite (MotorRightForward, LOW);
digitalWrite (MotorLeftBack, HIGH);
digitalWrite (MotorLeftForward, LOW);;
delay (g * 50);
>
// *************************** Управление по ИК ******************************
void loop()
<
if (irrecv.decode (& results)) // Декодирование выполнено успешно — получены ИК сигналы
<
Serial.println( results.value, HEX ); // печатаем данные — может пригодится при настройке
// *********************************************
if (results.value == IRfront) // ВПЕРЕД
<
forward (10);
>
// *********************************************
if (results.value == IRback) // НАЗАД
<
back (10);
>
// *********************************************
if (results.value == IRturnright) // поворот ВПРАВО
<
right (6);
>
// *********************************************
if (results.value == IRturnleft) // поворот ВЛЕВО
<
left (6);
>
// *********************************************
if (results.value == IRstop) // СТОП
<
stopp (1);
>
irrecv.resume (); // Перейти к следующим полученным ИК сигналам
>
>
[/code]

Ну и напоследок показательное выступление:

Эксперимент c Arduino №14. ИК пульт дистанционного управления

Введение

Давайте теперь научимся управлять электроникой дистанционно. Самый простой и доступный способ – с помощью инфракрасного пульта дистанционного управления. Такой способ дистанционного управления крайне распространен и привычен каждому.

Благодаря своей дешевизне, простоте, экономичности и универсальности, ИК пульт всегда будет занимать свое место среди устройств дистанционного управления, наряду с Bluetooth, радио, и WiFi.

Принцип действия

ИК-приемник на Ардуино способен принимать и обрабатывать инфракрасный сигнал, в виде импульсов заданной длительности и частоты.

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

Чтобы сигнал от пульта ДУ принимался ИК приемником Ардуино, пульт должен быть настроен на соответствующую частоту. Поэтому не каждый пульт ДУ подойдет для нашего ИК приемника.

Схема подключения

Разберем на распиновку ИК приемника. Традиционный ИК-приемник имеет три контакта:

Распиновка ИК приемника для пульта ДУ

  • Питание (VCC, 5V)
  • Земля (GND)
  • Данные (выходное напряжение, VOUT)

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

Давайте же соберем что-нибудь!

Задача

Светодиод, управляемый дистанционно.

Необходимые компоненты

Итак, нам понадобится:

  • 1 пульт ДУ. Подойдет практически любой ИК пульт дистанционного управления.
  • Плата Ардуино, макетная плата, перемычки

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

Схема сборки

Соберем такую схему:

Скетч

Для работы нашего скетча нам понадобится специальная библиотека — Arduino-IRremote, которую потребуется установить.

Загрузим в ардуино такой скетч:

Результат

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

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

Объяснение

Для работы с пультом нам потребуется объявить два объекта: типа IRrecv – для приемника и типа decode_results – для разбора полученных приемником данных.

decode_results irData; // переменная для получения данных от ИК приемника

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

Чтобы приемник начал работать на прием, необходимо его включить. Мы это делаем в функции setup():

Метод decode() позволяет получить данные от приемника.

Если decode() возвращает значение > 0, то сигнал поступил, и его можно проанализировать.

Чтобы понять какой именно сигнал получил, мы анализируем свойство value объекта данных:

Чтобы продолжить получение данных, надо вызвать метод resume():

Заключение

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

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

Источники:

http://portal-pk.ru/news/147-urok-4—upravlenie-arduino-s-pomoshchyu-pulta-du-ir.html

http://www.drive2.ru/b/2818339/

http://jarduino.ru/2019/09/15/arduino-exp14-ir-remote-control/

http://arduinoplus.ru/cvetok-kotorii-sleduet-za-svetom/

Ссылка на основную публикацию