Управление бойлером на ардуино

Hardware requirements

In order to connect your Arduino board to Opentherm device, you need to create a special hardware interface to convert voltage and current levels for Arudino to be able to handle. Voltage on Opentherm bus rises as high as 24V which would easily burn up your Arduino if connected to wires directly.

Schematics

Interface consists of three parts that can be used separately:

  • master interface: to send and receive data from your master device (thermostat) and to supply it with power
  • slave interface: to send and receive data from your slave device (boiler)
  • power supply: to supply 24V to thermostat via master interface and 5V to an Arduino board

Board example

Power supply from interface board is needed only if you wish to connect to master device (thermostat). Otherwise you won’t need both master interface and power supply. You can power your Arduino board and slave interface with standard 5V power supply.

Создание базы данных

Начнем с самого начала, а именно с проектирования и создания базы данных.

Базы данных это свой мир и изучать его можно долго, поэтому бегло коснёмся только тех вещей, которые нам непосредственно необходимы.

Все SQL скрипты находятся в каталоге

С чего начинается проектирование БД? С логического и физического представления.

Логическое представление или схема базы данных:

  • таблица с данными DHT датчика температуры и влажности
  • таблица с данными BMP датчика давления и температуры
  • указанные таблицы не имеют связей между собой, точнее связи не нужны.

Физическая схема опирается на конкретную СУБД и типы данных. Проще разбирать на конкретном примере. SQL скрипт раскрывает логическую и физическую схемы.

В каждой таблице должно быть поле типа

Имя поля может отличаться в разных БД, но смысл один — это уникальный идентификатор, ключ записи. На будущее, если вы видите базу данных в таблицах которой нет подобного счётчика, знайте, эту БД проектировал человек весьма далёкий от программирования, скорее всего гуманитарий.

Данные от однотипных датчиков храним в одной таблице, для датчиков другого типа создаём еще таблицу. Это чуть усложняет базу данных и PHP обвязку к ней, но это упрощает расширение или модификацию всей системы в дальнейшем.

В нашем проекте две таблицы. В таблице хранятся данные от датчика(ов) типа DHT (температура, влажность), в таблице хранятся данные от датчика(ов) типа BMP (температура, давление). Если вы в будущем захотите иметь, например, датчик газов или детектор движения, то создаёте дополнительные таблицы, не поленитесь. Если подключаете ещё один датчик типа DHT11 или DHT22, то создавать дополнительную таблицу не нужно, используете таблицу . Надеюсь принцип ясен: отдельная физическая сущность — отдельная таблица.

Если в таблице будут храниться данные от несколько однотипных датчиков, то как же их различить? Для этого в каждой таблице вводится поле

Фактически это который мы прописывали в файле для каждого экземпляра удаленного датчика-клиента и в для датчика, который подключен непосредственно к серверу — центральному блоку.

В промышленных системах должна быть ещё одна таблица — соответствия и его словесного, человекочитаемого описания. Например, датчик с = 2 это «Температура, влажность в квартире» и т.д. Но в нашем проекте не будем усложнять, просто помните, что :

  • датчик с , он же , равным 11 — это есть домашний датчик на сервере — центральном блоке,
  • датчик с , он же , равным 20 — это первый (в нашем проекте и единственный) заоконный датчик-клиент.

Далее. В таблицах хранятся следующие данные:

  • ipRemote — IP адрес метеостанции (сервера) с которого пришли данные, полезно для отладки и мониторинга,
  • dateCreate — дата время создания записи,
  • millis — полезно для отладки, это время в миллисекундах с момента начала выполнения скетча на Arduino,
  • temperature — температура,
  • humidity — влажность,
  • voltage — напряжение питания,
  • pressure — давление,
  • errors — количество ошибок (не используется). Задумывалось для хранения количества ошибок при передаче и т.п., чтобы можно было удаленно оценить состояние всей системы.

Как видим таблицы и очень похожи, отличие только в полях pressure и humidity, и возникает желание свалить всё в одну кучу (таблицу). Но делать так не велит первая нормальная форма, множество начинающих программистов пытались её обойти, но ни у одного не получилось, и мы не будем. Это как не замечать закон всемирного тяготения, до поры до времени вполне может получиться.

Таблица полезна при отладке — это журнал ошибок и прочих системных сообщений.

Создание БД и её пользователя с правами описано в

Это делается один раз, имя БД и имя пользователя можете придумать свои. И что точно необходимо сделать — это задать свой пароль.

PHP и веб-сервер

Все настройки веб-интерфейса хранятся в . Измените его в соответствии с вашими настройками базы данных.

Задайте свой часовой пояс в формате PHP

Все доступные часовые пояса описаны здесь.

Задайте свой секретный ключ для доступа (в виде числа) который должен совпадать с константой из скетча

