robotev :: blog

август 12, 2011

Пет зонов термостат

Устройството представлява петзонов термостат за отопление на жилище, който се управлява както локално от бутони във всяко помещение, така и дистанционно по Ethernet.

Проектът е изграден от следните хардуерни компоненти:

  • Arduino Uno – 1бр.
  • Ethernet Shield – 1бр.
  • DHT22 цифров сензор за температура и влажност – 5 бр. (цена ~$10)
  • 74HC595N Shift Out регистър – 3 бр.
  • 24C08 EEPROM – 1 бр.
  • Пуш бутон – 5 бр.
  • LED – 15 бр.
  • Безконтактни релета за 230V – 5 бр. (важно е да се знае с каква мощност е товара, който се управлява, за да се изберат подходящи релета).
  • Подходящи резистори за LED индикацията – 15 бр.
  • Резистор 5К-10К за pull-up на пуш бутоните – 5 бр.

Термостатът се управлява по TCP/IP протокол и REST за application layer протокол. Интересното в случая е, че се използва HTTP PUT заявки от термостата към сървъра, вместо “long poll” метод от сървъра към термостата. Това значително намалява трафика, който се генерира по мрежата, като освен това прави комуникацията истински асинхронна и бърза.

За сървър се използва опън сорс софтуер за домашна автоматизация, наречен openHAB. Това е изключително иновативен софтуер, написан на Java (OSGi), който търпи бурно развитие. Въпреки че е само на около година и половина и все още е с версия 0.7, openHAB предоставя изключително мощен инструментариум за връзка с почти всякакъв вид хардуер (KNX, 1-wire, HTTP, Serial…). openHAB предоставя HTML5 базиран интерфейс, който се ползва за визуализация. Интерфейсът е приложим върху всяко устройство със съвременен браузър, но най-добре се представя върху тъчскрийн устройства с WebKIT базирани браузъри (iPhone, iPad, Android OS).

ЗАЩО DHT22 СЕНЗОРИ?

Поради две главни причини – цена и качества. Цената на този комбиниран дигитален сензор за температура и влажност е едва $10 за малки количества. Качествата на сензора са без алтернатива за тази цена! Сензорът е протоколен и позволява четене на разстояние до 100 метра, ако се използва хубав кабел тип „усукана двойка“ (например CAT-5). Освен това сензорът идва калибриран, работи с много малки отклонения от порядъка на под 0.5% за температурата и под 2% за влажността, и не на последно място – има библотека за Arduino.

ЗАЩО ВЪНШНА EEPROM ПАМЕТ?

Използва се EEPROM паметта като енергонезависима памет за съхраняване на последните зададени стойности за всяка една от зоните. При всяко натискане на бутон се задава нова стойност за съответната зона, която се записва върху паметта.
Използва се външна EEPROM памет поради една единствена причина – има по-добри показатели за брой записи. По спецификация вградената в Atmega328 EEPROM памет издържа около 100 000 цикъла на запис. EEPROM чиповете от типа 24Cxx издържат около 10 пъти повече (1 000 000 записа), и освен това са лесно заменяеми, ако все пак им стане нещо след години. Замяната на този чип е лесна и не се налага препрограмиране на ново Ардуино, както би се наложило, ако се използва EEPROM-а на Atmega328.
Друга опция е използването на SD Flash карта, тъй като разполагаме с такъв слот върху Ethernet Shield-a.

ЗАЩО REST?

Защото е широко използван application протокол за връзка с всякакви мрежови услуги. И все пак това не е стандартен REST интерфейс, по който клиентът иска даден ресурс, а сървърът връща отговор (обикновено XML или JSON). Тук клиентът изпраща заявка, например openHAB към Arduino като му казва да смени режима на зона 1 на изключен (http://192.168.90.55/1/0), като получава само „HTTP/1.1 200 OK“. От своя страна Ардуиното има пълната свобода да „говори“ когато си поиска и да изпраща актуализираща информация към сървъра. Например веднага след като е натиснат даден хардуерен бутон и е сменен режима на дадена зона, Ардуино изпраща новата информация към сървъра, без да чака HTTP заявка за това и да връща отговор. Тоест тук понятията кой е клиент и кой сървър са размити и всяко едно от устройствата е и двете в даден момент.

Архив с файлове (включва скица за Ардуино и електрическа схема).

Автор на проекта е Михаил Панайотов.

Този проект участва в конкурса „Ардуино в Интернет“. Подкрепете го като гласувате за него във Facebook.

Задвижвано от WordPress