Как связать ардуино с алисой

Содержание

Открываем дверь домофона при помощи голосового ассистента и ардуино

Сегодня у меня статья про то, как при помощи Яндекс-колонки Алиса и Ардуино, можно открыть дверь, подключенную к домофону. Если Вам это интересно, то прошу под кат.

Часто бывает так, что кто-то звонит в домофон, а ты в этот момент чем-то занят или просто лень подходить для того, чтобы открыть дверь. Знакомая ситуация, не правда ли?

А мой домофон так вообще без поднятия трубки не открывает дверь и если в течении 30 секунд после вызова не поднять трубку, то кнопка открывания двери перестанет быть активной до того момента, пока не поступит новый вызов. Так как домофон не из дешёвых (на тот момент) меня жаба душила менять его на другой. И я решил с этим бороться.

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

Второй проект был реализован на роутере TL-MR3020 с прошивкой CyberWRT и программным СИП телефоном BareSIP. При нажатии на кнопку вызывной панели, роутер параллельно с вызовом интеркома звонил на мобильный телефон и можно было даже находясь в другом городе разговаривать с человеком, стоящим около двери твоей квартиры, но программный телефон или сам роутер, работали крайне нестабильно и пришлось от него отказаться.

Но тут к моему счастью в прошлом году на день рождения мне подарили голосового ассистента Алису и у меня появилась новая идея — отрывать дверь голосом, через Яндекс колонку.
И сегодня настал тот день, когда я взялся реализовать свою задумку.

Немного о том, как работает вызывная панель видео-домофона

Вызывная панель соединена с монитором домофона при помощи 4-х проводов GND, +12 В, аудио и видео.

Если на вызывной панели, провод Audio замкнуть через резистор 100 Ом на GND, то раздастся сигнал вызова. А если на провод Audio подать напряжение +12 В, то сработает реле открытия электромагнитного замка.

На изображении ниже показана схема соединения вызывной панели с домофоном.

Если для подключения вызывной панели к монитору, у Вас используется специальный домофонный кабель, то он подключается как правило по следующей инструкции:

GND — экранирующая оплетка
+12 В — красный провод
Аудио — синий провод
Видео — центральная жила коаксиального кабеля

Схема

Из схемы видно, что для подключения устройства на Ардуино к домофону, потребуется подсоединить всего 2 провода. Для коммутации этих проводов я использовал то, что у меня было под рукой. Вместо реле можно использовать ключ на N-P-N транзисторе или оптроне PC817.

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

Используемые компоненты

Вместо Arduino nano можно применить любой другой микроконтроллер из линейки ардуино. Я же использовал Ардуино нано потому, что у меня их достаточно много.

Исходник для Arduino

Код достаточно простой и понятный.

Для получения и сохранения кода нажатой кнопки, нужно перевести контроллер Ардуино в режим добавления кнопки пульта. Потребуется установить перемычку на выводы D2 и GND и нажать кнопку сброса на Arduino, после чего на плате контроллера засветится системный светодиод и контроллер будет ожидать нажатия кнопки на пульте.

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

Можно нажимать кнопки сколько угодно, но Arduino запомнит только последнее нажатие. Чтобы выйти из режима запоминания кода, достаточно удалить перемычку и нажать на микроконтроллере кнопку «Reset».

//#define TOLERANCE 35 // процент допустимого отклонения принимаемого сигнала
#define IR_RECEIVE_PIN 11 // Вход для подключения ИК приемника
#define RELAY_PIN 12 // Выход для управления реле
#define SET_PIN 2 // Вход для перевода в режим программирования пульта

IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

void setup()
<
irrecv.enableIRIn(); //запустить ожидание нажатия кнопки на пульте
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(SET_PIN, INPUT_PULLUP); //D10 конфигурируем на вход, для режима «запоминания кода»
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Serial.begin(115200);

while(!digitalRead(SET_PIN)) //если пины D2 и GND замкнуты то заходим в режим запоминания ИК кода
<
set_command();
>
>

Источник

Алиса, Ардуино и Blynk — делаем собственное устройство

Содержание

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

  • любит «дешево и сердито»;
  • не любит готовые решения, и предпочитает мозговой штурм и пайку;
  • еще думает над своей концепцией УД (можно использовать, как пример);
  • кто «в теме», но пока имеет сложности с подключением собственных наработок к Умному дому Яндекса.

Что такое blynk?

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

  • Обширный список поддерживаемых устройств;
  • Множество вариантов управления;
  • Широкий набор инструментов;
  • Огромный плюс — Example Code Builder, позволяющий сгенерировать нужный код с минимальными правками и знаниями в программировании.

Чтобы понять принцип работы с Blynk, а заодно рассмотреть принцип подключения Arduino к УДЯ, соберём пример управляемого реле, имитирующее. Яндекс.Розетку.

Собираем «умный» выключатель

Соединяем по схеме:

Пин NodeMcu Пин реле
VCC VCC
GND GND
D4 IN

Итак, blynk.

  1. Скачиваем официальное приложение blynk из GooglePlay или AppStore.
  2. Регистрируемся в приложении (рис. 1)
  3. Создаём новый проект (рис. 2)
  4. Важно правильно выбрать микроконтроллер (рис. 3)
  5. Появится пустая страница для элементов управления (рис. 4), а на адрес электронной почты придёт token от нашего проекта в blynk, который мы будем использовать для управления через webhook.

2. Создание проекта

3. Выбор устройства

4. Окно для элементов управления

Подготовка Arduino IDE и прошивка

  1. Загружаем и устанавливаем Arduino IDE.
  2. Скачиваем библиотеки Blynk для работы с сервисом.
  3. Распаковываем скачанное в папку с библиотеками Arduino IDE (обычно это C:\Users\ \Documents\Arduino\).
  4. Переходим к утилите Blynk Example Browser, выбираем/указываем:
    • микроконтроллер,
    • способ подключения,
    • token
    • пример скетча (в данном случае Virtual Pin Read).
  5. Копируем полученный код в Arduino IDE.
  6. В примере вводим фактическое название нашей WiFi-сети и пароль.

Указываем название сети и пароль

В примере также присутствует функция вида:

  • BLYNK_WRITE(V1) указывает, что функция выполнится при изменении виртуального пина 1,
  • int pinValue = param.asInt(); объявляет переменную pinValue и загружает в неё текущее состояние виртуального пина (0 — пин выключен, 1 — пин включен).

Всего можно использовать 256 виртуальных пинов (V0-V255) — это огромный запас на все случаи жизни. Например, виртуальный пин 1 принимает значение 1 — подаём питание на физический пин NodeMcu и включаем этим реле, или виртуальный пин 2 принимает значение от 0 до 255 — изменяем ШИМ-сигнал, регулируем яркость (либо цвета RGB) диодной подсветки в 255 градациях яркости.

А теперь заставим нашу функцию включать физический пин D4 NodeMcu (в функции будем использовать событие виртуального пина 0, просто для удобства):

Чтобы управлять этим выводом, в основной функции void setup() обязательно установим пин D4 как выход: pinMode(D4, OUTPUT);

В итоге получаем такой код для прошивки:

Заливаем прошивку в NodeMcu.

Наш выключатель готов к работе!

Также данную схему можно использовать и для включения ПК (имитации нажатия кнопки включения). Для этого параллельно пинам кнопки Power (на материнской плате пины POWER SW) нужно подключить линии L и L1 (указанные на схеме . НЕ 220В. ) и немного изменить скрипт, чтобы при изменении виртуального пина реле включалось на короткий промежуток времени, имитируя короткое нажатие.

В скрипте, в блоке:

мы добавили задержку delay (100); в 100 мс и выключили после нее физический пин D4 — digitalWrite(D4, LOW);

Способы управления через Blynk

На данный момент есть два варианта управлять пином:

С помощью вебхуков

  • https://blynk-cloud.com/ /update/V0?value=1 — для замыкания реле
  • https://blynk-cloud.com/ /update/V0?value=0 — для размыкания реле

С помощью мобильного приложения blynk

  1. Вернёмся к созданному ранее проекту и добавим простую кнопку с помощью иконки «+» в верхнем правом углу приложения.
  2. Выберем в открывшемся меню «Button» и разместим, где удобней.
  3. Зададим виртуальный пин, управлять которым мы будем этой кнопкой. Для этого просто тапнем по созданной кнопке.
  4. По желанию называем кнопки, задаём цвет и текст, для включенного и выключенного состояний.
  5. Тип «Push<>Switch» (кнопка или переключатель). Push — нажали и отпустили, пин выключился. Switch — нажали и отпустили, пин запомнил состояние.

1. Добавляем кнопку

4. Пин V0 включен

Подключаемся методом webhooks к Умному дому Яндекса

