Рассказываем, как поэтапно можно создать умный дом на Arduino, которым можно будет управлять через Яндекс.Алису. В частости, создадим умную лампочку.
Уже больше года Яндекс развивает систему управления умным домом через Алису. Благодаря ей вы сможете включать свет, переключать каналы телевизора, заваривать кофе, изменять цвет подсветки, будить умные пылесосы и контролировать температуру в помещении.
Чтобы создать такую продвинутую экосистему умных устройств, совсем не обязательно штурмовать магазины электроники. Яндекс предоставляет API для интеграции ваших собственных решений через платформу навыков.
В этой статье расскажем, как с помощью микроконтроллера и обычного реле сделать умную лампочку и управлять ей с помощью Алисы.
Как работает такой умный дом?
Чтобы создать умный дом своими руками, потребуется навык Домовёнок Кузя. Через него можно не только контролировать умный дом, но и интегрировать виртуальные устройства напрямую в Яндекс.Алису. Это значит, что вам не придётся постоянно открывать навык, чтобы просто выключить лампочку. С микроконтроллером навык будет связываться через веб-хуки.
Для веб-хуков отлично подходит платформа Blynk — панель управления устройствами на Arduino и Raspberry Pi. Там вы сможете без труда создать графический интерфейс, через который можно будет управлять устройством по Wi-Fi (а ещё по Ethernet, USB, GSM и Bluetooth).
Умный дом с Arduino
В данном проекте я покажу, как построить умный дом. Он может контролировать температуру снаружи и внутри помещения, фиксировать открыто или закрыто окно, показывать, идет ли дождь, а также подавать тревожный сигнал, когда сработает датчик движения PIR. Я создал приложение на ОС Android для отображения всех данных (данные можно также просматривать через браузер). Вы сможете видеть температуру в вашем доме и другую информацию с любой точки мира! Приложение переведено на английский и польский язык. Я создал данное устройство, поскольку хотел иметь свой собственный умный дом, которым можно управлять. Вы также сможете построить умный дом из компонентов, рекомендованных ниже. Тогда приступим. Объяснение сокращений для начинающих: GND — земля
VCC — питание
PIR – датчик движения Шаг 1: КомпонентыСтоимость всех компонентов не превышает $90
- Arduino
- ethernet модуль ENC28J60
- Датчик температуры DS18B20 x 2 штуки
- Микрофонный модуль
- Датчик дождя
- PIR — датчик движения
- Язычковый переключатель
- Реле
- Резистор 4.7 кОм
- Кабель, витая пара
- ethernet кабель
- инструменты (паяльник, отвертка)
Шаг 2: Соединения
Превращаю кучу ардуино в единую систему умного дома
Схема соединений показана выше.
Шаг 3: Программный код
Сначала вам необходимо загрузить, разархивировать и импортировать данную библиотеку в среду разработки Arduino IDE. Далее потребуется загрузить данную программу в Arduino. В комментариях объясняется программный код.
Шаг 4: Принцип работы
Если вы нажмете на кнопке refresh (обновить) в вашем приложении или в браузере, то Arduino отправит данные в смартфон/браузер. Приложение получает программный код с каждой страницы ( /tempin, /tempout, /rain, /window, /alarm) и отображает его на вашем смартфоне.
Шаг 5: Приложения для Android.
Для установки приложения на вашем смартфоне под управлением ОС Android вам необходимо выполнить следующее (это видно на картинках выше):
1. Сначала загрузите файл smartHome.apk
2. Отправьте файл apk на ваш телефон
3. Откройте файловый менеджер и разместите файл smarthHome.apk
4. Щелкните на нем и нажмите установить (вам необходимо установить галочку, которая разрешает устанавливать приложения вне маркета google play)
5. После установки вам необходимо активировать приложение
Шаг 6: Конфигурирование приложения
Я кратко объясню, как работает приложение. Оно отображает все данные из вашего дома. Вы можете нажать на иконку настроек для редактирования вашего IP адреса, и включать и выключать тревожную сигнализацию. Когда вы включаете сигнализацию, то приложение получает данные от активного датчика движения PIR. Если датчик определяет постороннее движение в доме, он посылает уведомление. Приложение получает данные от датчика каждую минуту. В поле IP введите ваш IP-адрес.
Шаг 7: Браузер
Введите в адресной строке браузера ваш ip адрес / all. При этом вы увидите все данные и сможете включать и выключать свет.
Для этих функций вы также можете использовать приложение на Android.
Шаг 8: Переадресация портов
Вам нужно открыть порт на вашем роутере. Войдите в конфигурацию роутера, установите адрес arduino ip и откройте порт 80. Процедура показана на картинке выше.
Шаг 9: Присвоение доменного имени NO IP (опция)
Вы можете настроить учетную запись на no ip, но это не обязательно. На картинке выше показан процесс конфигурации.
Шаг 10: Тестирование
Если вы хотите видеть данные на вашем компьютере, то в адресной строке браузера введите ваш ip адрес / all (напр., 12.345.678.901/all) или используйте приложение Android.
Шаг 11: Редактирование: исходная программа приложения Android app
Ниже указан исходный программный код для Android.
Приложение переведено на английский и польский язык. Вы можете через браузер включать и выключать свет, но не можете через приложение, поскольку данная функция еще не реализована.
Прикрепленные файлы:
- smart_home.ino (5 Кб)
- libraries.rar (22 Кб)
- smartHome.apk (374 Кб)
- smartHome.rar (1527 Кб)
topa_biser
Опубликована: 06.12.2014
0
1
Вознаградить Я собрал 0 2
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Первым делом в коде программы установим все необходимые библиотеки и зададим настройки для библиотек IRMP (прием инфракрасных сигналов) и FastLED (для управления RGB светодиодной лентой). Вы можете установить эти библиотеки с помощью менеджера библиотек Arduino или скачать их с репозитория GitHub и установить вручную. Также задействуем все известные протоколы инфракрасной связи, их около 40. Если вы уверены что часть этих протоколов вам точно не понадобится, вы можете просто закомментарить их в приведенном коде – этим вы снизите объем используемой памяти. Также создадим с помощью библиотеки FastLED два объекта для работы с инфракрасными датчиками – один для приема сигналов, а другой для передачи. Затем объявим все необходимые нам глобальные переменные.
Умный дом своими руками
Эта статья о том как можно создать «Умный дом» своими руками с системой sms информирования владельца в случае нарушения периметра или срабатывания различных сенсоров.
Идея собрать и реализовать данную систему принадлежит моему отцу, за ним же и вся часть связанная с паяльником =) Я же, являюсь автором этой статьи и заказанного отцом кода, так как он пока не очень быстро научился писать программы для ардуинчика.
Ядром нашей системы будет выступать плата ввода-вывода Arduino (в нашем случае Arduino Leonardo), которая представляет из себя контроллер позволяющий достаточно легко обрабатывать цифровые и аналоговые сигналы и программировать логику в среде разработки на языке Processing/Wiring (очень простой и понятный си подобный язык ).
Arduino Leonardo
Заказать Arduino можно, например на Aliexpress. Стоимость за версию Arduino Leonardo у хорошего продавца, в среднем составляет 10$.
Для управления системой и смс информированием можно использовать практически любой GSM модем имеющий возможность обработки AT команд через последовательный порт. В качестве эталонного варианта предлагаю использовать Arduino GSM Shield. Мы же использовали имеющийся в наличии старенький Siemens MC35i Terminal.
Siemens MC35i Terminal
Схему подключения пришлось немного доработать, так как потребовалось согласовать уровни. Для этого была использована микросхема MAX232. Микросхему установили навесным монтажом, непосредственно внутри модема. Схема подключения аналогична этой.
Для корректной работы модем должен находится в состоянии готовности. Перевести модем Siemens MC35i в готовность можно AT командами или подтянув к +5 вольт 7 ножку COM порта, через резистор в 100 Ом, как это сделали мы.
Модем Siemens MC35i изнутри
Исходный код, достаточно подробно документирован, фактически комментарий есть к каждой строке, чтобы логика программы была понятна человеку не сильно сведущему в программировании, и в случае необходимости, каждый смог бы переделать программу под свои нужды.
Ссылка на исходный код доступна на GitHub. Там же можно найти несколько вариаций, в которых кнопка постановки на охрану и сенсоры логически инвертированы с 0 на 1. Одним из вариантов является SoftwareSerial — может пригодиться, тем кто будет использовать Arduino с одним последовательным портом и кто захочет переопределить контакты RX,TX на условно произвольные. Для выбора вариантов нужно нажимать на кнопочку branch, как показано на скриншете:
Основной вариант программы с использованием модема на порту COM1 (в коде Serial1) находится в branch: master. Загрузить скетч (так принято называть программы для arduino) целиком, можно нажав кнопку «Download ZIP», в правом нижнем углу.
В файлике at_sms.txt представлен типовой диалог инициализации модема и получения смс сообщения с текстом «STATUS», к которому мы подключены терминалом через последовательный порт.
В файле smart_house.ino находится непосредственно скетч.
Тем кому лень, детально изучать код программы и вникать в тонкости — расскажу, как примерно работает логика программы и как можно адаптировать ее под себя.
Прежде всего, хочу обратить внимание, что из фиксированного функционала в программу заложена только защита периметра. Для этого на определенный пин (в нашем примере это 12 pin) заведена секретная кнопка. После запуска arduino система ожидает ее нажатия, для инициализации постановки на охрану. В случае если инициализация произойдет, то она ожидает разрыв и замыкание периметра (открытие и закрытие двери), о чем сообщает кратковременными звуковыми сигналами с динамика (в нашем примере динамик расположен на 5 пине, а периметр отожествлен с пином номер 8). Как только произойдет закрытие двери, система встанет на охрану и будет ожидать, когда произойдет событие размыкание контура. После того как мы вернулись домой, и открыли дверь, система нам предоставит 10 секунд (параметр в функции checkIFF(10) ) на нажатие секретной кнопки. Если же мы этого не делаем или не успеваем в отведенное нам время, система отправляет смс сообщение на номер(а) хозяина, и переходит в режим аварийного звукового оповещения. Снять аварийный режим можно длительным 4х секундным нажатием на секретную кнопку.
В случае если срабатывают сенсоры, также приходит смс уведомление с информацией какой сенсор сработал и что произошло.
Большинство настроек, таких как номера пинов, массивы для датчиков и устройств доступны в начале кода программы.
// постоянные const int buttonPin = 12; // пин для кнопки const int perimeterPin = 8; // пин для периметра const int ledPin = 10 ; // пин индикатора const int sysledPin = 13; // пин системного индикатора const int tonePin = 5; // пин для динамика .
Номера телефонов на которые будут отправляться смс уведомления задаются в массив smsNumbers[] через запятую, по формату.
char* smsNumbers[] = ; // номера на которые необходимо отсылать аварийные сообщения .
Если оставить массив пустым smsNumbers[] = <>; то сообщения отправляться не будут, останутся только звуковое оповещения.
Аналогичным способом можно определить имеющиеся у вас сенсоры и устройства. Ниже пример определения двух сенсоров, — датчика протечки воды и утечки газа, где по порядку определены: пин на котором находится сенсор, состояние сенсора и состояние аварии на момент инициализации arduino, название сенсора для смс уведомления, а также аварийное сообщение и сообщение по его локализации.
// объявление сенсоров и их кодов ошибок tSensor mySensors[] = < < 6, false, false, «Water», «WARNING! Found water leakage.», «Water leakage disappeared.» >, < 3, false, false, «Gas», «WARNING! Found gas leakage.», «Gas leakage disappeared.» >>; .
Также в программу заложена логика управления устройствами. В данном случае под устройствами понимается некий пин назначенный вами, к которому вы можете подключить реле или просто устанавливать логический ноль или единицу отправив команду по смс.
Устройства определяются точно таким же образом, как и сенсоры за небольшим исключением в формате записи массива.
Формат записи устройств: [пин, состояние устройства на момент запуска, сенсорная кнопка или нет, название устройства для смс информирования]
// объявление устройств и их состояний tDevice myDevices[] = < < 7, false, true, «Unit 1»>, < 2, false, false, «Unit 2»>>; .
Третье по порядку значение, определяет тип кнопки устройства. Кнопка может быть «сенсорной», т.е. при подаче команды на нее подается логическая 1 и 0 с интервалом в 1 сек, либо фиксированная, где — 1 всегда вкл, а 0 выкл.
Управлять устройствами можно отправив sms сообщение следующего формата, на номер к которому подключена система:
[секретный код][0 или 1]…[0 или 1], где секретный код, это код заданный в начале программы, а 0 и 1 символизируют выключенное и включенное состояние соответственно:
String secretStr = «7770:»; // кодовое слово для подачи команд по смс .
т.е. например, чтобы включить первое устройство и выключить второе необходимо отправить смс сообщение следующего содержания «7770:10» . Количество параметров в смс, должно соответствовать количеству устройств в системе, в противном случае сообщение будет проигнорировано.
Если на номер системы отправить смс сообщение со словом «STATUS», то в ответ вы получите примерно такое сообщение:
Можно пойти дальше и написать приложение, например для Android, но мы решили не заморачиваться =)
Вся отладочная информация дублируется на последовательный по умолчанию порт Serial. Этот же порт при желании можно задействовать для gsm модема, закомментировав отладочный вывод.
P.S. При монтаже системы столкнулись с проблемой ложных срабатываний из-за достаточно большой длинны периметра. Как оказалось, бороться с этим достаточно просто установив несколько керамических конденсаторов по 5 вольтам Arduino.
Скачать среду разработки Arduino IDE для вашей ОС можно по ссылке с официального сайта.
Шаг 6: Настройка приложения
В данном случае картинки лучше слов:
Приложение работает следующим образом — оно показывает все данные вашего умного дома. Вы можете нажать на иконку настроек, чтобы изменить свой IP-адрес и включить/выключить сигнализацию. При включении сигнализации, приложение получает данные от датчика двиэения и, если он обнаруживает перемещение в вашем доме, высылает уведомление. Приложение получает данные от датчика движения каждую минуту. В области IP необходимо ввести ваш IP-адрес.
Шаг 7: Браузер
Введите в браузер ваш IP.
Там можно увидеть все данные и включать и выключать свет. Вы можете использовать это вместо приложения на Android.
Arduino Home, умный дом на Arduino, Часть #1
В общем, человек существо ленивое и всегда хотел упростить себе жизнь.
Разработка такой системы — это большая проделанная работа, в том числе подбор необходимого оборудования, настройка и калибровка всех составляющих умного дома, написание программного кода, отладка, устранение неполадок и неисправностей, а также защита от взлома.
Первым делом нужно знать, что сейчас продается множество готовых решений, отдав за которые часть своих сбережений можно получить готовый и полностью настроенный умный дом в один миг. Но чтение данного материала имеет смысла по следующим причинам:
- Готовые умные дома от крупных компаний стоят значительно дороже, чем разработанные и собранные вами самостоятельно.
- Нужно понимать и уметь разбираться в процессах вашего умного дома, чтобы при малейшем сбое не обращаться к специалисту, который также будет опустошать ваш кошелек.
- Опыт в разработке и отладке собственного умного дома бесценен и еще не раз вам пригодится!
- Также стоит понимать, что беспощадный технический прогресс требует все больших навыков и знаний. Разбираться в высоких технологиях сейчас пойдет на пользу каждому.
Разберем основные моменты, чтобы понять саму технологию.
Конструкция умного дома состоит из следующих элементов:
- Контроллер — главный “мозг” системы. В него загружается программный код, определяются необходимые параметры системы, а сама информация передается на сервер.
- Сервер — это то, что связывает контроллер с исполнительными устройствами. Он обрабатывает всю информацию и от него зависит быстродействие и надежность системы.Сервер подключается к компьютеру в доме при помощи специального программного обеспечения (ПО)
- Исполнительные устройства — это различные приборы, которые питаются от сети (розетки, телевизор, лампочки, вентилятор и т.д.)
- Линии связи обеспечивают взаимодействие всех элементов умного дома посредством их соединения.
Соединение устройств бывает двух типов, по которым происходит и классификация умных домов: беспроводные и проводные.
У каждого из этих типов есть свои плюсы и минусы.
Беспроводной тип умных домов подразумевает собой взаимодействие всех элементов при помощи беспроводной передач данных (чаще всего через Wi-Fi и Bluetooth):
- Минимальное количество кабелей и проводов
- Меньше занимает места
- Удобно использовать
- Система уязвима перед хакерскими атаками: ее легко взломать по причине низкого уровня защиты беспроводных соединений
- Высокая стоимость беспроводного оборудования
- Низкая надежность от внешних воздействий и катаклизмов
Проводной тип подразумевает прокладку большого метража кабеля — это, возможно, самый главный минус конструкции, поскольку придется выполнить значительные корректировки в строении дома, производя прокладку и замену проводов.
Плюсов здесь много, среди которых:
- Относительно низкая стоимость
- Высокая надежность и устойчивость к помехам
- Высокая скорость передачи данных и бесперебойность
Также умные дома подразделяются в зависимости от их архитектуры. Архитектура — это совокупность элементов системы, где каждый элемент выполняет свою задачу.
Раньше вся архитектура строилась вокруг одного мощного контроллера, который управлял всеми компонентами умного дома. Он оснащался всем, чем только можно: веб-сервером, облако и имел множество выводов для подключения всевозможных интерфейсов и устройств. Такой тип умных домов называется централизованным, когда система “танцует” от одного элемента.
Главный минус таких систем — надежность, поскольку при выходе из строя небольшого и малозначительного элемента под угрозой стабильной работы окажется вся система.
В более распределенных системах (децентрализованных), которые стали набирать популярность относительно недавно, у каждого устройства исполнения есть собственный контроллер с собственной памятью и архитектурой. Такие системы считаются более надежными и позволяют дополнять их другими модулями в зависимости от желаний и потребностей пользователя.
Внимание! Когда вы будете подбирать модули для их взаимодействия в умном доме, то проверяйте их на совместимость, т.к. компоненты от разных производителей могут конфликтовать между собой.
А теперь поговорим и о самих производителях. Сейчас рынок интернета вещей буквально кишит различными компаниями и стартапами, предлагающими свои решения. Среди самых надежных и популярных считаются умные дома фирм KNX, ABB, Bticino, AMX и других.
Цены на такие системы начинаются от нескольких десятков тысяч рублей (сюда входят система точки доступа, блок питания, различные диммеры, датчики, выключатели и т.д.)
Для многих такая система будет не по карману, а пик их популярности еще не настал, что могло бы позволить снизить конечную стоимость продукта.
Поэтому в данном цикле статей мы рассмотрим более бюджетные способы создания собственной системы умного дома. Как уже было понятно из названия попробуем реализовать все свои задумки с помощью платформы Arduino.
Вторую часть из цикла статей читайте здесь
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Элементы умного дома
Элементы домашней автоматизации включают в себя датчики (например, температуры, дневного света или обнаружения движения), контроллеры и приводы, таких как моторизованные клапаны, выключатели, двигатели и другие.
ОВК
Это отопление, вентиляция и кондиционирование воздуха, ОВК может контролировать температуру и влажность, к примеру, термостат интернет-контроля позволяет домовладельцу удаленно управлять системами отопления и кондиционирования воздуха здания, система может автоматически открывать и закрывать окна, включать радиаторы и котлы, теплый пол.
Освещение
Эти механизмы управления освещением могут быть использованы для управления бытового света, техники. Также сюда можно отнести систему естественного освещения, работу жалюзи или штор.
Аудио-визуальная
Эта категория включает в себя аудио-, видеосигналы для безопасности. Сюда входят:
- Эффект присутствия дистанционного управления (Это самая современная технология, которая применяется для увеличения безопасности). Заключается в зажигании света, музыкальном сопровождении.
- Имитация присутствия
- Регулирование температуры
- Регулировка яркости (электросветильники, уличное освещение)
- Безопасность (сигнализация, жалюзи).
Как сделать умный дом
Интеллектуальную систему можно сделать своими руками, самый бюджетный вариант – это настройка контроля освещения в доме или включения компьютера.
Чтобы сделать лампу, которая будет «сама» загораться, к ней понадобится подключить специальное оборудование. Есть несколько вариантов решения это задачи:
- Установить акустическое реле (1 или x10-wire);
- Присоединить диммер;
- Подключить датчик движения.
Проще всего работать с датчиком. Его продажа осуществляется в любом интернет-магазине, можно купить канальный прибор, можно разработать свой собственный по своим параметрам. Единственное замечание, нельзя устанавливать с таким прибором лампу накаливания, она может не выдержать нагрузки и взорваться, лучше работать со светодиодной.
Еще один «умный» бесшумный вариант – это диммер. Здесь Вам понадобится прикоснуться к лампе, в зависимости от количества прикосновений, говорящий прибор будет менять яркость. Это очень удобно использовать на лампе в спальне, детской.
Чтобы настроить контроль и регулирование температуры, нам понадобится многоканальная система. Центральная схема контроля температуры и влажности состоит из:
- Датчиков (ds1820), которые измеряют физическое состояние жидкости, воздуха.
- Контроллеров (rfm12), которые могут быть простыми физическими компонентами и сложными устройствами специального назначения или встроенных компьютеров.
- Приводов люнекса, которые реагируют на сигналы контроллеров.
Самый современный способ – это купить все составляющие умного дома, провода, термостаты. После установить приборы в каждой комнате, по терморегулятору на радиатор и один на котел. Также понадобится управляемый блок, или «мозг» всей системы. Его рекомендуется смонтировать на входной трубе отопления.
Наиболее просто осуществляется монтаж системы видеонаблюдения и сигнализации. Принципиальные положения установки систем безопасности:
- Нужно подключить датчики на окнах, дверных проемах, там электрика будет самой продуктивной;
- Сложнее всего подбирается плата, от неё зависит контроллер умного дома, работа посредственных деталей, уровень сигналов;
- Многие специалисты считают, что монтировать индикаторы нужно на уровне пола. Где-то см 20 от плинтуса, это повышает эффективность;
- Желательно установить постоянный мониторинг, установить цифровую систему контакта со службой охраны. Часто ответственными хозяевами устанавливается специальная программа к себе на персональный компьютер, которая позволяет контролировать работу системы из любой точки, где есть интернет (так советует поступить Елена Тесля и её книга: «Умный дом: как сделать своими руками», также там есть и другие решения). Можно подключить sms-оповещения.
Умный дом – это очень удобный способ сделать свою жизнь проще, часто целая система покупается полностью (Arduino, KNX, Linux).
Стоимость каждой системы индивидуальна. Самые популярные марки следующие: beckhoff, gira, lpt, redeye, Smart Switch IOT screen, teleco. Мы рекомендуем, перед тем, как построить такое жилье, посоветоваться со специалистами, они помогут вычислить уровень нагрузки, рассчитать потребляемую мощность.
Чтобы почерпнуть идеи, можно пролистать В.Н.Гололобов «Умный дом» своими руками, DJVU или PDF, бесплатно посмотреть у нас фото и видео- инструкции, прочитать советы известных мастеров.