Arduino:Знакомство с Arduino/Руководство по Arduino ADK

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Руководство по Arduino ADK[1]

Это статья описывает, как подключить девайс на Android к плате Arduino ADK (Mega ADK или Micro ADK) и «шилду» Arduino USB Host.

Более того, мы старались сделать этот процесс как можно проще, в качестве инструмента для написания приложений к Android используя не Eclipse, а Processing.

Данное руководство научит вас подключать Arduino к девайсу на Android при помощи USB-кабеля, который смартфон (или планшет) использует для передачи данных и зарядки батареи. Кроме того, в качестве альтернативного метода для коммуникации между Arduino и Android-устройством можно воспользоваться Bluetooth.

Смартфоны, планшет и способы коммуникации

Перед тем, как двигаться дальше, вам нужно понять, какие средства для коммуникации имеются у вашего Android-устройства. Это зависит не только от «железа», которым оснащен девайс, но и от его ПО.

На данный момент существует много различных версий ОС и прочих модификаций, поэтому охватить все Android-девайсы будет сложно. Поэтому мы сосредоточимся на девайсах, которые «устоялись» и имеют официальные апдейты, однако это не значит, что инструкции ниже не подойдут для вашего устройства, которое в список «устоявшихся» не попадает. Если они подойдут, то разработчики просят вас поделиться данными о своей рабочей конфигурации, чтобы о ней могли узнать и другие.

Ниже приведена таблица, в которой указано, какие средства для коммуникации поддерживают разные версии ОС. Во-первых, тут есть Accessory Development Kit (ADK), использующий библиотеку Open Accessory, которая позволяет Arduino работать в качестве USB-хоста. Во-вторых, неофициальное USB-соединение между платой Arduino и устройством на Android можно организовать при помощи сокетов и отладочного моста Android (т.е. ADB – от англ. «android debug bridge»), но оно будет не таким стабильным, как ADK. В третьих, USB-хост – это стандартное USB-соединение, при котором Android-девайс работает в качестве USB-хоста.

Возможные конфигурации:

ОС Android ADK ADB Bluetooth USB-хост
ОС < 2.2 (pre Froyo) - Да - -
2.3.3 ≥ ОС ≥ 2.2 - Да Да -
ОС ≥ 2.3.4 (смартфоны) Да Да Да -
ОС ≥ 3.1 (планшеты) Да Да Да Да

Запуск скетчей-примеров в режиме ADK

Скетчи-примеры к режиму ADK для Processing были разработаны и проверены на Arduino Mega ADK и Arduino Micro ADK, но должны работать и на других платах с Open Accessory. Режиму ADK требуются следующее «железо» и ПО:

  • Плата или «шилд» Arduino, поддерживающие ADK
  • Nexus 5, Nexus 7, Samsung Galaxy S5 или любой другой девайс, поддерживающий режим Open Accessory (сейчас его поддерживают большинство устройств; подробнее смотрите в таблице выше)
  • Android SDK со всеми апдейтами вплоть до последней версии API
  • Processing 2.2.1 или новее
  • Arduino 1.0 или новее
  • Библиотека USB-ADK для Arduino (включая класс AndroidAccessory)
  • Режим Arduino ADKMode для Processing

Примечание: Подтверждено, что Nexus 4 не работает с Open Accessory.

Установка необходимого ПО

Установка режима ADK на Processing

Режим ADK на Processing можно установить двумя способами – через менеджер режимов («Mode Manager») или вручную. Чтобы установить режим ADK при помощи менеджера режимов, проделайте следующее:

  • Откройте меню режимов, которое находится в правом верхнем углу IDE Processing, и выберите там пункт Add Mode...
Расположение меню режимов в IDE Processing
  • Вбейте в текстовое поле «ADK», найдите режим ADKMode и установите его, как показано на картинке ниже:
Находим ADK Mode и устанавливаем

Если менеджер режимов не работает, вы всегда можете использовать ручную установку. Для этого проделайте следующее:

  1. Загрузите ZIP-архив с AdkMode отсюда
  2. Распакуйте загруженный архив; в итоге у вас должна получиться папка «AdkMode»
  3. Найдите, где находится папка скетчей IDE Processing. Чтобы сделать это, кликните на File > Preferences; появится окно, в верхней части которого будет пункт Sketchbook location – это есть месторасположение папки скетчей. Найдите в ней папку «modes». Переместите в нее распакованную папку «AdkMode»
  4. Если IDE Processing была открыта, перезапустите ее.

Установка необходимого ПО в IDE Arduino

Вам также нужно будет загрузить и установить в IDE Arduino библиотеки для Open Accessory. Для этого проделайте следующее:

  1. Загрузите ZIP-архив отсюда
  2. Распакуйте архив; у вас должна появиться папка «USB-ADK»
  3. Переместите ее в папку «libraries», находящуюся в папке скетчей IDE Arduino
  4. Если IDE Arduino была открыта, перезапустите ее

Установка Android SDK

Перед тем, как работать с режимом ADK, вам понадобится установить Android SDK. Он содержит все необходимое для создания Android-приложения – в настоящий момент доступно 18 разных версий SDK, но для разработки приложения вам понадобится лишь одна из них.

Если стандартному режиму Android в Processing достаточно версии 10 (версия Android 2.3.3), то режиму ADK требуется версия 12. Дело в том, что технология Open Accessory была впервые реализована в версии 12 (т.е. в большой «планшетной» версии). Те, кто уже слышал об Open Accessory, возможно знают, что она может работать и с версией 10, однако в этом случае используется дополнительная библиотека, соответствующая Android версии 2.3.4.

Чтобы установить правильную версию Android SDK, проделайте следующее:

  1. Загрузите отсюда Android SDK для своей IDE
  2. Запустите установщик или распакуйте архив – зависит от ОС, которая стоит на вашем компьютере
  3. Откройте SDK Manager и установите Android 3.1, как показано на картинке ниже:
Установка Android 3.1

Если вы работаете на компьютере, на котором установлена Windows, то SDK Manager, возможно, нужно будет запустить от имени администратора – в зависимости от того, куда вы установили инструменты Android SDK.

  • Когда вы нажмете на кнопку установки, появится новое окно, которое попросит подтвердить лицензионное соглашение. Можете либо внимательно его прочитать, либо просто выбрать Accept License, а затем кликнуть Install.

Работа с реальными девайсами Android

Когда вы разрабатываете приложение для Android, то использовать настоящий девайс необязательно – будет достаточно и эмулятора Android. Впрочем, есть некоторые вещи, которые эмулятор делать не может, и они, как правило, касаются «железа».

Технология Open Accessory работает со стандартным USB-портом вашего устройства и даже способна поменять то, как это устройство работает. В частности, девайс может взять на себя обе роли – и хоста, и «гостя». Это часть спецификации On-The-Go (OTG), выпущенной в 2001 году. Все это значит, что для работы с Open Accessory и ADK эмулятора будет недостаточно – вам понадобится реальное устройство на Android.

Включение на телефоне режима разработчика

Чтобы начать работать с девайсом, у него сначала нужно включить режим разработчика, но процедура включения может варьироваться в зависимости от производителя девайса. Инструкции ниже применимы к стандартным Android-девайсам вроде Nexus 5.

  • Открываем приложение с настройками
Открываем настройки
  • Выбираем пункт «About Phone»
Выбираем About Phone
  • Многократно нажимаем на пункт «Build number», пока не получаем сообщение о том, что вы – разработчик
Много раз жмем на Build Number
  • Идем на шаг обратно, кликаем на «Developer Options» и включаем там пункт «Android Debugging»
Включаем Android Debugging

Теперь на вашем девайсе включена ADB-отладка через USB. Это значит, что отладочный мост Android открыт, и у вас есть доступ к устройству (пускай и ограниченный). Благодаря этому вы можете устанавливать на него неподписанные приложения – напрямую из Processing.

Установка драйверов для телефона

Перед тем, как приступить к разработке, вам потребуется, возможно, выполнить на вашем компьютере определенные настройки. Какие именно, зависит от ОС, стоящей на компьютере.

Windows

Загрузите USB-драйверы для своего устройства. Более подробно читайте на этой странице на сайте Android.

Mac OS

На этой ОС, по всей видимости, не нужно делать никаких настроек. Просто подключите девайс, на котором активирован режим разработчика, к компьютеру.

Linux

Пользователям этой ОС потребуется, возможно, модифицировать правила UDEV, чтобы они соответствовали ID фирмы, изготовившей устройство. Если модификация правил UDEV не сработает, то ID производителя можно добавить в файл «adb_usb.ini», который находится в папке «~/.android/».

Подробнее можно прочесть тут.

Процесс разработки

Разработка при помощи Open Accessory и ADK имеет определенные особенности:

  1. Установка приложения Processing на Android откроет его. Поэтому перед тем, как подключить Android-девайс к плате Arduino вы должны полностью закрыть приложение, нажав на кнопку «Назад». Примечание: Если нажать на девайсе кнопку «Дом», то приложение не закроется, а лишь станет на паузу.
  2. Когда USB-порт отключен от IDE, то LogCat, по сути, бесполезен. Однако сообщения, идущие на LogCat, «выживают», и когда вы снова подключите Android-устройство к компьютеру, то сможете прочитать их при помощи консольной команды
adb -d logcat

Тестирование примера Analog Read

Чтобы протестировать пример, проделайте следующее:

  1. Откройте Processing и переключитесь в режим ADK (если он еще не включен)
  2. Зайдите в меню File и выберите пункт Examples...
  3. Там будет две категории: примеры Basics показывают, как выполнять базовые операции, а Topics содержат более сложные примеры. Раскройте Basics и выберите AnalogRead
  4. Если вы проскроллите этот пример, то сначала увидите скетч Processing, а внизу – соответствующий скетч-пример Arduino с многострочным комментарием
  5. Кликните Run on Device (иконка Play). Подождите, пока приложение скомпилируется, загрузится и запустится на Android-устройстве.
  6. Скопируйте код Arduino в IDE Arduino; после копирования удалите комментарии
  7. Подключитесь к Arduino Mega ADK (или к другой плате, поддерживающей ADK)
  8. Кликните на Upload и подождите, пока операция закончится
  9. Закройте приложение на Android, нажав на девайсе кнопку «Назад»
  10. Отключите USB-кабель от компьютера и подключитесь к Arduino Mega ADK, как показано на рисунке ниже
Подключите Android-девайс, на который установлено приложение, к Arduino
  • Если все работает как нужно, должен появиться диалог, как на картинке ниже:
Соединение выполнено успешно, и вы можете запустить приложение

Open Accessory 101

Протокол Open Accessory переключает USB-порт на Android-девайсе между режимами «хост» и «гость». Это позволяет Android-устройству подключаться и к USB-аксессуарам, и к USB-хостам.

Если телефон определит, что к нему подсоединено устройство со включенным Open Accessory, то определит свою роль как устройства-аксессуара, и это значит, что он начнет тянуть питание через USB-порт Arduino.

Arduino отправит Android-девайсу специальный идентификационный паттерн, в котором сообщит, каким типом Open Accessory он является, кто производитель и каков номер версии. Вы можете посмотреть эту информацию в коде Arduino в каждом примере. Информация в коде Arduino должна соответствовать информации, заданной в скетче Processing. Чтобы просмотреть и отредактировать эту информацию в Processing, откройте меню ADK и выберите пункт Set ADK Meta.

Если информация не верна, на экран будет выведен диалог из рисунка ниже, и это значит, что на ваш Android-девайс не установлено приложение для управления Open Accessory. Также будет показана ссылка. Эта ссылка может быть URL на сайт компании/организации или ссылка на специальный APK, управляющий этим Open Accessory.

К телефону был подключен неизвестный Open Accessory

Это руководство распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0. Примеры кода из этой статьи опубликованы без авторских прав.

См.также

Внешние ссылки