Arduino:Знакомство с Arduino/Руководство по Arduino ADK
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Руководство по 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...
![](/ruwiki/images/a/a1/ADK_addMode_1.png)
- Вбейте в текстовое поле «ADK», найдите режим ADKMode и установите его, как показано на картинке ниже:
![](/ruwiki/images/0/06/ADK_modeInstall_2.png)
Если менеджер режимов не работает, вы всегда можете использовать ручную установку. Для этого проделайте следующее:
- Загрузите ZIP-архив с AdkMode отсюда
- Распакуйте загруженный архив; в итоге у вас должна получиться папка «AdkMode»
- Найдите, где находится папка скетчей IDE Processing. Чтобы сделать это, кликните на File > Preferences; появится окно, в верхней части которого будет пункт Sketchbook location – это есть месторасположение папки скетчей. Найдите в ней папку «modes». Переместите в нее распакованную папку «AdkMode»
- Если IDE Processing была открыта, перезапустите ее.
Установка необходимого ПО в IDE Arduino
Вам также нужно будет загрузить и установить в IDE Arduino библиотеки для Open Accessory. Для этого проделайте следующее:
- Загрузите ZIP-архив отсюда
- Распакуйте архив; у вас должна появиться папка «USB-ADK»
- Переместите ее в папку «libraries», находящуюся в папке скетчей IDE Arduino
- Если 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, проделайте следующее:
- Загрузите отсюда Android SDK для своей IDE
- Запустите установщик или распакуйте архив – зависит от ОС, которая стоит на вашем компьютере
- Откройте SDK Manager и установите Android 3.1, как показано на картинке ниже:
![](/ruwiki/images/e/ef/ADK_installSDK_3.png)
Если вы работаете на компьютере, на котором установлена 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.
- Открываем приложение с настройками
![](/ruwiki/images/6/6e/ADK_AndroidSet_1_4.png)
- Выбираем пункт «About Phone»
![](/ruwiki/images/7/75/ADK_AndroidSet_2_5.png)
- Многократно нажимаем на пункт «Build number», пока не получаем сообщение о том, что вы – разработчик
![](/ruwiki/images/d/d6/ADK_AndroidSet_34_6.png)
- Идем на шаг обратно, кликаем на «Developer Options» и включаем там пункт «Android Debugging»
![](/ruwiki/images/e/e3/ADK_AndroidSet_5_7.png)
Теперь на вашем девайсе включена ADB-отладка через USB. Это значит, что отладочный мост Android открыт, и у вас есть доступ к устройству (пускай и ограниченный). Благодаря этому вы можете устанавливать на него неподписанные приложения – напрямую из Processing.
Установка драйверов для телефона
Перед тем, как приступить к разработке, вам потребуется, возможно, выполнить на вашем компьютере определенные настройки. Какие именно, зависит от ОС, стоящей на компьютере.
Windows
Загрузите USB-драйверы для своего устройства. Более подробно читайте на этой странице на сайте Android.
Mac OS
На этой ОС, по всей видимости, не нужно делать никаких настроек. Просто подключите девайс, на котором активирован режим разработчика, к компьютеру.
Linux
Пользователям этой ОС потребуется, возможно, модифицировать правила UDEV, чтобы они соответствовали ID фирмы, изготовившей устройство. Если модификация правил UDEV не сработает, то ID производителя можно добавить в файл «adb_usb.ini», который находится в папке «~/.android/».
Подробнее можно прочесть тут.
Процесс разработки
Разработка при помощи Open Accessory и ADK имеет определенные особенности:
- Установка приложения Processing на Android откроет его. Поэтому перед тем, как подключить Android-девайс к плате Arduino вы должны полностью закрыть приложение, нажав на кнопку «Назад». Примечание: Если нажать на девайсе кнопку «Дом», то приложение не закроется, а лишь станет на паузу.
- Когда USB-порт отключен от IDE, то LogCat, по сути, бесполезен. Однако сообщения, идущие на LogCat, «выживают», и когда вы снова подключите Android-устройство к компьютеру, то сможете прочитать их при помощи консольной команды
adb -d logcat
Тестирование примера Analog Read
Чтобы протестировать пример, проделайте следующее:
- Откройте Processing и переключитесь в режим ADK (если он еще не включен)
- Зайдите в меню File и выберите пункт Examples...
- Там будет две категории: примеры Basics показывают, как выполнять базовые операции, а Topics содержат более сложные примеры. Раскройте Basics и выберите AnalogRead
- Если вы проскроллите этот пример, то сначала увидите скетч Processing, а внизу – соответствующий скетч-пример Arduino с многострочным комментарием
- Кликните Run on Device (иконка Play). Подождите, пока приложение скомпилируется, загрузится и запустится на Android-устройстве.
- Скопируйте код Arduino в IDE Arduino; после копирования удалите комментарии
- Подключитесь к Arduino Mega ADK (или к другой плате, поддерживающей ADK)
- Кликните на Upload и подождите, пока операция закончится
- Закройте приложение на Android, нажав на девайсе кнопку «Назад»
- Отключите USB-кабель от компьютера и подключитесь к Arduino Mega ADK, как показано на рисунке ниже
![](/ruwiki/images/1/19/ADK_connectArduino_8.png)
- Если все работает как нужно, должен появиться диалог, как на картинке ниже:
![](/ruwiki/images/2/24/ADK_AnalogReadApp_9.png)
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.
![](/ruwiki/images/4/4e/ADK_unkownAccessory_10.png)
Это руководство распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0. Примеры кода из этой статьи опубликованы без авторских прав.
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |