Логирование и график событий 24-В термостата с оптопарой и Raspberry Pi
Многие проекты домашней автоматизации подразумевают создание термостата с нуля, но что, если у вас уже есть программируемый термостат и вы просто хотите записывать моменты его включения и выключения? Это руководство объясняет, как использовать оптопару для безопасной гальванической развязки 24-В переменного тока HVAC-системы от Raspberry Pi, захватывать логические сигналы, логировать события и строить графики температуры в реальном времени.
⚠️ Работа с напряжением сети может быть опасной. Продолжайте только если вы понимаете меры электробезопасности и обладаете необходимыми навыками. Автор не несёт ответственности за ущерб оборудованию, животным или имуществу.
Шаг 1: Сбор компонентов и инструментов
Необходимые компоненты:
- Оптопара HCPL3700 (с встроенным выпрямителем)
- 2 × резистора 3,3 кОм, 0,5 Вт или выше
- Электролитический конденсатор 10 мкФ, ≥10 В
- Керамический конденсатор 0,1 мкФ
- Подтягивающий резистор 8 кОм (или 3,3 кОм + 4,7 кОм последовательно)
- Raspberry Pi (любая модель с 3,3-В GPIO)
- Двухпроводной изолированный провод, желательно с разъёмами быстрого отсоединения
- Базовые расходники: макетная плата, перемычки и т.д.
Опциональное дополнение — датчик температуры:
- Цифровой датчик температуры ADT7410
- Плата-адаптер для SOIC
- Дополнительный керамический конденсатор 0,1 мкФ
- 4 × резистора 10 кОм
Опционально для проектирования ПП:
- Двухконтактный винтовой блок
- Женские гнезда для SOIC-платы
- Мужские или женские гнезда для подключения к Pi/Arduino
- SMD-версии резисторов для уменьшения размера платы
Инструменты:
- Мультиметр (режим измерения переменного напряжения)
Требования:
- HVAC-система с 24 VAC
- Python и сопутствующие библиотеки (например,
hipi-i2c) - Опционально: аккаунт Plotly для онлайн-графиков
- Опционально: Eagle (бесплатная версия) для проектирования ПП
Шаг 2: Определение проводов реле термостата
Большинство жилых HVAC-систем работают от 24 VAC. Программируемый термостат обычно питается от схемы «power-stealing» и коммутирует реле для включения печи или воздухообогревателя. Для мониторинга состояния реле найдите пару проводов, по которым подаётся 24 VAC на HVAC-блок.
Мультиметром в режиме AC измерьте напряжение на каждой паре проводов при включённом и выключенном HVAC. Запишите показания; правильная пара должна показывать ~24 VAC (часто чуть выше, 28–30 VAC) при активной системе и 0 VAC в простое.
Шаг 3: Добавление мониторных проводов
Отключите питание HVAC и мультиметром убедитесь, что напряжения нет. Аккуратно снимите термостат с основания, чтобы получить доступ к проводке. Припаяйте два дополнительных провода к выбранной паре проводов реле. Используйте разъёмы быстрого отсоединения на конце у Pi для удобства обслуживания.
Шаг 4: Сборка схемы гальванической развязки
Прямое подключение 24 VAC к Raspberry Pi невозможно. Оптопара HCPL3700 обеспечивает электрическую изоляцию и автоматически выпрямляет входное напряжение.
Ключевые моменты схемы:
- Два резистора 3,3 кОм (мощностью ≥0,5 Вт) на входных контактах AC устанавливают порог срабатывания. Точные расчёты см. в даташите HCPL3700.
- Электролитический конденсатор 10 мкФ, ≥10 В, на выходе выпрямителя сглаживает сигнал и предотвращает мерцание GPIO Pi на частоте сети.
- Керамический конденсатор 0,1 мкФ по питанию оптопары подавляет высокочастотные помехи.
- Так как у HCPL3700 выход с открытым коллектором, нужен подтягивающий резистор. 8 кОм (или 3,3 кОм + 4,7 кОм последовательно) надёжно подтягивают линию к высокому уровню для 3,3-В логики Pi.
Подключите выход оптопары к GPIO Pi (например, GPIO23). Используйте 3,3-В шину Pi для питания контактов питания оптопары. Объедините землю Pi и оптопары.
После подключения Pi будет определять логический ноль при включённом реле HVAC и логическую единицу при выключенном.
Полные схемы и расчёт компонентов см. в приложении к HCPL3700.
Шаг 5: Установка ПО и логирование данных
Используйте Python для чтения GPIO-контакта, временной метки каждого изменения состояния и записи данных в CSV-файл или базу данных. Пример простого скрипта:
import RPi.GPIO as GPIO
import time
import csv
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
with open('thermostat_log.csv', 'a') as f:
writer = csv.writer(f)
while True:
state = GPIO.input(23)
timestamp = time.time()
writer.writerow([timestamp, state])
time.sleep(0.5)
Для графиков в реальном времени загрузите CSV в Plotly или используйте лёгкую библиотеку вроде Matplotlib для локальных графиков.
Шаг 6: Расширение с датчиком температуры (опционально)
Интегрируйте ADT7410 по I²C для логирования температуры окружающей среды вместе с состоянием реле. Подключите датчик к SDA/SCL Pi, установите адрес (по умолчанию 0x48) и читайте 16-битный регистр температуры. Сохраняйте показания в тот же лог-файл в отдельном столбце.
Имея данные температуры, используйте Plotly для создания двухосного графика: состояние HVAC на основной оси и температура на вторичной, что позволяет коррелировать активность термостата с изменением температуры.
Следуя этим шагам, вы сможете безопасно мониторить и логировать поведение существующего термостата без его модификации.
Производственный процесс
- Бесшовная MQTT интеграция: NodeMCU DHT22 сенсоры с Raspberry Pi 3 B+ как брокер
- Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
- Логирование и график событий 24-В термостата с оптопарой и Raspberry Pi
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
- Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
- Интеграция TI SensorTag с Blynk через Node‑RED на Raspberry Pi Zero
- Raspberry Pi: логирование фоторезистора и система оповещений — низкопотребительный световой датчик на Python
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20