No Image

Умный дом на esp8266

4 просмотров
10 марта 2020

LCD и OLED дисплеи

Статья про дисплеи находится тут.

Светодиодные матрицы

Статья про LED матрицы находится тут.

Настройка и управление GPIO(VGPIO) и внешними GPIO

Работа с ШИМ:

Модуль имеет 3 канала ШИМ (PWM). Для работы с ШИМ необходимо указать количество каналов и указать GPIO на которых необходимо запустить ШИМ. Управление PWM (ШИМ) GET командой /pwm?ch=Y&set=XXX , Y — это номер канала 0,1,2, XXX — уровень ШИМ 0..255. Посмотреть установленные уровни ШИМ можно на страничке /pwmprint . Для сохранения состояния в энергонезависимую память необходимо дописать &flash=1. Доступно управление через MQTT.

Работа с АЦП(АDC):

Модуль ESP8266 имеет один АЦП с опорным напряжением 1.024 вольта. АЦП включается на вкладке Sensors. При активации функции напряжение питания VDD становится недоступной т.к. используется этот же АЦП !

Планировщик задач (Scheduler):

Планировщик позволяет включать/выключать нагрузки, подключенные на GPIO по определенному времени. При установке в конструкторе прошивки модуля ШИМ(PWM) так же доступно управление уровнем ШИМ. В данный момент доступно 8 возможных задач. На примере скриншоте слева задано включение GPIO 12 в 12.00 и выключение в 14.00.

Управление розетками/люстрами по протоколу RCswitch 433 или 315 мгц

Для начала необходимо узнать код команды, например воспользовавшись ардуино и библиотекой RCswitch или опцией RCswitch приёмник 433/315 в прошивке.

Команда для управления: http://IP_ADRESS/rcremote?cmd=YYYY. Где YYYY — цифровой код команды. Так же доступен параметр &per=X, который задает время импульсов в микросекундах. Параметр не обязательный. По умолчанию 300мкс. Битность сигнала можно изменить параметром &bits=24 — в этом случае передача будет идти 24 битной посылкой.

Режим PRO и его активация

Для развития проекта необходимо время, а как известно время — это деньги и по этому было решено перейти на платную основу. Плата символическая — 100 рублей или 2.05 доллара/евро (цена ниже при количестве ключей 2 и больше). Сейчас прошивка имеет некоторый функционал, который доступен только при активации ключа. Один ключ может использоваться только на одно устройство ESP8266.

Для получения ключа необходимо зарегистрироваться в личном кабинете. Вводить ключ необходимо по ссылке GET PRO на главной странице модуля. ID устройства необходимо смотреть на страничке активации ключа !

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

Обновление прошивки через интернет(OTA)

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

Обновление через интернет имеет недостаток- ограничение размера прошивки в 236кб + 4кб загрузчик при flash памяти в 512кб. При выборе опции 1мегабайт и модуле с 1 и более мегабайт данного ограничения нет. Например модули ESP-12 всех модификаций имеют на борту 4 мегабайта. Так же можно перепаять чип памяти на более ёмкий.

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

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

Читайте также:  Asus zenfone 2 не подключается к компьютеру

Сообщения(вкладка логи) конструктора при обновлении через OTA:

Обновление прошивки на модуле 10000 файл user1.bin (1Mb) — на модуле прошло обновление. Это сообщение еще не значит, что оно было успешно. Так же в сообщении передается какой файл прошивки обновился и указывается установленный размер flash.

Ошибка обновления на модуле 100000. Выбран не тот размер flash памяти. — Попытка обновится при установленной прошивке 512кб на прошивку 1мб или наоборот. Для перехода с 512кб на 1 мег необходимо перепрошится через программатор. Посмотреть реальный размер установленной памяти можно на страничке /debug .

Ошибка обновления на модуле 1000000. Прошивка с поддержкой OTA не создана в конструкторе. — Не собрана прошивка с включенной галкой OTA или сборка была не успешна.

Добавление устройства на сайте narodmon.ru

Сервис полезен для просмотра показаний датчиков онлайн, а также на смарфонах, планшетах и ПК.

Добавление устройства ничем не отличается от добавления других любых датчиков на сайте http://narodmon.ru. Необходимо добавить устройство на сайте, указав его id. ID можно узнать в веб интерфейсе на страничке servers.

Считывание данных сторонними сервисами или программами

Данные с датчика можно считать и по адресу http://IP_Адрес/sensors . Данные выводятся через точку c запятой. Эти данные легко можно считывать с помощью систем умного дома или своим приложением. По этому адресу читает данные система Бенукс.

Для работы опции в конструкторе необходимо включить "Чтение датчиков GET запросом".

Работа с системой MajorDoMo

Работа с системой thingspeak.com

Для подключения системы необходимо зарегистрироваться и далее создать канал. На страничке API Keys смотрим ключ write данного канала и копируем его в соотвествующее поле модуля в веб интерфейсе на страничке servers. Добавляем field в зависимости от подключенных датчиков:

  • список field
field1 DHT1/ AM2321 temp
field2 DHT1 / AM2321 humidity
field3 BMP temp
field4 BMP pressure
field5 DHT2 / INA219 temp / voltage
field6 DHT2 / INA219 humidity / current
field7 DS18B20 / LM75 temp
field8 BH1750 light

Работа с MQTT серверами

Модуль поддерживает отправку данных на сервер и управление gpio. Для работы сервиса необходимо ввести логин, пароль и адрес сервера (IP адрес или доменое имя).

Дополнительные команды mqtt:

логин/имя устройства/lcd/line/X — вывод информации на LCD или OLED дисплей, где X – номер строки, начиная с 0.

логин/имя устройства/lcd/light — Управление подсветкой LCD дисплея. 0 — выключить, 1-включить. Настройка энергонезависима.

Основную документацию по настройке и работе MQTT рекомендую почитать в интернете..

Решаем проблемы работы прошивки

Проблемы стабильности прошивки

Проблемы с нестабильностью работы чаще всего связаны:

1. Низкое качество питания. Как по току, так и чистоте напряжения(например вч помехи от ШИМ стабилизаторов). Используемый стабилизатор должен держать минимум 200мА. Для этого подходят стабилизаторы вида 1117. Не помешает установка электролита не менее 200мкф и керамического кондесатора на 0.1мкф(обозначение 104). Использование 3.3в от USB-UART переходников не желательно..

2. Несовместимость с роутером. Некоторые роутеры нестабильно работают с модулем. Иногда это решается выбором другого SDK в конструкторе или настройкой роутера, например на более низкую скорость или ширину канала.

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

4. Использование нерекомендуемых GPIO 0,1,2,3,15 — эти выводы нерекомендуется использовать для подключения счетчиков и сухого контакта. Входы в некоторых случаях необходимо защищать через оптрон или компаратор для защиты от статики.

Читайте также:  Ipad mini 1 обновление ios 10

5. Проблема со связью может быть связана так же и из-за UDP трафика внутри сети. Например от IPTV.

Невозможно прошить модуль

Ошибки, которые допускают пользователи, из-за чего прошить и запустить модуль не удается:

1. Опять же низкое качество питания.

2. Забыли подключить GPIO 15 и GPIO 0 на минус, а CH_EN на плюс. GPIO 0 необходимо отключить после успешной прошивки.

3. Перепутали RX, TX. Модуль и USB-UART должны быть подключены крест на крест. Иногда на USB-UART переходнике RX TX могут быть перепутаны.

Невозможно прошить модуль через интернет (OTA)

1. Опять же низкое качество питания. В этом режиме качество питания должно быть еще выше, т.к. одновременно идет запись и передача данных по WI-FI. Потребление тока максимально в течении примерно 20 секунд.

2. Обращение к модулю из браузера или других систем во время обновления прошивки. Не рекомендуюется обращаться к модулю во время ОТА.

3. Не создана прошивка в конструкторе с поддержкой OTA или создана не для того размера флешь.

Рекомендуется смотреть логи личного кабинета — там так же отображаются некоторые ошибки обновления..

4. UDP трафик внутри сети, возможно даже небольшой.

Полезные ссылки:

Канал обзоров и инструкций от Umka Канал умной автоматики.

Сайт мониторинга и управления http://flyhub.org (в активной разработке)

Обсуждение прошивки на форуме.

Обсуждение прошивки в IRC чате на канале #esp8266 . В чате можно получить ответы на вопросы в реальном времени. Задать вопросы можно как разработчику прошивки (ник MaksMS) так и разработчику сервиса flymon.net (ник FlyRouter).

* — возможности, доступные в версии PRO.

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

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.

Про умный дом тут говорили много, однако все это мне не подходило. Были ограничения по покрытию Wifi, использование софта с ограничением на 1 датчик или реле. Я пошел немного дальше, стал изучать android studio, SQL, PHP и Wiring. И вот что в итоге у меня получилось.

Коробочку вырезал на ЧПУ, про который я уже писал.

Вклеиваем вставку эпоксидкой.

Склеиваем и лакируем.

Коробочка состоит из самой платы esp8266 на базе nodemcu v3, блока реле и датчика AM2302

