Оглавление:

Комнатный термостат - Arduino + Ethernet: 3 шага
Комнатный термостат - Arduino + Ethernet: 3 шага

Видео: Комнатный термостат - Arduino + Ethernet: 3 шага

Видео: Комнатный термостат - Arduino + Ethernet: 3 шага
Видео: Датчик температуры DS18B20: Обзор, подключение к Arduino и пример скетча 2024, Июль
Anonim
Комнатный термостат - Arduino + Ethernet
Комнатный термостат - Arduino + Ethernet

Что касается оборудования, в проекте используются:

  • Ардуино Уно / Мега 2560
  • Экран Ethernet Wiznet W5100 / Модуль Ethernet Wiznet W5200-W5500
  • Датчик температуры DS18B20 на шине OneWire
  • Реле SRD-5VDC-SL-C используется для переключения котла

Шаг 1: Описание термостата Ethernet

Описание термостата Ethernet
Описание термостата Ethernet

Arduino - это удобная встроенная платформа, которую можно использовать, например, для создания комнатного термостата, который мы покажем сегодня. Термостат доступен из локальной сети, в которой он расположен, при этом он оснащен веб-интерфейсом, который используется для настройки всех элементов термостата. Веб-интерфейс работает прямо на Arduino в режиме веб-сервера. Веб-сервер позволяет запускать несколько независимых HTML-страниц, которые могут быть информативными или даже функциональными. Веб-сервер работает на 80-м порту -

Электромагнитное реле SRD-5VDC-SL-C, используемое в проекте, позволяет переключать до 10А при 230В - мощность 2300Вт. В случае переключения цепи постоянного тока (нагрузки) можно переключить 300 Вт (10 А при 30 В постоянного тока). В качестве альтернативы реле OMRON G3MB-202P SSR полностью совместимо по электрической схеме, которая подходит только для неиндуктивных нагрузок и исключительно для цепей переменного тока. Максимальная коммутируемая мощность 460 Вт (230 В, 2 А). Потребление Arduino с экраном Ethernet и другой периферией находится на уровне 100-120 мА при разомкнутом реле. В закрытом состоянии ниже 200 мА при питании 5 В.

Шаг 2: веб-интерфейс

Веб интерфейс
Веб интерфейс

Веб-интерфейс термостата позволяет:

  • Просмотр температуры в реальном времени с датчика DS18B20
  • Просмотр состояния реле в реальном времени с динамическим изменением выхода на странице
  • Измените целевую (эталонную) температуру в диапазоне от 5 до 50 ° C с шагом 0,25 ° C.
  • Измените гистерезис в диапазоне от 0 до 10 ° C с шагом 0,25 ° C.

Веб-интерфейс предназначен для работы с экранами большего и меньшего размера. Он отзывчивый, поддерживает широкоформатные экраны высокой четкости, а также мобильные устройства. Интерфейс использует импортированные стили CSS фреймворка Bootstrap с внешнего сервера CDN, который загружает клиентское устройство при открытии страницы, запущенной на Arduino. Поскольку память Arduino Uno ограничена, он может запускать страницы размером всего несколько килобайт. Импорт стилей CSS с внешнего сервера снизит производительность и нагрузку на память Arduino. Программная реализация (для Arduine Uno) использует 70% флэш-памяти (32 КБ - загрузчик 4 КБ) и 44% оперативной памяти (2 КБ).

Статические части веб-страницы (верхний и нижний колонтитулы HTML-документа, CSS-ссылки Bootstrap, метатеги, заголовок HTTP-ответа, тип содержимого, форма и т. Д.) Хранятся непосредственно во флэш-памяти Arduino, что может значительно уменьшить объем оперативной памяти, используемой пользователем. -сгенерированный контент. Таким образом, веб-сервер более стабилен и может одновременно обрабатывать множественное подключение нескольких устройств в сети.

Чтобы сохранить установленные значения даже после сбоя питания, они сохраняются в памяти EEPROM Arduino. Относительная температура к смещению 10, гистерезис к смещению 100. Каждое из значений занимает максимум 5B в памяти EEPROM. Предел транскрипции EEPROM находится на уровне 100 000 транскриптов. Данные перезаписываются только при отправке HTML-формы. Если при первом запуске устройства в упомянутых смещениях EEPROM ничего не сохранено, автоматическая запись будет выполнена со значениями по умолчанию - эталон: 20,25, гистерезис 0,25 ° C.

Метатег Refresh обновляет всю страницу Arduino каждые 10 секунд. К этому времени необходимо записать изменение для термостата, иначе окна ввода будут сброшены при обновлении страницы. Поскольку библиотека Ethernet не включает использование асинхронного веб-сервера, необходимо переписать всю страницу. Динамические данные, которые в основном изменяются, - это текущее значение выхода - Вкл. / Выкл.

Шаг 3: HTML-страницы, работающие на веб-сервере, схемы, исходный код

HTML-страницы, работающие на веб-сервере, схемы, исходный код
HTML-страницы, работающие на веб-сервере, схемы, исходный код

HTML-страницы, работающие на Arduino:

  • / - корневая страница, содержащая форму, текущий список логических выходов реле, температуру
  • /action.html - обрабатывает значения из формы, записывает их в память EEPROM, перенаправляет пользователя обратно на корневую страницу
  • / get_data / - передает данные о текущей температуре, эталонной температуре и гистерезисе третьей стороне (компьютеру, микроконтроллеру, другому клиенту…) в формате JSON.

Также существует расширенная версия этого термостата, в которую входят:

  • Ручной режим для реле (неограниченное время, жесткое включение / выключение)
  • Сторожевой таймер
  • Доступны дополнительные датчики, например: SHT21, SHT31, DHT22, BME280, BMP280 и другие.
  • Режим охлаждения
  • Управление и настройка через RS232 / UART независимо от Ethernet
  • ПИД-регулятор температуры для термостата
  • Возможность использования платформ ESP8266, ESP32 для термостата

Программную реализацию проекта можно найти по адресу: https://github.com/martinius96/termostat-ethernet/ Реализация содержит программы для статического / динамического IPv4-адреса, назначенного шилду Ethernet.

Термостат предназначен только для температуры в помещении! (выше 0 ° C), к которому адаптирована системная логика. Возможна замена существующего комнатного термостата на термостат, возможна временная замена термостата в холодильнике, поддержание постоянной температуры в террариуме и тому подобное.

Рекомендуемые: