Использование хост-режима USB 3.1 с Arduino

Есть ли хороший учебник по использованию Arduino с Android, где Android-устройство является хостом USB? (На устройстве Android установлена ​​ОС версии 3.1 (Honeycomb) или более поздней). Единственная хост-программа на сайте разработчика — ракетная пусковая установка, которая кажется намного проще, чем взаимодействие с Arduino.

Особенности: я пытаюсь сделать хост Asus Transformer Arduino Uno, но поскольку очень мало информации о том, как работает режим Android host, я не знаю, с чего начать. Мне просто нужно, чтобы Android мог считывать значения данных из памяти Arduino. Arduino используется для подсчета частоты сигнала, затем это значение необходимо передать Android. Если я пропустил какой-то простой способ сделать это, не стесняйтесь, дайте мне знать.

(Существует много информации об использовании ADK для сделать Arduino хостом, но с Transformer это невозможно - см. Вопрос о переполнении стека Можно ли заставить Android ADK работать на ASUS Eee Pad Transformer под управлением 3.1?.

Информация не обязательно должна быть специфичной для Transformer или Uno, я просто не могу найти примеры людей, использующих новый режим хоста на своих планшетах.


person Joe    schedule 02.08.2011    source источник
comment
В конечном счете... возможно, можно реализовать протокол моста отладки Android на стороне Arduino. Затем Arduino может отправлять данные, используя перенаправленный порт UDP или TCP, который принимается сокетом внутри приложения. Таким образом, устройство остается в режиме ведомого USB, который также доступен для старых устройств.   -  person dronus    schedule 09.08.2011
comment
@dronus - недостатком метода ADK / ADB даже для планшета, возможно, не ожидающего питания от шины, является то, что для аксессуара требуется более дорогой хост-интерфейс USB.   -  person Chris Stratton    schedule 10.08.2011


Ответы (4)


Мы получили работу связи FTDI без драйвера ядра, используя этот код: http://android.serverbox.ch/?p=370

Обратите внимание, что Samsung Galaxy Tab 10.1, похоже, не имеет надлежащего USB-кода даже для обнаружения USB-устройств (кроме мыши, клавиатуры, концентратора и хранилища, которые обнаруживаются ОС и не передаются приложениям).

Тем не менее, мы получили это работает на Acer A500.

person Taylor Alexander    schedule 17.11.2011

Arduino Uno отказывается от чипа FTDI или аналогичного чипа usb-rs232, использовавшегося в предыдущих проектах, в пользу перепрограммируемого интерфейса USB на основе LUFA.

В обычном Linux вы должны использовать драйверы USB CDC, поэтому возникает вопрос, поставляется ли с ними сотовый планшет.

поддержка хоста Honeycomb USB, по-видимому, предоставляет средства для написания низкоуровневых USB-драйверы в сторонних приложениях для Android в пользовательском пространстве, поэтому, по-видимому, если функциональность еще не находится в ядре, ее можно добавить в пользовательское пространство.

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

person Chris Stratton    schedule 09.08.2011

Если вы просто хотите найти несколько примеров приложений, использующих функциональность USB-хоста, лучше всего использовать что-то вроде инструмента поиска кода Google и выполнить поиск некоторых конкретных классов/разрешений/намерений USB-хоста.

Например, при поиске android.hardware.usb.action.USB_DEVICE_ATTACHED появляются следующие приложения:

person JesusFreke    schedule 02.09.2011

Поскольку Arduino использует микросхему преобразователя USB в RS232, для USB-порта в режиме хоста обычно требуется драйвер модуля ядра для реализации последовательного драйвера. Обычно используется микросхема FTDI, модуль может называться ftdi_sio. Таким образом, на низком уровне, если включен режим хоста USB, система может предоставить устройство /dev/ttyUSB0 с помощью этого модуля. Но я думаю, что это бесполезно, поскольку оно скрыто от приложения, если только оно не работает на корневом устройстве. Таким образом, я думаю, что абстракция ADK высокого уровня - это то, что нужно.

person dronus    schedule 09.08.2011