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.

Бирко 1

Публикувано в: Правя — Етикети:, , , , — robotev @ 20:28

“Бирко 1” е проект за мобилен робот, управляван през интернет. Целта е пренасянето на бира (от където идва и името). За момента проекта е на база PPP (point to point) свързаност. Робота играе ролята на “сървър”, а приложението или в случая управляващия компютър е клиент.

Блокова схема и описание:

1. Захранващ модул – осигурява захранващо напрежение на всички останали модули, изискващи захранване.

2. Задвижващ модул – състои се от шаси и четири серво механизма с прикрепени към тях гуми, служещи за задвижване на робота.

3. Микроконтролер – Благодарение на този модул се осъществява управлението на различните механизми на робота.

4. Приемо-предавателен модул (безжичен модул) – осъществява връзката между микроконтролера и управляващия компютър.

5. Антена – служи за безжично предаване и приемане на данни между приемо-предавателния модул и управляващия компютър.

Шаси и задвижващи компоненти:

Предвидено е роботът да се задвижва от четири на брой серво механизма (преправени, така че да се въртят неограничено), като завиването се осъществява чрез блокиране на задвижващите колела от една от страните. С цел по добра подвижност е необходимо междуосието да е възможно най-малко, а широчината на робота – голяма.

Модификация на серво механизмите:

Серво механизмите са направени за завъртане на 120 градуса. За да могат да послужат за задвижване се налага замяната на потенциометъра, служещ за определяне на ъгъа на завъртане(5К) с два резистора (2.2-2.4К) и премахване на механичния ограничител.

Захранване:

Захранването на безжичния модул, както и на останалите електромеханични компоненти е реализирано чрез батерии. Всички компоненти използват захранващо напрежение 6V. За тази цел се използват 3 схеми L7806 (три-изводен стабилизатор на напрежение) осигуряващи такова напрежение на изходите си. Свързани в паралел позволяват протичането на 4.5А максимален ток, достатъчни за захранването на всички електромеханични компоненти. За захранване на безжичния модул се използва 1 схема L 7812 с изходно напрежение 12V.

Безжичен модул:

За проекта е използван рутерът WBR-6002 производство на фирмата levelone, имащ възможността да работи в WISP (wireless internet service provider) mode. Това позволява връзката на робота с интернет. За връзка между рутера и ардуино платформата се използва “Arduino ethernet shield”.

Управляващ софтуер:

Това е софтуер написан на езика Python. Позволява свързването на управляващия комптър към робота. Позволява управлението да се осъществява чрез joypad.

Начин на работа:

Когато роботът се включи, той започва да играе ролята на “сървър” изчакващ включването на “клиент” (управляващия компютър). Това се случва когато бива включен Софтуера за управление. След установяване на връзката робота е готов да възприема и изпълнява команди подадени от компютъра.

Недостатъци:

Ethernet shield-а използва 13 пин на ардуино платформата. По някаква причина servo.h използва същия пин и се налага atach на серво механизмите непосредствено преди задаване на команда към тях. Друг варант е написване на нова функция. В текущия проект е избран първият вариант.

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

Автор на проекта е Кристиян Димитранов.

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

Мобилен Google+ нотификатор

Публикувано в: Правя — Етикети:, , , , , — robotev @ 20:27

Поради факта, че много често му се налага да е в стаи далече от компютъра, у Бойко Казаков се появи неприятното усещане дали не изпуска нещо в новата социална мрежа GOOGLE+. Затова е направил преносимо устройство, което да го държи в течение дали изобщо нещо се случва.

Системата е изградена от няколко основни части.

  •  Програма следяща за ъпдейти
  •  Устройство предаващо ъпдейтите
  •  Устройство приемащо ъпдейтите
  •  Програма визуализираща пристигащата информация.

Поради факта, че GOOGLE+ е сравнително нова платформа сайтът не предоставя, добре познатият ни метод за прочитане на XML запис. Затова Бойко ползва своя GMAIL акаунт като средство за индикиране на броя нотификации в социалната мрежа.

За целта в опциите е избрано изпращане на мейл за всички видове събития. Програмата е написана на C#.

В бъдеще Бойко се надява да открие метод за директен достъп до g+ сайта. Но засега се налага да се използва този трик, който имане достатъкът, че ако gmaila се ползва като поща, изпратеният брой може да вклчва несъществена поща.

За прочитане на броя входящи писма в GMAIL е използван популярния метод в опен сорс средите за парсване на записът на този адрес https://gmail.google.com/gmail/feed/atom . Програмата която е използвана има за цел да е постоянно включена, затова тя няма форма а постоянно седи във системният трей за да не пречи.

Създадени са два таймера. Първият проверява XML записа на всеки 6 секунди и записва броят непрочетени входящи писма във променлива. Вторият таймер на всяка секунда изпраща стойността на тази променлива по серийният порт за данни.

За осъществяване на безжична комуникация са използвани два 2,4Ghz модула ползващи nRF24l01. Като е използвана съществуваща библиотека за ардуино (mirf), позволяваща лесна работа с тях. Модулите се свързват чрез SPI. Te трябва да работят на един и същи канал и да имат една и съща payload стойност (в случая 1 byte). Поради факта че модулите осъществяват сигурна хендшейк връзка приетата стойност от серийния порт, се предава директно без нуждата от допълнителни протоколни байтове (премахва се ненужното забавяне по линията). На бредборд платката, на която са прикачени Ардуино и безжичния модул разполага също и със SMD светодиоди който премигват при всеки изпратен байт (брой нотификации).

Тъй като се препоръчва безжичните модули да работят с 3.3V логика а Ардуино работи с 5 волтова, са сложени делители на напрежение които гарантират допустими нива от Ардуино платката.

Приемащият безжичен модул е свързан към по мощен (бърз) микроконтролер позволяващ визуализацията на QVGA дисплей. Приемащото устройство е проектирано да бъде мобилно и да има много малка консумация на енергия. Софтуерът на приемащото устройство се грижи да получава постоянно байтове на този канал, като тяхната стойност е в конкретен диапазон. Устройството има microSD карта която съхранява изображенията нужни за интерфейса.

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

Автор на проекта е Бойко Казаков.

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

Градински контролер 1.1

Публикувано в: Правя — Етикети:, , , , , — robotev @ 20:26

Както го подсказва и името, Градинският контролер е интелигентно устройство, което се грижи да полива градина, може да се контролира от Интернет, а също и да изпраща данни към Мрежата.

В момента устройството работи с 2 Ардуино контролера :

1) Външен за градината свързан със електромагнитен клапан за контрол на поливната система. Той се захранва със слънчева батерия и има приемник за да бъде безжично контролиран от вътрешния контролер. Напрежението се регулира на 9 волта заради соленоида на клапана. По късно към външния ще се добави и предавател за да връща данни от свързани към него датчици. Той се поставя в защитена от влагата и светкавици метална кутия. Екраниран кабел го свързва със соленоида на клапана. За по-добра защита може да се сложи и разрядник на антената. 

2) Вътрешен контролер, който е свързан с Интернет и позволява да се спира и пуска водата на поливната система и да се наблюдава състоянието на датчиците свързани към него (в момента сензор за дъжд и за напрежение на батерията). Захранване 6-12 волта. Използван е по евтиния вариант на Ethernet Shield, който има някои ограничения налагащи малки трикове в програмирането, но пък цената оправдава използването му за този забавен проект. 

Управлението става през тази уеб страница:

Ако се отвори клапана се променя статуса:

 

Когато сензора за дъжд е задействан, поливната система веднага се спира и това се показва на страницата:

 

Датчикът е така направен, че остава задействан достатъчно дълго време след дъжд, за да изсъхне почвата и да не се полива прекалено много. Когато елементите в него изсъхнат, той отново се изключва и поливането може да продължи по график, като това се настройва в програмата на контролерите. 

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

Предстои да бъде добавена обратната безжична връзка – от градината към вътрешния контролер и ще могат да се сложат всички датчици в градината, като данните се виждат в Интернет и се използват за програмиране на режимите на поливане и осветление.

Към вътрешния контролер ще бъдат добавени datalogger с часовник и SD карта не само да може да се записват данни с точно време за дълги периоди, но и да се използва часовника за дневен режим на включване на клапана. Осветлението ще се оптимизира в зависимост от статуса на слънчевия панел.

Следват снимки и електрически схеми. Външен контролер:

 

 

Вътрешен контролер:

 

Използван е примерен код към Ethernet и VirtualWire библиотеките, както и примерен код за H-bridge
Схемите са правени с Fritzing.

Архив с файлове (включва скиците за вътрешния и външния контролери).

Автор на проекта е Милен Стойчев.

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

WebTVGiude

Публикувано в: Правя — Етикети:, , , , , — robotev @ 20:24

 

Същност на проекта

Контролерът Arduino Web TV Guide е разработен специално за конкурса „Ардуино в Интернет“ на www.robotev.com. Контролерът представлява устройство, командващо даден телевизор през интернет. Представете си как си седите пред телевизора и се чудите какво да гледате. Грабвате си лаптопа, таблета или GSM-а с WiFi, отваряте програмата на телевизията, харесвате си даден филм или предаване и в следващият момент вашия телевизор се сменя сам на избрания канал. Ако контролерът трябва да се опише с няколко думи, то най-точното описание е уеб базирано дистанционно управление.

Видео – описание на хардуера

Видео – декодиране на сигнали от дистанционно

Теория за IR комуникация

Контролерът комуникира с телевизора, както всяко едно дистанционно управление, а именно посредством инфрачервен интерфейс. Преди представянето на WebTVGuide, даваме малко теория за инфрачервената комуникация(IR).

Различните устройства използват различни протоколи и команди за комуникация по инфрачервен път.

Протокол

Протоколът по своята същност представлява описанието и форматът на разменяните съобщения. При този вид комуникация се използват инфрачервени сигнали, които се изпращат от предавателя към приемникa. Различните производители на телевизори използват различни IR протоколи. IR комуникацията може да бъде представена така:

IR команда

Командата е същинската предавана информация. При дистанционните управления всеки бутон представлява уникална команда. Една и съща функция в различните протоколи може да бъде представена с различни команди.

[ Повече информация за IR протоколите и командите ]

Принцип на работа на контролера

  • Комуникацията между клиента се извършва на 3 фази: Клиент –> Web Server: тук комуникацията е стандартен HTML протокол с GET/POST съобщения.
  • Web Server -> Arduino WebTVGuide: използва се SOCKET комуникация. Web сървърът изпраща 4 байтово съобщение, представляващо идентификатора на телевизионния канал. Този идентификатор (ID) е универсален и не зависи от модела и марката на телевизорът.
  • Arduino WebTVGuide -> Телевизор: контролерът декодира полученото съобщение и изпраща специфични инфрачервени команди за промяна на телевизионния канал. Тези команди са специфични и различни за всяки марка и модел телевизор.

Хардуер на контролера

Необходими компоненти

Хардуерът на контролерът се състои главно от 3 части:

Ардуино (Arduino Duemilanove) с ATmega328 [ линк ]
Ардуино шийлд – Ethernet със SD слот [ линк ]
WebTVGuide шийлд – IR предавател и приемник

WebTVGuide Shield

За по-пригледно компонентите са на една платка, за да няма стърчащи жици. Изработката му е лесна и не се изискват специални умения.

На платката са разположени 3 светодиода, използвани за индикация на различни състояния на контролера, TSOP и бутон за декодиране на сигналите на дистанционното за съответният телевизор.

Повечето елементи на платката са опционални. Зеленият светодиод показва, че контролерът работи нормално. Червеният – възникнала е грешка по време на инициализирането. Жълтият – контролерът се намира в режим на четене на IR команди от дистанционното. Бутонът е за влизане в този режим.

Използват се почти всичи пинове. 5 цифрови входа/изхода се използват от Ethernet шийлда, 6 – от WebTVGuide шийлда.

Използвани пинове:

02 – Бутон за декодиране
03 – IR светодиод
04 – SS (SD)
05 – ERROR светодиод (Червен)
06 – ОК светодиод (Зелен)
07 – IR TSOP

10 – SS (Ethernet)
11 – MOSI
12 – MISO
13 – SCK

A1 – RECORD светодиод (Жълт)

Софтуер на контролера

За програмиране на контролера е необходима Arduino среда. В случая е използвана Arduino 0022 за Windows [ линк ]. Изискванията на библиотеките са всичко след 0017.

Използвани библиотеки:

Ethernet.h – официалната библиотека за Ethernet Shields [ линк ]
SD.h – библиотека за достъп и управление на SD картата [ линк ]
SPI.h – библиотека за управление на SPI шината [ линк ]
IRemote.h – библиотека за управление на IR светодиода и TSOP-а [ линк ]

* първите три библиотеки вървят стандартно с Arduino средата. Последната трябва да се свали и копира в папката libraries. По подразбиране Arduino\arduino-0022\libraries\

Принцип на работа

Архив с всички файлове (включва Ардуино скица, използваните библиотеки, примерни файлове, електрическа схема и EAGLE файл на WebTVGuide Shield-а).

Автор на проекта е Ивайло Димов.

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

април 8, 2010

Ехо, блогосфера!

Публикувано в: Бърборя — Етикети:, — robotev @ 1:20

Да, и аз започвам да пълня интернет с блог постове. Ще говоря и ще слушам.

Тук ще споделям нещата с които се занимавам, ме впечатляват или смятам че са полезни. Понякога и просто да бърборя просто защото нямам какво друго правя.

Понеже Ардуино ме запали по микроконтролерите, сензорите и реагиращите механизми, по-голямата част от постовете тук ще са за Ардуино. Другата причина да наблягам на платформата Ардуино е че е много лесна за използване и дори хора без техническо образование (като мен) могат да реализират интересни проекти.  

Не ми пестете критика, коментари и мнения. Със сигурност ще допускам грешки и неточности и ще съм благодарен ако ми помагате да ги отстраня.

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