Перейти к содержанию

Алиса и обучаемый ИК-пульт DIY: различия между версиями

Материал из Wiki yaboard
м Ark rusinov-9121383 переименовал страницу Алиса и ИК-пульт в Алиса и обучаемый ИК-пульт
м Ark rusinov-9121383 переименовал страницу "Алиса и обучаемый ИК-пульт" в "Алиса и обучаемый ИК-пульт DIY" без оставления…
(нет различий)

Версия от 17:41, 10 декабря 2019

Знания Применение информации с этой страницы требует специальных знаний и навыков
Всё описанное на этой странице вы производите на свой страх и риск, включая нарушение работы программного обеспечения и выход из строя оборудования, а также риск поражения током и травмы.
Материал носит информационный характер, и не является прямым указанием к действию!

Вступление

Сегодня будем собирать собственный, и даже почти обучаемый ИК-пульт :) Автор назвал его "НеЯндекс.Пульт", и дальнейший текст основан на его оригинальной инструкции.


Преимущества такого решения очевидны:

  • Гибкая настройка (программирование) всего, что можно;
  • "Индивидуальные" пульты (излучатель "в упор" в глазок нужного устройства, чтобы не возникало коллизий с другими);
  • Возможность разместить в любой корпус (включая корпус самого принимающего устройства);
  • Отличный способ провести время и подтянуть скиллы.


Конечно, придётся немного потрудиться. Для сборки нам понадобятся:

  • NodeMCU (автор брал здесь)
  • Модуль ИК-приёмника (в примере использован этот)
  • Модуль ИК-излучателя (например, такой уже содержит драйвер, и их можно подключить сразу несколько штук на один пин без дополнительного обвеса и повернуть во все нужные стороны)
  • Источник стабилизированного (желательно, чтобы избежать проблем) питания

Считываем оригинальные коды

Файл:NoY IR-1recvr.jpg
Схема 1: Приёмник

Наши первые действия - сбор информации с пультов. Для этого:

  1. Собираем ИК-приёмник по схеме 1 (Приёмник).
  2. Прошиваем NodeMCU кодом PULT_resv.ino (см. ниже)
  3. В ArduinoIDE открываем монитор порта, наводим диод-излучатель пульта-оригинала (от телека, люстры, кондёра), жмем нужную кнопку.
В мониторе порта начнут появляться одинаковые строки типа 807F00FF. Это и есть код, переданный при нажатии кнопки.

Записываем полученные коды в блокнот сразу с названиями кнопок. Чтобы не вставать два раза(тм), записываем все кнопки со всех пультов, что планируем использовать.

<button type="button" class="spoilers-button" aria-expanded="false">Показать PULT_resv.ino</button>

Повелеваем устройствами

Файл:NoY IR-2send.jpg
Схема 2: Пульт

Теперь можно разобрать схему приёмника, или оставить на будущее), а теперь:

  1. Собрать новую по схеме 2 (Пульт).
  2. Прошиваем код PULT_send.ino, перед этим немного изменив код:
    • заполняем char auth[]=, char ssid[]= и char pass[]= своими значениями (ориентируясь на подсказки в комментариях).
    • прописываем виртуальные пины. Действие-реакция на изменение состояния отдельного пина регламентируется куском кода:
BLYNK_WRITE(V0) { //виртуальный пин 0
 int pinValue = param.asInt();
 if (pinValue = 1)irsend.sendNEC(0xЗАПИСАННЫЙКОД, 32);
}

Расшифруем строки:

  • BLYNK_WRITE(V0) - отслеживаем изменение виртуального пина V0
  • if (pinValue = 1) - если пин принимает значение 1 то....
  • irsend.sendNEC(0xЗАПИСАННЫЙКОД, 32); - здесь мы впишем (а программа отправит) ИК-код, который мы записали в блокнотик в шаге 1 (например, 807F00FF).
Для каждой кнопки нужно прописать свой irsend.sendNEC(0xКОД, 32); имитируя её нажатие. Можно указать и несколько нажатий при изменении одного виртуального пина (например, включить ТВ, а затем включить нужный канал/вход).

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

<button type="button" class="spoilers-button" aria-expanded="false">Показать PULT_send.ino</button>

Исходные коды прошивок

Скачать архив прошивок для пульта можно по этой ссылке.

Что можно улучшить

  • Можно брать один виртуальный пин (например, V0) и задавать ему не 0 и 1, а сразу строковое значение типа "FFFFFFFF" ИК-кода, а в код подставлять переменную.
  • Совместить обе схемы (и прошивки) в одной (D2 передатчик, D3 приёмник), отлавливать коды прямо из блинка и сделать конструкцию универсальной. Изменяться будут только передаваемые вебхуком значения одного пина.
  • Дописать прошивку так, чтобы пульт стал полностью самообучаемым и умел сохранять команды в энергонезависимой памяти (EEPROM).


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


Удачной сборки, весёлых экспериментов и надёжной работы!