Проект локальных беспроводных устройств к каждом из которых подключается датчик (температуры, влажности), датчик движения, различные устройства с цифровым выходом, которые можно использовать для охраны. Вся информация, выводится на смартфон, также как и управление и настройка.
Данное устройство разрабатывалось на основе микроконтроллера esp32 (ap), esp8266 (node) и смартфона os Android.
Программа для микроконтроллеров написана на языке Си для андроид на языке Котлин (скачать возможно по ссылке download).
Каждый из микроконтроллеров подключенный в данном проекте имеет одинаковые функции. Максимальное количество node можно подключить 20 штук.
И в первую очередь хотелось бы разъяснить как осуществляется беспроводная связь между устройствами, и лучшим способом будет показать это графической схемой.


Каждый из портов можно настроить функционалом выбираемым в настройках node.
Перечислим специальные функции:
1 порт — регулятор температуры
Задаём среднее значение и гетерезис, выбираем включение порта на повышение или на понижение температуры. Подключаем подогреватель или охладитель.
2 порт — регулятор влажности
Задаём среднее значение и гетерезис на повышение влажности. Подключаем увлажнитель.
3 порт — оповещение
Порт включится после превышения температуры (работает как пожарная сигнализация), после появления высокого уровня на INP1 или INP2, если активирована сигнализация (охрана или 24/7). Подключаем сирену.
4 порт — по событию (возможно совмещать с таймером)
Подключаем любое устройство с отключением или включением при появлении высокого уровня на INP2.
5 порт — освещение
Имеет функционал для управления освещением и включением порта от INP1. Подключаем led лампу при появлении высокого уровня на INP1, включается порт на заданный промежуток времени (возможно плавное включение).
Кроме специальных функций с 1 по 4 порт возможно установить:
таймер время с выбором дня недели (2 режима),
таймер цикл.
Функции таймеров возможно устанавливать на каждый из 4 портов в зависимости от потребностей. Это может быть полив растений, включение вентиляции на заданные промежутки времени, наполнение ёмкости совмещая с портом по событию и прочее.
INP1, INP2 порт — настроен на входные значения т.е. при появлении высокого уровня:
INP1 если активирован 5 порт произойдет включение 5 порта (плавный запуск). Включение датчика движения на порт INP1 позволяет производить включение порта 5 на промежуток времени (5-120 сек), при необходимости можно установить отключение в дневной период.
- INP1, INP2 если активирована сигнализация (охрана или 24/7), включится оповещение (порт 4) и (или) звуковой сигнал на смартфоне. Возможно изменить статусы контактов (на INP1, INP2), установить контакты нормально-разомкнутые или нормально-замкнутые.
На каждый из входных портов возможно назначить функции сигнализации (охрана или датчики 24/7). Датчики 24/7 позволяют мониторить различные датчики к примеру (дыма, утечки воды, пожарные извещатели).
Поскольку в данном проекте используются временные таймеры, немаловажное значение имеет часы реального времени RTC. Чтобы не усложнять внешнюю обвязку микроконтроллера часы реального времени осуществляют ход за счёт внутреннего кварца, а поскольку данный счет не является достаточно точным, пара секунд за сутки будут теряться, обновляться будем через интернет SNTP. Для этого достаточно будет настроить доступ к роутеру.
Установку времени осуществляем следующим образом:
-- при каждом новом запуске esp32:
->обновление через node, если нет
->обновление через смартфон, если нет
->обновление через интернет.
-- при каждом новом запуске esp8266:
->обновление через esp32.
Все данные передаются на смартфон, интерфейс программы выглядит таким образом.

Каждый node имеет поля со значениями температуры, влажности, статусы портов, текущее время. Каждый порт имеет информацию о настройках порта, поле для изменения статуса. Информацию о изменении температуры, влажности статусы INP1, INP2 в течении часа, в виде графиков.
Программа позволяет осуществлять настройку параметров в esp32, esp8266 в удобном и интуитивно понятным способом.
Программа позволяет хранить значения температуры, влажности за неограниченный период времени в виде максимума и минимума за час.


Ссылка по подробному описанию интерфейса программы
Ссылка на загрузку прошивку, программы, схемы
Комментарии (35)
nikolz
15.06.2025 03:45У ESP8266 только два пина не создают импульсы при включении питания. У Вас исполнительные элементы подключены ко всем пинам. Как ведет себя ваш умный дом, когда сетевое питание отключается , а потом включается?
TINLAB Автор
15.06.2025 03:45При отключении питания. Все как обычно перезагрузка. Обновление времени с esp32, и по заданным параметрам.
randomsimplenumber
15.06.2025 03:45За эти пару миллисекунд исполнительные элементы ничего особого не исполнят.
nikolz
15.06.2025 03:45Вы это у DeepSeek узнали или сами придумали?
Из своего опыта могу сообщить, что у ESP8266 время выполнения первичного загрузчика составляет примерно 30 миллисекунд. Потом работает второй загрузчик.
А на пинах будет вот это:
За это время успеют сработать реле и не только и не один раз.
Если в умном доме будет управление кранами или нагревателями,
то можно получить потоп или пожар.
TINLAB Автор
15.06.2025 03:45На пинах при перезапуске будет то, что заданно при инициализации. По умолчанию 0, а дальше по параметрам.
nikolz
15.06.2025 03:45Вы не угадали. На пинах будут импульсы. Они появятся до их инициализации и генерируются внутренней схемой чипа. Этой проблеме у ESP8266 уже 10 лет, а вы и не знаете это.
Напряжение на выводах будет соответствовать установленному Вами при инициализации примерно через 100 миллисекунд после включения питания. До этого момента будет что угодно (см в таблице)
TINLAB Автор
15.06.2025 03:45Очень интересно. Если эта проблема и есть то при запуске это не актуально. На днях доберусь до анализатора проверю.
randomsimplenumber
15.06.2025 03:45потоп или пожар
За 1 секунду работы нагревателя пожара не должно произойти. И если на 1 секунду кран откроется, а потом закроется, не должно случиться ничего страшного. Но учитывать надо, конечно же.
nikolz
15.06.2025 03:45Я не возражаю, делайте себе такой умный дом.
Проблема уже давно решена. Статья запоздала лет десять.
Cтавить ESP32 не имеет смысла так как ESP8266 может работать одновременно и с ESP-NOW и c WiFi . Но это все уже устарело.
randomsimplenumber
15.06.2025 03:45Я тоже не возражаю, если кто-то делает себе умный дом ;)
это все уже устарело
А что сейчас в тренде?
nikolz
15.06.2025 03:45ESP32C3, ESP32H2. - RISC-V.
Но если не надо WiFi, то интереснее чипы :
TLSR82xx,TLSR83xx, NRF52840,CH582F,CH584F,PHY6252
randomsimplenumber
15.06.2025 03:45Термометр на esp32 будет быстрее измерять температуру чем на 8266?
Так то я и не возражаю, новые чипы лучше. Но в подобном проекте пофиг.
TINLAB Автор
15.06.2025 03:45Esp32 работает с ble (для андроида) и esp-now, и нужен как точка доступа всех остальных ESP 8266. Но ESP-now не может работать одновременно с wi-fi. В данном проекте для mqtt происходит переключение, и приостановка очередей для ESP-now, но это быстро максимум 7 сек.
nikolz
15.06.2025 03:45Это очень плохое решение, так как ESP32 в режиме BLE потребляет очень много , что противоречит самой идее BLE. Вообще все чипы ESP имеют очень плохой энергетический баланс и требуют источники с большим импульсным током. В настоящее время много чипов позволяющих строить умные дома с энергопотреблением в 10 -100 раз меньше чем на ESP.
Вариант на ESP - это скорее игрушка, чем серьезное решение.
Если очень хочется, то можно все сделать на ESP8266 и использовать WiFi. более того WiFi позволяет обращаться в интернет и реализовать голосовое управления или еще какие-то модные приблуды. и это будет и дешевле и проще и менее потребляемое.
TINLAB Автор
15.06.2025 03:45Скачек потребления при запуске, затем обычное потребление, передача пакетами.
nikolz
15.06.2025 03:45Вы опять ошибаетесь. Причем здесь запуск. При передаче работает передатчик. Он потребляет до 400 мА у ESP32 и до 300 mA у ESP8266. Если модем не отключаете то работает всегда приемник - это 70 mA..
В вашем решении у Вас ESP32 всегда включено.
--------------------
На хабре есть моя статья как уменьшить потребление ESP8266 в 10 раз.
Суть в том, что ESP8266 являются датчиками или исполнительными элементами и они могут спать. Можно реализовать время активности в режиме WiFi не более 0.1 сек и нет надобности в ESP-NOW. При этом число узлов не ограничено 20-ю.
TINLAB Автор
15.06.2025 03:45Если будут спать когда им работать или они вообще не нужны.
nikolz
15.06.2025 03:45Действительно. Но есть время, когда им работать не надо. В это время они будут лишь греть воздух.
Например, Вы на работе 8 часов. а еще Вы 7 часов спите. В итоге Вам 15 часов из 24 не нужно щелкать выключателем .
Все это время ESP, которая включает вашу любимую лампочку,
будет бездействовать но потреблять как эта лампочка.
Правда, прикольно.
TINLAB Автор
15.06.2025 03:45Здесь не только лампочка, изменение температуры контроль, регулятор, таймеры если заснёт код не работает. И вообще он же робот пусть работает 24/7 и выполняет задачи. Если не нужен выключи и не трать энергию на сон.
TINLAB Автор
15.06.2025 03:45Вывод информации и изменение параметров как вы планируете осуществить. По любому wi-fi более прожорлив чем ble.
nikolz
15.06.2025 03:45Посмотрите мои статьи на хабре о том как уменьшить потребление ESP8266.
Но в вашей задаче потребление не принципиально, так как Вы не сможете применить питание от батарейки. Если надо от батарейки то надо брать модуль BLE и это не ESP32.
nikolz
15.06.2025 03:451) Какое потребление?
2)Сколько времени уходит на восстановление работы устройств при сбое в питании?
3) Как опознается зависшее устройство? Как устраняется эта проблема?
TINLAB Автор
15.06.2025 03:451. Потребление как мануале. Задействован протокол esp-now.
2 Обычный сброс происходит мгновенно.
3. Сброс может произойти при отсутствии питания. Загружайте тестируйте.
lapot2
15.06.2025 03:45Никто не будет загружать и тестировать просто потому что вы так сказали. Вам просто дали советы по дополнению содержимого вашей статьи.
Заинтересуйте читателя вкусным описанием параметров загрузить и протестировать это.
lapot2
15.06.2025 03:45Я конечно же заплюсил для поддержки начинающего автора, но есть один вопрос...
В чём суть статьи, да ещё и с кучей грамматических ошибок?
Не могли бы вы об этом рассказать подробнее? Вы этим хотите продвигать свою программу liknode?—Выходные порты—
Выходные порты имеют обвязку в виде полевых транзисторов npn. Это значит на выходе разрыв gnd, что позволяет подключать внешнее питание.Это цитата вашего текста из вашего телеграм-канала. Очень плохо.
Но вы можете всё это быстро исправить, если захотите.
nikolz
Может быть гистерезис?
TINLAB Автор
Всем верно моя ошибка.