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.

Share and Enjoy:
  • Facebook
  • Twitter
  • Technorati
  • RSS
  • StumbleUpon
  • Print

10 Коментара »

  1. Здравей,
    Проекта доста ми харесва. Имам един въпрос ,мога ли да реализирам проекта с ардуино етернет вместо ардуино уно и етернет шиелд. Относно Визуализацията необходимо ли е работещ компютър или ардуиното може да работи самостоятелно,
    Предварително благодаря

    Коментар от Venci marinov — ноември 27, 2011 @ 16:57

  2. Проекта ми хареса, но щеше да е много хубаво ако имаше малко повече коментари в сорса, за да да е по-лесно разбираем за начинаещите, като мен ;-)

    Коментар от Мирослав — февруари 16, 2012 @ 12:51

  3. Проекта е интересен, но никъде не видях как се конфигурира opehHAB сървъра. освен това, интересува ме при промяна на температурата и влажността в отделните зони, това ще се актуализира и в браузъра, изпълняващ ролята на дисплей или терминал

    Коментар от Димитров — март 9, 2012 @ 22:05

  4. А може ли да си го купи човек готово за монтиране?

    Коментар от Борис — юни 5, 2012 @ 14:08

  5. Здравейте.
    Към 1. – Да, Arduino Ethernet по същество е същото като Uno + Ethernet Shield. Необходим е малък сървър с някаква операционна система. В момента ползвам Raspberry Pi с Debian squeeze. Устройството е с размери на цигарена кутия, няма движещи се части, евтино е, харчи само 3.5 вата, като същевременно е достатъчно мощно да подкара Java и openHAB.

    Към 2. – Да, съгласен съм. И все пак коментари има на местата, които са по-екзотични и интересни. Останалото общо взето се подразбира за какво е :)

    Към 3. – Конфигурирането на openHAB е строго индивидуално за всеки един проект и не може да бъде описана в няколко изречения. Най-добре е да се изчете документацията в Wiki-то към проекта – http://code.google.com/p/openhab/w/list Всяка една промяна в стойностите се отразява мигновенно. Междувременно вече има нов интерфейс – http://code.google.com/p/openhab/wiki/TouchUI Авторът на този интерфейс съм аз. Комуникацията с openHAB сървъра се извършва чрез HTTP streaming, HTTP long-polling или Websockets ако браузъра ги поддържа.

    Към 4. – Засега не. Проекта е още във фаза на прототип, като последваха и много подобрения. Вече има двуредов дисплей, меню за задаване на IP адреси, портове и други настройки и много други подобрения. Интерфейса за комуникация вече е друг – TCP/IP socket с мой ASCII протокол отгоре. Проекта не е готов дивайс, работещ out of the box. Поради тази причина едва ли някога ще види бял свят в този си вид. Разбира се, мисля върху нещо комерсиално с аналогични идеи, но засега то е на заден план.

    Коментар от Михаил Панайотов — юни 5, 2012 @ 14:58

  6. П.П. Поради някаква причина не си виждах предишния пост и затова новия пост обхваща и отговори на старите въпроси.

    Коментар от Михаил Панайотов — юни 5, 2012 @ 15:00

  7. insurance agents franklin tn…

    Пет зонов термостат « robotev :: blog…

    Trackback от insurance agents franklin tn — юли 24, 2014 @ 9:13

  8. travel…

    Пет зонов термостат « robotev :: blog…

    Trackback от travel — октомври 16, 2014 @ 7:15

  9. Здравейте!
    Докъде стигнахте с проекта?
    На стари години ме заинтересувахте и съм твърдо решен за да го доразвия.
    Ако имате желание ми отговорете.
    Благодаря предварително.

    Коментар от Димитър Миланов — декември 12, 2014 @ 20:59

  10. Някакво развитие по проекта има ли? Опитах да направя нещо подобно, но срещам някои трудности, които не мога да преборя. Става въпрос с настройките на openhab. Ползвам ардуино уно, но не фабрично, а лепено на прототипна платка, а за мрежов контролер ползвам ENC28J60 също на протопипна платка. Библиотеката за мрежовия интерфейс е uIPEthernet.

    Коментар от Пенко Димитров — февруари 9, 2015 @ 10:14

RSS хранилка за коментарите по тази публикация. Адрес за TrackBack

Вашият коментар

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