Android и arduino. введение в adk

Arduino.ru

Arduino Mega ADK для Android



Общие сведения

Arduino ADK во многом повторяет Arduino Mega 2560 и построен на микросхеме ATmega2560 (техническое описание). Ключевое отличие в наличие USB Host интерфейса, который позволяет подключать контроллер к различным устройствам с интерфейсом USB, включая телефоны и другие устройства на базе Android. USB Host интерфейс реализован на микросхеме MAX3421e. Также как Mega 2560 плата имеет 54 цифровых входа/выходов (14 из которых могут использоваться как выходы ШИМ), 16 аналоговых входов, 4 последовательных порта UART, кварцевый генератор 16 МГц, USB коннектор, разъем питания, разъем ICSP и кнопка перезагрузки.

Последовательное подключение через USB реализовано на микросхеме Atmega8U2, так же как в платах UNO и Mega.

Более подробную информацию по подключению к Android устройствам можно подчерпнуть из официальной документации Google ADK.

Схема и исходные данные

Краткие характеристики
Микроконтроллер ATmega2560
Рабочее напряжение
Входное напряжение (рекомендуемое) 7-12В
Входное напряжение (предельное) 5.5-16В
Цифровые Входы/Выходы 54 (14 из которых могут работат также как выходы ШИМ)
Аналоговые входы 16
Постоянный ток через вход/выход 40 mA
Постоянный ток для вывода 3.3 В 50 mA
Флеш-память 256 KB (из которых 8 КB используются для загрузчика)
ОЗУ 8 KB
Энергонезависимая память 4 KB
Тактовая частота 16 MHz
Питание

Arduino ADK может получать питание как через подключение по USB, так и от внешнего источника питания. Источник питания выбирается автоматически.

Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с положительным полюсом на центральном контакте. Провода от батареи подключаются к выводам Gnd и Vin разъема питания (POWER).

Важное замечание: При подключении телефонов Android к плате, телефон будет запитываться от платы для зарядки аккумуляторов. Максимальный ток, доступный при питание по USB, — 500 mA. Внешние питание (не USB) должно быть расчитано на токи не менее 1500 mA. 750 mA зарезервировано для платы и подключенным Android устройствам и 750 mA для датчиков и других потребителей подключеным к выходам контроллера.

Платформа может работать при внешнем питании от 5.5 В до 16 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.

  • VIN. Вход используется для подачи питания от внешнего источника (в отсутствие 5 В от разъема USB или другого регулируемого источника питания). Подача напряжения питания происходит через данный вывод. Если питание подается на разьем 2.1mm, то на этот вход можно запитаться.
  • 5V. Регулируемый источник напряжения, используемый для питания микроконтроллера и компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или от разъема USB, или другого регулируемого источника напряжения 5 В.
  • 3V3. Напряжение на выводе 3.3 В генерируемое микросхемой FTDI на платформе. Максимальное потребление тока 50 мА.
  • GND. Выводы заземления.
Память

Контроллер Mega ADK имеет: 256 кБ флеш-памяти для хранения кода программы (4 кБ используется для хранения загрузчика), 8 кБ ОЗУ и 4 Кб EEPROM (которая читается и записывается с помощью библиотеки EEPROM).

Входы и Выходы

Каждый из 54 цифровых выводов Mega, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

  • Последовательная шина: 0 (RX) и 1 (TX); Последовательная шина 1: 19 (RX) и 18 (TX); Последовательная шина 2: 17 (RX) и 16 (TX); Последовательная шина 3: 15 (RX) и 14 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2.
  • Внешнее прерывание: 2 (прерывание 0), 3 (прерывание 1), 18 (прерывание 5), 19 (прерывание 4), 20 (прерывание 3), и 21 (прерывание 2). Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
  • PWM: 0 до 13. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
  • SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Посредством данных выводов осуществляется связь SPI, например, используя библиотеку SPI. Также выводы SPI могут быть выведены на блоке ICSP, который совместим с платформами Uno, Duemilanove и Diecimila.
  • USB host: MAX3421E. Связь Arduino с микросхемой MAX3421E осуществляется посредством шины SPI. При это задействованы следующие выходы:
    — Цифровые выходы: 7 (RST), 50 (MISO), 51 (MOSI), 52 (SCK).
    Важно: Не используйте цифровой выход 7, т.к. он задействован микросхемой MAX3421E
    — Выходы ATmega2560, не разведенные на коннекторы платы: PJ3 (GP_MAX), PJ6 (INT_MAX), PH7 (SS).
  • LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
  • I2C (TWI): 20 (SDA) и 21 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire (информация на сайте Wiring). Расположение выводов на платформе Mega не соответствует расположению Duemilanove или Diecimila.

На Mega ADK имеется 16 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством вывода AREF и функции analogReference().

Дополнительная пара выводов платформы:

  • AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
  • Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Связь

Arduino ADK поддерживает несколько способов осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega2560 имеет 4 порта последовательной передачи данных UART для TTL. Установленная на плате микросхема ATmega8U2 направляет один из интерфейсов через USB, предоставляя виртуальный COM порт программам на компьютере (машинам под упровлением Windows для корректной работы с виртуальным COM портом необоходим .inf файл, системы на базе OSX и Линукс, автоматически распознаю COM порт). Утилита мониторинга последовательной шины (Serial Monitor) среды разработки Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через микросхему ATmega8U2 и USB подключение (но не при использовании последовательной передачи через выводы 0 и 1).

Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Mega ADK.

ATmega2560 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C. Более подробная информация находится на сайте Wiring. Для связи по SPI, используется библиотека SPI.

USB host интерфейс позволяет Arduino ADK взаимодействовать с любыми устройствами, имеющими USB порт. Например, телефонами, управлять камерами Canon, подключать клавиатуры, игровые контроллеры и т.д.

Программирование

Платформа программируется посредством среды разработки Arduino. Подробная информация находится в справочнике и инструкциях.

Микросхема ATmega2560 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500v2.

Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.

Код прошивки для контроллера ATmega8U2 доступен для свободного скачивания. Контроллер ATmega8U2 имеет собственный DFU загрузчик, который может быть активирован замыканием джампера на обратной стороне платы (рядом с картой Италии) и перезагрузкой контроллера. Для записи новой прошивки возможно использовать Atmel’s FLIP (под Windows) или DFU программатор (на Mac OS X или Linux). Также можно переписать прошивху внешним программатором, используя ISP вход.

Автоматическая (программная) перезагрузка

Mega ADK разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой, а не нажатием кнопки на платформе. Одна из линий ATmega8U2, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллера ATmega2560 через конденсатор 100 нФ. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка ADK происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

На Arduino Mega ADK имеется возможность отключить линию автоматической перезагрузки разрывом соответствующей линии. Контакты микросхем с обоих концов линии затем могут быть соединены с целью восстановления. Линия маркирована «RESET-EN». Отключить автоматическую перезагрузку также возможно подключив резистор 110 Ом между источником 5 В и данной линией.

Токовая защита разъема USB

В Arduino ADK встроена перезагружаемая плавкая вставка, защищающая порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает дополнительный барьер. Предохранитель автоматически прерывает обмен данных при прохождении тока более 500 мА через USB порт.

Физические характеристики и совместимость с платами расширения

Длинна и ширина печатной платы Mega2560 составляют 10,2 и 5.3 см соответственно. Разъем USB и силовой разъем выходят за границы данных размеров. Три отверстия в плате позволяют закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя между другими выводами оно составляет 0,25 см.

Arduino Mega ADK совместима со всеми платами расширения, разработанными для платформ Uno, Duemilanove или Diecimila. Расположение выводов 0 – 13 (и примыкающих AREF и GND), аналоговых входов 0 – 5, силового разъема, блока ICSP, порта последовательной передачи UART (выводы 0 и 1) и внешнего прерывания 0 и 1 (выводы 2 и 3) на Mega соответствует расположению на вышеприведенных платформах. Связь SPI может осуществляться через блок ICSP, как на платформах Duemilanove / Diecimila, так и на Mega2560. Однако расположение выводов (20 и 21) связи I2C на платформе Mega не соответствуют расположению тех же выводов (аналоговые входы 4 и 5) на Duemilanove / Diecimila.

Установка и драйверы

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

Содержание

  • 1 Руководство по Arduino ADK [1]
    • 1.1 Смартфоны, планшет и способы коммуникации
    • 1.2 Запуск скетчей-примеров в режиме ADK
    • 1.3 Установка необходимого ПО
      • 1.3.1 Установка режима ADK на Processing
      • 1.3.2 Установка необходимого ПО в IDE Arduino
      • 1.3.3 Установка Android SDK
    • 1.4 Работа с реальными девайсами Android
      • 1.4.1 Включение на телефоне режима разработчика
    • 1.5 Установка драйверов для телефона
      • 1.5.1 Windows
      • 1.5.2 Mac OS
      • 1.5.3 Linux
    • 1.6 Процесс разработки
    • 1.7 Тестирование примера Analog Read
    • 1.8 Open Accessory 101
  • 2 См.также
  • 3 Внешние ссылки

Руководство по 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-хоста.

Скетчи-примеры к режиму 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.

Android и Arduino. Введение в ADK

В 2011 г. корпорация Google представила стандарт Android Open Accessory, который обеспечивает взаимосвязь между внешними USB-устройствами (Arduino-подобными платами и др.) и Android-устройством. Начиная с версии Android 3.1 (поддержка AOA портирована и в Android 2.3.4) по замыслу Google все устройства должны поддерживать USB соединение в режиме «accessory mode». В данном режиме подключенное устройство (к примеру плата Arduino) является хостом (в т.ч. питает шину 5В/500мА), а Android устройство является периферийным. В дополнении ко всему Google выпустила предназначенную для разработчиков плату ADK 2011 на базе Mega2560. В версии ADK 2012 используется микроконтроллер ARM 32-bit Cortex M3.

Для чего это необходимо? Данная взаимосвязь между устройством на базе Android и Arduino-подобными платами открывает массу возможностей для разработчика и радиолюбителя: управление сервоприводами, двигателями, индикацией с Android-телефона, считывание состояние датчиков на Android телефоне или планшете, таких как гироскоп, акселерометр, компас, GPS, передачу данных через GPRS/HDSPA модуль планшета и многое другое.

В данном цикле статей я хотел бы шаг за шагом рассказать о некоторых возможностях USB-связи между Android и Arduino.

На сегодняшний день существует уже достаточное количество плат разработчика поддерживающих Android Open Accessory протокол. Приведем некоторые из них:

Google ADK Board

Плата, анонсированная Google. Используется микроконтроллер ATmega2560 (как и в большинстве других плат, анонсированных в 2011 году).

8-ми битный контроллер ATmega2560 содержит 256 КБ внутренней флэш памяти и работает на частоте 16 МГц. Память SRAM — 8 КБ и EEPROM – 4 КБ. На плате предусмотрено 54 цифровых входа/выхода (14 из которых могут работать как ШИМ выходы) и 16 аналоговых входов (10 бит АЦП).

Помимо этого на плате уже напаяна некоторая периферия: 3 кнопки, 3 RGB светодиода, джойстик, датчик температуры, фотодиод, емкостный сенсор (логотип андроида), 2 реле 24В/1А, три коннектора для подключения серво приводов.

Однако есть один существенный минус – стоимость платы, которая составляет почти 400$, что делает ее совсем непривлекательной в радиолюбительских разработках. Да и найти и купить такую плату честно говоря сложновато даже в зарубежных интернет-магазинах.

Google ADK 2012 Board

На конференции Google I/O 2012 в конце июня 2012 г. была представлена новая плата для разработчиков (впрочем как и анонсирован новый протокол Android Open Accessory 2.0 с поддержкой аудио и подключением сразу нескольких устройств к Android). Данная плата также совместима с Arduino форм-фактором, однако в ней используется уже более мощный ARM процессор: 32-битный Cortex M3.
Плата Arduino DUE, выход которой намечен на 2012 также будет содержать процессор Atmel ATSAM3X8E ARM Cortex-M3

Помимо этого на плате существенно обновилась и периферия: добавился слот SD, модуль Bluetooth и NFC, акселерометр, датчик атмосферного давления, влажности, приближения, емкостной слайдер, 6 семисегментных светодиодных RGB матрицы, а также УНЧ и динамик. Ну и сама плата теперь переехала в корпус в виде будильника.

В ADK2012 добавлена возможность передачи звука по USB соединению (начиная с версии Android 4.1 – API 16 и выше). Файлы схем платы ADK2012 и программные файлы доступны для скачивания.

Цена платы на текущий момент составляет около 500$.

Arduino ADK

Это уже более доступная плата от известной итальянской компании. В плате используется микроконтроллер ATmega2560, а также микросхема USB хоста MAX3421e для соединения с Android-устройством. Плата содержит 54 цифровых входа/выхода (15 из них могут работать как ШИМ), 16 аналоговых входов, 256 КБ флэш памяти (из которых 8 КБ отведены под загрузчик), SRAM — 8 КБ, EEPROM — 4 КБ.

Более подробное описание платы на английском языке можно найти здесь. Стоимость платы Arduino ADK R3 на текущий момент составляет 50 евро.

Seeeduino ADK Main Board

Вариант платы от компании Seeed Studio, в данной плате также используется микроконтроллер ATmega2560. В плате есть 56 цифровых входа/выхода (14 из них могут работать как ШИМ), в остальном аналогично Arduino ADK. В качестве микросхемы USB-хоста используется MAX3421. На плате предусмотрен микропереключатель уровней 3.3В/5В.

Более подробное описание находится здесь. Официальная стоимость платы составляет 80$.
Именно с этой платой мы и будем в дальнейшем работать. Плата была приобретена на eBay за 60$.

Разработка от известного за рубежом интернет-магазина SparkFun. Сердцем платы служит микроконтроллер PIC24FJ256-DA206 работающий на 32МГц и имеющий 256КБ памяти программ и 96КБ RAM-памяти. На плате установлен только один USB-разъем для соединения с Android-устройством. Плата содержит 48 цифровых входов/выходов, из них 16 пинов могут быть задействованы ка аналоговые входы. На любой I/O можно повесить прерывание. Более подробная документация по IOIO Board находится здесь.

Стоимость платы в SparkFun составляет 50$.

FEZ Panda II

Плата компании GHI Electronics содержащей 32-битный 72МГц процессор ARM7. Плата совместима с Arduino форм-фактором и большинством Arduino-шилдов, но разработка ПО ведется с применением .NET Micro Framework. О данной плате мы подробно писали в данной статье: обзор FEZ Panda II.

Данная плата была выпущена еще до появления ADK, но уже имела возможность работы в качестве USB-хоста, поэтому для поддержки Android Open Accessory понадобилось всего лишь написать соответствующее ПО, которое можно взять здесь: код для FEZ, код для Android.

Справедливости ради, стоит отметить, что данный код применим не только к плате FEZ Panda II, а практически ко всем платам компании GHI Electronics на ядре .NET Micro Framework, а это FEZ Domino, FEZ Hydra, FEZ Cerbuino Bee и др. платы с USB хостом.

Стоимость платы FEZ Panda II на сегодняшний момент составляет 40$

USB Host Shield

Шилд к Arduino (плата, которая устанавливается сверху Arduino, в стандартные разьемы). Хороший вариант, когда у вас уже есть плата Arduino. Вариантов таких шилдов несколько: от DFRobot — USB Host Shield for Arduino, от Emartee — Arduino ADK Shield For Android, от Circuits@Home — USB Host Shield 2.0 и др., объединяет их одно – наличие микросхемы USB-хоста.

Цены на USB хост шилды варьируются в пределах 20-35$.

Режимы MicroBridge и Open Accessory

Как уже было сказано выше, корпорация Google для обмена информации между устройствами Android и Arduino (и др.) представила стандарт Android Open Accessory. Однако, он поддерживается Android устройствами начиная с версии 3.1 (но также был портирован на Android и в Android 2.3.4).

Существует второй режим работы – Android Debug Bridge (ADB) в MicroBridge режиме, который поддерживается устройствами на базе Android версии 1.5 и выше.

В качестве Android устройства будет выступать современный 7″ планшет Ainol Aurora с версией андроида 4.0.4, который казалось бы должен поддерживать режим Open Accessory. Однако это не так, и я так и не смог получить связь в данном режиме. При чтении зарубежных форумов и информации, я выяснил, что наличие на вашем аппарате версии Android 3.1 и выше еще не означает 100% работу в режиме Android Open Accessory.

Вот небольшой список устройств, которые совместимы с режимом Open Accessory:
Acer Iconia A100
Acer Iconia A500
ASUS Eee Pad Transfomer TF101
Dell Streak 10 Pro
Foxconn Commtiva-HD710
Google Nexus S
Google Nexus One
HTC EVO 3D
HTC PH4100
HTC Sensation 4G
HTC Nexus One
LG Optimus Pad
LG Optimus 2X
Motorola Xoom
Samsung Galaxy A
Samsung Galaxy Ace
Samsung Galaxy S
Samsung Galaxy Tab 10.1
Toshiba AT100

Для остальных устройств, возможно придется менять прошивки, ставить моды, патчи и т.п., в общем танцы с бубном. И в конце не факт, что еще и заработает, как это и получилось у меня с планшетом Ainol Aurora.

Однако, я приведу небольшой список того, что возможно поможет запустить ваш планшет с поддержкой режима Android Open Accessory:
1. Установите root права и программу Root Explorer и проверьте наличие файлов /system/framework/com.android.future.usb.accessory.jar и /system/etc/permissions/android.hardware.usb.accessory.xml. Если их нет, то режим Open Accessory работать не будет. Самый важный – это первый файл, необходимо найти прошивку или мод для вашего устройства, в котором содержится данный файл. Наиболее популярным является Cyanogen Mod.
Файл android.hardware.usb.accessory.xml вы можете скачать здесь, он служит для разрешения запуска файла com.android.future.usb.accessory.jar.
Когда файла нет, то компилятор Eclipse обычно «ругается»: INSTALL_FAILED_MISSING_SHARED_LIBRARY
2. Иногда помогает установка следующей строки CONFIG_USB_ANDROID_ACCESSORY=y в файле /proc/config.gz. Однако не во всех Android устройствах есть этот файл, в моем не было.
3. Проверьте типы используемых USB библиотек Open Accessory. Иногда в проекте необходимо заменить com.android.future.usb на android.hardware.usb (плюс переделать файл манифеста, коды вызова библиотек и т.п.). Подробнее об этом написано здесь и здесь.
4. Попробуйте отключить режим ADB в настройках планшета.

Я проделал все вышеперечисленные процедуры, но на Android планшете все также красовалась надпись «Please connect a DemoKit board», а в логах планшета (для этого я использовал LogCat) для приложения DemoKit отображалось: «mAccessory is null», что означает, что Android не обнаружил Accessory-совместимых устройств на USB шине.
В то же время, в PortMonitor из Arduino IDE, был такой лог: «Device addressed. Requesting device descriptor. found possible device. swithcing to serial mode device supports protocol 1 or higher»
Т.е. моя плата Seeeduino ADK Main Board по всей видимости видела USB-устройство, но не открывало соединение по протоколу Open Accessory. Несколько дней экспериментов, правок программ и анализа логов ни к чему не привели.

Если вам так и не удалось установить связь с использованием режима Android Open Accessory, то в режиме MicroBridge, ваше Android устройство должно точно заработать. Его мы и будем использовать в наших дальнейших проектах. Если с выходом нового мода или прошивки у меня получится установить связь в режиме Open Accessory, то работу в этом режиме я постараюсь также описать.

Читайте также  Блок питания радиоприёмника из электронного балласта лдс

В следующей статье мы рассмотрим необходимое программное обеспечение для работы с Android и Arduino, его установку и настройку.

Протокол Android Open Accessory 2.0

В конце июня 2012 был корпорацией Google был анонсирован протокол AOA 2.0. Основными нововведениями стали поддержка аудио и работа Android сразу с несколькими HID устройствами. Подержка AOA 2.0 будет осуществлятся устройствами с версией Android 4.1 Jelly Bean (уровень API 16) и выше.

В версии AOA 1.0, содержалось только два USB product ID:
0x2D00 – accessory
0x2D01 — accessory + ADB
В версии AOA 2.0 добавились следующие product ID:
0x2D02 – audio
0x2D03 — audio + ADB
0x2D04 — accessory + audio
0x2D05 — accessory + audio + ADB

Теперь с Android устройства возможно передавать аудио-поток на подключенное accessory устройство. Пока что это 2-х канальный 16-бит PCM аудио поток с битрейтом 44100 кГц, но в дальнейшем список поддерживаемых форматов может быть расширен.

Связываем Arduino и Android через Bluetooth

В данной статье будет подробно расписано создание небольшого приложения для мобильной операционной системы Android и скетча для Arduino. На Arduino Uno будет стоять Wireless Shield с Bluetooth-модулем. Приложение будет подключаться к Bluetooth-модулю и посылать некую команду. В свою очередь скетч по этой команде будет зажигать или гасить один из подключенных к Arduino светодиодов.

Нам понадобится

Создание приложения для Android

Заготовка

Разработка для ОС Android ведется в среде разработки ADT, Android Development Tools. Которую можно скачать с портала Google для разработчиков. После скачивания и установке ADT, смело его запускаем. Однако, еще рано приступать к разработке приложения. Надо еще скачать Android SDK нужной версии. Для этого необходимо открыть Android SDK Manager «Window → Android SDK Manager». В списке необходимо выбрать нужный нам SDK, в нашем случае Android 2.3.3 (API 10). Если телефона нет, то выбирайте 2.3.3 или выше; а если есть — версию, совпадающую с версией ОС телефона. Затем нажимаем на кнопку «Install Packages», чтобы запустить процесс установки.

После завершения скачивания и установки мы начинаем создавать приложение. Выбираем «File → New → Android Application Project». Заполним содержимое окна так, как показано на рисунке.

В выпадающих списках «Minimum Required SDK», «Target SDK», «Compile With» выбираем ту версию, которую мы скачали ранее. Более новые версии SDK поддерживают графические темы для приложений, а старые нет. Поэтому в поле «Theme» выбираем «None». Нажимаем «Next».

Снимаем галочку с «Create custom launcher icon»: в рамках данной статьи не будем заострять внимание на создании иконки приложения. Нажимаем «Next».

В появившемся окне можно выбрать вид «Activity»: вид того, что будет на экране, когда будет запущено приложение. Выбираем «Blank activity», что означает, что мы хотим начать всё с чистого листа. Нажимаем «Next».

В нашем приложении будет всего одно Activity, поэтому в появившемся окне можно ничего не менять. Поэтому просто жмем на «Finish».

Все, наше приложение создано.

Настройка эмулятора

Отладка приложений для Android производится на реальном устройстве или, если такового нет, то на эмуляторе. Сконфигурируем свой.

Для этого запустим «Window → Android Virtual Device Manager». В появившемся окне нажмем «New». Заполняем поля появившейся формы. От них зависит сколько и каких ресурсов будет предоставлять эмулятор «телефону». Выберите разумные значения и нажимайте «ОК».

В окне Android Virtual Device Manager нажимаем кнопку «Start». Это запустит эмулятор. Запуск занимает несколько минут. Так что наберитесь терпения.

В результате вы увидите окно эмулятора подобное этому:

Заполнение Activity

Activity — это то, что отображается на экране телефона после запуска приложения. На нем у нас будет две кнопки «Зажечь красный светодиод» и «Зажечь синий светодиод». Добавим их. В панели «Package Explorer» открываем res/layout/activity_main.xml . Его вид будет примерно таким же, как на скриншоте.

Перетаскиваем 2 кнопки «ToggleButton» на экранную форму. Переключаемся во вкладку «activity_main.xml» и видим следующий код:

Это ни что иное, как наша Activity, которая отображается не в виде графики, а описанная в формате XML.

Сделаем имена компонентов более понятными. Изменим поля android:id следующим образом.

А еще добавим им подписи, изменим их цвет и размер текста. Результирующий код разметки будет выглядеть следующим образом.

Эти же изменения можно сделать и в графическом режиме, воспользовавшись вкладкой «Outline/Properties».

Пробный запуск

Мы можем запустить только что созданное приложение на эмуляторе. Идем в настройки запуска «Run» → Run Configurations», в левой части нажимаем на «Android Application». Появляется новая конфигурация «New_configuration». В правой части окна выбираем вкладку «Target» и выбираем опцию «Launch on all compatible devices/AVD».

Нажимаем «Apply», а затем «Run». Приложение запустится в эмуляторе.

Можно понажимать кнопки. Но ничего происходить не будет, поскольку обработчики нажатий еще нами не написаны.

Чтобы запустить приложение на реальном устройстве, необходимо включить в его настройках опцию «Отладка USB» и подключить его к компьютеру.

На реальном устройстве приложение выглядит абсолютно аналогично.

Написание кода для Android

Правка манифеста

Каждое Android-приложение должно сообщить системе о том, какие права необходимо ему предоставить. Перечисление прав идет в так называемом файле манифеста AndroidManifest.xml . В нем мы должны указать тот факт, что хотим использовать Bluetooth в своем приложении. Для этого достаточно добавить буквально пару строк:

Добавляем основной код

Пришла пора вдохнуть жизнь в наше приложение. Открываем файл MainActivity.java (src → ru.amperka.arduinobtled). Изначально он содержит следующий код:

Дополним код в соответствии с тем, что нам нужно:

Передавать на Arduino мы будем один байт с двузначным числом. Первая цифра числа — номер пина, к которому подключен тот или иной светодиод, вторая — состояние светодиода: 1 — включен, 0 — выключен.

Число-команда, рассчитывается очень просто: Если нажата красная кнопка, то берется число 60 (для красного светодиода мы выбрали 6-й пин Arduino) и к нему прибавляется 1 или 0 в зависимости от того, должен ли сейчас гореть светодиод или нет. Для зеленой кнопки всё аналогично, только вместо 60 берется 70 (поскольку зеленый светодиод подключен к 7 пину). В итоге, в нашем случае, возможны 4 команды: 60, 61, 70, 71.

Напишем код, который реализует всё сказанное.

Написание скетча

Данные, которые принимает Bluetooth-модуль, приходят через UART (он же Serial-соединение) на скорости 9600 бит/с. Настраивать Bluetooth-модуль нет никакой необходимости: он сразу готов к работе. Поэтому скетч должен уметь следующее:

Особенности заливки скетча

Для связи Bluetooth-Bee с контроллером используются те же пины (0 и 1), что и для прошивки. Поэтому при программировании контроллера переключатель «SERIAL SELECT» на «Wireless Shield» должен быть установлен в положение «USB», а после прошивки его надо вернуть в положение «MICRO».

Результат

Заключение

В данной статье мы научились создавать приложения для операционной системы Android и передавать данные по Bluetooth. Теперь при нажатии на кнопку на экране телефона на базе операционной системы Android, произойдет изменение состояния светодиода на плате.

Вы можете развить мысль и сделать более дружественный интерфейс на Android, управлять с его помощью гораздо более сложными устройствами, публиковать классные приложения в Android Market и ещё много-много всего интересного!

Основы взаимодействия Andriod и Arduino микроконтроллеров

Уже достаточно давно Гугл позволила связывать устройства на Адроиде через usb с различными микроконтроллерами, открыв API. Теперь могут ликовать все, кто занимается созданием разнообразных проектов на Ардуино, ведь теперь значительно проще будет провести отладку системы Аndroid Аrduino и, в принципе, отрегулировать их взаимодействие.

Мы уже начали знакомить читателей с возможностями связки микроконтроллера и смартфона — см. Управление устройствами со смартфона для чайников.

Но и до этого различные модули позволяли спокойно взаимодействовать Андроид и Ардуино. Давайте же разберёмся, каким образом можно реализовать проект, который будет управляться со смартфона, и что для этого потребуется.

Где можно применить связь Андроида с Ардуино

В первую очередь, необходимо задуматься о том, как применять возможность передачи сигнала с Андроид на Ардуино. Ведь прежде, чем изучать какие-то материалы, каждый здравый человек должен понимать, к чему это его приведёт в итоге. Даже если речь идёт про хобби. И действительно, возможность управления техникой с вашего смартфона уже давно перестала восприниматься, как нечто неординарное. Сейчас в большинстве телевизоров, холодильников и даже пылесосов, которые приобретаются средним классом, есть возможность передачи данных на смартфон.

Такое решение позволяет значительно упростить жизнь обывателя, ведь для того же телевизора нет необходимости постоянно покупать батарейки в пульт и искать его, если потеряется. Мы всё ближе к заветным умным домам, но некоторые предпочитают не покупать подобную технику, а самостоятельно её сконструировать.

В таком случае, связку Андроид Ардуино стоит расценивать в двух вариациях:

  1. Удалённое управление каким-либо устройством с помощью смартфона. Ещё его называют связью смартфон-МК. Всё та же техника, например, раздвижные жалюзи или освещение в комнате, которое будет выключаться по одному клику. Если вы захотите сделать последнее, то даже нет необходимости менять проводку или докупать специальные смарт-лампы, которые могут выгореть спустя месяц. Достаточно приобрести небольшой микроконтроллер Ардуино, модуль связи по беспровобному интернету или блютуз и изоленту. После чего достаточно будет спаять простейшую схему, которая замыкается в случае, если подаётся сигнал на МК.
    Сигнал этот будет подаваться с вашего телефона, замыкать контакты, и свет начнет гореть. Чтобы не было проблем и для дополнительной безопасности вашего жилища, можно написать скрипт, способный автоматически размыкать цепь, если устройство управления удаляется из поля видимости. Обычные выключатели всё так же будут работать, но только, когда цепь замкнута.
  2. Передача данных для информирования или связь МК-Смартфон. Здесь вы уже не управляете какой-то техникой, а скорее наоборот, различная техника позволяет получить определённые данные на ваш смартфон. Первое, что приходит на ум и простейшее применение, – датчик движения. Данный модуль имеется в стандартных датчиках для МК Ардуино, купить его не составит проблем, как и вмонтировать в проход. Затем останется написать код, подобие которого уже есть на многих англоязычных форумах, отправляющий СМСку или сообщение в социальных сетях, а также специальной утилите, если кто-то пересечет инфракрасный луч.
    Можно создать и более сложные и автоматизированные системы, которые будут передавать не только медиа-информацию о вашей квартире, но и сообщать, если в домашней оранжерее созреют овощи или фрукты. Всё зависит исключительно от фантазии самого инженера, но основа технологии всё та же – передача данных с одного устройства на другое.

Вот вы выбрали подходящий проект и взялись за его реализацию. Модули и МК уже заказаны, а пока они идут, можно заняться и разработкой ПО. Ведь голый Андроид не взаимодействует с Ардуино при помощи магии.

Приложения на Андроид для взаимодействия с Ардуино

Разрабатывать утилиту мы будем не с нуля, ведь это не базис по программирования на java. Проще всего воспользоваться готовыми движками и средами с пользовательским интерфейсом, где вам, буквально, останется дописать 1-2 строчки кода, для расположенной кнопки, чтобы та заработала. Естественно, подобный подход значительно ограничивает функционал конечного продукта и неизбежно ущемляет творческий подход, но будет полезен для тех, кто хочет быстро реализовать простой проект без лишних проблем.

Для начала рассмотрим три базовых файла, которые вы встретите при проектировании программы:

  1. MainActivity.java – это весь код приложения на одноимённом языке, все функции и методы, которые вы записываете, сохраняются сюда.
  2. Activity_main.xml – макет, как несложно догадаться из расширения файла. Сюда сохраняется расположение кнопок, текста и прочих интерактивных компонентов, которые затем оживляются уже в коде.
  3. AndroidManifest.xml – этот файл также относится к макетам, но немного в другой сфере. Он определяет основные параметры для запуска приложения и разрешения, которые тому будут необходимы. В нашем случае это необходимость включить Bluetooth, ведь через него мы будем связываться с МК. Если вы делаете датчик, который должен отсылать информацию на большое расстояние, то, соответственно, необходимо включить и проверить работу беспроводного или мобильного интернета.
Читайте также  Обратноходовой повышающий преобразователь от 1.1 в

Основы приема-передачи данных

Чтобы понимать, как ваш будущий проект вообще будет работать, стоило бы изучить базовую физику электромагнитных полей. Но чтобы не перегружать лишней информацией, достаточно усвоить, что на сегодняшний день передача данных происходит тремя основными путями:

  1. Через usb-кабель, что подходит далеко не везде, но хороший вариант, дабы настроить проект.
  2. Через блютуз и смежные протоколы, например, в последнее время стало популярным использовать NTFS для управления умными устройствами. Но, так как мы говорим о проекте на МК Ардуино, то остановимся именно на блютуз.
  3. Через беспроводной интернет. Здесь ничего нового, по сути, ваш мобильный или микроконтроллер выступает сервером, принимающим и обрабатывающим полученные данные, а затем производящим вычисления или действия и отправляющим ответ.

Это основные способы передачи и приёма информации, вам остаётся выбрать подходящий. Для проектов, которые не будут использоваться на больших расстояниях, оптимальным вариантом по объемам кода и простоте настройки является блютуз.

Какие компонеты могут потребоваться для взаимодействия

Выше мы уже упоминали, что для проекта на Ардуино, который предполагает использование одного из методов передачи данных на расстоянии, необходимо приобрести дополнительные модули. Опять же, лучшим выбором будет блютуз. Данный модуль позволяет принимать и отправлять сигналы определённой частоты, которые улавливаются большей частью смартфонов, а соответственно, никаких проблем не должно возникнуть. Вы можете выбрать как одно из устройств, представленных в основной линейке Ардуино, так и китайские аналоги, что будет значительно дешевле.

Один из модулей, который можно взять — это Bluetooth Bee, который можно купить во многих магазинах, от DFRobot.

Всё зависит от конкретной системы и необходимой в ней «Пропускной способности». Ведь если это будет камера видеонаблюдения, то поток данных должен передаваться непрерывно и в большом количестве. А для простого датчика движения достаточно самого дешевого вай-фай модуля. Так же и с автоматизированными устройствами для умного дома.

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

Настройка соединения

Итак, вот вы создали и уже установили на смартфон приложение или его готовый аналог для управления вашим микроконтроллером с Ардуино, далее необходимо:

  1. Включить сам блютуз модуль в системе, запитав его от сети или аккумулятора.
  2. Запустить приложение на телефоне и найти нужное устройство.
  3. Подсоединиться к блютуз модулю с помощью дефоултного пароля или того, что вы задали при перепрошивке Ардуино.
  4. Отдать первые команды и проследить, как на них отреагирует система.

Здесь стоит сказать, что приложений под Ардуино в Google Play много, в следующем материале мы покажем 7 из них.

Простейший пример

Чтобы вы понимали, как примерно должен функционировать готовый проект, приведём пример с помощью всё той же надстройки на ваш светильник.

Самый простой урок по шагам смотрите по ссылке — см. Управление устройствами со смартфона для чайников. Логика по шагам такая:

  1. Вы подсоединяетесь к системе через смартфон.
  2. Нажимаете одну кнопку, и цепь размыкается или замыкается.
  3. Появляется или исчезает свет.
  4. Нажимаете кнопку на смартфоне ещё раз, и происходит обратный эффект.

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

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

Взаимодействие с Arduino через Android

Хотите послать текстовое сообщение с вашего смартфона с ОС Android на свою плату Arduino? В этой статье написано, как это сделать!

Что потребуется

  • смартфон на Android с поддержкой режима USB хоста (т.е. поддержка OTG) – большинство устройств, работающих с Android 3.1 и выше, поддерживают этот режим. Проверьте свой телефон с помощью USB Host Diagnostics App из Play Store;
  • Arduino – любая версия. Я буду использовать Uno R3;
  • USB кабель для Arduino;
  • USB OTG кабель – он необходим вам, чтобы подключить USB кабель Arduino к порту micro-USB телефона;
  • Android Studio – вам необходимо установить его. Это довольно просто сделать. Android Studio делает разработку приложений проще, благодаря своим предположениям и генерации кода. Это одна из лучших IDE. Вы также можете использовать эту статью в качестве руководства по установке Android IDE.

Основные компоненты приложения для Android

В Android приложении есть три основных файла:

MainActivity.java Здесь находится выполняемый код на Java, который управляет тем, как будет функционировать приложение. activity_main.xml Содержит макет приложения, то есть, компоненты: кнопки, компоненты отображения текста и т.д. AndroidManifest.xml Здесь вы определяете, когда приложение должно запускаться, в какие права ему нужны, и к какому аппаратному обеспечению ему необходимо получить доступ.

Еще есть множество других файлов, но все они связаны друг с другом с помощью этих трех.

Активность может быть охарактеризована, как экран, где пользователь взаимодействует с телефоном. Активности содержат такие виджеты, как кнопки, текстовые поля, изображения и т.д., которые помогают в передаче информации. Данное руководство будет использовать только одну активность, MainActivity , которая будет принимать введенный пользователем текст, чтобы отправить его на Arduino, а также отображать принятый текст.

Макет

Мы будем использовать тот же макет, что и в USB App и Bluetooth App. Он прост и содержит минимум виджетов, необходимых для проверки соединения между устройствами.

Как вы можете видеть, он содержит виджет EditText для получения данных от пользователя, кнопки для запуска соединения, передачи данных, завершения соединения и очистки TextView . Полученные данные отображаются в TextView (пустое пространство под кнопками).

Вот часть XML кода. Поскольку код для кнопок похож, здесь он не приводится. Полный код можно скачать по ссылке в конце статьи.

Я использовал здесь RelativeLayout , а это означает, что каждый виджет расположен относительно виджетов вокруг него. Макет может быть легко воссоздан на вкладке Design Tab , где вы можете перетащить виджеты туда, куда хотите. Нам необходимо описать, что будет происходить при нажатии на кнопку. Для этого используется метод onClick . Укажите имя метода в XML коде для кнопки. Для этого добавьте строку:

Теперь наведите курсор мыши на эту строку, слева должно будет появиться предупреждение, похожее на это:

Предупреждение в Android Studio

Нажмите на варианте «Создать onClick. ». Это автоматически добавит код метода onClick в MainActivity.java . Вам необходимо выполнить это для каждой кнопки.

Библиотека USB Serial

Настройка последовательного соединения в Android довольно трудоемка, так как требует от вас ручной настройки множества вещей, поэтому я нашел несколько библиотек, которые делают всё это автоматически. Я протестировал несколько из них и, наконец, остановился на библиотеке UsbSerial от Github пользователя felHR85. Среди подобных библиотек, что я нашел, она единственная до сих пор обновляется. Ее довольно легко настроить и использовать. Чтобы добавить библиотеку в свой проект, скачайте последнюю версию JAR файла на Github. Поместите его в подкаталог libs в каталоге вашего проекта. Затем в файловом проводнике в Android Studio кликните правой кнопкой мыши на JAR файле и выберите « Добавить как библиотеку » ( Add as Library ). Вот и всё!

Алгоритм выполнения программы

Это краткий план того, как мы будем действовать. Каждая активность имеет метод onCreate() , который запускается при создании активности. Какой бы код вы ни хотели запустить в начале, он должен быть помещен внутрь этого метода. Обратите внимание, что чтение из устройства является асинхронным, то есть оно будет работать в фоновом режиме. Это делается для того, чтобы данные были получены как можно скорее.

Открытие соединения

Во-первых, давайте определим метод onClick для кнопки Begin . При нажатии необходимо выполнить поиск всех подключенных устройств, а затем проверить, совпадает ли VendorID подключенного устройства (ID поставщика) с VendorID Arduino. Если совпадение найдено, то у пользователя должно быть запрошено разрешение. Каждое ведомое USB устройство имеет ID поставщика (Vendor ID) и ID продукта (Product ID), которые могут быть использованы для определения того, какие драйвера должны использоваться для этого устройства. Vendor ID для любой платы Arduino равен 0x2341 или 9025.

Теперь давайте определим BroadcastReceiver для приема широковещательных сообщений, чтобы запросить у пользователя разрешения, а также для автоматического запуска соединения, когда устройство подключено, и закрытия соединения, когда оно отключено.

Если первое условие IF выполняется, и если пользователь дал разрешение, то начать соединение с устройством, у которого Vendor ID совпадает с необходимым нам Vendor ID. Кроме того, если принято широковещательное сообщение о подключении или отключении устройства, вручную вызывать методы onClick для кнопок Start и Stop . SerialPort определяется с использованием устройства и соединения в качестве аргументов. В случае успеха открыть SerialPort и установить соответствующие параметры. Значения параметров для Arduino Uno равны: 8 бит данных, 1 стоповый бит, бита четности нет, управление потоком выключено. Скорость передачи данных может быть 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200 бит/с, но мы будем использовать стандартные 9600 бит/с.

Прием данных от устройства

Во фрагменте кода выше обратите внимание на строку, содержащую serialPort.read(mCallback) . Здесь функции read передается ссылка на объект Callback , который будет автоматически срабатывать при обнаружении входящих данных.

Полученные данные будут в форме необработанных байтов. Нам придется перекодировать их в читаемый формат, например, UTF-8. Затем они добавляются в TextView с помощью специального метода tvAppend() . Это делается так потому, что любые изменения в пользовательском интерфейсе могут выполняться только в потоке пользовательского интерфейса. Так как данный Callback будет запущен, как фоновый поток, то он не может напрямую повлиять на пользовательский интерфейс.

Передача данных на устройство

Передача данных относительно проста по сравнению с чтением данных с устройства. Это простой вызов функции с байтами данных, которые необходимо передать, в качестве аргумента. Это будет реализовано в методе onClick кнопки Send .

Закрытие соединения

Чтобы закрыть соединение, просто закройте последовательный порт.

Манифест приложения

Манифест объявляет, какие дополнительные разрешения могут потребоваться приложению. Единственное необходимое нам разрешение – это разрешение сделать телефон USB хостом. Добавьте следующую строку в манифест:

Приложение можно заставить запускаться автоматически, добавив фильтр интентов в главную активность MainActivity . Этот фильтр интентов будет срабатывать при подключении любого нового устройства. Вид устройства может быть указан явно с помощью ID поставщика (Vendor ID) и/или ID продукта (Product ID) в XML файле.

Обратите внимание на строку » android_resource=»@xml/device_filter «. Она говорит компилятору, что он может найти свойства устройства в файле с именем device_filter в каталоге src/main/res/xml , поэтому создайте подкаталог » xml » в каталоге src/main/res и поместите в него файл со следующим содержанием:

Тестирование приложения

Соберите приложение и запустите его на своем смартфоне. Теперь запустите Arduino IDE и настройте Arduino для простого эхо всего, что плата будет принимать через последовательный порт. Вот очень простой код, помогающий сделать это:

Теперь подключите Arduino к microUSB порту телефона, используя OTG кабель. Приложение должно запуститься автоматически. Попробуйте послать какой-нибудь текст, и те же данные будут возвращены обратно!

Тестирование Android приложения для взаимодействия с Arduino

Заключение

Данная статья показывает, как Arduino может общаться с вашим смартфоном. И возможности использования этого бесконечны! В случае, когда необходимы данные с любого датчика, которого нет среди встроенных в смартфон, можно воспользоваться любым микроконтроллером для считывания данных с этого датчика и передачи их на смартфон. В следующей статье будет показано, как подключить смартфон к Arduino, используя популярный bluetooth модуль HC05.