Умный дом #7: ESP32 — тёплый пол с автоматическим регулированием температуры по DS18B20 и WEB-управлением
Тёплый пол, управляемый ESP32, — это удобный и экономичный способ поддерживать комфорт в помещении. В этой статье мы соберём систему на базе датчика DS18B20 (цифровой термодатчик 1-Wire), реле/SSR для включения нагревательного контура и минималистичного WEB-интерфейса. Реализуем автоматическое регулирование по уставке (setpoint) с гистерезисом, ручной режим, ограничения по максимальной температуре пола и антидребезг включений (минимальные паузы между переключениями). Вы получите полностью рабочий код и практические рекомендации по безопасности и калибровке.
Список оборудования и компонентов
- ESP32 DevKit (с поддержкой Wi-Fi).
- DS18B20 — цифровой датчик температуры (желательно в водозащищённом исполнении на кабеле), работает по шине 1-Wire.
- Подтягивающий резистор 4.7 кОм между линией данных DS18B20 и 3.3 В.
- Реле/SSR для нагревателя:
- Для плёночного/кабельного пола на 220 В рекомендуем твердотельное реле (SSR) с управлением от 3–32 В DC и соответствующим током/мощностью. Обязательно ставьте УЗО/дифавтомат и соблюдайте ПУЭ!
- Для низковольтных систем (например, 12/24 В) — MOSFET/реле по паспорту нагрузки.
- Нагревательный контур (инфракрасная плёнка/кабель/мат) — по проекту помещения и расчётной мощности.
- Блок питания ESP32 (5 В, 1 А), коммутационная арматура, клеммы, DIN-бокс/корпус.
- По желанию: второй датчик DS18B20 для измерения температуры воздуха (тогда можно строить комбинированные алгоритмы).
Схема подключения и принцип работы
Датчик DS18B20 подключается к одному GPIO ESP32 по интерфейсу 1-Wire. В линию данных ставится подтягивающий резистор 4.7 кОм к 3.3 В (обязательно). Нагреватель управляется через реле/SSR от GPIO. ESP32 периодически считывает температуру пола и сравнивает её с уставкой. В автоматическом режиме включение происходит при падении ниже (уставка − гистерезис), отключение — при достижении (уставка + гистерезис). Встроены: ограничение максимальной температуры пола и минимальные интервалы между переключениями, чтобы избежать «дёргания» relе/SSR.
| Сигнал | Пин ESP32 | Примечание |
|---|---|---|
| DS18B20 Data | GPIO4 (пример) |
Подтяжка 4.7 кОм к 3.3 В, общий GND |
| SSR/Реле управления | GPIO23 (пример) |
Модуль может быть active LOW; проверьте ваш тип |
| Питание ESP32 | 5 В | Стабильный БП 5 В, ≥1 А |
Безопасность: если вы работаете с сетевым напряжением 220 В, вся силовая часть обязательно должна устанавливаться в соответствии с нормами электробезопасности (корпуса, заземление, защитные автоматы/УЗО, кабели нужного сечения). Для тёплого пола соблюдайте рекомендации производителя напольного покрытия (обычно ограничение температуры 27–32 °C для ламината/ПВХ). Размещайте датчик пола в гофре — так его можно будет заменить.
Пример кода (ESP32 + DS18B20 + SSR/реле + WEB)
Код ниже реализует чтение DS18B20, авто/ручной режим, гистерезис, лимит по максимуму, минимальные паузы между переключениями, а также веб-страницу со статусом и настройками. Настройки (уставка, гистерезис, смещение калибровки, лимит макс. температуры, режим) сохраняются в NVS и переживают перезапуск.
Короткое объяснение кода
- Датчик DS18B20: читается библиотекой DallasTemperature (шина 1-Wire). Функция
readTempC()запрашивает измерение и возвращает температуру с учётом калибровочного смещенияoffsetC. При ошибке чтения возвращаетсяNaN— в этом случае нагрев немедленно отключается. - Алгоритм термостата: уставка
setpointCи гистерезисhysteresisCопределяют границы включения/выключения. Включение приT ≤ SP − HYS, отключение приT ≥ SP + HYS. Добавлены minOn/minOff, чтобы не «дёргать» реле/SSR слишком часто. - Лимит максимальной температуры пола:
maxFloorC— твёрдая отсечка, выше которой нагрев принудительно отключается независимо от режима. - WEB-интерфейс: корневая страница показывает температуру, режим, состояние нагрева, уставку; позволяет менять параметры и режим (
/mode?m=auto|manual) и вручную включать/выключать нагрев (/heat?cmd=1|0) в ручном режиме. Статус обновляется опросом/statusкаждые 2 с. - Постоянные настройки: уставка, гистерезис, смещение и потолок температуры сохраняются в NVS (
Preferences) и восстанавливаются при старте.
Применение и расширение проекта
- Комбинированное управление «пол+воздух»: добавьте второй DS18B20 для измерения воздуха и переключайтесь между режимами или используйте минимальный/максимальный приоритет (например, не греть пол выше 29 °C, если воздух уже достиг +22 °C).
- Расписание: ночной/дневной профили уставки (например, днём 28 °C, ночью 26.5 °C). Можно хранить 2–4 пресета в NVS и переключать по времени.
- MQTT и Home Assistant: публикуйте температуру/состояние в брокер, управляйте уставкой и режимами из HA, рисуйте графики.
- Графики и логирование: сохраняйте значения T/SP/события в InfluxDB, визуализируйте в Grafana. Это полезно для подбора гистерезиса и интервалов minOn/minOff.
- Защита напольного покрытия: для ламината/ПВХ ограничьте
maxFloorCи используйте точный датчик в гофре, расположенный на равном удалении от нагревательных зон. - Аппаратная безопасность: для 220 В обязательны УЗО/дифавтомат, кабель нужного сечения, сертифицированный SSR или силовое реле на DIN-рейке, клеммы и термостойкая проводка.
- Фильтрация питания и помех: для длинных линий датчика используйте экранированный кабель и общую «землю», при необходимости — RC-фильтр и программную медиану вместо простого среднего.
Заключение
Мы реализовали интеллектуальный термостат тёплого пола на ESP32 с датчиком DS18B20, управлением через SSR/реле и удобным WEB-интерфейсом. В проект встроены практичные функции: гистерезис, минимальные интервалы переключений, лимит максимальной температуры, сохранение параметров в NVS. Система легко расширяется — от MQTT/HA до расписаний и логирования. Соблюдайте требования электробезопасности и рекомендации производителей покрытий.
Нужен индивидуальный проект под ваши условия — от подбора схемы и датчиков до разработки печатных плат и прошивки? Мы можем помочь. Реализуем надёжное решение на ESP32 и изготовим платы под ваши задачи. Примеры работ смотрите в нашем портфолио.





