Обычно пульты дистанционного управления телевизора, кабельной приставки, 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.
Шаг #3: Загрузка скетча Arduino
- Загрузите библиотеку 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’ (Запустить фильмы), не поддерживаются — распознается лишь четкое название активной операции.