Будем использовать хорошо зарекомендовавший себя навык УД «Домовенок Кузя». Для этого:

  1. Переходим на сайт навыка и авторизуемся там с помощью учетной записи Яндекс.
  2. Выбираем кнопку «Добавить правило GET».
  3. Заполняем «по вкусу». Можно похулиганить и дать устройству имя «Розетка Яндекс».
  4. Не забываем в поле «URL управления устройством, доступный из интернета» вставить ссылку на наш вебхук.
  5. Создаём ВТОРОЕ правило GET — одно на включение устройства, второе — на его выключение.
  6. Выбираем кнопку «Виртуальные устройства умного дома» и создаем новое устройство (у меня лучше всего работают «лампы»).
  7. Указываем ранее созданные «Правило на включение» и «Правило на выключение».
  8. Задаем имя устройства и комнату, в которой оно находится.

    Правило на включение

    Правило на выключение

    Приложение «Яндекс»

    В приложении «Яндекс» (раздел «Устройства») находим навык «Домовенок Кузя». При первом запуске навык попросит авторизоваться. После авторизации нажимаем единственную кнопку «Обновить список устройств». Готово! После загрузки мы увидим наше устройство в списке.

    Выбираем навык «Домовенок Кузя»

    Осталось сказать «Алиса, включи Розетку Яндекс» и услышать радостное пощелкивание реле.

    Важный нюанс по управлению через 0 и 1

    Модули управления нагрузкой бывают двух видов. Привычнее воспринимается, когда реле включается при логической «1» на входе, но часто бывает и наоборот.

    Причин управления через ноль несколько: 1. Меньше вероятность ситуаций с кратковременными переключениями выходов при старте и инициализации процессора (при pullup-подтяжках они вообще исключены). 2. Выше помехозащищённость (так как диапазон для «1» в общем случае пошире, чем у «0»), выше стабильность для ситуаций с устройствами с разными логическими амплитудами. 4. Подтяжка — это всегда дополнительные детали (внутренние или в обвесе), а «0» — это всегда просто земля. 3. И вроде можно даже как-то чуть-чуть сэкономить энергопотребление, но это не точно(с).

    Если вам попался модуль с управлением по активному нолю, то при установке пина в «1», реле будет обесточено, а когда «0» — включено. Самое простое в этой ситуации — инвертировать выход относительно входа. Есть два варианта:

    • В коде строку digitalWrite(D4, pinValue); поменять на digitalWrite(D4, !pinValue);
    • В приложении Blynk поменять местами «0» и «1» в настройках кнопки.

    Есть и третий вариант: перекинуть L1 с контакта NO («нормально разъединён») на контакт NC («нормально замкнут»). В этом варианте (впрочем, как и остальных) желательно исходить из того режима, в котором реле большее количество времени будет обесточено.

    1. Кратковременно включающийся вентилятор (свет). Лучше подключить L1 к «NO».
    2. ненадолго отключающийся компрессор в аквариуме, нагреватель, итд. В этом случае лучше подключить нагрузку на «NC», тогда напряжение будет поступать на нагрузку при обесточенном реле.

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

    Через Интернет? А как же безопасность?

    Во-первых, для каждого устройства выдается токен, который знаете только Вы.

    Во-вторых, сервер blynk можно поднять локально. Об этом есть статья на официальном сайте (в том числе и для популярных одноплатных компьютеров).

    При создании кнопки я заметил(а), что есть платные функции в виде покупки энергии для элементов управления

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

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

    Можно только по Wi-Fi?

    Нет. Подключение может любым: Wi-Fi, Ethernet, и даже COM-порт через USB компьютера. Всё зависит от целей, задач и вида микроконтроллера.

    Почему не использовать готовые решения?

    10. Именно такая цифра — делитель стоимости подобных «готовых» устройств (в некоторых случаях меньше или больше, но какой смысл переплачивать, если с равными усилиями получается дешевле и веселее?)

    Что еще можно сделать по этой технологии?

    • Управляемую подсветку (меняющую цвет, яркость, режимы работы);
    • Сбор информации с самых разных датчиков (температура, влажность, давление);
    • Умные выключатели и розетки;
    • ИК-пульт (наподобие Яндекс.Пульта);
    • Управление компьютером через Алису;
    • Голосовое управление детскими игрушками;
    • Сигнализацию с постановкой на охрану голосом (и проверкой статуса).

    А считывать состояния Blynk умеет?

    Да, ссылка на запрос состояния выглядит так:

    Так же можно считывать и состояния датчиков, но это тема уже совсем другой статьи :)

    Насколько это надежно? (Китай долго не проработает. )

    Ардуино (в том числе китайские версии) прошли в массах не одну проверку температурой, влажностью и временем. Лично на моем опыте собранные устройства функционируют по сей день в течение 3 лет. Что называется, слепил — и забыл.

    Кроме того, модульные сборки имеют преимущество перед «коробочными» в том, что любой модуль, датчик, реле и т.п. можно заменить (при этом недорого!) без вреда для всей схемы. Их намного легче размещать в ограниченном пространстве (в кастомных корпусах, или вообще без корпуса).

    А главный плюс — любое устройство в любой момент можно свободно развивать по функционалу в зависимости от приходящих в голову идей — бесценен!

    Источник

Adblock
detector