Bluetooth-термостат с управлением освещением и вентиляцией на Arduino Nano
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino Nano R3 | 1 | Основной контроллер |
| Bluetooth-модуль HC-05 | 1 | Беспроводное управление |
| Цифровой термометр DS18B20 (1-Wire) | 1 | Датчик температуры |
| OLED-дисплей 128×64 I2C (двухцветный) | 1 | Поддерживается библиотекой u8glib |
| 4-канальный I2C релейный модуль (ControlEverything.com) | 1 | Управление нагрузками |
Приложения и сервисы
- Morich Serial Bluetooth Terminal (Android)
- Arduino Bluetooth Control Device (Android)
О проекте
Введение
Простой, но полезный DIY-термостат на Arduino с Bluetooth-управлением. Умный алгоритм термостата управляет газовым котлом, а реле переключают кухонное освещение и вентилятор ванной комнаты. Управление возможно как с кнопок на устройстве, так и с Android-устройства или компьютера через Bluetooth. Реализованы версии для Цельсия и Фаренгейта. Все детали выполнены вручную.
Проект разработан на Arduino Nano (или старших платах), использует датчик Dallas DS18B20, Bluetooth-адаптер HC-05/06, I2C OLED-дисплей 128×64 (поддерживается u8glib — можно использовать другие LCD/OLED).
Режимы работы котла
- Разовый нагрев (15 мин) — таймерный режим, удобен весна/осенью вечерами.
- Режим термостата (приоритетный) — целевая температура сохраняется в EEPROM.
Алгоритм защиты котла
Частое кратковременное включение/выключение сокращает ресурс газового котла. Для предотвращения этого используются корректировочные коэффициенты — они задают величину перегрева и остывания. При более низких температурах корректировка больше, так как стены холоднее и интенсивнее забирают тепло от нагретого воздуха, усиливая описанный эффект.
Обнаружение открытого окна
Если за минуту температура падает минимум на 0.2 °C (0.36 °F) — срабатывает «Window Alert»: отопление останавливается или не запускается, вентилятор включается для проветривания. Когда воздух нагревается минимум на 0.12 °C (0.216 °F) за счёт теплоёмкости помещения — система возвращается в нормальный режим, тревога сбрасывается.
Обнаружение ошибок
Температура ниже 0 °C (32 °F) или выше 40 °C (104 °F) трактуется как неисправность (поломка датчика, разбитое окно, пожар и т.д.) — все устройства отключаются.
Bluetooth-коммуникация
Android-приложение с 8 кнопками отправляет буквенные коды: заглавные — включение, строчные — выключение (A/a — таймерный нагрев, B/b — вентиляция, C/c — освещение и т.д.).
Также поддерживается «гиковский» режим: обмен данными через любой Bluetooth-терминал (Android-приложение или Serial Monitor Arduino IDE). Контроллер автоматически отправляет отчёты о температуре каждую минуту и мгновенные уведомления о событиях (включение/выключение устройств, срабатывание термостата и т.д.).
Коды управления
Принимаются двухзначные числовые коды «XY» (X — код устройства, Y — код операции):
- 30, 31, 32 — освещение: выкл / вкл / инверсия
- 40, 41, 42 — вентиляция: выкл / вкл / инверсия
- 50, 51, 52 — разовый нагрев (15 мин): выкл / вкл / инверсия
- 10–24 — целевая температура для термостата (°C)
- r — отчёт о состоянии устройств
- w — ручное отключение «Window Alert»
- A–H / a–h — коды, совместимые с GUI-приложением
Версия для Фаренгейта
Все корректировочные переменные, опорные значения и коэффициенты пересчитаны. Изменены коды устройств:
- 1 — Освещение (10: выкл, 11: вкл, 12: инверсия)
- 2 — Вентиляция
- 3 — Отопление
- 50–76 — целевые температуры (°F)
Продолжение проекта
UPDATE: Полная система домашней автоматизации со встроенным Bluetooth-каналом и голосовым управлением!
Библиотеки и ссылки
DallasTemperature, elapsedMillis, OneWire, SoftwareSerial, olikraus/u8glib
Для настройки кнопок на одном аналоговом входе: туториал
Исходный код
Две версии скетча (Celsius и Fahrenheit) с подробными комментариями, модульной структурой и пояснениями логики работы. Код доступен в разделе Code проекта.
Схемы
Схема сборки на макетной плате и вариант для пайки.
Производственный процесс
- Интегрированная система контроля доступа с QR, RFID и верификацией температуры
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умная копилка: управление монетоприёмником на Arduino Nano
- Автоматическая система полива растений на Arduino — уходи в отпуск спокойно
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Умные самозавязывающиеся туфли с встроенной сборкой энергии
- Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
- Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
- Голосовое управление бытовыми приборами: Bluetooth-управление через Google Assistant
- Удалённое управление автомобилем на Arduino Uno и Bluetooth: пошаговое руководство