Продвинутый термостат для дома

в 12:49, , рубрики: Без рубрики
Пролог

С появлением дома газового котла с электронным управлением, жить, как бы сказать, становится приятнее. Улучшив этот момент простым термостатом с двумя кнопочками и семисегментником, показалось что совсем все хорошо. Но было решено развить эту идею.

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

Решение

Наше устройство должно уметь:
1) Показывать температуру дома и на улице
2) Включать отопление, когда температура дома упадет ниже заданной
3) Соответственно задавать температуру мы будем графиком(например в 6 утра нам надо 22 градуса, когда все ушли на работу можно и 18 и т.д.)
Из плюшек
4) График температуры на улице за сутки
5) Часы(получились попутно)

Железо

Для большей наглядности решено использовать дисплей LCD TFT на контроллере ILI9320. Этот дисплей выпускается с разными диагоналями(2.2 -3.2 дюйма). Разрешение 240х320. Есть резистивный сенсорный тачскрин. В принципе можно применить практически любой дисплей с таким же разрешением. Потребуется поменять только процедуру инициализации. В прикреплении есть список поддерживаемых контроллеров, для которых есть примеры инициализации, спасибо Noi.

Продвинутый термостат для дома
Текст изначально был только 8x8, и для мелких надписей его хватало, так же сделана возможность выводить этот шрифт с удвоенным масштабом. Шрифт генерился программой LCD Font Generator и хранился во flash. Но для больших цифр этого было явно мало. Был создан еще шрифт 128x128 в той же программе. Можно выбрать любой шрифт. Но 10 цифр и 3 символа занимали 200кБ памяти. Мне лень было придумывать формат для сжатия и я добавил внешнюю память eeprom 24c256. В ней хранятся большие цифры и пара пиктограмм.

Схема

Продвинутый термостат для дома

Попытка уместить все устройство в тесном корпусе привела к двум платам, соединённые проводом МГТФ.
Продвинутый термостат для дома

Продвинутый термостат для дома
Первая плата служит для распаивания достаточно мелкого шага дисплея, на второй разместились Atmega32(код занимает 47% flash, поэтому подойдет Atmega16), EEPROM и линейный стабилизатор на 3.3В.
Продвинутый термостат для дома

Дисплей питается от 3.3 вольт, да и входа не толерантны к 5 вольтам, поэтому я запитал МК от 3.3В, что бы не добавилось согласование уровней. В качестве датчиков температуры применил DS18B20
Продвинутый термостат для дома

Что бы котел понимал что пора включится надо подать 220В на специальный вход. Для коммутации добавлено реле, которое разместилось внутри котла на отдельной плате вместе с блоком питания на 12В и стабилизатором на 5В. Также добавил еще одно реле, его обмотка подключена к 220 напрямую. А общий контакт идет на землю, а нормально замкнутый на вход МК. Теперь для чего нужно. При пропадании электричества, в первую очередь отваливается это реле, тем самым на определенном входе МК появляется ноль. Сразу отключается дисплей. Теперь Atmega работает только за счет заряженных конденсаторов в блоке питания и потребляет 7ma. Этого хватит на 2-3 секунды работы, за это время переписывается вся нужная информация(график задания температуры дома, настройки) в энергонезависимую память.

Продвинутый термостат для дома
Для того что бы часы продолжали идти в то время пока нет электричества добавлена микросхема часов реального времени DS1307. Так как идея с этой микросхемой пришла после того как был изготовлен прототип, то я добавил ее на отдельной платке, купленной у китайцев за 2$.

Продвинутый термостат для дома
Первое включение
Продвинутый термостат для дома
Прототип готов
Продвинутый термостат для дома

Софт

На дисплее есть 5 сенсорных кнопочек, их мы будем использовать для выбора режима.
Сверху всегда отображается температура дома и на улице, уставка температуры в данный момент времени, дельта и время.
При нажатии на кнопки выбираются соответствующие режимы:

Температура дома
Продвинутый термостат для дома
(Можете заметить много служебной информации, которая выводится на дисплей. Она нужна была для отладки, но уже удалена из прошивки)

Температура на улице
Продвинутый термостат для дома

График температуры за сутки(реализовано авто масштабирование графика)
Продвинутый термостат для дома

График задания температуры дома
Продвинутый термостат для дома
В этом режиме видим предыдущий график задания(желтый) и новый, который я только что задал(зеленый).
Продвинутый термостат для дома
Через 10 секунд старый удалится и зеленый перерисуется желтым.

Часы. Тут и говорить нечего
Продвинутый термостат для дома

Настройки, пока минималистично.
Продвинутый термостат для дома

В верхней части дисплея можно заметить рисунок огонька, нарисован он все в той же программе LFG. С генерацией шрифтов, рисунков и прочих символов нет ни каких проблем. Большие цифры были немного широковаты, когда они выводили время, поэтому они сжимались программно на 75%. Пиктограмки домика и улицы переводились в массив с помощью программы LCD Assistant.
Продвинутый термостат для дома

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

Исходник на github.com

Автор: Atxmega

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js