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

май 24, 2011

Конкурс „Arduino в интернет“

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

konkursArduinoInternetРоботев, българският магазин за хоби електроника, прототипи и интерактивни обекти, обявява началото на конкурс за проект с отворен код. Проектът трябва да използва микроконтролер Arduino за да свърже физическия и виртуалния свят. Това включва всички проекти, в които до физическия свят достига информация за събитие, случило се в интернет (или обратно), както и всички проекти, в които събитие от виртуалния свят поражда друго събитие в реалния (или обратно).

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

 

Условията, на които трябва да отговарят проектите са:

- Кодът за микроконтролера (или микроконтролерите) да е написан и качен от средата за програмиране на Arduino. Няма изискване и за кода на останалите компоненти в проекта – те може да са програмирани на PHP, Python, Flash, Java, Processing, Ajax или, който друг език за програмиране ви е най-удобен.

- Да има обмен на информация (данни) между микроконтролера и интернет.

- В духа на платформата Arduino кода и всички електрически схеми да бъдат споделени.

- Описание на проекта, снимки и/или видео, електрическите схеми и кода да са изпратени на имейл адрес robotev@robotev.com не по-късно от 31 юли 2011.

- Описанието и видеото (ако има) да са на български език.

Крайният срок за представяне на проектите е 31 юли 2011, като победителите ще бъдат определени в онлайн гласуване, което ще протече от 5 до 19 август.

Роботев ще награди трите проекта събрали най-много гласове, като наградите са на обща стойност над 500 лв:

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

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

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

Примерни проекти, от които може да почерпите опит и вдъхновение, са системите за автоматизиране на дома (като тази за дистанционно хранене на котки); музикални системи (като този проект за просвирване на песни композирани онлайн); системи за визуална индикация на настъпили събития в мрежата (като този известител за непрочетени имейли, или този за състоянието на Tower Bridge в Лондон), или системи за GPS проследяване на движещи се обекти.

Въпроси задавайте във формата за коментар или на robotev@robotev.com

Желаем услех на всички участници!

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