Умный дом на esp8266 своими руками

Добавил пользователь Владимир З.
Обновлено: 17.09.2024

В этом проекте мы собираемся создать устройство, подключенное к Интернету вещей, используя платформу Tuya IoT и модуль ESP8266.

Что такое Tuya IoT

Tuya – это ведущая глобальная облачная платформа IoT, которая объединяет интеллектуальные потребности брендов, OEM-производителей, разработчиков и розничных сетей. Платформа предоставляет разработчикам универсальное решение на уровне PaaS для Интернета вещей, которое содержит инструменты разработки оборудования, глобальные облачные сервисы и разработку интеллектуальных бизнес-платформ. Tuya предлагает комплексное расширение возможностей экосистемы от технологий до каналов сбыта для создания ведущей в мире облачной платформы Интернета вещей.

Платы ESP8266 стали очень популярны из-за своей низкой цены и совместимостью с Arduino IDE. Для решения задач устройств "Умного дома" они просто идеальны. ESP требует только подключения питания, а сбор и отправку данных она может осуществлять по Wi-Fi через домашний роутер.

ESP + MQTT как основа умного дома

Получить к возможность подключиться к брокер серверу можно двумя способами: воспользоваться бесплатными MGTT брокерами или поднять свой собственный сервер (путь самурая).

Свой брокер поднять не на много сложнее. Дольше уйдет время на настройку окружения, чем на поднятие брокера. Сделать это можно на nodeJs с npm пакетом mqtt. Примеры можно посмотреть на сайте расширения. Но это уже выходит за рамки данной статейки.

Вернемся к нашей ESP. Из этих устройств мы соберем периферию по сбору данных. Для реализации устройств удобно использовать модуль ESP8266 ESP-12. Он имеет встроенный стабилизатор на 3.2 вольта и множество свободных GPIO для подключения периферии. Цена так себе, если паяльник не вызывает страха, то можно замутить на 01/07 модулях. На али такие меньше чем за 2$ за штуку можно отхватить.

ESP + MQTT как основа умного дома

Настройка Arduino IDE

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

Запускаем наше IDE и идем в Файл - Настройки.

ESP + MQTT как основа умного дома

ESP + MQTT как основа умного дома

Выбираем последнюю версию и жмем Установить.

Esp прошивает на другой скорости чем чипы Atmega и по тому нам нужно в первую очередь изменить скорость uart. Инструменты - Upload Speed:-115200:

ESP + MQTT как основа умного дома

Не забываем задать тип платы: Инструменты - Generic ESP8266 Module.

ESP + MQTT как основа умного дома

Ну и все, наше IDE готово загружать скетч в ESP. Если вы счастливый обладатель ESP8266 ESP-12 - переключаем в режим программирования, тыкаем usb, выбираем COM порт и погнали. Если плата попроще (ESP8266-01), не беда. Подключаем GPIO0 на землю, USB-UART "свисток", подаем стабильные 3.2 вольт и наша дешевая плата тоже готова принять скетч. Распиновка подключения для 01:

ESP + MQTT как основа умного дома

Скетч для MQTT

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

Код выполняет соединение к Wi-Fi точке доступа в квартире, через интернет соединяется к брокер серверу. Подписывается на топики test/1 и test/2. Отсылает раз в 3 секунды значение системного счетчика. В общем, ничего лишнего.

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

Настройка клиента на телефоне

Скачиваем приложение в маркетплейсе Android/iPhone - IoT MQTT Dashboard или любое аналогичное. Они все работают одинаково.

В запущенном приложении нужно задать хост, логин, пароль, порт брокер-сервера.

ESP + MQTT как основа умного дома

Далее мы попадаем на страницу подписок. Задаем наши два топика "test/1" и "test/2" - теперь мы всегда будем видеть последние присланные значения этих топиков. Это может быть температура воздуха или влажность земли в теплице. Есть поддержка передачи изображения в base64, но это уже совсем другая история.

На втором экране мы можем создать управляемые контролы: кнопки, переключатели, выбор цвета, мультиселек, поле ввода текста. Добавляем переключатели и вбиваем в них наши топики "test/1" и "test/2". Запускаем и видим как переключение топиков сразу же вываливает в консоль UART микроконтроллера ответы. Колдунство!

ESP + MQTT как основа умного дома

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

Здравствуйте! Сегодня я хотел-бы рассказать про Wi-Fi модуль ESP8266.

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

Вид различных модулей семейства ESP 8266

Вид различных модулей семейства ESP 8266

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

ВНИМАНИЕ! Не подключайте модуль к 5V! Это скорее всего приведет к его повреждению. Он работает от 3,3V! Это напряжение желательно получить от не зависимого источника питания.

Модуль дополнительного питания 5V и 3,3V

Модуль дополнительного питания 5V и 3,3V. Схема преобразователя на LM1117-3.3V

Если вы решили подсоединить его к порту питания 3.3V Arduino, то запитайте Arduino от дополнительного блока питания мощностью не менее 2A.

Проверка

Для работы модуля нужно подключить ножки GPIO15 и GND к земле, а CH_PC(CH_PD) и VCC к +3.3V, это позволит вам проверить работу модуля. Светодиоды на модуле должны засветиться.

ESP 8288 на макетной плате в работе

ESP 8288 на макетной плате в работе

После чего появится Wi-Fi точка доступа, доступ к которой будет без пароля, если не появилась, то проверьте правильность подключения, если все правильно, замерьте напряжение на GND и VCC – оно должно быть не менее 3 -3.3V, если меньше, нужен блок помощнее. Если напряжение в норме, а светодиоды не светятся, и точка доступа Wi-Fi не появилась, значит все плохо, и нужен другой модуль.

Прошивка.

Чтобы прошить esp8266 (загрузить определенную программу в запоминающее устройство модуля) — самое простое, это использовать модуль TTL-USB – это адаптер конвертер USB/UART, который эмулирует работу COM порта через порт USB.

Для правильной работы TTL-USB, нужны драйвера под вашу операционную систему, их необходимо найти и установить. Для разных модулей они отличаются. Их можно отыскать в интернет по названию микросхемы на Вашем модуле. Это отдельная тема для обсуждения, и если вы только начинающий пользователь ПК, то попросите кого ни будь Вам помочь с их установкой, т.к. от правильной работы этого модуля зависит успех дальнейшего проекта. (В конце статьи я дам ссылку на драйвера для конкретно моего блока и магазин где купить TTL-USB, именно такой как у меня.

ВНИМАНИЕ! Так как модуль ESP8266 работает исключительно от 3,3 вольт, то ваш модуль TTL-USB, по-хорошему, тоже должен иметь питание 3,3V или двойное 3,3V или 5V, которое может задаваться перемычкой на плате. Ели у Вас он работает от 5V, то вам необходимо согласовывать сигналы чтения – записи RX-ТХ, TTL-USB с модулем ESP8266, т.е. снизить их до 3,3V, в противном случае модуль ESP8266 может выйти из строя.

Схема собрана в программе fritzing

Схема собрана в программе Fritzing

Далее для прошивки через TTL-USB нужно подключить TX (модуль ESP8266) к RX (TTL-USB), RX (модуль ESP8266) к TX (TTL-USB), не забудьте про то, что это должно быть 3,3V!

ESP8266-12E описание расположения выводов

ESP8266-12E описание расположения выводов

AT

В ответ вы должны увидеть:

OK

Если ответ получен, и вы получили OK, то все отлично, и теперь вы можете работать с модулем по полной, а если нет…, то проверяйте подключение модуля и исправность TTL-USB.

Прошивка.

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

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

smart-home

Сейчас на рынке присутствует очень много разрозненных решений. Ради эксперимента мне захотелось попробовать сделать что-нибудь самому.

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

Нафиг бредовые идеи. Встроить айпад с интерфейсом в стену? Отправлять данные на народный мониторинг? Ну уж нет, спасибо, обойдёмся без этого.

Нафиг пульты. Пульты всегда теряются и ломаются. Лучший пульт — тот, который всегда с тобой. Это телефон или часы (привет, Сири!). Также не забудем оставить классические элементы управления (настенный выключатель, ггг) для менее продвинутых домочадцев.

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

схема умного дома

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

raspberry pi

Малина хороша надёжностью, открытостью, маленькими размерами, ценой (35$ по карте Мастеркард ) и удобством разработки (внутри — обычный Линукс).

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

Осталось решить, каким образом будет организовано взаимодействие между Малиной и несколькими Ардуинами. Напомню, от проводов я отказался, поэтому выбираем между беспроводными технологиями. От 433 МГц я отказался в виду отсутствия шифрования и перегруженности частоты в городах. От ZigBee я отказался, потому что их модули стоят неоправданно дорого (50-60$), а мне хотелось сделать бюджетное решение. От Z-Wave я отказался ввиду проприетарности протокола и сложности коннекта с Ардуиной.

Собственно, выбрал я Wi-Fi, и вот почему. Wi-Fi обеспечивает хорошую безопасность и легко встраивается в существующую инфраструктуру. Роутер Wi-Fi есть в каждом доме и обычно покрывает всю площадь помещения. Если дальности не хватает — можно поставить несколько роутеров или репитеров. С Wi-Fi не придётся заморачиваться с низкоуровневыми протоколами (есть TCP/IP), но придётся придумать свой высокоуровневый протокол для обмена данными между устройствами и контроллером (это не сложно).

Ещё большой плюс Wi-Fi — мощные, но очень дешёвые модули ESP8266 (3-4$), позволяющие подключить любое самодельное устройство к сети. Модули очень маленькие, но с богатыми возможностями (умеют создавать свою сеть, а не только подключаться к существующим). Причём, в них есть свой микроконтроллер, и его можно прошивать (через Arduino IDE). То есть, теоретически можно было бы обойтись без Ардуины, но для этого нужна другая модификация модуля, например, ESP-12E (на нём просто больше GPIO-выводов), а я использовал модификацию ESP-01 в силу куда большей распространённости и простоты для новичка.

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

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

умный выключатель на макетной плате

Синий кабель — питание 5В, в качестве микроконтроллера Искра Нео (можно юзать Искру Мини) — российский аналог Ардуино, в разрыв цепи лампочки (230В) вставлено реле, также на схеме присутствуют модуль ESP8266, кнопка (чтобы можно было включать/выключать лампочку не только с телефона, но и руками) и светодиод (для тестирования, пока не была подключена лампочка). Все компоненты можно купить как в России, так и заказать из Китая на Алиэкспрессе.

На самом деле, так как Ардуина работает от 5В, а ESP8266 от 3.3В, ему нужно было собрать некоторую обвязку, а не подключать напрямую. Несмотря на то, что все статьи в интернете уверяют, что модуль сгорит от 5В, я подключил его напрямую и не наблюдаю проблем в течение года при постоянном использовании. По-хорошему, конечно, нужно собрать стабилизатор питания (например, на схеме LM317).

Если вы хотите этот прототип превратить в работающий умный выключатель, то для организации питания Арудины проще всего разобрать недорогой китайский блок питания на 5В и вынуть из него внутренности.

Проводка в квартире находится под высоким напряжением (~230В), работа с которым представляет большую опасность для здоровья и жизни. Например, прикосновение даже к некоторым участкам включённого реле приведёт к неминуемому поражению электрическим током, которое может повлечь серьёзные травмы и даже смерть. Неправильное подключение блока питания или других устройств к сети может привести к возгоранию. Люди, не имеющие необходимой квалификации, не должны каким-либо образом производить описанные в данной статье действия. Если у вас есть хоть малейшие сомнения в работе с электрическими сетями, остановитесь. Всё, что вы делаете, вы делаете на ваш страх и риск. Автор статьи не несёт ответственности за любые ваши действия.

принципиальная схема умного выключателя

Здесь всё очень просто. Реле подсоединяется к контроллеру через 3 контакта: питание, земля, сигнал. С другой стороны расположен клеммник, на котором есть как нормально закрытый (NC), так и нормально открытый (NO) контакты. При подаче управляющего сигнала NC-контакт открывается и пропускает ток, а NO-контакт закрывается. Подключение светодиода и кнопки — это первое, что пробуют все начинающие ардуинщики, так что на этом останавливаться не будем. ESP8266 подключается по UART интерфейсу (RX к TX, TX к RX), в нём залита штатная прошивка на AT-командах.

Для удобства отладки прототипа я использую Искру Нео — аналог Ардуино Леонардо (у них USB работает через виртуальный Serial-порт).

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

Здесь 00000001 — ID устройства, 111111 — пароль доступа, status — название команды, on/off — пароль команды.

В следующей заметке я подробно расскажу об этом простейшем протоколе, а также об устройстве контролера моего умного дома.

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

Этого я не знаю. Посмотрел и не нашел bin файлов для указанного вами проекта.
Видео на Youtube только одно нашел, и понять как все это работает достаточно сложно.
Так что первое отличие которое я обнаружил - простота установки ПО.

Остановился именно на Sonoff-Tasmota, потому что он интегрировался в openHAB, в отличии от MegaESP viewtopic.php?f=1&t=1130

Остановился именно на Sonoff-Tasmota, потому что он интегрировался в openHAB, в отличии от MegaESP viewtopic.php?f=1&t=1130

Спасибо за ссылку. Посмотрю.
Наша прошивка работает сама по себе. Идея заключается в том, что каждый отдельный модуль может работать самостоятельно. Не требуется отдельных серверов. Для развертывания нескольких устройств их достаточно подключить к роутеру и все начинает работать.
Sonoff-Tasmota загрузил, в мониторе порта вижу:
00:00:00 APP: Project sonoff Sonoff (Topic sonoff, Fallback DVES_007055, GroupTopic sonoffs) Version 5.6.1
00:00:00 Wifi: Connecting to AP1 indebuurt1 in mode 11N as sonoff-4181.
00:00:07 Wifi: Connect failed as AP cannot be reached
00:00:07 Wifi: Connecting to AP2 indebuurt2 in mode 11N as sonoff-4181.
00:00:14 Wifi: Connect failed as AP cannot be reached
00:00:14 WPSconfig: Active for 1 minute
Что делать дальше не знаю. WPS подключение не срабатывает.

Остановился именно на Sonoff-Tasmota, потому что он интегрировался в openHAB, в отличии от MegaESP viewtopic.php?f=1&t=1130

Спасибо за ссылку. Посмотрю.
Наша прошивка работает сама по себе. Идея заключается в том, что каждый отдельный модуль может работать самостоятельно. Не требуется отдельных серверов. Для развертывания нескольких устройств их достаточно подключить к роутеру и все начинает работать.
Sonoff-Tasmota загрузил, в мониторе порта вижу:
00:00:00 APP: Project sonoff Sonoff (Topic sonoff, Fallback DVES_007055, GroupTopic sonoffs) Version 5.6.1
00:00:00 Wifi: Connecting to AP1 indebuurt1 in mode 11N as sonoff-4181.
00:00:07 Wifi: Connect failed as AP cannot be reached
00:00:07 Wifi: Connecting to AP2 indebuurt2 in mode 11N as sonoff-4181.
00:00:14 Wifi: Connect failed as AP cannot be reached
00:00:14 WPSconfig: Active for 1 minute
Что делать дальше не знаю. WPS подключение не срабатывает.

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

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

И без перекомпиляции можно - надо четыре раза на кнопку нажать и он сам открытую точку доступа создаст. Не очень удобно конечно.

empenoso писал(а): И без перекомпиляции можно - надо четыре раза на кнопку нажать и он сам открытую точку доступа создаст. Не очень удобно конечно.

Все запустил. И посмотрел. Это в корне другая идеология. Наша прошивка самодостаточна для работы включил и пользуйся.
Дружественный интерфейс. Поддержка 4 языков. Можно и больше, если кто перевод сделает. Основная идея всего этого умный дом для любого человека. Sonoff-Tasmota все же для гиков.

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

А если нет сервера - как всем этим управлять - весь устройств довольно много может быть - где единая страница управления?

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

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

Ну или так. но опять же в каждом устройстве прописывать ссылки на все остальные устройства - не слишком ли муторно?

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

empenoso писал(а): Ну или так. но опять же в каждом устройстве прописывать ссылки на все остальные устройства - не слишком ли муторно?

Насколько я понял, модули могут общаться между собой.

Можно ли реализовать управление отоплением?
На одном модуле датчик температуры, например TMP37(аналог) или HDC1080(I2C).
Другой модуль получает данные о температуре с первого и подаёт на программный ПИД-регулятор. Выход с ПИД-регулятора на ШИМ(PWM) ножку модуля.

Добрался до платы, загрузил, поигрался на большом мониторе.
Плюсы:
Концепция интернет вещей набирает свои обороты, получаем самостоятельный модуль, есть таймеры, есть построение логики, есть полноценный веб интерфейс который собирается самостоятельно в зависимости от модулей в системе (к сожалению проверить не могу, верю словам разработчиков)
Минусы:
Один канал. одна кнопка и реле. или RGB, я правильно понял? ESP позволяет сделать 4 канала и 4 кнопки.
Не нашел настроек железа, кнопка это или переключатель, что отдать на выход импульс или измененный постоянный уровень.
Сумбурность самого интерфейса, нет порядка, много лишнего, должно быть только индикация статуса выхода, значения температуры, влажности (если они активированы в модуле) и кнопка управления этим выходом, журнал таймеров, ну и соответственно если физическая кнопка нажата и состояние выхода изменилось, то это должно отобразиться без перезагрузки страницы, например как в Tasmota. Все остальные настройки, журналы и хелпы спрячьте в выдвижное меню.
Должно быть так: Заходим на устройство 1, и первое что видим статус и управление, внизу уже по очереди в зависимости от IP видим остальные блоки, ими тоже можно управлять со страницы 1-го устройства, боковое меню настраивает устройство номер 1, если необходимо настроить устройство номер 5, то кликаем на его шапку название и попадаем на главную страницу устройства номер 5 и боковым меню делаем настройки.
Ваша задумка очень интересная, немного усилий и можно придти к очень даже великолепной и простой системе, с одной прошивкой, с одним железом и для разных задач.

Читайте также: