Пролог
С появлением дома газового котла с электронным управлением, жить, как бы сказать, становится приятнее. Улучшив этот момент простым термостатом с двумя кнопочками и семисегментником, показалось что совсем все хорошо. Но было решено развить эту идею.![](https://habrastorage.org/storage3/acd/0f2/481/acd0f24812b1ae40879f063f8cdbec5b.jpg)
Однозначно, лидером в области контроля температуры дома является проект NEST.
Вот и решено было создать подобное устройство, но добавив нужное, и убрав то, что редко когда пригождается.
Решение
Наше устройство должно уметь:1) Показывать температуру дома и на улице
2) Включать отопление, когда температура дома упадет ниже заданной
3) Соответственно задавать температуру мы будем графиком(например в 6 утра нам надо 22 градуса, когда все ушли на работу можно и 18 и т.д.)
Из плюшек
4) График температуры на улице за сутки
5) Часы(получились попутно)
Железо
Для большей наглядности решено использовать дисплей LCD TFT на контроллере ILI9320. Этот дисплей выпускается с разными диагоналями(2.2 -3.2 дюйма). Разрешение 240х320. Есть резистивный сенсорный тачскрин. В принципе можно применить практически любой дисплей с таким же разрешением. Потребуется поменять только процедуру инициализации. В прикреплении есть список поддерживаемых контроллеров, для которых есть примеры инициализации, спасибо Noi.![](https://habrastorage.org/storage3/7f8/d21/f99/7f8d21f99926e9bc6cddaf846f7640c6.jpg)
Текст изначально был только 8x8, и для мелких надписей его хватало, так же сделана возможность выводить этот шрифт с удвоенным масштабом. Шрифт генерился программой LCD Font Generator и хранился во flash. Но для больших цифр этого было явно мало. Был создан еще шрифт 128x128 в той же программе. Можно выбрать любой шрифт. Но 10 цифр и 3 символа занимали 200кБ памяти. Мне лень было придумывать формат для сжатия и я добавил внешнюю память eeprom 24c256. В ней хранятся большие цифры и пара пиктограмм.
Схема
![](https://habrastorage.org/storage3/632/e1b/1a3/632e1b1a377cb801ed817c23d0b0346c.jpg)
Попытка уместить все устройство в тесном корпусе привела к двум платам, соединённые проводом МГТФ.
![](https://habrastorage.org/storage3/949/732/946/9497329464623d0d52cc623ed99ac97a.jpg)
![](https://habrastorage.org/storage3/96c/035/b9f/96c035b9fb23f97eb11013942bc393f3.jpg)
Первая плата служит для распаивания достаточно мелкого шага дисплея, на второй разместились Atmega32(код занимает 47% flash, поэтому подойдет Atmega16), EEPROM и линейный стабилизатор на 3.3В.
![](https://habrastorage.org/storage3/fa1/2a1/bad/fa12a1badad9b772ceeb235d1743f929.jpg)
Дисплей питается от 3.3 вольт, да и входа не толерантны к 5 вольтам, поэтому я запитал МК от 3.3В, что бы не добавилось согласование уровней. В качестве датчиков температуры применил DS18B20
![](https://habrastorage.org/storage3/47c/339/a18/47c339a182fcc92b68af243ffdc0dcaa.jpg)
Что бы котел понимал что пора включится надо подать 220В на специальный вход. Для коммутации добавлено реле, которое разместилось внутри котла на отдельной плате вместе с блоком питания на 12В и стабилизатором на 5В. Также добавил еще одно реле, его обмотка подключена к 220 напрямую. А общий контакт идет на землю, а нормально замкнутый на вход МК. Теперь для чего нужно. При пропадании электричества, в первую очередь отваливается это реле, тем самым на определенном входе МК появляется ноль. Сразу отключается дисплей. Теперь Atmega работает только за счет заряженных конденсаторов в блоке питания и потребляет 7ma. Этого хватит на 2-3 секунды работы, за это время переписывается вся нужная информация(график задания температуры дома, настройки) в энергонезависимую память.
![](https://habrastorage.org/storage3/a19/bd2/df9/a19bd2df98191312fd5ae087192a4faf.jpg)
Для того что бы часы продолжали идти в то время пока нет электричества добавлена микросхема часов реального времени DS1307. Так как идея с этой микросхемой пришла после того как был изготовлен прототип, то я добавил ее на отдельной платке, купленной у китайцев за 2$.
![](https://habrastorage.org/storage3/024/022/ec5/024022ec5d92ea874b17ded7bfded347.jpg)
Первое включение
![](https://habrastorage.org/storage3/8db/e21/a88/8dbe21a88771cc857f2e2e13ad74918b.jpg)
Прототип готов
![](https://habrastorage.org/storage3/be3/f44/2e6/be3f442e6178c5d13cee0fc8a8c0b06f.jpg)
Софт
На дисплее есть 5 сенсорных кнопочек, их мы будем использовать для выбора режима.Сверху всегда отображается температура дома и на улице, уставка температуры в данный момент времени, дельта и время.
При нажатии на кнопки выбираются соответствующие режимы:
Температура дома
![](https://habrastorage.org/storage3/067/943/555/067943555509d54330b3c843696aa64f.jpg)
(Можете заметить много служебной информации, которая выводится на дисплей. Она нужна была для отладки, но уже удалена из прошивки)
Температура на улице
![](https://habrastorage.org/storage3/e2d/3fd/b95/e2d3fdb954f53cfe5190bcf919d9dcfd.jpg)
График температуры за сутки(реализовано авто масштабирование графика)
![](https://habrastorage.org/storage3/aa0/118/ae6/aa0118ae6e0d82b208291288e04fdc34.jpg)
График задания температуры дома
![](https://habrastorage.org/storage3/994/cac/d03/994cacd030245527280e1c67c417c968.jpg)
В этом режиме видим предыдущий график задания(желтый) и новый, который я только что задал(зеленый).
![](https://habrastorage.org/storage3/80b/979/8f2/80b9798f2dfad4b6dcba07178247fdc1.jpg)
Через 10 секунд старый удалится и зеленый перерисуется желтым.
Часы. Тут и говорить нечего
![](https://habrastorage.org/storage3/1ba/484/673/1ba484673763c89edd51675e339a989d.jpg)
Настройки, пока минималистично.
![](https://habrastorage.org/storage3/5be/bee/64b/5bebee64bb03b03858fcb1bf1af5aca7.jpg)
В верхней части дисплея можно заметить рисунок огонька, нарисован он все в той же программе LFG. С генерацией шрифтов, рисунков и прочих символов нет ни каких проблем. Большие цифры были немного широковаты, когда они выводили время, поэтому они сжимались программно на 75%. Пиктограмки домика и улицы переводились в массив с помощью программы LCD Assistant.
![](https://habrastorage.org/storage3/7ad/161/d71/7ad161d71e55cd63aaf23151cad57e3b.jpg)
Ну вот и все, для кого то может эта статья всподвигнет для создания подобного, а может, поможет создать устройство на похожем дисплее.
Исходник на github.com
Only registered users can participate in poll. Log in, please.
Как вам девайс?
63.65% Прочитал, прикольно, пишите еще.760
14.91% Купил бы, долларов так за 50178
11.06% Повторю устройство полностью/частично132
3.35% Мне без разницы40
7.04% Лучше купить готовое решение84
1194 users voted. 291 users abstained.