Приложение на Android, умеет управлять 4 реле, имеет 4 планировщика(можно задать время включения и выключения), показание датчика(Температура и влажность.) .

Принцип такой. При первом запуске, приложение автоматически регистрируется на сервере и выдает ID, его забиваем в прошивку модуля. Модуль подключается к интернету через WiFi (который указан в прошивке), в определенное время запрашивает и отправляет на сервер данные.

Создание умного дома подразумевает массу разных датчиков, контролирующих обстановку в доме — датчики движения, освещения, температурные и прочие. Если «умный дом» небольшой, то все выглядит просто даже с самодельными системами на базе открытых решений (MQTT, OpenHAB и т.д.) — подключили датчик, прописали его в программе OpenHAB или HomeAssistant и начали работать. Но если датчиков много, то появляется много рутинной и неблагодарной работы по прописыванию каждого из них в системе управления.

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

Читайте также:  Html символ стрелка вправо

Конкретно эта прошивка работает на модулях с ESP-8266 (в том числе и на Sonoff Basic Switch и Sonoff Touch Wallswitch) с P&P скриптами для OpenHAB и HomeAssistant, но сам способ выдачи plug&play информации можно использовать и в других проектах.

При подключении устройства к MQTT-брокеру создаются топики вида (в данном случае — для кнопки FLASH на ESP-8266 с серийным номером 0023CB541):

  • /myhome/PNP/ESPX-0023CB541/BUTTON/name — название/описание («FLASH button» — так будет оно отображаться в веб-интерфейсе)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/type — тип переменной и направление потока данных для нее, «O:Switch» обозначает датчик, который выдает информацию, а, например, «I:Dimmer» — входящий канал диммера
  • /myhome/PNP/ESPX-0023CB541/BUTTON/groups — группы, в которых эта переменная будет фигурировать по умолчанию («Switches Builtin Buttons»)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/min — минимальное значение (для числовых переменных, для кнопки оно будет пустым)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/max — максимальное значение (аналогично)

Скрипт, запускающийся на сервере (по крону или вручную, после подключения устройства) — скачивает список топиков из /myhome/PNP, ищет отсутствующие в OpenHAB девайсы и создает для них конфигурационные файлы. Если файл конфигурации для такого устройства уже есть, то P&P-информация полностью игнорируется, но можно этот файл удалить, при необходимости заново создать файл для устройства с изменившимся набором датчиков.

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

Немного поподробнее расскажу про собственно прошивку для ESP-8266. Ее исходные коды (и скрипты поддержки для OpenHAB и HomeAssistant) можно найти на Github (конкретно скрипты поддержки лежат здесь).

Она работает на стандартных модулях ESP-8266 (а также на Sonoff Basic Switch и Sonoff Touch Wallswitch), поддерживает обновление прошивки на лету (ArduinoOTA), а также имеет простейший веб-сервер для первоначального конфигурирования параметров WiFi-сети и задания IP-адреса MQTT-брокера.

Структура прошивки модульная и можно довольно легко добавлять свои датчики/устройства. Текущий список включает в себя:

  • Инфракрасные датчики движения и радио-датчик движения Parallax X-band motion detector (до 3 штук на модуль)
  • Датчик температуры/влажности DHT22 или аналогичный
  • Мой 4-канальный диммер, управляемый по Modbus/RS-485
  • Сонары HC-SR04 и сонары MaxBotix с последовательным выводом
  • Реле на Sonoff Basic Switch и Sonoff Touch (последний можно переключить как в режим контроля реле по кнопке, так и только через OpenHAB/HomeAssistant)
  • Встроенные ADC, светодиод и кнопка Flash (для Sonoff Touch — это сенсорная кнопка)
  • Простой термостат с двумя реле для управления вентилятором (indoor unit) и компрессором (outdoor unit)

Следует заметить, что из-за нехватки пинов на ESP-8266 модули могут конфликтовать друг с другом (например, диммер с сонаром одновременно не получится подключить, если не перераспределить пины самостоятельно).

После выбора необходимых устройств в esp-sensors.h, компиляции и прошивки — модуль переключится в режим конфигурирования — поднимет свою WiFi-сеть с именем типа «espx-0023cb541», к которой нужно подключиться (можно любым смартфоном) с паролем из того же файла, затем зайти на 192.168.4.1 и задать логин и пароль сети, а также IP-адрес брокера. Эти параметры сохранятся во флеше, так что второй раз не понадобиться этого делать. При невозможности подключиться к заданной сети в течении одной минуты — оно снова переключится в режим конфигурирования на три минуты, а потом будет повторять этот цикл до успешного подключения.

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

Комментировать
4 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector