Становление термостата: как это получилось

Становление термостата: как это получилось

После нескольких лет плодотворной работы, было принято решение вынести на суд общественности наш первый продукт для управления климатом в умном доме — умный термостат для управления теплым полом.

Что это за устройство?

Это – умный термостат для любого электрического теплого пола до 3кВт. Управляется через приложение, web-страницу, HTTP, MQTT, поэтому легко интегрируется во все системы умного дома. Для самых популярных мы разработаем плагины.

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

*после установки сторонних прошивок с поддержкой HomeKit или других популярных проектов, возврат на оригинальную невозможен через ОТА (Over-the-Air).

Сложности, которые нам встретились

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

Корпус для устройства был сложной задачей. И по затратам ресурсов, и по затратам времени (разрабатывали около года).

Вариантов на рынке была масса. И самый популярный – это 3D печать. Давайте прикинем:
Классическая 3D печать. Качество оставляет желать лучшего, скорость производства тоже. Мы использовали 3D печать для прототипов, но для производства это не годилось.

Фотополимерный 3D принтер. Тут качество в разы лучше, но вступает эффект цены. Прототипы, распечатанные на подобном принтере, встали порядка 4000₽, и это одна часть корпуса из двух. Можно купить свой принтер, что снизит цену, но все равно цена будет космической, а скорость неудовлетворительной.

Литье в силикон. Мы считали это оптимальным вариантом. Качество было на уровне, цена высокая, но не критично. Даже была заказана первая партия в 20 корпусов для полевых испытаний.

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

Я и до этого рассматривал использование ТПА, но меня останавливало даже не необходимость заказать партию в 5000 шт минимум (хотя если постараться можно и меньше найти через китайцев). Меня останавливала цена пресс формы. Около $5000. Эту сумму я не готов был выложить разом. Сумма же за пресс форму через нашего новоиспеченного коллеги была не космической, варьировалась в районе $2000-$2500. К тому же, он пошел нам на встречу и мы договорились, что оплата будет в рассрочку. Так проблема с корпусами была решена.

Вторая и не менее важная сложность с которой мы столкнулись — это железо.

Не счесть количество ревизий железа. По скромным подсчетам представленный вариант – это седьмой, не считая промежуточных. В нём мы постарались решить все недостатки, выявленные в процессе испытаний.

Так, ранее я считал, что в аппаратном «watchdog» нет необходимости. Сейчас без него устройство не пойдет в серию: по причине капризности выбранной нами платформы.
Ещё аналоговый вход на ESP. Ранее думал, что каждый пин ESP является универсальным. Но у ESP аналоговый пин только один. Узнать это довелось на практике, что привело к переделке и перезаказу печатных плат.

Первая версия печатных плат

Становление термостата: как это получилось

Становление термостата: как это получилось

Вторая версия печатных плат

Становление термостата: как это получилось

Становление термостата: как это получилось

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

Становление термостата: как это получилось

Становление термостата: как это получилось

Что касается ПО, то тут также была куча подводных камней.

Например, периодическое отваливание ESP. При том, что пинг до нее идет, страница не открывается. Решение одно – переписывание библиотеки. Возможно, есть и другие, но все нами перепробованые не дали результата.

Второй значимая проблема, как ни странно, количество запросов к ESP при открытии страницы. Используя GET или ajax, мы столкнулись с тем, что количество запросов становилось неприлично большим. Из-за этого ESP вела себя непредсказуемо, могла просто перезагрузиться или обрабатывать запрос несколько секунд. Решением стало перейти на web сокеты. После этого количество запросов снизилось в разы.

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

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

Данный фреймворк самый подходящий из всех, что нами были опробованы.

Варианты интерфейса можно посмотреть по ссылкам ниже

adaptive.lytko.com
mobile.lytko.com

Становление термостата

Преодолев все сложности, мы пришли вот к какому результату:

Становление термостата: как это получилось

Становление термостата: как это получилось

Конструкция

Термостат состоит из трех плат (модулей):

  1. Управляющая;
  2. Управляемая;
  3. Плата дисплея.

Управляющая – плата, на которой расположены ESP12, Аппаратный «watchdog» и nRF24 для работы с будущими сенсорами. На старте устройство поддерживает цифровой сенсор DS18B20. Но нами была предусмотрена возможность подключения аналоговых сенсоров сторонних производителей. И в одном из будущих обновлений ПО устройства мы добавим возможность использовать сенсоры которые поставляются с термостатами сторонних производителей.

Становление термостата: как это получилось

Управляемая – плата питания и управления нагрузкой. Там расположили БП на 750мА, терминалы для подключения датчиков температуры и реле на 16А для управления нагрузкой.

Становление термостата: как это получилось

Дисплей – на этапе разработки мы выбрали дисплей Nextion 2.4 дюйма.

Про него можно легко найти информацию в интернете. От себя добавлю, что он удобен почти всем, кроме цены. Дисплей размером 2.4 дюйма обходится в районе 1200₽, что не лучшим образом сказывается на конечной цене.

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

Аналогом будет служить матрица 2.4 дюйма с тачскрином и плата с STM32 на борту для управления им и снижения нагрузки на ESP12. Все управление будет аналогично Nextion по UART, так же память на 32мб и полноценная флеш карта для записи логов.

Модульная конструкция позволяет легко поменять один из модулей и на выходе получается совсем другое устройство.

Например, уже есть варианты “платы 2” в нескольких исполнениях:

  • Вариант 1 – для теплого пола. Питание от 220в. Реле управляет любой нагрузкой после себя.
  • Вариант 2 – для водяного теплого пола или клапана батареи. Питание от 24в переменного тока. Управление клапаном на 24в.
  • Вариант 3 – питание от 220в. Управление отдельной линией, например котлом или электро сауной.

Послесловие

Я – не профессиональный разработчик. Мне удалось объединить людей одной целью. По большей части, все работают за идею; ради того, что бы сделать что-то действительно стоящее; то, что будет полезно конечному пользователю.

Я уверен, что кому-то не понравится дизайн корпуса; кому-то – внешний вид страницы. Это ваше право! Но мы прошли весь этот путь сами, сквозь постоянную критику того, что мы делаем, и самое главное — зачем. Если нет таких вопросов, как выше по тексту, будем рады пообщаться в комментариях.

Конструктивная критика – это хорошо, и мы за неё благодарны.

История возникновения идеи здесь. Для заинтересовавшихся:

  1. По всем вопросам: группа в Telegram LytkoG
  2. Следить за новостями: информационный канал Telegram Lytko News

И да, мы кайфуем от того, что мы делаем.

Источник: habr.com