Pull to refresh

Android + Arduino + 4 колеса. Часть 2

Reading time 15 min
Views 53K
Этот пост продолжение моей статьи «Android + Arduino + 4 колеса». Совсем не то, что я планировал описать следующим шагом. Я собирался решить задачу передачи видео от робота к ПК, но до сих пор нахожусь в стадии сбора информации. К сожалению мало свободного времени, а тут ещё пришлось переставлять систему на домашнем компьютере с нуля и заново настраивать среду разработки.

На фоне вопросов, заданных мне по почте о запуске исходников Мити (имя, зацепившееся за моим роботом) и моей внеплановой перестановки системы, решил описать, какой средой пользуюсь я, как её настраивать, как развернуть исходники и как запустить Митю. Если интересно, приглашаю читать далее. Картинок почти нет, никакого видео, сухой поток текста по настройке среды разработки. Суровая изнанка робототехники.

Надеюсь, эта статья пригодиться тем любителям DIY, кто испытывает недостаток опыта в части организации программирования .NET-приложений или Android-приложений. Вопросы языков программирования я поднимать не буду, но главный вопрос: «с чего начать?», думаю, здесь будет раскрыт.

Помимо описания установки трёх IDE для разработки .NET-приложений, Android-приложений и Arduino-скетчей в статье будет описана установка StyleCop (контроль оформления C#-кода) на Microsoft Visual C# 2010 Express, установка CheckStyle (контроль оформления Java-кода) под Eclipse и организация unit-тестирования в тех же Express-Студии и Eclipse.

Чем определён такой выбор инструментов разработки… Мой проект некоммерческий, домашний и открытый. Отсюда идея, что все программные продукты, задействованные в нём, будут бесплатные. Разве что Windows не вписывается в этот ряд (на моём компьютере установлена операционная система Windows 7 x64). Сейчас, правда, разработку под Android и Arduino я веду и под Ubuntu (пришлось ради замысла передачи видео от робота к ПК), но это отдельная история и о ней пока рано. Должен сказать, что на работе я привык пользоваться платной версией Visual Studio (Professional). В отличие от Express-версии она расширяема и набор плагинов, к которому я привык, делает работу гораздо более приятной. Тем не менее, мне удалось поставить всё самое необходимое «на» Express-версию и сделать её чуточку более функциональной.

Я сомневался публиковать ли эту статью и публиковать ли в DIY, но посчитал, что это неотъемлемая часть Мити не менее важная, чем сборка механики робота или монтаж его электроники. Часто DIY-проект объединяет в себе сразу много очень разных тем: механика, электроника, программирование. А программирование тут получилось и под Arduino, и под Android, и под Windows – три языка программирования и три разных среды разработки. Любитель DIY, как правило, универсал, но, думаю, помощь ему не помешает, и эта статья пригодиться в другом проекте.

Статья получилась опять большая, поэтому приведу оглавление:

Пара слов почему мой робот Митя. Имя ему дала жена, вспомнив Тр-тр Митю из Простоквашино (если кто не в курсе, «Тр-тр» это ТРакТоР, а «Митя» это Модель Инженера ТЯпкина). Так получился тёзка. Хотя никакой я не тяпкин. И Митей не даю себя называть. А он никакой не трактор. Но жене всё это не докажешь, и имя Митя закрепилось за моим трактором роботом дома, на работе, среди друзей, поэтому будет проскакивать дальше в статье.

Теперь по порядку.

Загрузка исходников


Проект опубликован на гугловском сервисе code. Я использую систему управления версиями Subversion (SVN), поэтому для получения исходников рекомендую поставить какой-нибудь SVN-клиент, например, TortoiseSVN.

Скачать последнюю версию TortoiseSVN можно здесь. Тут же выложен русский языковой пакет, но я им как-то не привык пользоваться.

Тему систем управления версиями я вынесу за рамки этой статьи, но для тех, кто с SVN пока незнаком, на всякий случай опишу, как выгрузить исходники на локальный диск.

После установки TortoiseSVN создать где-нибудь папку, назвав её, например, “robot-mitya”. Кликнуть на ней правой кнопкой мыши и выбрать в контекстном меню пункт “SVN Checkout...”. В открывшемся окне в поле “URL of repository” скопировать текст “http://robot-mitya.googlecode.com/svn/trunk/”. В поле “Checkout directory” должна быть указана папка “robot-mitya”. Нажать OK. В папку “robot-mitya” будут загружены все исходники, и там появятся каталоги Android, Arduino и Windows.

Windows


В папке Windows содержатся исходники Windows-приложения, реализующего пользовательский интерфейс и передающего команды на уровень Android-приложения. Приложение написано на C# с использованием фреймворка XNA. Опишу, как всё это настроить.

Установка и настройка Visual Studio

Точнее, установка и настройка Microsoft Visual C# 2010 Express. Здесь скачайте инсталляционный файл. При инсталляции можно отказаться от Microsoft Silverlight и Экспресс-выпуска Microsoft SQL Server 2008. Они не нужны Мите.

Затем установите Microsoft XNA Game Studio 4.0. Дистрибутив лежит тут. После установки в студии появится возможность работать с проектами, созданными на основе шаблона “Windows Game”. Проект RobotGamepad.csproj как раз тот самый случай.

Установка StyleCop и настройка решения

Для контроля качества кода C# я использую StyleCop. Это не обязательный, но, на мой взгляд, крайне полезный инструмент. Особенно для начинающих.

Если вы не хотите им пользоваться, или у вас Visual Studio версии Professional и выше, необходимо проверить файлы проектов “robot-mitya\Windows\RobotGamepad\RobotGamepad\RobotGamepad\RobotGamepad.csproj” и “robot-mitya\Windows\RobotGamepad\RobotGamepadTest\RobotGamepadTest.csproj”. В них не должно быть строк:

<Import Project="$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.3\Microsoft.SourceAnalysis.Targets" />

Путь к файлу “Microsoft.SourceAnalysis.Targets” может немного отличаться. Это зависит от версии StyleCop.

Если вы будете использовать StyleCop с Visual Studio Professional и выше, то достаточно установить его, выбирая параметры установки по умолчанию. Дистрибутив можно скачать здесь. При установке StyleCop интегрируется в Студию.

Если вы хотите использовать StyleCop под Visual Studio версии Express, то придётся немного похимичить, так как Express-версия не поддерживает расширений.

Во время инсталляции необходимо выбрать “Custom Setup” и отметить для установки “MSBuild integration files”.

Установка MSBuild

После установки StyleCop, в файлах проектов, для которых вы хотите включить контроль качества кода («robot-mitya\Windows\RobotGamepad\RobotGamepad\RobotGamepad\RobotGamepad.csproj» и «robot-mitya\Windows\RobotGamepad\RobotGamepadTest\RobotGamepadTest.csproj»), после строки

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

необходимо добавить строку

<Import Project="$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.3\Microsoft.SourceAnalysis.Targets" />

Делать это лучше в Notepad. Путь к файлу “Microsoft.SourceAnalysis.Targets” надо предварительно уточнить в каталоге “Program Files”. Ещё раз подчеркну, добавление этой строки нужно только для «прикручивания» StyleCop к Express версии Студии. Для Professional версии и выше ничего делать не надо – инсталлятор StyleCop всё сделает сам.

StyleCop установлен, теперь отклонения от правил оформления кода будут наказываться предупреждениями компилятора.

Установка и настройка NUnit

Для модульного тестирования я использую NUnit. На момент написания этой статьи это был NUnit версии 2.5.10. При установке все опции инсталлятора оставляем по умолчанию.

Для настройки выполняем следующие шаги:
  1. В проекте “RobotGamepadTest” удалить и заново добавить ссылки “nunit-console-runner” и “nunit.framework”. Библиотеки размещены в папке, в которую был установлен NUnit, путь к ним может отличаться от того, который был установлен в проекте, поэтому лучше их перепривязать.
  2. Запустить “c:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-x86.exe”. Выполнить тесты, убедиться, что всё работает. «x86» может и не быть, просто у меня Windows 7 x64 и тестовый проект, собранный под x86.
  3. Настроить запуск тестов. Для этого добавляем вызов пользовательского интерфейса NUnit во внешние инструменты Студии:
    • Поставить галку в меню Сервис > Параметры > Расширенные параметры. Просто «Параметры», не «Параметры…»!
    • Выбрать Сервис > Внешние инструменты…
    • В диалоге «Внешние инструменты» заполнить поля:
      Диалог Внешние инструменты
    • Назначить запускаемым проектом RobotGamepadTest. Для этого правый клик на проекте RobotGamepadTest, пункт контекстного меню «Назначить запускаемым проектом».

Android


Базовая настройка среды для программирования под Android описана тут. Официального русского перевода пока нет, так что ниже опишу свои действия. К тому же базовую настройку я несколько расширю особенностями проекта.

Кстати, на Хабре эта тема уже поднималась, но цель моей статьи подготовка среды для проекта робота Мити, поэтому придётся где-то повториться. Тем более, что будут и отличия.

Устанавливаем Java Development Kit (JDK)

Дистрибутив лежит здесь.

Для Windows 7 x64 я загружаю последнюю на сегодняшний день версию JDK: jdk-7u3-windows-x64.exe. Установка не составит труда – оставляем все опции по умолчанию.

Устанавливаем Android SDK

Скачать SDK тут. Можно Windows-инсталлятор, а можно и zip-архив. Я делал и так и так, сейчас это вообще было копирование папки “Android-SDK” с другого винчестера (эх, когда-то у меня уже всё было). Устанавливать рекомендую в папку “c:\android-sdk”.

Устанавливаем IDE

Я использую Eclipse Classic 3.7.1. Скачать можно тут. Опять же версию под Windows 7 (в моём случае под x64). Получим архив “eclipse-SDK-3.7.1-win32-x86_64.zip”. Его я распаковал непосредственно в корневой каталог диска C. В своё время я уже «постигал» Виртуальное хранилище от Microsoft в версиях Windows Vista и Windows 7. Я умею бороться с этим безумием, но ходить по одним и тем же граблям нет желания. Поэтому я не ставлю Eclipse в Program Files. Если не хотите захламлять корневой каталог (дальше ещё накидаем туда папок), рекомендую завести один всё же в корне, а остальное уже сваливать в него.

Теперь можно запустить Eclipse (у меня c:\eclipse\eclipse.exe). При первом запуске появится окно “Workspace Launcher” с предложением выбрать рабочий каталог (workspace). Я указал “c:\robot-mitya”. Далее откроется IDE Eclipse. Проекты Мити пока не открываем – ещё надо кое-что сделать.

Устанавливаем ADT-плагин для Eclipse

Плагин Android Development Tools (ADT) расширяет функции Eclipse как раз в части разработки ПО под Android. Для установки и настройки ADT-плагина делаем следующее:
  1. Меню Help > Install New Software…
  2. Кнопка Add.
  3. В диалоге “Add Repository” в поле Name ввести, например, “ADT Plugin”, в поле Location – “https://dl-ssl.google.com/android/eclipse/”, нажать OK.
  4. В диалоге “Available software” поставить галочку напротив “Developer Tools”, нажать Next, ещё Next, принять лицензионное соглашение, нажать Finish.
  5. Перезапустить Eclipse (он сам предложит).
  6. Eclipse после перезапуска поприветствовал меня окном “Welcome to Android Development” и предложил заново скачать Android SDK или указать папку уже установленного SDK. Естественно, я выбрал последнее и нажал Next, далее я воспользовался своим правом отказаться слать в Google статистику и покончил с этим окном. В мануале, из которого я черпал все эти знания, к слову сказать, об этом окне не было ни слова. Там описан другой способ задать путь к Android SDK. На всякий случай опишу его: меню Window > Preferences, затем слева выбрать Android и справа заполнить поле “SDK Location”.

Установка/обновление пакетов под платформу

Запускаем “SDK Manager”. Теперь это можно сделать прямо из Eclipse (меню Window > Android SDK Manager), вроде бы и удобно, но не советую. Дело в том, что менеджер открывается почему-то как модальное окно, и Eclipse вы на время работы с менеджером теряете. Сейчас это ещё не страшно, а вот когда начнёте программировать, будет неудобно. Так что лучше запускать менеджер, минуя IDE: “c:\android-sdk\SDK Manager.exe”.

Это моё самое нелюбимое место настройки среды разработки под Android. Не знаю почему, но SDK-менеджер ужасно нетороплив. Счёт трафика идёт на гигабайты, счёт времени на часы (даже на ночь оставлял!). Не понимаю с чем это связано и что он там делает, но быстрым шаг установки пакетов я назвать не могу. Мне сейчас удалось пропустить этот шаг, потому что я копировал уже ранее настроенный каталог c:\android-sdk. И то, даже его копирование с внешнего HDD заняло минут двадцать. У меня этот каталог содержит около 67 тысяч файлов.

Для Мити, как я понимаю, достаточно пакетов “SDK Platform” и “Google APIs by Google Inc.” из Android 2.3.3 (API 10), а также пакетов из групп “Tools” и “Extras”. Правда, я ставил пакеты под все платформы. От жадности, да и мало ли какими проектами я ещё займусь. Так что можете существенно сэкономить на времени установки пакетов.

Честно сказать, назначение большинства пакетов – для меня загадка. Несколько из них не устанавливаются, но это, как я понял, нормально.

Android SDK установлен и настроен, если есть желание можно посмотреть что внутри и почитать о его содержимом здесь. Для любителей командной строки здесь даже рекомендуют добавить пути к папкам tools/ и platform-tools/ в переменную окружения PATH. Я пока вполне обходился без командной строки.

Установка Eclipse Market (опционально)

Очень удобный сервис для поиска и установки плагинов в Eclipse. Мне кажется, что раньше после установки Eclipse Indigo (версия, которую мы сейчас установили), Market уже входил в состав IDE, но нет, или я ошибаюсь, или уже не входит.

Для установки делаем следующее:
  1. Меню Help > Install New Software…
  2. В открывшемся диалоге “Install” в поле “Work with” из выпадающего списка выбираем “Indigo — httр://download.eclipse.org/releases/indigo”.
  3. Ниже в поле фильтра набираем слово “market”, например. В отфильтрованном списке ставим галочку напротив “Marketplace Client”.
  4. Next, Next, принимаем условия лицензионного соглашения, Finish, Restart now (Ecplipse).

Теперь в меню Help появится пункт “Eclipse Marketplace…”.

Установка Checkstyle (опционально)

Полезный инструмент, аналог StyleCop в Visual Studio, не позволяющий безобразничать при оформлении кода. Настоятельно рекомендую поставить, особенно, начинающим (а потом уже деваться некуда). Установка:
  1. Меню Help > Eclipse Marketplace…
  2. В поле “Find” набрать “checkstyle”, нажать кнопку “Go”.
  3. Будет найден “Checkstyle Plug-in”, нажать кнопку “Install”, дальше всё и так ясно.

Теперь нехорошие с точки зрения правил Checkstyle части кода будут помечены чем-то желтым и их придётся исправлять. Для своих проектов я использую набор правил “Sun Checks (Eclipse)”, входящий в поставку плагина. Правила оформления кода можно настраивать, но я категорически против подстраивания правил Checkstyle (да и любой системы контроля оформления кода) «под себя», «под компанию» или «под проект». Это путь в никуда, можно тогда и не вводить контроль оформления кода. Но одно правило меня всего такого принципиального довело-таки до ручки и пришлось его отключить. Каюсь. Это ограничение максимальной длины строки в 80 символов. 80 символов на современном мониторе выглядит странно. В описании правила сказано: «Rationale: Long lines are hard to read in printouts or if developers have limited screen space for the source code, e.g. if the IDE displays additional information like project tree, class hierarchy, etc.». Жалкое объясненишко.

В Android-проекты Мити уже добавлена конфигурация Checkstyle, поэтому дополнительно настраивать ничего не придётся.

Добавление проектов в рабочий каталог (workspace)

  1. Добавляем проект RoboHead. Меню File > New > Project…
  2. В открывшемся диалоге “New Project” на шаге “Select a wizard” раскрыть список Android, выбрать “Android Project”. Нажать кнопку Next.
  3. На шаге “Create Android Project” выбрать опцию “Create project from existing source” и указать Location “c:\robot-mitya\Android\RoboHead”.
  4. Здесь же (шаг “Create Android Project”) в поле “Project Name” вписать “RoboHead”. Next.
  5. На шаге “Select build target” убедиться, что выбрана платформа “Google APIs” с API Level 10. Next.
  6. На шаге “Application Info” в поле “Application Name” указать “RoboHead”. Finish.
  7. Теперь добавляем проект RoboHeadTest. Опять Меню File > New > Project…
  8. В диалоге “New Project” на шаге “Select a wizard” раскрыть список Android, выбрать “Android Test Project”. Нажать кнопку Next.
  9. На шаге “Create Android Project” в поле “Project Name” вписать “RoboHeadTest”.
  10. Здесь же (шаг “Create Android Project”) выбрать опцию “Create project from existing source” и указать Location “c:\robot-mitya\Android\RoboHeadTest”. Next.
  11. На шаге “Select build target” убедиться, что выбрана платформа “Google APIs” с API Level 10. Next. Я сталкивался со случаями, когда на этом пункте кнопка Next, будучи активной, не нажималась. Тогда помогало откатиться к шагу добавления тестового проекта и добавить его не как “Android Test Project”, а как “Android Project”.
  12. На шаге “Application Info” в поле “Application Name” указать “RoboHeadTest”. Finish.

Создание виртуального устройства (Android Virtual Device)

Виртуальное устройство или Android Virtual Device (AVD) – это эмулятор телефона, на котором можно будет запускать Android-приложения и тесты. Хотя я чаще отлаживался прямо на телефоне.

Прежде чем создать виртуальное устройство, рекомендую в Windows подправить переменные среды:
  1. Добавьте новую системную переменную ANDROID_SDK_HOME со значением, например “c:\android-sdk”. В Сети вокруг особенностей Windows 7 и этой переменной много обсуждений. При ошибках загрузки Android на эмуляторе под Windows 7 рекомендуют определить эту переменную. Я с такими проблемами не столкнулся, но мне понравилось то, что эта переменная переназначает каталог, в котором хранятся образы и настройки созданных виртуальных устройств. По умолчанию этот каталог погребён где-то в папке пользователя.
  2. Раз уж мы в диалоге настройки переменных среды, можно пополнить список путей в переменной PATH. Добавляем “c:\android-sdk\tools\;c:\android-sdk\platform-tools\”.

Для создания виртуального устройства запускаем приложение “c:\android-sdk\AVD Manager.exe”. Его же можно вызвать и из Eclipse, но тоже (как и SDK Manager) почему-то в виде модального окна (Window > AVD Manager). Не забудьте перезапустить Eclipse, если он был загружен до определения переменных среды. Жмём “New…”, в открывшемся диалоге заполняем поле “Name”, например, “Google_APIs_Level_10” (пробелы не допускаются), в поле “Target” выбираем “Google APIs (Google Inc.) – API Level 10”. Остальные поля можно оставить без изменений. Кнопка Create AVD. Если мы переопределили переменную ANDROID_SDK_HOME, в папке “c:\android-sdk” появится папка “.android” с образом и конфигурацией виртуального устройства.

Пробуем запустить виртуальное устройство: выбираем его в списке и нажимаем кнопку “Start…”, далее “Launch”. Первый запуск будет довольно долгим.

Запуск приложения на телефоне

Настройка телефона:
  1. В меню телефона выбираем Настройки > Приложения. Ставим галочку на опции «Неизвестные источники».
  2. Здесь же выбираем подпункт «Разработка» и ставим галочку на опции «Отладка USB».

Теперь необходимо установить драйвер для доступа к телефону. Если у вас Android Developer Phone (а вдруг?), Nexus One, или Nexus S, Гугл предоставляет свой драйвер. В остальных случаях Гугл отсылает к производителям. Самым простым способом поставить драйвер под мой HTC Sensation, оказалось поставить HTC Sync (программа бесплатная).

Теперь всё готово для загрузки в телефон и запуска приложения RoboHead. Переходим в Eclipse, на проекте RoboHead жмём Run, в открывшемся диалоге выбираем телефон и на его экране должен будет появиться довольный Митя.

Arduino


Установка и настройка среды разработки подробно описана на сайте проекта Arduino. Кратко опишу установку под Windows. Единственное дополнение к типовой установке, требующееся проекту, добавление двух библиотек.

Установка IDE

Текущий на момент написания статьи скетч написан под Arduino версии 1.0. Он точно совместим с версией Arduino 0022 и 0023. Относительно других версий утверждать не могу, не проверял. Скачать архив с IDE можно здесь. Я распаковал архив прямо в корневой каталог диска C.

Установка драйверов Arduino Uno в Windows 7

Обещают, что установка в Vista идентична. Выполняем следующие шаги:
  1. Подключаем Arduino Uno к компьютеру. На контроллере должен загореться зелёный светодиод-индикатор питания. Windows начинает усиленно имитировать установку драйвера.
  2. Windows разоблачает себя сообщением «Программное обеспечение драйвера не было установлено».
  3. Открываем Диспетчер устройств (Device Manager). Видим Arduino Uno с восклицательным знаком. Правый клик на Arduino Uno, «Обновить драйверы…». Далее выбираем «Выполнить поиск драйверов на этом компьютере». И указываем путь “C:\arduino-1.0\drivers”. Windows заподозрит издателя в недобром, но мы должны проявить настойчивость. Результат: «Обновление программного обеспечения для данного устройства завершено успешно». В заголовке окна указан порт. У меня это был COM3. Запомните номер, он нам пригодится.

Запуск и настройка IDE

Теперь можно запускать “c:\arduino-1.0\arduino.exe”, чтобы снова простить «неизвестного издателя» и поставить пару полезных галочек.
  1. В меню File > Preferences можно включить опцию “Automatically associate .ino files with Arduino”. Странно, но у меня эта опция не сохраняется. Пришлось ассоциировать расширение файла с IDE вручную.
  2. Убедиться, что в меню Tools > Board выбран контроллер Arduino Uno.
  3. В меню Tools > Serial Port выбрать COM-порт, к которому подключен контроллер. Ранее мы его запомнили, у меня это был COM3. Если не запомнили, смотрим в Диспетчере устройств.

Проверка установки и настройки IDE Arduino

В инструкции на сайте arduino.cc предлагают завершить установку и настройку IDE запуском демонстрационного скетча. Для этого выполняем следующие действия:
  1. Меню File > Examples > 1.Basics > Blink. Откроется окно IDE с коротеньким скетчем, позволяющим моргать жёлтым светодиодом, установленным на плате контроллера.
  2. Для проверки компиляции скетча кликаем пункт меню Sketch > Verify / Compile.
  3. Для загрузки скетча в память контроллера и запуска на исполнение выбираем пункт меню File > Upload. Всё, светодиод на 13-ой ноге контроллера должен начать мигать с периодом в 2 секунды.

Установка библиотек, необходимых скетчу Мити

Для компиляции скетча Мити нам понадобится две библиотеки, не входящие в стандартную поставку IDE Arduino. Со странички проекта необходимо загрузить архивы IRremote.zip и USBHostShield2.zip. Всё что нужно сделать для установки библиотек, это распаковать эти архивы в папку “C:\arduino-1.0\libraries” и перезапустить IDE Arduino.

Всё, можно заливать Митин скетч в контроллер.

Запуск Мити


Для управления Митей с ПК телефон и компьютер должны быть в одной локальной сети. Замечательно, что мой смартфон может ещё выступать и в роли роутера, поэтому можно обходиться без внешнего Wi-Fi роутера.

Итак, на данный момент:
  • смартфон и ПК подключены в одну локальную сеть;
  • в Митин контроллер залит скетч robot_control.ino;
  • на телефоне установлено приложение RoboHead;
  • к ПК подключен XBOX 360 Gamepad;
  • откомпилировано и готово к запуску Windows-приложение RobotGamepad.exe.

Включаем питание робота. Сервоприводы поднимут держатель для упрощения установки телефона. Подключаем и закрепляем на держателе телефон. На телефоне должна сработать идентификация подключения к контроллеру робота, и автоматически запустится приложение RoboHead.

Теперь запускаем приложение RobotGamepad на ПК и нажимаем кнопку Start на геймпэде. Митя готов, поехали!

UPD:
Я уже говорил, что для Мити пришлось развернуть среду разработки под Android и на Ubuntu (11.10). Тут есть некоторые особенности. Я уж не буду мучить хабрапользователей повторением и так довольно нудной статьи, поэтому если кому-нибудь эта тема интересна, всё описано здесь.
Tags:
Hubs:
+23
Comments 8
Comments Comments 8

Articles