robotev :: blog

октомври 8, 2011

Arduino като MIDI контролер

Публикувано в: Обучавам, Правя — Етикети:, , , , — robotev @ 15:46

(или  препрограмиране на ATmega8U2 чипа на Arduino Uno и Mega2560) 

ATmega8U2 чипът на Arduino Uno и Mega2560 играе ролята на посредник между USB порта на компютъра и главния микроконтролер на Arduino платката. На него има предварително инсталиран firmware, който може да се препрограмира през специален USB протокол наречен DFU (Device Firmware Update). 

Тъй като информацията на официалната страница на Ардуино как се препрограмира чипа ( http://arduino.cc/en/Hacking/DFUProgramming8U2 ) не е съвсем пълна в този пост ще се опитам да ви спестя някой от проблемите на които се натъкнах в опит да препрограмирам Atmega8U2 чипа с Windows машина. Целта беше да се „маскира“ Ардуино като MIDI усторйство и да може да си комуникира с други MIDI програми без нуждата от допълнителен хардуер или софтуер. Инструкциите са за препрограмиране с firmware за MIDI, но процесът за качване и на друг firmware е идентичен. 

Стъпките, които трябва да следвате са: 

1. Изтеглете FLIP програматора на Atmel от http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886 . Версията, която ползвах е FLIP 3.4.3 for Windows (Java Runtime Environement included) .

2. Изтеглете firmware-a, който ще качвате на чипа. За да „маскирате“ вашето Ардуино и то да се разпознава от компютъра като MIDI устройство използвайте MocoLUFA firmware-a от http://web.mac.com/kuwatay/morecat_lab./MocoLUFA.html . Използвам 7-zip софтуера за разархивиране и при първия Extract от .tgz се получава .tar файл, който Extract-нат на свой ред дава папка с необходимите файлове.

3. Подгответе платката. Ако Arduino платката ви НЕ е Arduino UNO r2 или Arduino UNO SMD е необходимо да запоите резистор от 10к ома както е показано на снимката долу.

4. Свържете Ардуино платката към компютъра с USB кабел и вкарайте Atmega8U2 чипа в DFU режим като окъсите за около секунда Reset и GND пиновете му. Използвайте къс проводник за да направите мост между пиновете от снимката. При Arduino UNO r2 и Arduino UNO SMD има запоени рейки, но пиновете, който да се окъсят са на същите позиции.

5. Когато чипът влезе в DFU режим, Windows ще покаже съобщение, че е открил нов хардуер и ще се активира Install New Hardware Wizard-a. Изберете опцията, която ви дава възможност да посочите сами драйвера, който да се инсталира – No, not this time. На следващия екран изберете Install from a specific location, и на третия екран укажете пътеката до папката с драйвера. Драйверът, който трябва да инсталирате се намира в папката на FLIP софтуера. По подразбиране това е C:\Program Files\Atmel\Flip 3.4.3\usb

6. Стартирайте FLIP и в меню File>Load Hex File изберете MIDI.hex файла (намира се в MocoLUFA\HEX); в меню Device изберете АТ90USB82; и в меню Settings>Communication изберете USB.

7. Натиснете Run. Пропрограмирането на чипа отнема само няколко секунди.

8. Извадете USB кабела и го включете отново. Windows ще разпознае платката като MIDI устройство и ще инсталира необходимите драйвери.

За да можете да качвате скици Ардуино микроконтролера е необходимо на ATmega8U2 да е инсталиран Arduino firmware. Версиите на официалния firmware на Arduino се намират на https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares .

Примерна програма за Ардуино има в средата за програмиране – Files>Examples>Communication>MIDI.

септември 23, 2011

Processing и Android

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

Още с обявяването на Google Accessory Development Kit (Google ADK) видях много интересни възможности и потенциал. Наскоро се сдобих с Андроид телефон и в този блог ще опиша опита си по свързването му към платката на Ардуино за Андроид разработки. Надявам се, че информацията ще е полезна.

Първата стъпка е да се свърже телефона към компютър и да се качи написано от нас приложение. Тъй като имам известен опит с Processing  реших да използвам него. Инструкциите по-долу работят със Samsung Nexus S апарат, но са приложими и за други телефони. Не се колебайте да споделите вашия опит (или проблеми) в коментарите.

В следващ пост ще опиша и свързването на телефона към платката на Ардуино.

1. Инсталирайте Android SDK от http://developer.android.com/sdk/index.html. За помощ или подробна информация вижте http://developer.android.com/sdk/installing.html. Запомнете в коя папка инсталирате този софтуер защото по-късно ще трябва да укажете пътеката към нея. След инсталация софтуерът се стартира и дава възможност да се изберат допълнителни пакети за инсталиране. Уверете се, че са избрани следните компоненти:

  1. SDK Platform Android 2.1, API 7
  2. Google APIs by Google Inc., Android API 7 . Няма да навреди ако допълнително инсталирате и други версии на Android API, включително версия 8 или по-висока, но задължително ви трябва и версия 7.
  3. Google USB Driver package. Този пакет е подходящ ако имате Nexus One или Nexus S телефон. За други апарати може да инсталирате съответните драйвери на по-късен етап. За подробности вижте http://developer.android.com/sdk/win-usb.html

След като изберете горните пакети и натиснете Install, те първо ще се свалят и след това ще се инсталират. В края на инсталацията, програмата ще ви каже, че е нужен рестарт. Натиснете Yes. Ако инсталацията е преминала успешно ще имате (поне) тези пакети в Installed Packages:

 

2. Изтеглете Processing от http://processing.org/download/ и разархивирайте файла (не е нужна инсталация). Използвайте версия 1.5 или по-висока.

3. Стартирайте Processing и сменете изгледа от Standard на Android. При тази операция, Processing ще покаже съобщение, че не намира инсталация на Android SDK, и ще ви каже ако сте инсталирали софтуера да натиснете Yes. Изберете Yes и укажете пътя до папката в която сте инсталирали Android SDK.

4. Изберете някоя програма за проба. Този пример за изчертаването на линия от координати 0, 0 до 100, 100 е подходящ:

void setup(){
size(400, 300);
}

void draw(){
line(0, 0, 100, 100);
}

Изпробвайте я в емулатора като натиснете бутона Run in Emulator или с Ctrl+R. Това ще компилира програмата и ще я изпрати към емулатора. При мен първият опит е нуспешен и получавам грешка „Device killed or disconnected.“ но малко след като се появи тази грешка се стартира и емулатора. След като веднъж емулаторът е стартирал програмите се качват коректно. Имайте предвид, че емулаторът реагира бавно и може да мине известно време докато тръгне програмата. Бъдете търпеливи, стартирането на програмата може да отнеме до няколко минути.

5. Време е да качим програмата и на телефона. След като свържете телефона към компютъра ще се стартира Found New Hardware Wizard-а. Изберете опцията, която ви дава възможност да изберете драйвера, който да се инсталира – No, not this time. На следващия екран изберете Install from a specific location, и на третия екран укажете пътеката до папката с драйвера. При мен това е android-sdk\extras\google\usb_driver, но ако вашия телефон е различен от Nexus One или Nexus S вижте http://developer.android.com/sdk/win-usb.html за повече информация къде да намерите подходящ драйвер.

6. Подгответе и телефона за качване на приложения. В меню Settings/Applications/Development позволете USB debugging.

7. Качете програмата с линията от Processing на телефона. Това може да стане от меню Sketch/Run on Device или с клавишна комбинация Ctrl+Shift+R. Възможно е при първото качване на програма на телефона да трябва да прекъснете връзката на Processing с емулатора от меню Android/Reset Connections.

Приложението стартирано в емулатора

 

Приложението стартирано на телефона

Полезни връзки

http://wiki.processing.org/w/Android
http://labs.arduino.cc/ADK/Index
http://developer.android.com/guide/topics/usb/adk.html

август 13, 2011

Гласувайте за любимия проект от конкурса „Ардуино в Интернет“

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

Започва гласуването в конкурса „Ардуино в Интернет“ и това кой ще грабне апетитните награди зависи изцяло от вас. Гласуването е във Facebook и е отворено за всеки желаещ да участва в определянето на победителите. Гласуването започва от днес, 13 август, и ще продължи до 23:59:59 часа на 31 август.

Участват пет много интересни и добре документирани проекти,  и това че са с отворен код подобрява потенциала им да се развиват и усъвършенстват.

Може да видите по-подробни описания и да изтеглите електрическите схеми и кодовете за проектите от следните линкове:

1. ArduinoWebTVGuide – Интернет дистанционно за телевизор (от Ивайло Димов)
2. Бирко 1 – робот носещ бира (от Кристиян Димитранов)
3. Градински контролер – интелигентна поливна система с възможност за контрол и следене през Интернет (от Милен Стойчев)
4. Мобилен Google+ нотификатор – система за известяване когато се случи нещо в Google+ мрежата ни (от Бойко Казаков)
5. Пет зонов термостат – модерен и енергоефективен начин за управление и следене на домашна отоплителна система (от Михаил Панайотов)

Проектите за борят за три награди на обща стойност над 500:

1-во място: GPRS Shield даващ на проекта ви достъп до GSM/GPRS мрежите и съответно възможност за приемане на обаждания, набиране на номера, изпращане и получаване на SMS/MMS, и разбира се, достъп до интернет.

2-ро място: Wi-Fly Shield за да може следващия ви проект да се свързва към безжичните Wi-Fi мрежи.

3-то място: GPS Shield в комбинация с GPS модул – най-популярния начин за определяне на точно местоположение.

Благодарим на всички участници за добре измислените, реализирани и документирани проекти. Желаем на всички силна подкрепа и успех в конкурса.

август 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, 2011

Още Ардуино RGB лампи

Публикувано в: Uncategorized — robotev @ 20:06

Миналия уикенд се състоя Ателието „Интерактивни обекти с Ардуино“ в рамките на Малкия сезон на театър Сфумато.

В последния ден от ателието, всички участници показаха и инженерна мисъл и художествени заложби. Всички участници (без един) се докоснаха за пръв път до Ардуино на ателието и резултатите са впечатляващи.

   

За мен най-нестандартните идеи бяха „Неработещата лампа“ на Николай Христов и „Диско подложката“ на Слав Калчев.

Също като съветски телевизор (ако не знаете какво е това питайте родителите си, ако и те не знаят питайте баба и дядо) и Неработещата лампа трябва да се удари „случаен“ брой пъти за се стабилизира и поне за малко да заработи както трябва.

Диско подложката пък чува и анализира музиката, която слушате и помага на чашата ви да танцува в ритъм.

Филмчета с всички лампи може да видите в YouTube канала ни, а снимките са във Flickr профила.

юни 16, 2011

Ателие „Интерактивни обекти с Ардуино“ в малкия сезон на Сфумато

Публикувано в: Обучавам — Етикети:, , — robotev @ 9:28

Театрална работилница Сфумато и Роботев предлагат отлична възможност да се докоснете до микроконтролерите Ардуино и да направите първите си стъпки в света на интерактивните обекти и среди.

Ателието ще се проведе на 1, 2 и 3 юли, като участието е безплатно. Срокът за кандидатстване е 20 юни 2011. Побързайте, местата са ограничени. Заявки за участие се приемат на sfumato1@mbox.contact.bg и robotev@robotev.com.

Целта на ателието е да запознае участниците с основните теоретични и практически способи и похвати при създаването на интерактивни обекти и среди, като така предостави идеи, умения и стабилна основа за по-нататъшно развитие. Вярваме, че най-добрият начин за усвояване на нови знания е практическият и затова теорията ще бъде представена чрез редица практически експерименти и задачи.

В рамките на това тридневно ателие всеки участник ще изготви интерактивна RGB лампа реагираща на промяна в заобикалящата среда като например промяна в температурата, нивото на осветеност, приближаване, допир и др. В процеса на реализация на лампата, участниците ще се запознаят с хардуерните характеристики на микроконтролерите Ардуино, възможностите на средата за програмиране на тези микроконтролери, както и основните команди и синтаксиса на езика за програмиране.

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

Втория ден участниците ще изготвят еднакви интерактивни RGB лампи като в процеса ще се запознаят с по-сложни софтуерни команди и със способите за управление на потока на програмата. Третия ден всеки ще персонализира своята лампа като я накара да реагира на препочитаните от него промени в заобикалящата среда и й придаде външен вид по свой вкус.

Предварителни познания по електроника и/или програмиране не са необходими. Ателието е отворено за всички желаещи като предпочитаните от нас участници са учениците и студентите от художествени учебни заведения. Предишен опит в създаването на макети от хартия е предимство.

Такса за участие в ателието няма, необходимо е единствено закупуването на следните компоненти и да носите свой лаптоп за да бъде участието пълноценно:

1 х Ардуино Uno
1 х USB кабел А към В
1 х Бредборд с 840 места за крачета
1 х Комплект проводници
1 х Мосфет IRF530
1 х DC Електромотор размер 130
5 х Обикновени светодиода (различни цветове)
2 х Супер ярки светодиода (червени)
2 х Супер ярки светодиода (зелени)
2 х Супер ярки светодиода (сини)
2 х Бутона
1 х Сензор за наклон
1 х Термистор
1 х Фоторезистор (LDR)
1 х Пиезо излъчвател
3 х Потенциометъра 10к ома
10 х Резистора 220 ома
10 х Резистора 10к ома

Цената на комплекта за участниците в уършопа е 89.00 лв и след приключване на събитието всички компоненти остават за вас.

Ателието се води от Симеон Янчев, основател на онлайн магазин robotev.com и лектор по “Електроника за Художници” в Националната Художествена Академия в София. Симеон е автор на превода на книгите „Запознанство с Ардуино“ и „Книжка за програмиране на Ардуино“. Помогнал e за реализацията на редица проекти като Ортомен (отличен с награда за съвременно Българско изкуство от М-Тел за 2009) и Универсална среща 2010 (отличен с първа награда в конкурса за съвременно изкуство на галерия ESSL за 2011).

По-стари »

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