☰ Оглавление

Система управления умным домом на расстоянии

Всем привет! Как вы уже знаете с вами Артем Лужецкий и я продолжаю вести серию статей посвященных "Умному дому" и IoT (англ. - Internet of Things, интернет вещей).

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

В любом случае, нужна система управления и один из самых простых и надежных вариантов — это пульт управления. Мне лично не особо хочется создавать пульт с помощью гор проводов, и еще когда-нибудь об них споткнуться. Поэтому предлагаю несколько вариантов создания беспроводного пульта управления умным домом.

1. Создание собственного пульта управления черз ИК-пульт и ИК-датчик

Самый простой способ создания пульта, если у вас, конечно, есть пульт и датчик, если нет, то придется их где-то взять. Можно взять приемник и ик - светодиод, сделать с помощью ардуино и его модулей пульт, отправлять команды с помощью ик - светодиода и принимать уже другой arduino с помощью датчика. Легко ли это... думаю нет, придется заморочиться с двумя ардуино и командами, но весьма интересный способ управления, быть может позже мы его рассмотрим. Я буду использовать уже готовый пульт и датчик от компании Амперка. Можно использовать модули и от других производителей.

Нам не нужно использовать все кнопки (пока), можно воспользоваться одной единственной, для включения и для выключения нашей лампы.

Для простой работы с ик - пультом требуется скачать нужную библиотеку - https://github.com/z3t0/Arduino-IRremote.

Далее мы должны подключить ИК - датчик к Arduino.

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

Наводим пульт на датчик и нажимаем пару кнопок на пульте, видим такую картину:

Я возьму значение своей первой кнопки - 1689D02F.

Теперь поговорим о том, что мы хотим сделать с помощью нашей кнопки.

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

Реле подключена через 13 пин.

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

Но такой пульт сильно ограничен, если вы выйдете из комнаты, то скорее всего можете уже забыть про управление лампой и умным домом, поэтому предлагаю еще один вариант - Bluetooth.

2. Создание собственного пульта управления через смартфон и Bluetooth-модуль

Bluetooth модули HC–05 и HC–06:

Сделать его будет не сложно, нужен лишь модуль Bluetooth (HC – 05; HC – 06) и любой смартфон, на котором стоит Bluetooth Terminal.

Есть много приложений такого типа, я поступил оригинально и скачал "Bluetooth Terminal" 🙂

Надо понять, что наши Bluetooth модули в начале находятся в режиме "Slave", а значит они будят принимать сигнал и, после принятия сигнала, отправлять его с помощью UART интерфейса через пины Rx и Tx на нашу Arduino сразу же после подключения.

С помощью терминала мы сможем отправить с телефона по bluetooth символ "1", значит, что в serial порту у нас появится символ "1". Мы сможем считать его и если он удовлетворяет нашим требованием, то пусть Ардуино подаст ток на нашу реле и включит лампу, если же мы отправили "0", то Ардуино перестанет подавать ток на реле и выключит лампу.

 

Обычный модуль подключается через 3,3 вольта. Rx в Tx, а Tx в Rx, землю в Gnd. Ничего сложного. Как только мы подключим его, то увидим в сети Bluetooth еще одно устройство, осталось только написать программу для ардуино и подключится к модулю, через терминал.

Я думаю, что вам понятно, как я буду управлять своей лампой через телефон, но так как у меня нет необходимости задействовать все цифры (от 0 до 9), то пусть 0 будет выключать лампу, а все остальные цифры ее включать. Буквы я трогать в этой программе не буду. Но я оставлю возможность также управлять лампой через ик – пульт.

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

Открываем меню и нажимаем "Сonnect a device - Secu.." 🙂

Выбираем нужное вам устройство, оно может иногда идти с паролем "1234" или "0000", и все, можно отсылать данные.

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

3. Создание собственного пульта управления через два Bluetooth-модуля и два Arduino UNO

С помощью модуля Bluetooth мы можем не только принимать, но и отправлять данные на другие устройства. Если модуль можно перевести в режим «Master», то он сможет связывается с другими устройствами самостоятельно и отправлять данный, полученный по UART интерфейсу.

Если у вас два модуля HC – 06, то не получится сделать так, ведь не могут работать в режиме «Master», но если у вас два или хотя бы один из двух Bluetooth модулей HC – 05, то вы можете попробовать.

Сделать его будет сложно, но зато именно он сможет быть модифицирован в сотни других пультов и проектов. Для начала нам потребуется два Bluetooth модуля. Я взял два модуля HC – 05, они могут как принимать сигнал, так и отправлять его, что нам и нужно.

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

Для этого нужно перевести модуль в режим AT команд. Один из способов это сделать —  отключить модуль от платы (если она была подключена к модулю) и подать на пин K +3.3 вольта (в моем случае 5). Далее подключаем питание к модулю и пин Tx модуля подключаем в Tx платы, а пин Rx модуля подключаем в Rx платы.

Открываем сериал порт. В настройках к нему выбираем скорость в "38400 бод", символ перевода строки меняем на "NL+CR".  и набираем команду "AT". Если все сделать правильно, то на вашу команду модуль должен дать "OK" (также возможен ответ "ERROR: (0)", но после последующей команды "AT" он должен ответить "OK").

А теперь для модуля Slave нужно вести такие команды:

Сброс предыдущих настроек: AT+ORGL

Сброс спаренных устройств: AT+RMAAD

Установка пароля: AT+PSWD=1234

Включение режима ведомого: AT+ROLE=0

Дополнительно можно узнать адрес устройства (понадобится для настройки спаренного модуля): AT+ADDR?

В ответ получим сам адрес: ADDR=12:6:143117
(или такого вида: 98d3:34:911ec5)

После настройки, отключаем ногу KEY от +3.3В, и перезапускаем модуль. Готово!

А теперь подготовим устройство Master

Сброс предыдущих настроек: AT+ORGL

Сброс спаренных устройств: AT+RMAAD

Включение режима ведущего: AT+ROLE=1

Рестарт после смены роли: AT+RESET

Если мы хотим связать ведомого и ведущего, пишем такие команды:

Установка пароля ведомого: AT+PSWD=1234

Указываем парное устройство: AT+PAIR=<адрес>,<таймаут> (пример: AT+PAIR=12,6,143117, 5)

Связываем с конкретным адресом: AT+BIND=<адрес> (пример: AT+BIND=12,6,143117)

Запрещаем соединяться с другими адресами: AT+CMODE=0

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

Когда вы захотите запрограммировать Arduino вам надо вытащить провода из пинов Rx и Tx, ведь по ним идет передача по UART от компьютера к плате, а связь Bluetooth модуля и компьютера помешает передаче данных.

3.1 Собираем сам пульт

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

Для данного пульта нам пригодится:

1) Два Bluetoth модуля (как минимум один, который может быть в режиме Master)
2) Кнопка
3) Резистор 10кОМ
4) Светодиод (он уже на плате на 13 пине)
5) Две платы Arduino UNO
6) Лампа и реле (смотрите 1 статью про подключение лампы, если нет возможности, возьмите светодиод и подключите как на схеме)

Соберем электрическую схему для платы Master:

Соберем электрическую схему для платы Slave:

Напишем код для модуля Master:

 

Напишем код для модуля Slave:

 

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

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

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

Автор - Артем Лужецкий

02.04.2018 | Умный дом | | Автор:
Ардуино+
Больше интересного ↓