В нашем веб-сервере нет авторизации, входа по паролю, это усложнило бы всю конструкцию. Для прототипа это не нужно. Поэтому вся защита построена на файле , отсутствии и на этом секретном ключе для доступа.

Основной PHP скрипт принимает простой HTTP GET запрос с данными и сохраняет их в соответствующие таблицы базы данных. Если ключ не совпадает, то запрос будет отвергнут.

Скрипт используется для просмотра таблиц данных и содержит гиперссылки на остальные скрипты веб-интерфейса. Вызывайте его так

Например

выводит простые таблички, где надо помнить, что :

  • датчик с id 11 это домашний датчик на сервере,
  • датчик с id 20 это заоконный датчик.

Скрипт содержит функции, общие для всех PHP скриптов.

Скрипт отвечает за рисование графиков при помощи Google Charts. Вот, например, график питающего напряжения заоконного датчика. Напряжение повышается в солнечный день за счёт солнечной же батареи и затем блок питания на аккумуляторах постепенно разряжается.

экспортирует данные из таблиц базы данных MySQL в файл формата CSV. Для дальнейшего импорта и анализа в электронных таблицах.

экспортирует данные о напряжении питания заоконного датчика из базы данных MySQL в файл формата CSV. Полезно для отладки.

очищает все таблицы, т.е. удаляет все наши данные. Полезно для отладки. На этот скрипт нет ссылок из , поэтому вызывать его надо по прямой ссылке в адресной строке браузера с указанием .

При приёме данных повсеместно используется функция для предотвращения попадания в БД некорректных значений.

В корень вашего сайта не забудьте положить для предотвращения попадания в поисковые системы.

ESP8266, WiFi и передача данных

И вот теперь возвращаемся к скетчу , к той его части, которая соединяется с точкой доступа WiFi и отсылает данные на веб-сервер.

Как я уже писал, мне не удалось найти нормальную библиотеку для Arduino для управления модулем ESP8266 с помощью AT команд, пришлось «колхозить» самому. Напомню так же, что вам придется прошить в ESP8266-01 прошивку определённой версии. И теперь когда всё готово, разберём как это работает.

Для доступа к веб серверу в скетче необходимо изменить вот эти константы

В в функции сначала производится переключение ESP8266 в режим Station, т.е. он начинает работать как WiFi клиент

и далее следует подключение к точке доступа

Если подключения не происходит, то попытка повторяется (однократно)

Затем выбирается режим одиночного подключения TCP/IP

При отсылке данных от датчиков типа DHT на вебсервер используется функция с указанием типа данных как

При отсылке данных от датчиков типа BMP на вебсервер используется та же функция с указанием типа данных как

На вход функция принимает строку HTTP GET запроса и отправляет её по назначению на веб-сервер.

Внутри себя проверяет доступность ESP модуля, посылая ему команду «AT», далее проверяется подключение к WiFi и производится переподключение, если необходимо. Затем отправляются данные и соединение TCP закрывается.

Android приложение

В наше время, когда уже каждый может мигать светодиодом, никакой метеостанцией никого не удивишь. Но если поделка умеет связываться с сервером через WiFi, имеет веб-морду и мобильное приложение, то это уже кое-что! Под сервером здесь имеется в виду конечно же сервер приложений, т.е. в нашем случае это PHP-обвязка и СУБД MySQL. Не достаёт вишенки на торте, а именно приложения под Android написанием которого мы сейчас и займёмся.

Step 6: Assembly

First attach the LCD display to the picture frame by sliding it over the screws and fix it. Then plug the keyboard cable onto the custom shield, attach the indoor temperature sensor and the outdoor sensor, if available as shown in the pictures. The two lines to the boiler are attached at the relay port. Then you can plug the custom shield onto the LCD, which provides mechanical support for the entire structure. The custom shield is then attached to the Freeduino and both are connected to the LCD. The modem is easily fixed onto the back of the passe-partout with two Velcro strips.  Next, connect the Freeduino to the modem by the RS232 cable and do not forget to connect the antenna. Finally, connect the power supply cable to modem and Fredduino, and power up. If the display does not show anything, adjust the contract first with the trimmer on the shield.

Беспроводной электронный терморегулятор OpenTherm — программируемый

Основные свойства:

  •  Работа с протоколом OpenTherm (OT+ 4.0) — двухсторонняя связь между котлом и терморегуляторомМодулирование мощности котла для получения максимальной эффективности и комфорта, автоматическое обнаружение протокола OT+, изображение кодов ошибок котла и регулирование температуры ГВС
  • Возможность работы по гистерезису или алгортиму TPI (для теплого пола, радиаторного и электрического отопления)
  • Функция оптимального запуска и остановки работы подключенного отопительного оборудования, работает таким образом, чтобы реальная температура в помещении достигала заданной точно по расписанию. 
  • Большой и хорошо читаемый ЖК-экран – подходит для людей с плохим зрением и/или пожилых людей
  • Режим Нагрев/Охлаждение
  • Отдельно стоящий или настенный монтаж
  • Рабочий частотный диапазон в открытом пространстве до 100 м
  • Рабочий частотный диапазон в обычном строительстве до 35 м
  • Термостат + исполнительное устройство сопряжены друг с другом по умолчанию
  • Совместимый с приёмниками новой серии RT — RXRT510

Удобное решение для наймодателей:

  • Вход в режим сервисных настроек защищен паролем
  • Возможность ограничения максимальной/минимальной температуры
  • Выключение с терморегулятора переключателя ручного режима на приёмнике
Характеристики:
Питание термостата 2 x AA щелочные батареи
Питание приемника 230V AC 50 Hz
Макс. нагрузка 16 (5) A
Выходы NO/COM или OpenTherm
Диапазон регулирования температуры 5 — 33.5ºC
Точность отображаемой температуры 0.5 или 0.1ºC
Гистерезис

±0.25ºC или ±0.5ºC

Сигнал RF

868 MHz

