Тарифы Услуги Сим-карты

Управляем любой ду техникой дома по ик с вебстраницы. Управление arduino пультом ИК

Обычно пульты дистанционного управления телевизора, кабельной приставки, Blu-ray плеера и стерео системы не только занимают место, но и затрудняют работу по управлению всеми этими устройствами. Вы можете рассмотреть вариант покупки универсального пульта, но они обычно дорогие и иногда не обеспечивают требуемый уровень управления или интерфейс. В данном проекте создается устройство, которое может отправлять и принимать коды пульта управления со стандартной веб-страницы. Вы сможете запрограммировать требуемую функциональность с любого смартфона или компьютера!

В данном проекте используется модуль Arduino Yún, который специально разработан для управления устройствами с поддержкой сетевого соединения. Yún имеет два процессора, первый из которых запускает операционную систему Linux и может подключаться к проводной или беспроводной сети. Второй процессор выполняет те же функции, что и процессор в модуле Arduino Leonardo. Поэтому он обеспечивает хорошую совместимость с библиотеками Arduino и аппаратными средствами.

В данном проекте для отправки и приема сигналов пульта дистанционного управления используется инфракрасный светодиод и приемник. Инфракрасный свет невидим для человеческого глаза, но легко детектируется электронными датчиками. Для более надежной передачи сигнала устройства используют модулированный инфракрасный свет, поэтому исключается возможность принятия ложных сигналов. Инфракрасный приемник – это небольшое устройство, которое принимает инфракрасные сигналы, промодулированные на определенной частоте, обычно 38 кГц. С помощью данного приемника модуль Arduino определяет биты информации, которые отправлены с пульта управления.

Отправка команд для вашего мультимедийного центра будет осуществляться с помощью простого веб-интерфейса, который запускает локально на модуле Yún и доступен для большинства современных веб-браузеров. Веб-сайт облегчает работу по управлению инфракрасным устройством и позволяет обрабатывать даже несколько команд одновременно. Например, при нажатии кнопки ‘Watch Movie’ (Просмотр фильма) может отправляться сигнал для включения телевизора, Blu-ray плеера и его подключения к входу телевизора.

Для выполнения данного проекта нужен некоторый опыт по запуску скетчей Arduino и использованию инструментов с командной строкой. Электронные компоненты проекта можно установить на макетной плате.

Шаг #1: Подключение компонентов

  • Подключите инфракрасный светодиод к модулю Yún, проложив провод от анода светодиода (длинный вывод) к цифровому выводу 13 модуля Yún.
  • Используя резистор номиналом 100 Ом, подключите катод светодиода (более короткий вывод) к земляному выводу инфракрасного датчика (средний вывод датчика).
  • Подключите вывод распознавания detect инфракрасного датчика (самый левый вывод, если смотреть спереди датчика) к цифровому выводу 11 модуля Yún.
  • Подключите заземляющий вывод инфракрасного датчика (средний вывод) к заземляющему выводу модуля Yún.
  • В заключение, подключите питающий вывод датчика (крайне правый вывод, если смотреть спереди датчика) к выводу 5 вольт модуля Yún.

Шаг #2: Установка программных зависимостей

  • При вставленной MicroSD карте в модуль Yún, включите Yún, подключив USB Micro B кабель к модулю Yún и USB адаптеру питания.
  • Убедитесь в том, что Yún настроен и подключен к беспроводной сети. Настройка модуля Yún указана на данной странице .
  • Подключитесь к командной строке Yún, используя SSH. Данный процесс описан на данной странице .
  • После подключения к командной строке вы увидите версию микропрограммного кода. Данный проект протестирован с версией BusyBox v1.19.4 от 2014-04-10 и выше. Если вы используете более старую версию, тогда выполните следующие инструкции.
  • В командной строке выполните следующие команды для обновления диспетчера пакета:
opkg update
  • Далее установите PIP, диспетчер пакета Python:
opkg install distribute && opkg install python-openssl && opkg install python-expat && easy_install pip

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

  • Создайте директорий на SD карте для сохранения пакетов Python:
mkdir /mnt/sda1/python-packages
  • Установите интегрированную среду Flask Python:
pip install --target /mnt/sda1/python-packages flask

Вы можете увидеть некоторые предупреждающие сообщения, однако их можно проигнорировать.

  • Обновите путь поиска файлов пакета Python:
echo "export PYTHONPATH=/mnt/sda1/python-packages" >> /etc/profile
  • Создайте директории, в которые среда Arduino IDE будет подгружать файлы веб-сервера:
mkdir /mnt/sda1/Arduino mkdir /mnt/sda1/arduino/www
  • Перезагрузите Arduino Yún, чтобы обновить путь поиска файлов Python.

  • Загрузите библиотеку IR library. (Arduino IRremote, библиотека создана Ken Shirriff .)
    Распакуйте архив, переименуйте папку с Arduino _ IRremote - master на Arduino _ IRremote , и импортируйте папку Arduino_IRremote как библиотеку в среду разработки Arduino IDE. Подробная информация указана
  • Загрузите скетч Smart Remote Control Arduino из zip архива отсюда .
    Распакуйте архив и перетащите папку SmartRemoteControl в папку со скетчем Arduino. Откройте скетч в Arduino IDE.
  • Скомпилируйте скетч и загрузите его в модуль Yún по WiFi, выбрав соответствующую опцию в списке портов Arduino Yún. Убедитесь в загрузке скетча по WiFi, чтобы требуемые скрипты python скопировались в модуль Yún! После загрузки скетча откройте Serial Monitor в среде Arduino IDE (это может занять несколько минут).
  • Нацельте пульт дистанционного управления на инфракрасный датчик и нажмите несколько кнопок на пульте. Вы должны увидеть код на мониторе Serial Monitor. Если код не отображается, тогда проверьте подключение цепей датчика.

Шаг #4: Конфигурирование кодов пульта дистанционного управления

  • Теперь вы можете сконфигурировать операции (activities) и коды пульта дистанционного управления, связав их с XML файлом конфигурации. Используя текстовый редактор, откройте файл activities . xml в поддиректории www папки скетча на вашем ПК. (Из Arduino IDE, нажмите меню Sketch и выберите "Show Sketch Folder").
  • Примите во внимание формат примера операций в файле. Каждый блок операции определяет имя атрибута, которое будет отображаться как кнопка на веб-странице пульта. Внутри каждой операции блок кодов содержит последовательность инфракрасных кодов, которые необходимо выполнить. В примере сначала выполняется команда Sony A90 (вкл/выкл питания) для включения телевизора, затем команда Panasonic (вкл/выкл питания) для включения Blu-ray плеера. Каждый код имеет строковый параметр, который является прямым выходом данных обнаруженного кода пульта из скетча Arduino.
  • Добавьте свои команды в файл, скопировав пример и изменив названия и коды. Когда пульт нацелен на инфракрасный датчик, нажмите кнопки и внимательно запишите определенную инфракрасную кодовую последовательность. Скопируйте последовательность в конфигурацию кода операции.
  • Как только вы получите нужный файл конфигурации, сохраните файл и повторно загрузите скетч в модуль Yún по WiFi. Для обновления файла конфигурации измените файл и загрузите скетч по WiFi с использованием среды Arduino IDE.

Шаг #5: Запуск сервера с веб-интерфейсом

  • Для запуска сервера подключите модуль Yún через SSH. Для запуска сервера выполните следующую команду:
python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • При успешном запуске сервера вы увидите сообщение:
* Running on http://0.0.0.0:5000/ * Restarting with reloader
  • Если вы увидите ошибку, тогда проверьте все зависимости, установленные на предыдущих этапах.
  • В веб-браузере введите адрес http://arduino.local:5000/. Если браузер не поддерживает mDNS URL (как Windows, Android, и некоторые дистрибутивы Linux) введите http://arduino _ ip _ address :5000/, где arduino _ ip _ address - это IP адрес вашего Arduino Yún. IP адрес располагается в нижней части среды Arduino IDE при подключении Yún (рисунок 2).
  • После загрузки страницы вы увидите список сконфигурированных операций для кнопок. Если вы увидите ошибку, тогда проверьте правильность установки зависимостей, загруженный скетч, и что сервер работает без ошибок.
  • Для остановки сервера нажмите комбинацию Ctrl-C в командном окне, в котором запускался сервер.

Шаг #6: Использование веб-интерфейса

  • Для использования умного пульта нацельте светодиод на электронные устройства и нажмите одну из активных кнопок. Если требуемое устройство не включается, попытайтесь приблизить светодиод ближе к требуемым устройствам. Зона действия светодиода небольшая, около 6 футов. Необходимо добавить транзистор для увеличения зоны действия светодиода. Подробная информация указана здесь .
  • Вы также можете протестировать инфракрасные коды, открыв Yún Serial Monitor в среде Arduino IDE и отправив инфракрасный код как команду. Например, отправка кода "SONY: C A90" (без кавычек) приведет к отправке аппаратными средствами команды на включение Sony A90. ("C" представляет собой бит длины команды,12, преобразованный в шестнадцатеричный вид).
  • Для автоматического запуска сервера при загрузке отредактируйте файл / etc / rc . local в модуле Yún (с помощью редактора nano или vi) и добавьте следующую строку перед строкой "exit 0" в конце:
PYTHONPATH=/mnt/sda1/python-packages python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • Для речевого распознавания запустите браузер Google Chrome. Нажмите кнопку "Speak" и браузер Chrome запросит разрешение на использование микрофона. После этого произнесите название активной операции и подождите, пока она не будет распознана. Например, для выполнения операции просмотра фильма "Movies", нажмите кнопку "Speak", и скажите в микрофон слово "Movies" (Фильмы). Фразы, такие как "Play Movies" (Просмотреть фильмы) или "Run Movies" (Запустить фильмы), не поддерживаются - распознается только четкое название активной операции.

У каждого дома есть пульт от телевизора, или другой пульт дистанционного управления(ДУ). Данное устройство позволяет на расстоянии управлять каким-либо устройством, что является очень удобным. Не надо тратить драгоценные калории и делать лишние движения. Если у вас есть какое-то устройство и вы хотели бы управлять им на расстоянии, тогда можно сделать дистанционное управление данным устройством. При желании можно сделать и пульт ДУ своими руками, но для этого нет необходимости и это другая история. Зачем может понадобиться дистанционное управление?! - все просто:

Лень - это качество, заставляющее прилагать огромные усилия к тому, чтобы снизить общие затраты энергии.

Впервые дистанционное управление в действии миру показал изобретатель Никола Тесла, в 1898 году на выставке в Медисон-сквер-гарден он представил лодку с радиоуправлением под названием «телеавтомат». На сегодняшний день эта технология получила широчайшее распространение, только добавилось разные способы передачи команд(канал связи).

Из основных каналов связи можно выделить:

  • Радиоканал
  • Ультразвуковой
  • Инфракрасный

В данной статье мы будем говорить об управлении устройством инфракрасным пультом ДУ. Инфракрасное излучение - электромагнитное излучение, занимающее спектральную область между красным концом видимого света и микроволновым излучением. Инфракрасное излучение не видно человеческому глазу, но его можно увидеть с помощи фотокамеры или видеокамеры. Зачастую именно так проверяют работоспособность пульта от телевизора в домашних условиях.

Как то давно на старой работе взял пульт и "глазок"(ИК приемник) от списываемой охранной системы, он долго валялся без дела и наконец я добрался его проверить в работе.

Разобрав данный приемник Я увидел кое-какую хитрость, в данном "глазке" было спаяно вместе 4 ик приемника. Сделано это для того чтобы принимать ик волны с четырех сторон. И это удобно, не нужно ограничивать себя определенным углом приема.

Я так же набросал похожую схему с четырьмя приемниками, вдруг понадобиться. Ик приемники я использовал TSOP1836, но можно брать другие. Что бы обеспечить прием 360 градусов нужно выбрать соответственные ик приемники(с широким углом приема) и расположить максимально близко их между собой. С моим приемников проблем с приемом я не заметил. Так же забросил во вложение печатную плату и расположение элементов.

Для обработки команд я естественно буду использовать arduino uno, в качестве приемника ИК можно использовать
TSOP34836 (обладает высокой дальностью приема, но дороже) или TL1838 . Пульт можно взять любой ИК даже от телевизора. Ну если надо свой пульт то можно купить комплект для arduino .

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

Так же можно при помощи ИК волн можно передавать информацию на небольшое расстояние. Для передачи своих команд или информации можно использовать вторую arduino с ИК передатчиком. Но скорость такой передачи весьма небыстрая. К плюсам инфракрасного канала относится нечувствительность к электромагнитным помехам.

Для приема arduino ИК сигналов мы подключим ИК приемник следующим образом:

Обратите внимание что расположение ножек у приемника может отличаться.


Приемник имеет 3 ноги, «+» и «-» питания(в основном напряжение 3,3-5В) и нога данных именно она передает информацию на устройство(в нашем случае arduino). Напряжение питания для TSOP34836 является 2.7-5.5 вольт. Я буду использовать 5 вольт от стандартного выхода arduino.

Ну и естественно нужна прошивка для arduino. Алгоритм работы будет следующим: при нажатии на верхнюю кнопку пульта arduino включает реле, а при повторном нажатии выключает. С помощью этого реле можно запитать например подсветку, но не обязательно программировать нажатие кнопки на реле, можно выводить в компьютер команду или выполнить определенную операцию в arduino и т.д.
Для упрощения работы будем использовать готовую библиотеку . Код прошивки:

#include int RECEIVE_PIN = 11;//контакт приемника int RELAY_PIN = 3;//контакт реле IRrecv irrecv(RECEIVE_PIN);//присваиваем пин приемника decode_results results;//полученные данные

void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // включаем приемник
pinMode(RELAY_PIN, OUTPUT); // настраиваем реле на выход
digitalWrite(RELAY_PIN,HIGH); //устанавливаем высокое значение
}

void loop() {
if (irrecv.decode(&results)) {//если получены данные
Serial.print("0x");
Serial.println(results.value, HEX);//вывод полученного в терминал
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF)) digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));//если код кнопки 0x8FF40BF или 0xD72040BF меняем состояние реле на противоположное
delay(200);// задержка от двойного срабатывания
irrecv.resume();// Получаем следующее значение
}
}

Немного поясню по скетчу:



if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF))

Полученное значение сравнивается с "0x8FF40BF" и "0xD72040BF" - это коды кнопок в шестнадцатеричной системе исчисления. Два значения лишь потому что я использую два пульта с уникальными кодами.



digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));

Стандартная процедура цифровой записи пина за исключением "!digitalRead(RELAY_PIN)". Знак "!" обозначает инверсию, в нашем случае инверсия состояния цифрового выхода "RELAY_PIN".



Serial.print("0x");
Serial.println(results.value, HEX);//вывод полученного в терминал

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


Так же в библиотеке IRremote есть несколько разных примеров, что может оказаться полезным.


Во вложении к статье:


  • скетч для arduino

  • печатная плата для 4 датчиков

Создавая устройства для работы с IR-пультами очень необходим инструмент, при помощи которого можно было бы записывать и анализировать IR-сигналы. Таким инструментом, в идеале, мог бы стать цифровой осциллограф или логический анализатор, но эти приборы далеко не у всех есть, а специально покупать — дорого. Как же быть? Есть очень простое решение – звуковая карта компьютера! Сигнал будем записывать с ее помощью.

Кроме звуковой карты (которая, я надеюсь, есть в Вашем компьютере) нам понадобиться приемник IR-сигналов. Правильней бы собрать полноценную схему приемника с TSOP, но поступим максимально просто — в качестве IR-приемника возьмем самый обычный IR светодиод (тот самый который стоит в Вашем пульте). Можно, конечно, взять и IR фотодиод, но IR светодиод достать проще. IR светодиод нужно подключить напрямую к микрофонному входу звуковой карты. Для этого понадобиться 3.5мм штекер и кусок экранированного провода (шнурок с разъемом я отрезал от старого неработающего микрофона).

Подключается светодиод следующим образом:

В результате, получим вот такое устройство:

Вставляем штекер в микрофонный вход (он розового цвета). В настройках звуковой карты выбираем микрофон как входное устройство, регулятор усиления выкручиваем на максимум и ставим галочку дополнительного усиления. Для проверки, направляем пульт на светодиод-приемник (необходимо максимально приблизить к пульту), нажимаем клавишу – в динамиках должны слышаться щелчки.

Если у Вас, по какой либо причине, нет микрофонного входа (например, в ноутбуке) — подключайте приемник к линейному входу звуковой карты – все будет работать так же, только амплитуда записанного сигнала станет намного меньшей.


Теперь нам нужна программа для записи звука.
Для этих целей подойдет любая программа, которая у Вас есть. Если у Вас нет любимой программы для работы со звуком, предлагаю небольшую и бесплатную программку — Wavosaur (http://www.wavosaur.com/) Программа работает без установки и имеет небольшой размер — как я люблю:).

Программа для работы со звуком.

После запуска программы включаем индикатор уровня (линейка в правой части окна) и проверяем реакцию на сигналы пульта. По умолчанию должно все заработать – линейка будет зашкаливать от принимаемых сигналов (если реакции нет — лезем в настройки Audio configuration/Audio in ). Далее нажимаем пиктограмму записи, подносим пульт максимально близко к приемному светодиоду, нажимаем клавишу пульта и удерживаем пару секунд. Отключаем запись – Готово! В окне мы увидим развертку принятого IR сигнала. Что интересно, сигнал будет уже детектированным – мы не увидим несущей частоты, а только полезный сигнал. Так получается из-за того, что входные емкости микрофонного входа не успевают перезаряжаться.

Полученный сигнал можно масштабировать по времени, амплитуде и, что очень удобно, выделяя определенный промежуток, сразу можно увидеть его длительность. Принятый сигнал можно сохранить (лучше в wav-формате – не будет искажений) или экспортировать в MP3, текст, бинарный файл (полезная штука!).

Для примера , сигнал моего пульта от телевизора (формат NEC):

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

P.S.
Большая просьба! Если Вы соберете такой приемник, сохраните посылки Ваших пультов и пришлите мне на мыло (в закладке «о проекте») – это очень поможет в улучшении алгоритма универсального приемника. В названии файла указывайте от чего пульт и фирму изготовителя (например: tv-sony.wav ).


Еще о работе с IR пультами!
Мною был предложен самый простой вариант «пощупать» сигнал от IR-пульта, но есть множество решений которые могут делать намного больше! Принимать IR-сигнал, анализировать, сохранять, воспроизводить, программировать свои пульты, управлять компьютером … Этот раздел и будет содержать ссылки на такие решения.

1. DvzRcEditor
Первой у нас пойдет программка DvzRcEditor, которую скинул mobi. Программу сделал некий Dvz 2010 (к сожалению нет его координат, может знает кто?).


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


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

Все просто и наглядно — мне понравилось!


2. SlyControl.
http://slydiman.narod.ru/scr/index.htm
Это даже не программа — это целый интернет ресурс посвященный IR пультам. Содержит много полезной информации, аппаратные и программные решения на все случаи. Вот, что авторы пишут о SlyControl:
— это универсальная программа для управления всем, чем угодно с помощью компьютера.

Для чего это можно использовать:
— управление любыми программами с любого пульта дистанционного управления (ДУ), с клавиатуры мультимедиа клавишами или джойстиком
— эмуляция клавиатуры и мыши с любого пульта ДУ
— планировщик (не просто запустить программу по времени, но и выполнить с ней какие-то действия)
— выключение компьютера по таймеру или по событию
— можно и свет в квартире включать с ДУ, нужно только плагин соответствующий добавить 😉

А еще на ресурсе есть программа RCExplorer 2.1 — база данных по ИК пультам (база содержит более 200 записей).


Программа позволяет:
— Принимать сигнал с пультов используя звуковую карту, COM порт, IgorPlug-USB или IgorPlug2
— Детально анализировать сигнал — (модуляция, временные характеристики, особенности кодирования, коды повтора и пр., поддерживаются все известные мне на данный момент протоколы, программа может работать и с неизвестными протоколами.
— Графически отображать сигнал в реальном времени и по данным из базы
— Производить поиск аналогичного пульта по базе данных
— Воспроизводить команду пульта по данным из базы через COM порт

В общем, обязательно посетите ресурс — будет интересно.

(Visited 20 417 times, 9 visits today)

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом. Собственно, на этом уроке мы попытаемся реализовать такой способ управления с помощью популярного контроллера Ардуино Уно.

1. ИК-пульт

Что нужно для того, чтобы научить робота слушаться инфракрасного (ИК) пульта? Во-первых, нам потребуется сам пульт. Можно использовать обычный пульт от телевизора, а можно приобрести миниатюрный пульт от автомагнитолы. Именно такие пульты часто используются для управления роботами.

На таком пульте есть 10 цифровых кнопок и 11 кнопок для манипуляции с музыкой: громкость, перемотка, play, stop, и т.д. Для наших целей более чем достаточно.

2. ИК-датчик

Во-вторых, для приема сигнала с пульта нам потребуется специальный ИК-датчик. Вообще, мы можем детектировать инфракрасное излучение обычным фотодиодом/фототранзистором, но в отличие от него, наш ИК-датчик воспринимает инфракрасный сигнал только на частоте 38 кГц (иногда 40кГц). Именно такое свойство позволяет датчику игнорировать много посторонних световых шумов от ламп освещения и солнца.

Для этого урока воспользуемся популярным ИК-датчиком VS1838B , который обладает следующими характеристиками:

  • несущая частота: 38 кГц;
  • напряжение питания: 2,7 — 5,5 В;
  • потребляемый ток: 50 мкА.

Можно использовать и другие датчики, например: TSOP4838, TSOP1736, SFH506.

3. Подключение

Датчик имеет три вывода (три ноги). Если посмотреть на датчик со стороны приёмника ИК сигнала, как показано на рисунке,

  • то слева будет - выход на контроллер,
  • по центру - отрицательный контакт питания (земля),
  • и справа - положительный контакт питания (2.7 — 5.5В).

Принципиальная схема подключения

Внешний вид макета

4. Программа

Подключив ИК-датчик будем писать программу для Ардуино Уно. Для этого воспользуемся стандартной библиотекой IRremote , которая предназначена как раз для упрощения работы с приёмом и передачей ИК сигналов. С помощью этой библиотеки будем принимать команды с пульта, и для начала, просто выводить их в окно монитора последовательного порта. Эта программа нам пригодится для того, чтобы понять какой код дает каждая кнопка.

#include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли Serial.println(results.value, HEX); // печатаем данные irrecv.resume(); // принимаем следующую команду } }

Загружаем программу на Ардуино. После этого, пробуем получать команды с пульта. Открываем монитор последовательного порта (Ctrl+Shift+M), берём в руки пульт, и направляем его на датчик. Нажимая разные кнопочки, наблюдаем в окне монитора соответствующие этим кнопкам коды.

Проблема с загрузкой программы

В некоторых случаях, при попытке загрузить программу в контроллер, может появиться ошибка:

TDK2 was not declared In his scope

Чтобы ее исправить, достаточно удалить два файла из папки библиотеки. Заходим в проводник. Переходим в папку, где установлено приложение Arduino IDE (скорее всего это «C:\Program Files (x86)\Arduino»). Затем в папку с библиотекой:

…\Arduino\libraries\RobotIRremote

И удаляем файлы: IRremoteTools.cpp и IRremoteTools.h. Затем, перезапускаем Arduino IDE, и снова пробуем загрузить программу на контроллер.

5. Управляем светодиодом с помощью ИК-пульта

Теперь, когда мы знаем, какие коды соответствуют кнопкам пульта, пробуем запрограммировать контроллер на зажигание и гашение светодиода при нажатии на кнопки громкости. Для этого нам потребуется коды (могут отличаться, в зависимости от пульта):

  • FFA857 — увеличение громкости;
  • FFE01F — уменьшение громкости.

В качестве светодиода, используем встроенный светодиод на выводе №13, так что схема подключения останется прежней. Итак, программа:

#include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли switch (results.value) { case 0xFFA857: digitalWrite(13, HIGH); break; case 0xFFE01F: digitalWrite(13, LOW); break; } irrecv.resume(); // принимаем следующую команду } }

Загружаем на Ардуино и тестируем. Жмем vol+ — светодиод зажигается. Жмем vol- — гаснет. Теперь, зная как это все работает, можно вместо светодиода управлять двигателями робота, или другими самодельными микроэлектронными устройствами!

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



Пульт очень удобен в том, что на экране практически одни и те же кнопки используются для управления телевизором и плеером. Одно отличие в том, что кнопка "AV " в режиме управления телевизором меняется на кнопку "" (stop) при переходе в режим управления плеером. На картинках показано два режима, слева режим управления телевизором, справа - режим управления плеером.

Ну а сейчас я расскажу немного о создании такого пульта. Для устройства использовал пульт от телевизора ERGO и пульт от медиаплеера DUNE HD TV101W.

Для получения данных от пультов я использовал инфракрасный датчик TSOP1138 (аналог TSOP4838) на рабочей частоте 38 кГц и подключил его к плате Arduino по схеме:

Этот скетч на потребуется для определения кодировки передачи данных и считывания кода кнопок пультов.

В скетче в строке int RECV_PIN = 11; указываем наш пин под номером 4

После заливки скетча открываем «монитор порта» и, нажимая на кнопки пульта, смотрим на полученные данные.

На картинке пример сканирования кнопки включения от пульта телевизора и пульта плеера. Теперь формируем таблицу для кодов кнопок.

У меня получилось как на фото выше. Под надписью TV коды кнопок пульта от телевизора; под надписью Player - коды от пульта медиаплеера.

Теперь отключаем наш приемник инфракрасных сигналов от платы Arduino и подключаем к ней Bluetooth модуль HC-05 и инфракрасный светодиод по схеме на фото.

После этого переходим непосредственно к скетчу.

Скетч

#include IRsend irsend; int y = 1; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { int x = Serial.read(); if (x == 49) { y = 1; } if (x == 50) { y = 2; } if (y == 1) { // коды кнопок для пульта от телевизора if (x == 97) { irsend.sendNEC(0x807F08F7, 32); delay(40); } if (x == 98) { irsend.sendNEC(0x807FA857, 32); delay(40); } if (x == 99) { irsend.sendNEC(0x807F708F, 32); delay(40); } if (x == 100) { irsend.sendNEC(0x807FF00F, 32); delay(40); } if (x == 101) { irsend.sendNEC(0x807F30CF, 32); delay(40); } if (x == 102) { irsend.sendNEC(0x807FB04F, 32); delay(40); } if (x == 103) { irsend.sendNEC(0x807F9867, 32); delay(40); } if (x == 104) { irsend.sendNEC(0x807F58A7, 32); delay(40); } if (x == 105) { irsend.sendNEC(0x807FD827, 32); delay(40); } if (x == 106) { irsend.sendNEC(0x807F38C7, 32); delay(40); } if (x == 107) { irsend.sendNEC(0x807F48B7, 32); delay(40); } if (x == 108) { irsend.sendNEC(0x807FB847, 32); delay(40); } if (x == 109) { irsend.sendNEC(0x807F6897, 32); delay(40); } } if (y == 2) { //коды кнопок пульта от медиаплеера if (x == 97) { irsend.sendNEC(0xFDC23D, 32); delay(40); } if (x == 98) { irsend.sendNEC(0xFDE01F, 32); delay(40); } if (x == 99) { irsend.sendNEC(0xFD18E7, 32); delay(40); } if (x == 100) { irsend.sendNEC(0xFDE817, 32); delay(40); } if (x == 101) { irsend.sendNEC(0xFDA857, 32); delay(40); } if (x == 102) { irsend.sendNEC(0xFD6897, 32); delay(40); } if (x == 103) { irsend.sendNEC(0xFDA857, 32); delay(40); } if (x == 104) { irsend.sendNEC(0xFD6897, 32); delay(40); } if (x == 105) { irsend.sendNEC(0xFDE817, 32); delay(40); } if (x == 106) { irsend.sendNEC(0xFD18E7, 32); delay(40); } if (x == 107) { irsend.sendNEC(0xFD9867, 32); delay(40); } if (x == 108) { irsend.sendNEC(0xFD28D7, 32); delay(40); } if (x == 109) { irsend.sendNEC(0xFD20DF, 32); delay(40); } } } }


В скетче вам потребуется отредактировать коды кнопок, а именно в строках:

If (x == 97) { irsend.sendNEC(0x807F08F7, 32); delay(40);
Значение 807F08F7 поменять на:

If (y == 1) { //коды кнопок для пульта от телевизора if (x == 97) { irsend.sendNEC(0x12345678, 32); delay(40); }
Где 12345678 - это код вашей кнопки.

После редактирования скетча по ваши коды кнопок заливаем скетч в плату Arduino и переходим к установке приложения на телефон.

Включаем блютуз в телефоне, ищем наше устройство, создаем пару, потом запускаем приложение Pult на телефоне.

При запуске у нас появится экран с красным значком bluetooth в правом нижнем углу, что сигнализирует о том, что мы не подключены к нашему устройству.

После этого жмем на этот значок. У нас должно появится окно со списком всех доступных bluetooth устройств, где мы выбираем наше устройство для подключения.

Теперь мы снова вернулись на главный экран и уже можем управлять телевизором:

Для перехода в режим управления нам потребуется нажать кнопку с надписью «Player» . Как я говорил раньше, у нас кнопка с надписью «AV» поменяется на кнопку "":

Для отключения от нашего устройства просто зажмите кнопку «Power» на несколько секунд.

Ну и несколько фотографий моего готового устройства.

Получилось, вроде, неплохо. Жду комментарии к статье.