В статье содержится полная информация для реализации контроллера климата в зимнем укрытии растений с управлением через Web-интерфейс по WiFi.
В предыдущей статье я рассказывал о моем эксперименте по сохранению зимой в открытом грунте растения, не допускающего понижение температуры до отрицательных значений. Сейчас речь идет об электронном контроллере, разработанном специально для этого проекта.
Общая информация о контроллере.
К контроллеру подключаются:
- - нагревательный элемент;
- - вентилятор;
- - датчик температуры DS18B20;
- - линия питания 12 В.
Выполняет следующие функции.
- Измеряет температуру воздуха в укрытии, и в зависимости от ее значения включает или выключает нагревательный элемент. Т.е. выполняет функцию релейного регулятора температуры.
- С заданной скважностью (время включено/выключено) управляет вентилятором.
- Скважность работы вентилятора изменяется в зависимости от температуры воздуха в укрытии.
- Есть светодиодная индикация состояния системы.
- Управление контроллером происходит через беспроводный интерфейс WiFi. Контроллер может как формировать свою собственную сеть WiFi, так и подключаться к существующей.
- Интерфейс пользователя – Web-интерфейс.
Аппаратная часть.
В качестве управляющего микроконтроллера используется самый дешевый модуль с интерфейсом WiFi ESP-01.
К нему подключены 2 MOSFET-ключа для нагревателя и вентилятора, и минимум компонентов, необходимых для нормальной работы модуля.
Транзисторы MOSFET обязательно должны быть низкопороговыми. У сигналов на выходе ESP-01 напряжение высокого уровня 3,3 В.
Для формирования питания модуля 3,3 В я использовал модуль импульсного стабилизатора XL56201.
Миниатюрные размеры, высокий КПД, не греется.
Загрузка программы в модуль ESP-01 производится через разъем X4. Для загрузки FLASH к нему необходимо подключить какой-либо преобразователь интерфейсов USB/UART по следующей схеме.
Я использовал конвертер CH340. Не забудьте переключить на его плате питание в режим 3,3 В.
В режим программирования FLASH устройство переводится следующим образом.
- При удержанной нажатой кнопке FLASH, кратковременно нажимается кнопка RESET. После этого кнопку FLASH можно отпустить.
- Программа загружается в FLASH под управлением Arduino IDE.
- Для выхода из режима программирования кратковременно нажимается кнопка RESET.
Можно запрограммировать ESP-01 перед установкой в подобном устройстве.
К нему надо припаять 2 кнопки с RESET и FLASH.
В этом случае можно обойтись без разъема X4. Но придется модуль ESP-01 установить в колодку или отказаться от загрузки новых версий программ. Последовательность действий при загрузке FLASH такая же.
У меня собранный контроллер выглядит так.
Плату установил в самый маленький распределительный коробок.
Перед установкой плату вскрыл специальным лаком. Устройство будет работать при повышенной влажности.
Нагревательный элемент мощностью 20 Вт собрал из 2х ваттных резисторов.
Компиляция и загрузка программы в ESP-01 происходит в среде Arduino IDE. Подготовка Arduino IDE для работы с ESP-01– общепринятая. Можно посмотреть в статье по ссылке.
Перед загрузкой необходимо, при удержанной нажатой кнопке FLASH, кратковременно нажать кнопку RESET. После этого кнопку FLASH можно отпустить.
Для выхода из режима программирования кратковременно нажать кнопка RESET.
Программу контроллера обогрева и вентиляции растений в укрытии можно загрузить по ссылке:
Работа с контроллером.
Управление контроллером происходит через WEB-интерфейс, который формирует само устройство. Можно использовать любое устройство, имеющее интерфейс WiFi: смартфон, планшет, компьютер, ноутбук… Никакую программу устанавливать не надо. Используется стандартный браузер. Операционная система тоже роли не играет.
Контроллер формирует свою WiFi-сеть или автоматически подключается к вашей сети. В браузере набираете IP-адрес контроллера и работаете с ним, как с любым сайтом.
Вход в режим конфигурации.
Режим позволяет задать сетевые параметры устройства.
Необходимо:
- Выключить питание контроллера.
- Загорается светодиод.
- Через пол секунды светодиод гаснет.
- Далее следует интервал времени длительностью 1 секунда, в течение которого необходимо нажать кнопку на время не менее четверть секунды.
- Отпустить кнопку.
О том, что устройство перешло в режиме конфигурации сообщает светодиод. Он циклически мигает, 2 короткие вспышки, пауза 1 секунда.
Если параметры конфигурации устройства ошибочны, то контроллер входит в режим конфигурации сам и находится в нем до тех пор, пока параметры не будут заданы.
После 5 минут отсутствия действий в режиме конфигурации устройство автоматически переходит в рабочий режим.
Режим конфигурации.
В этом режиме устройство всегда создает свою собственную сеть, т.е. является точкой доступа. Пароль сети и IP-адрес контроллера фиксированы. Они заданы в следующих строчках программы и могут быть изменены только в ходе компиляции с последующей загрузкой..
const char* ssid = "Config_WinterHeater"; // имя сети устройства
const char* password = "12345678"; // пароль сети устройства
IPAddress apIP(192, 168, 4, 1);
В режиме конфигурации:
- Создается своя сеть WiFi (точка доступа).
- Имя сети: Config_WinterHeater
- Пароль: 12345678
- IP: 192.168.4.1
- Доменное имя – любое адресуется на этот IP.
При подключении к сети WiFi с именем Config_WinterHeater в браузере открывается начальное окно конфигурации. Если не открылось, надо обратиться по адресу 192.168.4.1 или по любому имени с общепринятым расширением .ru, .com и т.п.
Первое окно конфигурации предоставляет выбор: создать собственную сеть WiFi или подключиться к существующей.
Режим точки доступа (своя сеть WiFi).
Режим удобно использовать в местах, где отсутствует сеть WiFi. Контроллер создает собственную.
Для нее необходимо задать:
- Имя сети.
- Пароль сети.
- IP-адрес.
Режим станции (подключение к существующей сети).
В этом режиме устройство автоматически подключается к существующей сети. Конечно, если правильно заданы параметры.
Необходимо установить:
- Имя сети, к которой подключается устройство.
- Пароль этой сети.
- IP-адрес.
- Задается с учетом маски подсети 255.255.255.0. Например, у меня основной шлюз 192.168.0.1
Можно посмотреть WIN+R -> cmd -> ipconfig ->. Подробнее в уроке ”Технология клиент-сервер.”
Я должен задать 192.168.0.xx.
Дальше необходимо подтвердить, что вы желаете загрузить новую конфигурацию.
По завершению конфигурации произойдет сброс контроллера, а значит и выход из режима конфигурации.
Нормальный режим работы.
После сброса в режиме конфигурации или после включения питания с не нажатой кнопкой устройство переходит в режим нормальной работы.
В случае неправильной конфигурации, устройство остается в режиме конфигурации, но функции по регулировке температуры и включения вентиляции выполняет.
Если выбран режим точки доступа.
Устройство формирует свою сеть WiFi с заданными в конфигурации именем и паролем.
Необходимо подключиться к этой сети.
Нужно открыть WEB-интерфейс устройства, набрав в адресной строке браузера заданный IP-адрес. В моем случае это 192.168.4.10.
Светодиод в режиме точки доступа мигает с периодом 2 секунды: 1 секунду горит, 1 секунду погашен.
Если выбран режим станции.
В этом режиме устройство само пытается подключиться к сети с заданными при конфигурации параметрами.
Если подключиться не получается, например, отключен роутер, то устройство полностью выполняет свои функции. Конечно без возможности управления и индикации.
Светодиод при этом 1 секунду горит, 1 секунду погашен.
Как только контроллеру удается подключиться к сети, в середине интервала погашенного светодиода появляется вспышка. По ней можно судить, все ли нормально с подключением.
У светодиода бывают такие состояния.
- Секунду горит, секунду погашен – нормальный режим.
- Секунду горит, секунду погашен, в середине погашенного интервала вспышка – нормальный режим станции, устройство подключено к WiFi сети.
- 2 короткие вспышки, пауза 1 секунда – режим конфигурации. При ошибках данных конфигурации устройство не выходит из этого режима. Надо установить правильные параметры.
Главное окно программы.
Я создал на рабочих столах компьютера и телефона иконки с фиксированным IP-адресом. По ним открывается главное окно программы.
На нем отображаются текущие и заданные параметры. Есть возможность изменить заданные.
Для вентиляции задаются 2 порога температуры, которые определяют 3 интервала. А для интервалов задаются скважности работы вентиляции.
Параметры программы в исходном тексте.
Есть параметры, которые пользователь может задать до компиляции и загрузки программы в устройство.
Группа определяет значения параметров при ошибочном значении их в EEPROM контроллера. Например, их не задали совсем.
// параметры при ошибке EEPROM
#define HEATER_ON_TEMP_DEF 5 // температура включения обогревателя
#define HEATER_OFF_TEMP_DEF 7 // температура выключения обогревателя
#define FAN_ON_TIME_MIN_TEMP_DEF 10 // время включенного вентилятора для минимальной температуры (сек)
#define FAN_OFF_TIME_MIN_TEMP_DEF 600 // время выключенного вентилятора для минимальной температуры (сек)
#define FAN_ON_TIME_ORD_TEMP_DEF 15 // время включенного вентилятора для обычной температуры (сек)
#define FAN_OFF_TIME_ORD_TEMP_DEF 300 // время выключенного вентилятора для обычной температуры (сек)
#define FAN_ON_TIME_MAX_TEMP_DEF 300 // время включенного вентилятора для максимальной температуры (сек)
#define FAN_OFF_TIME_MAX_TEMP_DEF 300 // время выключенного вентилятора для максимальной температуры (сек)
#define FAN_MODE_MIN_TEMP_DEF 1 // минимальная температура выбора режима работы вентилятора
#define FAN_MODE_MAX_TEMP_DEF 15 // максимальная температура выбора режима работы вентилятора
Этот параметр задает мощность передатчика сигнала WiFi. Иногда при значениях ближе к максимальному связь неустойчива. Очевидно из-за большого импульсного потребления тока.
#define WIFI_POWER 60 // мощность WiFi (0... 82)
При неисправности датчика температуры обогревателю можно задать включенное или отключенное состояние.
#define FAULT_SENS_ACTION 0 // поведение при неисправном датчике температуры (0 - обогреватель включен, 1 - выключен)
Для повышения надежности устройство контролирует изменение температуры. Если в течение определенного времени температура не меняется ни на одну единицу дискретности, то считается, что с измерителем что-то не так и микроконтроллер перезапускается. Следующий параметр определяет время постоянной температуры. У меня задан час.
#define CONST_TEMP_FAULT_TIME 3600 // время неизменного значения датчика температуры, которое принимается за неисправность
Про имя сети конфигурации и пароль к ней я писал выше.
Устройство получилось простым и дешевым. Реальные условия, в которых работает контроллер описаны в предыдущей статье рубрики.
Уже контроллер работает уже 2 недели. Я дополнительно утеплил укрытие. Но остаются сомнения, что мощности 20-ваттного нагревателя будет достаточно при 10-15 градусном морозе.
Буду ждать весны.