Начало работы с Arduino ADK
Первые шаги по настройке Arduino ADK
Предупреждение
Это снятый с производства продукт, и предоставленная информация может быть неточной или устаревшей. Она предоставляется «как есть» в целях документации.
Это руководство описывает, как подключить устройство Android к плате Arduino ADK (Mega ADK и USB Host shield). Кроме того, мы постарались сделать процесс максимально простым, сосредоточившись на использовании Processing вместо Eclipse в качестве инструмента для написания Android-приложений.
Здесь вы можете узнать, как подключить Arduino к Android через USB-кабель, который телефон (или планшет) использует для передачи данных, а также для зарядки аккумулятора. Вас также может заинтересовать использование Bluetooth в качестве альтернативы для связи Arduino и Android-устройства.
Телефоны, планшеты и стратегии подключения
Прежде чем двигаться дальше, вам нужно понять возможности подключения вашего Android-устройства. Это зависит не только от аппаратной конфигурации устройства, но и от программного обеспечения, которое на нём установлено.
Очень сложно отследить все возможные Android-устройства со всеми существующими версиями ОС и модификациями. Поэтому мы сосредоточимся на телефонах, которые не были рутированы и имеют официальные обновления. Это не означает, что следующие объяснения не могут работать для вашего устройства, и мы будем рады добавить вашу конфигурацию в список.
Различные конфигурации, перечисленные в этой таблице: Accessory Development Kit (ADK), использующий библиотеку Open Accessory, которая позволяет Arduino действовать как USB Host. Неофициальное USB-соединение между платой Arduino и Android-устройством построено с использованием сокетов поверх Android Debug Bridge (ADB) и может быть менее стабильным, чем ADK. USB Host – это стандартное USB-соединение, где Android-устройство выступает в роли USB Host.
Таблица 1: Варианты конфигурации
Android OS |
ADK |
ADB |
BT |
USB HOST |
|---|---|---|---|---|
OS < 2.2 (до Froyo) |
да |
|||
2.3.3 >= OS >= 2.2 |
да |
да |
||
OS >= 2.3.4 (телефоны) |
да |
да |
да |
|
OS >= 3.1 (планшеты) |
да |
да |
да |
да |
Запуск примеров в режиме ADK
Примеры для режима ADK для Processing были разработаны и протестированы на Arduino Mega ADK, но должны работать и для других аналогичных плат с поддержкой Open Accessory. Для режима ADK требуются следующие аппаратные и программные средства:
Плата или шилд Arduino, совместимые с ADK.
Nexus 5, Nexus 7, Samsung Galaxy S5 или любое другое устройство, поддерживающее режим Open Accessory. Большинство современных устройств его поддерживают (см. Таблицу 1).
Android SDK со всеми обновлениями до последней версии API.
Processing 2.2.1 или новее.
Arduino 1.0 или новее.
Библиотека USB-ADK для Arduino (включает класс AndroidAccessory).
Режим Arduino ADK Mode для Processing.
Примечание
Nexus 4 подтверждённо не работает с Open Accessory.
Установка SDK и начало разработки
Установка в Processing
Существует два способа установки режима ADK в Processing: через Mode Manager и вручную. Чтобы установить его через Mode Manager в Processing, выполните следующие шаги:
Откройте меню Mode в правом верхнем углу вашей IDE Processing и выберите «Add Mode…», см. Рисунок 1.
Рисунок 1: Найдите меню Mode в Processing IDE
Найдите ADK в текстовом поле и выберите install, как показано на Рисунке 2.
Рисунок 2: Найдите режим ADK и выберите install
Если Mode Manager не работает, вы всегда можете установить режим вручную. Выполните следующие шаги для ручной установки:
Скачайте AdkMode.zip с http://processing.arduino.cc/AdkMode.zip в известное расположение на вашем компьютере.
Распакуйте скачанный файл. Теперь у вас должна быть папка
AdkMode.Найдите ваш скетчбук Processing. В нём должна быть папка
modes. Переместите вашу папкуAdkModeтуда.Перезапустите Processing, если он был открыт.
Установка в Arduino
Вам также нужно скачать и установить библиотеки Arduino для Open Accessory. Выполните следующие шаги:
Скачайте файл
UsbHost.zipс http://processing.arduino.cc/UsbHost.zip.Распакуйте этот файл. Вы должны получить папку
USB-ADK.Переместите эту папку в папку библиотек вашего скетчбука Arduino.
Перезапустите Arduino, если он был открыт.
Установка Android SDK
Перед началом работы с режимом ADK вам также нужно установить Android SDK. Android SDK содержит все необходимые компоненты для создания Android-приложения – в настоящее время доступно 18 различных версий SDK, вам нужна только одна из них для разработки приложения.
Хотя стандартный режим Processing Android Mode требует только версии 10 (Android версии 2.3.3), режим ADK требует версии 12. Это связано с тем, что Open Accessory впервые был введён в версии 12 (большая «планшетная» версия). Внимательный читатель, который уже исследовал Open Accessory, заметит, что существует способ заставить Open Accessory работать с версией 10, однако это дополнительная библиотека, которая фактически соответствует версии 2.3.4 Android.
Чтобы установить правильную версию Android SDK, выполните следующие шаги:
Скачайте Android SDK For An Existing IDE с http://developer.android.com/sdk/index.html.
Запустите установщик или распакуйте архив, в зависимости от вашей операционной системы.
Откройте SDK Manager и установите Android 3.1, как показано на Рисунке 3.
Рисунок 3: Установка Android 3.1
Если вы работаете на компьютере с Windows, вам может потребоваться запустить SDK Manager от имени администратора, в зависимости от того, куда вы установили инструменты Android SDK.
Когда вы нажмёте Install, вам будет представлен диалог с просьбой подтвердить лицензионные соглашения – либо прочитайте их внимательно, либо просто выберите Accept License и нажмите Install.
Работа с реальными Android-устройствами
При разработке обычных Android-приложений у вас всегда есть возможность работать с Android-эмулятором вместо реального устройства. Однако есть вещи, которые эмулятор не может делать, обычно связанные с аппаратным обеспечением.
Open Accessory работает со стандартным USB-портом вашего устройства и изменяет его внутреннюю работу – устройство может принимать как роль Host, так и роль Device. Это часть спецификации On-The-Go (OTG), выпущенной в 2001 году. Всё это означает, что вам нужно иметь реальное Android-устройство для работы с Open Accessory и ADK.
Включение режима разработчика на телефоне
Для работы с реальными устройствами сначала нужно включить их как устройства для разработки. Процедура включения может отличаться от одного производителя к другому. Следующие инструкции применимы к стандартным Android-устройствам, таким как Nexus 5.
Откройте приложение настроек, см. Рисунок 4.
Рисунок 4: Откройте настройки
Выберите «О телефоне», как показано на Рисунке 5.
Рисунок 5: Выберите «О телефоне»
Нажимайте несколько раз на «Номер сборки», пока не получите информацию о том, что вы стали разработчиком, см. Рисунок 6.
Рисунок 6: Нажимайте несколько раз на «Номер сборки»
Вернитесь на один шаг и войдите в «Для разработчиков», внутри выберите флажок «Отладка по USB», как показано на Рисунке 7.
Рисунок 7: Включите отладку Android (adb)
Теперь у вас должно быть устройство с включённой отладкой ADB через USB. Это означает, что Android Debug Bridge открыт и что у вас есть доступ к устройству (хотя и ограниченный) и вы можете устанавливать неподписанные приложения непосредственно на него из Processing.
Установка драйверов для телефона
В зависимости от вашей операционной системы вам нужно выполнить различные настройки на вашем компьютере, прежде чем вы сможете разрабатывать на вашем устройстве.
Windows
Скачайте USB-драйверы для вашего устройства. Для получения дополнительной информации см. страницу OEM USB на сайте Android.
Mac OS
Пользователям Mac, вероятно, не потребуется выполнять никаких настроек – просто подключите ваше устройство для разработки к компьютеру.
Linux
Пользователям Linux потребуется изменить свои правила UDEV, чтобы они соответствовали идентификатору производителя устройства. Другой вариант, если правила UDEV не работают, – добавить идентификатор производителя в файл adb_usb.ini, который находится в папке ~/.android/. Подробнее здесь.
Процесс разработки
Разработка для Open Accessory и ADK немного особенная – есть несколько вещей, которые следует иметь в виду.
Установка приложения Processing на Android-устройство откроет приложение. Перед подключением Android-устройства к плате Arduino вы должны полностью закрыть приложение, нажав «Назад».
Примечание
Нажатие «Home» на устройстве не закрывает приложение, а лишь приостанавливает его выполнение.
Поскольку USB-порт отключён от вашей среды разработки, вы не можете рассчитывать на использование logcat, однако сообщения, отправленные в logcat, сохраняются после переподключения, и когда вы снова подключите Android-устройство к компьютеру, вы можете прочитать сообщения с помощью команды терминала:
adb -d logcat
Тестирование примера Analog Read
Чтобы протестировать доступные примеры, выполните следующие шаги:
Откройте Processing и переключитесь в режим ADK, если он ещё не включён.
В меню File выберите Examples…
Есть две категории: Basics показывает, как выполнять базовые операции, Topics содержит более сложные примеры. Разверните Basics и выберите AnalogRead.
Если вы прокрутите пример, вы сначала увидите скетч Processing, а внизу всегда будет соответствующий пример Arduino в многострочном комментарии.
Нажмите «Run on Device» (Play). Подождите, пока приложение скомпилируется, загрузится и запустится на вашем Android-устройстве.
Скопируйте код Arduino в Arduino IDE. Не забудьте удалить комментарии после копирования.
Подключите Arduino Mega ADK (или другую совместимую с ADK плату).
Нажмите Upload и дождитесь завершения операции.
Закройте Android-приложение, нажав «Назад» на устройстве.
Отключите USB-кабель от компьютера и подключите его к Arduino Mega ADK, как показано на Рисунке 8.
Рисунок 8: Подключение Android-устройства к Arduino
Если всё сработало правильно, вам будет представлен диалог, показанный на Рисунке 9.
Рисунок 9: Соединение успешно, и вы можете запустить соответствующее приложение
Open Accessory 101
Протокол Open Accessory работает путём переключения USB-порта на Android-устройстве между режимами Host и Device, что позволяет Android-телефону подключаться как к USB-аксессуарам, так и к USB-хостам.
Когда телефон обнаруживает, что подключено устройство с поддержкой Open Accessory, он принимает роль аксессуара, что означает, что он начнёт потреблять питание через USB-порт Arduino.
Arduino отправит специальный идентификационный паттерн на Android-устройство, сообщая ему, какой это тип Open Accessory, кто является производителем и какой номер версии. Вы можете просмотреть эту информацию в коде Arduino в каждом примере. Информация в коде Arduino должна совпадать с информацией, определённой в вашем скетче Processing. Чтобы просмотреть и изменить информацию в Processing, откройте меню ADK и выберите Set ADK meta.
Если информация недействительна, будет показан диалог на Рисунке 10. Это означает, что на Android-устройстве нет подходящего приложения для обработки Open Accessory, и вместо этого будет представлена ссылка. Эта ссылка может вести как на веб-сайт вашей компании/организации, так и на конкретный APK, который управляет этим Open Accessory.
Рисунок 10: К телефону подключён неизвестный Open Accessory