Оглавление:

Инфракрасный бластер ESP-12: 7 шагов
Инфракрасный бластер ESP-12: 7 шагов

Видео: Инфракрасный бластер ESP-12: 7 шагов

Видео: Инфракрасный бластер ESP-12: 7 шагов
Видео: Управление телевизором из браузера на esp8266 2024, Июль
Anonim
Инфракрасный бластер ESP-12
Инфракрасный бластер ESP-12

Инфракрасный бластер с дистанционным управлением с использованием esp8266

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

Встроенная простая веб-страница в основном для тестирования.

Обычное использование - через сообщения POST, которые могут поступать с веб-страниц или из голосового управления IFTTT / Alexa.

Поддерживает детектор активации Amazon Echo / Dot для отключения звука / отключения звука при произнесении слова активации.

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

Недавнюю историю и список макросов можно получить через веб-интерфейс.

Поддерживает OTA-загрузку новой прошивки и использует библиотеку WifiManager для начальной настройки Wi-Fi.

Шаг 1. Аппаратное обеспечение

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

Использует следующие компоненты

  • Модуль ESP-12F
  • Регулятор 3,3 В (мини-понижающий регулятор MP2307)
  • Переключатели MOSFET (AO3400)
  • Инфракрасный излучатель (3 мм)
  • Светозависимый резистор GL2258 (дополнительный детектор активности Alexa)
  • Резисторы
  • Конденсатор развязки (20 мкФ)
  • Гнездо USB (желательно с гильзой, пригодной для пайки
  • 3-контактный разъем IC для детектора Alexa
  • Механические детали (можно напечатать на 3D-принтере)

Возможна сборка в проектную коробку ESP-12F

  • Присоедините регулятор к разъему USB и вставьте в коробку.
  • Установите ИК-драйвер на небольшой кусок платы веро (3 провода, + 5В, вход затвора 0В)
  • Подключите ИК-драйвер к USB + 5V, 0V
  • Вставьте 3-контактный разъем IC в проектную коробку, если используете детектор Alexa. Подключите к + 3,3 В, 0 В и провод для входа
  • Составьте ESP-12F с 2,2K от GPIO15 к GND, EN к Vdd, 4K7 GPIO13 к Vdd, вход Alexa к GPIO13, ИК-драйвер к GPIO14, 0V и Vdd к 3.3V
  • При необходимости создайте детектор Alexa и буфер поддержки.

Обратите внимание, что может быть проще сначала запрограммировать ESP-12F, если у вас есть какое-то средство последовательного программирования или временное средство макета, подобное этому, для подключения к последовательным портам.

Последующее программирование может быть выполнено с помощью встроенного OTA-обновления.

Шаг 2: Программное обеспечение

Ir Blaster использует скетч Arduino, доступный на github

Это необходимо отрегулировать в соответствии с местными условиями, а затем скомпилировать в среде esp8266 Arduino.

Следующие библиотеки необходимы, большинство из них являются стандартными или могут быть добавлены. Последние два включены в git.

  • ESP8266 Wi-Fi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (входит в Git)
  • BitMessages (включены в Git)

Элементы эскиза, которые необходимо изменить, включают

  • Код авторизации для доступа в Интернет AP_AUTHID
  • Пароль менеджера wfi WM_PASSWORD
  • прошивка OTA пароль update_password
  • Новые ИК-устройства / коды кнопок (см. Позже)

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

Поскольку используется SPIFFS, память должна быть подготовлена путем установки и использования инструмента загрузки данных эскиза Arduino ESP8266. Это загрузит папку данных в качестве исходного содержимого SPIFFS.

Когда устройство не может подключиться к локальной сети (как это произойдет в первый раз), менеджер Wi-Fi создаст точку доступа (192.168.4.1). Подключитесь к этой сети с телефона или планшета, затем перейдите к 192.168.4.1. Вы получите веб-интерфейс для подключения к локальному Wi-Fi. Последующие обращения будут использовать это. Если локальная сеть изменится, она вернется в этот режим конфигурации.

Последующее обновление может быть выполнено путем компиляции двоичного файла экспорта в среде Arduino и последующего доступа к интерфейсу OTA по адресу ip / firmware.

Шаг 3. Добавьте коды устройств / кнопок

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

Определения кнопок включены в файл buttonnames.txt. Это глобальный список имен для всех используемых пультов, поскольку многие имена обычно являются общими. В комплекте поставки содержится подробная информация о пультах, которые я использую. Могут быть добавлены новые записи. Имеется место для 160 имен, но его можно увеличить, изменив константы в bitMessages.h и перекомпилировав. Определенные здесь имена - это имена, которые будут использоваться при отправке команд.

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

Раздел config в начале файла устройства содержит параметры, которые будут использоваться при отправке кода. Первая запись - это имя устройства, которое используется при отправке команды. Остальные параметры описаны в ридми на сайте кода.

Большинство пультов дистанционного управления относятся к одной из трех категорий протоколов (nec, rc5 и rc6). nec, вероятно, является наиболее распространенным и имеет простую структуру заголовка и битовую синхронизацию. Существует небольшой вариант этого, который отличается только синхронизацией импульсов заголовка. rc5 и rc6 - это протоколы, определенные Philips, но также используемые некоторыми другими производителями. Они немного сложнее, и в rc6, в частности, есть особые временные требования для одного из битов.

Чтобы записать коды для нового пульта дистанционного управления, я использую ИК-приемник (TSOP), который обычно используется с подключаемыми удаленными приемниками. Это выполняет базовое декодирование и дает выходной логический уровень. Обычно они поставляются с разъемом 3,5 мм с подключениями + 5V, GND, DATA. Я пожертвовал одним, сократил провод и пропустил его через инвертирующий буфер 3,3 В для подачи на вывод GPIO на Raspberry Pi.

Затем я использую инструмент python rxir.py (в папке инструментов git) для захвата кодов. Чтобы упростить использование для захвата большого количества кнопок, инструмент использует текстовый файл определения для определения кнопок на пульте дистанционного управления и представляет собой просто имена кнопок в группе на пульте дистанционного управления. Например, у одного может быть новый пульт Sony, и один настраивает 3 текстовых файла с именами sonytv-cursor, sonytv-numbers, sonytv-playcontrols, каждый с соответствующими названиями кнопок. Инструмент предложит устройство (sonytv), раздел (курсор) и какой протокол использовать (nec, nec1, rc5, rc6). Затем он будет последовательно запрашивать каждое нажатие кнопки и записывать результаты в файл sonytv-ircodes. Разделы можно повторять, если требуется, чтобы проверить правильность снимков. Биты из файла.ircodes можно редактировать в таблицах BitDevices.

Шаг 4. Контроль Интернета и макросы

Базовый веб-элемент управления - это либо одно сообщение get, либо сообщение json, которое может содержать последовательность.

Get to / ir имеет 6 параметров

  • auth - содержащий код авторизации
  • device - имя удаленного устройства
  • параметр - название кнопки
  • биты - необязательный счетчик бит
  • repeat - необязательный счетчик повторов
  • wait - задержка в миллисекундах перед выполнением следующей команды.

Устройство также может быть «нулевым», чтобы получить только задержку, «макросом» для использования макроса, на который ссылается параметр, или «обнаружением», чтобы использовать функцию обнаружения Alexa (см. Ниже).

Сообщение в / irjson состоит из структуры json, например

{

"auth": "1234", "команды": [{"устройство": "yamahaAV", "параметр": "hdmi4", "ожидание": "5000", "биты": "0", "повторение": "1"}, {"устройство": "yamahaAV", "параметр": "отключение звука", "ожидание": "100", "биты": "0", "повторение": "1"}]

}

Последовательность может быть любой длины, а устройства могут быть макросами.

Та же структура может использоваться для определения макросов. Просто включите макрос: "macroname" на верхнем уровне, например после авт. Фактическое содержимое хранится в файле с именем macroname.txt.

Макросы можно удалить, указав их без «команд».

Другие веб-команды

  • / Recent (список недавних действий)
  • / check (показывает основной статус)
  • / (загружает веб-форму для отправки команд вручную)
  • / edit (загружает веб-форму для просмотра списка файлов и удаления / загрузки файлов)
  • / edit? file = filename (просмотреть содержимое определенного файла)
  • / reload (перезагружает названия кнопок и файлы устройств. Используйте после изменения любого из них)

Шаг 5: голосовое управление Alexa с помощью IFTTT

Самый простой способ использовать ir Blaster с Alexa - использовать IFTTT в качестве шлюза.

Первый порт перенаправляет порт, используемый вашим бластером в вашем маршрутизаторе, чтобы он был доступен из Интернета. Может быть хорошо использовать службу DNS, такую как freedns, чтобы дать вашим маршрутизаторам имя внешнего IP-адреса и упростить обработку, если этот IP-адрес изменится.

Настройте учетную запись IFTTT и включите каналы Maker Webhooks и канал Alexa. Когда вы сделаете это, вам нужно будет войти на сайт Amazon, чтобы включить доступ IFTT.

Создайте триггер IF с помощью канала IFTTT Alexa, выберите действие на основе фразы и введите нужную фразу (например, увеличьте громкость).

Создайте действие, выбрав канал веб-перехватчиков Maker. Введите в поле URL что-то вроде

myip: port / irjson? plain = {"auth": "1234", "comm…

Это действие будет отправлено на ir blaster, где он попытается выполнить макросъемку громкости. Здесь можно указать конкретное устройство / кнопки, но я считаю, что лучше определить и использовать макросы, потому что тогда последовательность действий можно легко изменить, просто переопределив макрос.

Для каждой команды требуется отдельный апплет IFTTT.

Шаг 6: собственный голосовой навык Alexa

Вместо IFTTT можно создать собственный навык внутри разработки Alexa. Это централизует всю обработку в одном месте и означает, что вам не нужно создавать отдельные действия для каждой кнопки.

Вам необходимо зарегистрироваться в качестве разработчика Amazon Alexa и зарегистрироваться в лямбда-сервисе консоли Amazon AWS. Вам также нужно будет просмотреть учебные пособия, чтобы немного понять процесс.

На стороне разработчика Alexa вам необходимо создать новый пользовательский навык, ввести его триггерное слово и создать список командных слов, таких как увеличение громкости, руководство и т. Д.

Затем Alexa отправляет фразу в программу, работающую на службе lamda, которая интерпретирует фразу и делает URL-запрос к Ir-бластеру, чтобы выполнить ее.

Я включил схему намерения Alexa и лямбда-функцию консоли, которую я использую в git. URL-адрес необходимо изменить, чтобы он ссылался на соответствующий IP-адрес и имел правильную авторизацию. Для простоты лямбда-функции вызывают макрос, в котором есть строчная версия фразы с удаленными пробелами. Он также пытается удалить ключевое слово триггера, которое иногда может быть включено. Например. blaster VOLUME up вызовет макрос, называемый volumeup, если слово триггера было blaster.

Шаг 7: Alexa активирует детектор

Хотя распознавание голоса Echo / Dot хорошее, иногда его можно запутать, если звук воспроизводится, скажем, из телевизора, если вы не подойдете близко и не заговорите громко.

Чтобы улучшить это, я добавил к своей точке детектор активации. Как только ключевое слово (произносится Alexa) загорается кольцо светодиодов. Детектор передает это в бластер, где он будет использовать макрос alexaon для отключения звука телевизора, аналогично в конце обработки команды свет выключается, а макрос alexaoff восстанавливает звук.

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

Физический детектор представляет собой светозависимый резистор, поддерживаемый схемой. Я устанавливаю свой на точку с помощью кронштейна, напечатанного на 3D-принтере.

Рекомендуемые: