водяной теплый пол arduino
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Используем совмещенные на одной плате Arduino UNO и ESP8266 WiFi для мониторинга работы центрального контроллера водяных теплых полов.
Ранее научился отправлять показания датчиков при помощи связки Arduino UNO и ESP8266 WiFi в облачные сервисы RemoteXY и Cayenne.
Сервис ThingSpeak показался более интересным именно для сбора и обработки данных.
Постановка задачи мониторинга теплого пола.
Достигнутая цель выглядит так:
Использую вот такую плату Arduino UNO с модулем ESP-1 ESP8266 WiFi:
В предыдущей статье описывал то, как добился отправки этой платой POST запроса на сервер регистрации данных.
Научим эту плату отправлять данные на сервис ThingSpeak.
Но будем использовать AT-команды и попытаемся разобраться с AT-командами самостоятельно.
Тем более что есть более-менее понятные примеры:
Будет решаться конкретная практическая задача мониторинга состояния системы зонального отопления водяными теплыми полами, постановку задачи которого осуществил в статье Сервер теплого пола на MaxSite CMS.
До написания плагина в рамках MaxSite CMS руки еще не дошли, но, похоже, сервис ThingSpeak дает возможности не только собирать информацию, но и получать собранные данные в годном для автоматизированной обработки виде, а также обрабатывать собранные данные собственными средствами MATLAB.
Описание системы дистанционного мониторинга теплого пола в облачном сервисе.
Плата, совмещающая в себе два устройства: Arduino UNO и ESP8266 WiFi, накладывает ограничения на вывод диагностической информации в SerialPort, поскольку SerialPort обеих в работе должны быть объединены переключателями на плате.
Будем принимать сигналы о наличии 220В на открытие направления теплого пола от четырех направлений на центральном хабе-контроллере теплых полов.
Сигнал управления на головки коллектора теплого пола в виде 220В выдают комнатные терморегуляторы.
Наличие напряжения управления головками 220В будем определять при помощи вот этой платы:
Работа с платой описывалась в статье о контроле 220В при помощи Arduino, в том числе и описывались проблемы с использованием входов A4, A5.
Говоря коротко, не получилось использовать A4, A5, но это не значит что их нельзя использовать.
Наверное можно использовать и часть цифровых входов.
Но у меня 4 направления и мне хватит A0-A3.
Отправку показаний входов будем осуществлять только при изменении значений одного из входов.
Текущие значения входов будем отображать на дисплее.
Также будем отображать состояние пяти шагов отправки данных на сервер.
Кроме того, будем контролировать уровень связи с точкой доступа.
Способ получения RSSI WiFi точки доступа, к которой подключен ESP8266 в качестве клиента, описывается в статье Получаем уровень связи WiFi модуля ESP8266.
RSSI WiFi будем отображать на дисплее и посылать на сервер вместе с измененными значениями входов.
Если начинается череда ошибок будем перезагружать ESP8266.
Скетч Arduino мониторинга теплого пола.
Оборудование для мониторинга теплого пола.
Подключим теперь платы снятия показаний и передачи на сервер к центру управления коллектором теплого пола Beok CCT-10.
Beok CCT-10 порадовал вместимостью, позволяющей принять и скоммутировать все провода.
Добавим трехцветный светодиод отображения состояния связи/передачи/ошибок.
Добавим кнопку включения/выключения подсветки дисплея и кнопку принудительной (тестовой) отправки данных.
Переключатель слева внизу будет осуществлять выбор режима работы котла: ручной/автоматический.
Если будет отсутствовать 220В, то котел будет работать от источника бесперебойного питания.
Но без 220В контакты управления котлом будут разомкнуты внутри Beok CCT-10 и их необходимо принудительно замкнуть переключателем.
Результаты мониторинга водяного теплого пола.
Скетч с кнопками и светодиодом будет такой.
Достоверность отправки данных из Arduino на облачный сервер.
Как видно из скетча, мы после отправки каждой AT команды проверяем, что пришел требуемый ответ:
После того как получили символ ожидания данных «>» отправляем данные
Но после отправки самих данных мы автоматически считаем, что данные отправлены, хотя нужно было бы и тут дождаться получения «OK» в ответе в Serial:
Решение проблем получения busy s.
Оказывается все дело в неправильно определяемой длине строки, ведь println() добавляет еще символы конца строки.
Поэтому функцию отправки надо переписать с применением print() вместо println(), а в AT команды, передаваемые функции отправки, добавить «\r\n».
Итоговый скетч с правками и с проверкой всех шагов и без busy s. будет такой:
Достоверность отправки тут уже 100%.
Кроме того,в последнем скетче поправлены задержки на такие, с которыми стабильно работает.
Вот только существует вероятность, что после символов «OK» в ответе будет содержаться еще и такое:
Это возможно, если, строка данных не будет понята сервером.
Вот результаты ручной отправки команд серверу для тестирования работы, в которых видна опечатка в одной из строк данных для отправки, в результате которой возвращается ошибка 400:
Так вот, не мешало бы содержимое ответа сервера в Serial проверить на отсутствие символов «400».
Можно поступить проще и проверить чтобы размер ответа в Serial был не больше чем «SEND OK» и «0,CLOSED».
Но это не реализовано.
Страница канала с данными работы теплого пола: thingspeak.com/channels/958186
Встраиваемые Chart IFrame для отображения данных ThingSpeak на сайте.
Сравнение уровня сигнала для ESP1 и ESP12.
Показалось что уровень связи в месте установки оборудования слишком низкий и заменил совместную плату с ESP1 и UNO на отдельную плату с модулем ESP12E, которую применял в предыдущих экспериментах совместно с платой Arduino UNO.
Уровень связи оказался еще меньше и пришлось заменить обратно.
На графике хорошо видна обратная замена на совмещенную плату.
«Почти умный» тёплый пол на Arduino
Мой обычный вечер — это посиделки за компьютером. Холодными вечерами частенько появлялось желание сделать моё место отдыха комфортнее. Точнее, периодически было просто холодно ногам. Идеи были различные, вплоть до покупки USB тапочек с подогревом. Однако, все они казались мне нелепыми и отметались. И вот однажды, просматривая YouTube канал одного из любителей Arduino, я наткнулся на видео, где рассказывалось про инфракрасную плёнку. Увидев эту плёнку, я сразу понял: «Вот то, что мне надо!»
Данный проект можно кратко описать так: я положил кусок инфракрасной плёнки под дополнительный слой паркета, добавив к нему систему автоматического управления с помощью Arduino, нескольких датчиков и VB.NET. Теперь по порядку, что и как получилось.
Disclaimer
Я занимаюсь проектами подобного рода уже несколько лет, делаю для себя. Делаю, чтобы делать: сам процесс для меня гораздо интереснее, чем конечное решение. Именно поэтому описание процесса и экспериментов приведены ниже со столь детальными подробностями. Использование элементов иногда не совсем оправдано с финансовой точки зрения — это я понимаю. Периодически я что-то меняю (в подходе, в элементах), но точно не собираюсь переходить на готовые решения, так как это будет просто неинтересно.
Почему «почти умный»? Я бы не назвал измерение температуры и управление реле с таймером «умным». Как задел на будущее — есть идея усовершенствовать алгоритм управления, добавив функции обучения. Вот тогда этот проект можно будет назвать как-то иначе.
Покупка
Решив, что перед действиями следует подготовиться, я отправился в поисковики с целью найти больше информации и отзывов. Комментарии рознились. Кто-то называл плёнку идеальным отопительным элементом и говорил, что успешно обогревает целые дома, кто-то жаловался на полную бесполезность и уверял, что это всё «развод». Я решил экспериментировать, так как люблю новые штуки.
Для эксперимента мне требовался лишь небольшой кусок «волшебной» плёнки, поэтому главным критерием для покупки была цена и минимальность комплектации (без термостата и креплений).
Проверив цены, я остановился на одном предложении на AliExpress. Продавец предлагал 2 метра плёнки шириной 50 сантиметров за 8€, без термостата и креплений, однако за доставку просил ещё столько же. Это получался самый приемлемый вариант. Я сделал заказ и стал ждать посылки. Примерно через 3 недели кусок плёнки уже лежал у меня дома.
Первый тест
После того как плёнка оказалась у меня, я поставил себе первую задачу: проверить работает ли это вообще. Для сборки первого прототипа я использовал три доски ламината, оставшиеся после недавнего ремонта.
Процесс сборки элементарен:
Включил, замерил потребление. Мощность, потребляемая моим куском плёнки, составила 105 Ватт. Если кто-то решит использовать подобную плёнку, может рассчитывать потребление как 200-210 Ватт на квадратный метр. Никаких «пусковых токов» я не наблюдал, потребление стабильно, пока есть питание и со временем не уменьшается. Конечно, не забываем, что использование термостата введёт свой коэффициент в конечные расчёты потребления.
Я встал на пол и стал ждать эффекта. Во время теста периодически переходил на обычный пол, чтобы не упустить изменения, если температура будет подниматься плавно. По прошествии нескольких минут я ощутил приятную теплоту, идущую от пола. Минут через 15 пол уже жарил так, что находиться на нём было некомфортно. Эксперимент можно было считать удачным, так как было ясно видно, что плёнка может дать необходимый уровень теплоотдачи, чтобы обеспечить мои потребности.
Реализация «умной» части
За время ожидания посылки у меня в голове сложилась довольно чёткая картина того, как будет работать мой тёплый пол. Так как это уже не первый мой проект — я решил по максимуму использовать уже существующие наработки. По сути, к управлению температурой пола я решил применить тот же алгоритм и схемы, что и для автоматического управления светом.
Своего рода блок-схема всего решения. Прошу не судить схему строго – нарисовал её специально для публикации, чтобы был понятен способ подключения и не заморачивался с подбором правильных иконок.
Реле питания пола
Для управления питанием используется связка из двух плат.
Датчики температуры и движения
Делать отдельную плату для датчиков движения и температуры я не стал. Датчик движения поставлялся с удобными контактами и крепить его на дополнительную плату было бы нелогично. Подключение датчика температуры задача тоже не сложная — требуется только одно дополнительное сопротивление. В итоге, можно сказать «на скрутке», я собрал часть с датчиками.
Датчик температуры засунут внутрь оплётки CAT5 кабеля, так как имел очень тонкие контакты и на ощупь казался очень хрупким.
Корпус
Предполагалось, что все управляющие элементы будут валяться под столом на полу. Из этого следовало, что будет не лишним сделать нечто похожее на корпус, чтобы систему нельзя было легко повредить, случайно задев ногой. Для корпуса была использована коробочка, предназначенная для хранения мелких вещей.
Корпус в сборе
Сбоку прорезаны отверстия для датчиков
Конечный вариант.
Вот так всё выглядит после установки. Примерная зона срабатывания датчика движения обведена. Рисовал по ощущениям – когда срабатывает, а когда нет.
Снимок экрана с окном управляющей программы на компьютере
(Как упоминалось, управляющая логика была скопирована с системы управления светом, поэтому на форме можно заметить надписи «Light» вместо «Temperature»)
Заключение
Как во время тестирования, так и во время работы данного решения в собранном виде обнаружились некоторые проблемы и нюансы. Большинство из них связано с электрическими и физическими характеристиками применённой схемы и их описание выходит за рамки данной публикации. Возможно позднее я опишу нюансы более детально в отдельном посте. Инфракрасная плёнка показала себя как интересный материал, и я вполне могу рекомендовать её для применения. Возможно ли применить её как единственный источник отопления в помещении и какое будет при этом потребление электроэнергии – я не знаю.
В общем, с момента «запуска» проекта прошло уже несколько месяцев. Мой «почти умный» тёплый пол работает отлично и выполняет своё предназначение на 100%, хотя иногда и приходится подстраивать желаемую температуру.
Датчики и их подключение
В качестве датчиков я использовал старый проверенный терморезистор на 150 кОм советского образца. НА вопрос почему могу ответить просто и бескомпромиссно — цена! 15р. за штуку меня вполне устроило! Выглядит он примерно вот так:
Немного пришлось повозиться с его взаимоотношением с Ардуино но результат в итоге оказался стабильнее и надежнее при низкой цене монтажа. Тут главное не забывать что до каждого датчика от 5 до 150 метров провода.
К ардуинке датчик подключаем с помощью делителя напряжения, где А(n) это аналоговые входы МЕГИ. Датчиков у нас 9 по этому задействуем входы с А1 по А9.
Схема отличается от классической наличием конденсатора. Это маленькая хитрость про которую я не нашёл информации в сети, по этому пришлось доходить своим мозгом.
Так зачем он нужен? Провода для датчиков спрятаны в кабель канал вместе с нагрузкой в 220 вольт. При работе получается что ток в проводе дает очень большие помехи примерно в 0,5-1,5 вольта. Сами понимаете что ни о какой точности показаний речь не идет. И тут приходит на помощь конденсатор. Он просто сглаживает все помехи, но для его зарядки нужно в начале программы добавить задержку в 2-3 секунды. В сборе у меня получилось вот так:
Далее делаем такое же соединение для всех датчиков + один, чтобы прокрутить датчик для улицы. В процессе сделаем привязку в температуре за бортом. Наше устройство должно думать про свои задачи быстрее чем его владельцы. Так же для каждого датчика я делал отдельное подключение, что оказалось достаточно дорого, но надежно. Проще провод оторвать, чем соединение разомкнуть. Выглядит оно следующим образом:
Теперь что касается питания датчиков. Я не стал снимать 5 вольт с Ардуино(хотя тоже можно). Предпочитаю делать отдельное питание для таких нагрузок, все-таки провода длинные их сопротивление тоже надо учитывать. Все детали далее.
Блок питания
В качестве питания я использовал блок от старого компьютера. Он выдает 380 Вт, чего более чем достаточно, и напряжение он выдает такое, какое нужно для всего проекта.
Внутри корпуса нужно спаять зеленый и любой из черных проводов, чтобы он включался сразу при подаче електричества. К стати, совсем забыл, нашему устройуству необходим отдельны автомат на 16А. желательно с УЗО.
От него мы отрезаем все провода кроме 3-х на 5 вольт(для тех кто не в курсе это красные) и 1 на 3,3 вольта(это оранжевый), ну и по одному черному на каждый(это земля или минус, кому как нравиться). Остальное отрезаем и изолируем, за ненадобностью.
Теперь распишем по проводам какой куда нам нужен:
1 — красный, питание Ардуино,
2 — красный, датчики,
3 — красный, LCD2004,
4 — оранжевый, приёмопередатчик 2,4ГГц
Я запитал ардуино от 5 вольт. Этого в принципе достаточно для работы МК и установки необходимого напряжения на цифровых пинах, но при таком подключении мощности для LCD не хватит. По этому я вывел для него отдельное питание, так оно надежнее.
LCD 2004
Как подключать LCD рассказывать не буду. Вот тут все вполне понятно написано. Только 5 В не с ардуино, а с блока питания.
Приёмопередатчик 2,4ГГц
Про передачу данных и свой опыт работы с ней я буду описывать в следующей статье. Здесь мы рассмотрим автономную работу устройства. Далее будем делать передачу статистики на сайт и изменение настроек через интернет.
Исполнительные устройства
В качестве реле для исполнительных устройств настоятельно рекомендую использовать твердотельное реле:
У меня получилось смонтировать примерно вот так:
На словах схема подключения достаточно проста. 3 пин подключаем в цифровому выводу ардуино, который будем программно включать и выключать. 4 пин на GND ардуино. 1 пин Фаза 220 вольт. 2 пин к исполнительному устройству. Ноль от исполнителей соединяем в общую кучу и на ноль автоматического выключателя.
Использовать модули реле такого плана не советую. В общем я изначально на них и собрал, после чего пришлось выбросить. Не удосужился рассчитать нагрузки. При нормальной работе эти реле самым банальным образом залипают.
Аруино Мега и Скетч
Перейдем к работе с МК и написанию скетча.
Подключаем библиотеку LCD2004.
Объявляем переменные и константы:
Переменные для работы с температурой. Тут нужно пояснение у каждого эти показания будут свои в зависимости от резисторов и конденсатора. В моем случае показания 310 были на аналоговом входе при темперауре терморезистора 30 градусов цельсия. У вас они могут отличаться. И эти параметры мы будем менять с сайта.
Далее объявляем переменные для позиционирования на экране
Следующим шагом прописываем в setup подключение экрана и расположение элементов на нём:
Так же в setup объявляем цифровые выходы для реле
С настройками закончили. Теперь текст самой программы:
Сама программа работает как классический термостат. Код приведен ниже:
На этом первая статья закончена. Продолжение следует…
Водяной теплый пол arduino
Задача
Этот проект является частью более обширного проекта Дом, который, в свою очередь, входит в проект Умная дача. 10 помещений дома отапливаются тёплыми водяными полами, работой которых управляет AMS сервер (см. описание проектов по ссылкам выше). В процессе управления работой полов участвуют изощрённые алгоритмы, одной из функций которых является энергосбережение и снижение затрат на отопление дома.
Для ещё большей эффективности отопительной системы было принято решение добавить в неё отдельный контроллер управления контуром тёплых полов. Этот контроллер предназначен для управления забором горячей воды у основного контура и выводом холодной воды в основной контур в зависимости от настроек системы, показаний датчиков и внешних условий.
Реализация
Контроллер контура тёплых полов выполнен в виде беспроводного nRF24 блока. Связь с базовым контроллером Дома осуществляется по беспроводному каналу. Контроллер является автономным, связь с «базой» ему нужна только для изменения его режимов работы и настроек, а также для отображения текущего состояния контроллера в интерфейсе системы.
Оборудование
Оборудование контроллера контура тёплых полов:
Топология сети
На схеме представлен фрагмент топологии сети Дома в которую входит контроллер контура тёплых полов. С полной схемой можно ознакомиться на странице описания проекта Дом.
Алгоритмы управления
Алгоритм управления работой системы отопления довольно изощрённый и использует множество формул и различных констант и описание этих формул выходит за рамки этой статьи. Приведём здесь только скриншот настройки базового алгоритма, который учитывает такие параметры, как теплопотери здания, нелинейность теплоотдачи приборов отопления, температура наружного воздуха и т. д.
Интерфейс управления
Система управления тёплыми полами в доме представляет собой большой и развитый комплекс со множеством настроек (см. основной проект Дом). Отдельно устанавливаются требуемые температуры в помещениях, режимы отопления и т. д. Две нижние плашки «Тёплый пол» и «Проработка клапанов» относятся непосредственно к рассматриваемому контроллеру.
Беспроводной nRF24 контроллер
Контроллер управления контуром тёплого пола подключён к базовому контроллеру дома по беспроводному nRF24 каналу. Поскольку соединение беспроводное, то для нормальной работы системы протокол связи должен обеспечивать гарантию доставки пакетов и следить за качеством связи.
В интерфейс системы выводятся данные о нахождении удалённого контроллера на связи, информация о последнем обновлении данных и количестве ошибок беспроводной связи. Это позволяет одним взглядом оценить состояние дел с беспроводной связью с контроллером.
В случае проблем со связью окно контроллера становится серым и в нём показываются данные о том, сколько времени прошло с момента последней связи с контроллером и количестве ошибок за текущий день.
Настройки контроллера
В первом окне показываются текущие расчётные величины, вычисленные встроенным в контроллер алгоритмом управления контуром тёплых полов, данные с датчиков, подключённых контроллеру и данные о текущем состоянии реле. То есть вся информация о состоянии системы видна как на ладони.
Во втором окне можно задать исходные данные для работы алгоритма регулирования. Все выходные значения пересчитываются в реальном времени, что удобно для подбора оптимальных значений для конкретных условий эксплуатации системы. Все вводимые данные сохраняются во внутренней памяти контроллера.
Проработка клапанов
Для борьбы с известной проблемой застоя клапанов в контроллер внедрена подсистема их проработки, т. е. принудительного открывания и закрывания. Эта подсистема имеет два режима работы — автоматический и ручной. В автоматическом режиме задаётся количество профилактических включений в месяц, в ручном режиме процедура проработки запускается нажатием кнопки в интерфейсе.
Для более эффективной работы можно задать такие параметры как количество импульсов, их продолжительность и периодичность.
Информационная панель
В информационную панель выводится индикатор работы контроллера «COF». На скриншоте он жёлтого цвета, что говорит о его работе в данный момент и нахождении на связи.
Заключение
Просто замечательный проект, который реализует работу сложных алгоритмов по управлению контуром тёплых полов, даёт возможность настраивать работу системы в интерактивном режиме через веб-интерфейс, позволяет снижать энергозатраты на отопление дома и экономить денежные средства.