Размеры термостата W-118 x H-95 x D-26
Размеры приемника W-96 x H-96 x D-27
Совместим с котлами, поддерживающими интерфейc OpenTherm:
Марка Модель
Alpha Heating E-Tec SE-tec PlusE-tecEvokeIntec GS
Atag iC iC Economiser iS
Baxi 100 Combi 200 Combi400 Combi600 Combi
Daikin D2CND 24KwD2CND 28kwD2CND 35kw
Ferroli i25 Condensing Combination Boileri29 Condensing Combination Boiler
Ideal Independent + CombiIndependent CombiIndependent SystemLogic Combi+ Combi CLogic Combi C24, C30, C35 ((с помощью отдельной проводки)Logic Code Combi ((с помощью отдельной проводки)I-mini C24, c30 ((с помощью отдельной проводки)Vogue Combi C26,C32, C40Logic + SystemLogic + Heat
Intergas Intergas RapidIntergas Rapid PlusCombi Compact, Compact RangeECO RFXtremeXclusive
Main Eco Compact Combi 25-30
Navien Navien NCB
Ravenheat Avanta, Quinta AceQuinta ProGas 110 Eco
Vokera Evolve CEvolve SLinea One (via OpenTherm Kit Part_1221179)Vision Combi (requires control interface 294501430 Compact A (requires control interface 29450143)Verve (только режим нагрева)Mynute i (только режим нагрева)Vision System (только режим нагрева)Unica iVibeVision CLinea HEMynute AMynute HEUnica HE
Viessmann Vitodens 100W Type WB1A (Connection: X3.3 and X3.4) Vitodens 100W Type WB1B (Connection: X21.1 and X21.2)Vitodens 100W Type WB1C (Connection: X21.1 and X21.2)Vitodens 200-W WB2B 26+ 35 kW (via Expansion Module OT and OT-A8 + _Terminal -10 and +10 are on expansion A8 boiler)Vitodens 200-W WB2C, B2HA,B2JA, B2LA (via icm Expander OpenTherm)
Vaillant (via Vaillant VR33 module) Ecotec Pro Ecotec Plus Ecotec Exclusive Ecofit Pure
Worcester Bosch(via Nefit EMS-OT OpenTherm converter) EMS capable boilersGreenstar iGreenstar i Junior (Manufactured after July 2013)Greenstar Si CompactGreenstar CDi CompactGreenstar CDi Classic (Manufactured after 16th January 2007 with software version CF12.10 onwards)Greenstar Highflow CDiGreenstar 12i System — 24i System (Provided optional integral diverter valve is installed, manufactured after February 2011)Greenstar 27i System — 30i System (Provided optional integral diverter valve is installed)Greenstar CDi Classic System (Provided optional integral diverter valve is installed, manufactured after 16th January 2007 with software version CF12.10 onwards)

 Примечание: Информации по Worcester Bosch OpenTherm очень ограничены, пожалуйста, примите этот список как способный, но еще не подтвержденный/окончательный. Взаимодействе ГВС с протоколом OpenTherm также не подтверждено.

Руководство пользователя

External Thermostat Wiring and Safety~

Central heating is the last thing you want to fail in your home. You might have significant damage to your property in case of the software bug or your custom hardware or wiring failure.

As a last resort measure, you probably want to use some sort of mechanical thermostat, which turns on your boiler if the temperature drops below the safe threshold.

In the worst-case scenario, your OpenTherm hardware stop communicating with the boiler. Proper boiler implementation will flag external panel error and take control back, following the external thermostat circuit state.

The second issue can be with your thermostat logic, especially if your logic is running on some external device. To address this, OpenTherm integration is using to enable central heating. That way, if your external thermostat report freezing condition, OpenTherm integration activates heating. To enable this option, set the flag.

Note

Another use case for the flag might be an external hot water tank storage using central heating to heat the hot water in the tank.

Step 5: Connecting Things

In order to connect the components, the following cabling needs to be prepared: Power Supply: the power supply with the 2.1 mm connector drives both Freeduino and the Siemens Modem. The lines are connected 1:1 to the Freeduino plug. The Siemens Western plug needs to be connected along the pinout described in the Siemens manual p. 18 ff. The PD_IN pin is connected to ground, the IGT_IN goes to +12V. For the RS232 cable, only 3 lines are required, pin 5 on both ends are connected, lines to pins 2 and 3 are crossed. The last 4 line cable connects the keyboard to the custom shield. Common ground is the yellow line on the pictures followed by up, enter and down. For the antenna, I simply took a 15 cm wire, which I wrapped around a 1.5 mm drill bit. This fits firmly on to the center pin on the Siemens and is sufficient for the location.

Esp-link uses

The simplest use of esp-link is as a transparent serial to wifi bridge. You can flash an attached
uC over wifi and you can watch the uC’s serial debug output by connecting to port 23 or looking
at the uC Console web page.

The next level is to use the outbound connectivity of esp-link in the uC code. For example, the
uC can use REST requests to services like thingspeak.com to send sensor values that then get
stored and plotted by the external service.
The uC can also use REST requests to retrieve simple configuration
information or push other forms of notifications. (MQTT functionality is forthcoming.)

An additional option is to add code to esp-link to customize it and put all the communication
code into esp-link and only keep simple sensor/actuator control in the attached uC. In this
mode the attached uC sends custom commands to esp-link with sensor/acturator info and
registers a set of callbacks with esp-link that control sensors/actuators. This way, custom
commands in esp-link can receive MQTT messages, make simple callbacks into the uC to get sensor
values or change actuators, and then respond back with MQTT. The way this is architected is that
the attached uC registers callbacks at start-up such that the code in the esp doesn’t need to
know which exact sensors/actuators the attached uC has, it learns that through the initial
callback registration.

Принципиальная схема вентилятора Ардуино

Принципиальная схема нашего вентилятора выглядит так:

Давайте разберемся с соединением всех деталей. Прежде всего сделайте подключение ЖК-дисплея к Ардуино следующим образом:

  • Подсоедините вывод VSS на ЖК-дисплее к земле Arduino.
  • Подключите контакт VDD к 5V Arduino.
  • Подсоедините вывод V0 к центральному выводу потенциометра 10K. Подключите два других контакта потенциометра к 5V и к земле.
  • Подсоедините штырь RS к контакту 2 Arduino.
  • Подключите контакт R/W к земле Arduino. Это поместит ЖК-дисплей в режим чтения.
  • Подключите контакт E (Enable) к контакту 3 Arduino.
  • Подключите контакты D4-D7 к контакту 4, 5, 6, 7 Ардуино.
  • Подключите контакт 15, который является положительным выводом подсветки светодиода на 5-контактный штырь через резистор 220 Ом.
  • Подключите контакт 16, который является отрицательным выводом подсветки светодиода к земле Arduino.

Затем подключите релейный модуль к Arduino. На стороне входа модуля реле выполните соединения следующим образом:

  • Подключите вывод VCC модуля реле к выводу 5V Arduino.
  • Подключите вывод IN модуля реле к выходу 9 Arduino.
  • Подключите вывод GND модуля реле к GND Ардуино.

На выходной стороне модуля реле подключите минус 9В-батареи к общему (C) модулю реле и подключите NC модуля реле к минусу вентилятора. Затем подключите плюс батареи к плюсу вентилятора.

В конце сделайте соединения для датчика температуры и влажности DHT22.

  • Подключите контакт 1 DHT22, который является выводом VCC, к 5V Ардуино.
  • Подключите контакт 2 DHT22, который является выводом данных к выходу 8 Arduino.
  • Подключите контакт 4 от DHT22, который является заземляющим контактом, к земле Arduino.

Introduction: Arduino Based House Heater Controler With SMS User Interface

The project provides instructions and code to build a heating controller for your home or remote country house, which can be controlled and monitored by GSM via SMS commands. I started to design it as we needed a reliable and remotely accessible heating controller for our country home, which is in deep in the countryside where temperatures fall down to -30°C in wintertime and where there is no reliable (and affordable) internet connection. Commercially available controllers either did not offer GSM control, or did not have the safety features nor the relative ease of comparably plain-text command operation we required.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector