Время на прочтение 2 мин
Количество просмотров76K
Разработка под Android *
Одной из самых интересных новинок, представленных на Google I/O 2011, можно считать анонс полноценной работы Android устройств с USB.
Новый Android поддерживает два USB режима — хост (Host mode) и устройство (Accessory mode).
С хост режимом все просто и понятно — это подключение к Android устройству клавиатуры, мыши, цифровой камеры, внешних накопителей и т.д.
А вот с режимом USB устройства все намного интереснее. В этом режиме внешнее USB оборудование выступает в роли хоста для Android устройства и таким внешним оборудованием могут выступать док станции, роботизированные контроллеры, диагностическое и музыкальное оборудование, спортивные тренажеры, кардридеры и многое другое.
Наглядно понять разницу между двумя режимами можно по схеме:
Когда Android устройство выступает в роли USB хоста, то оно питает шину. Когда же Android устройство находится в режиме USB устройства, то шину питает подключенное к нему оборудование.
Режимы USB хоста и USB устройства поддерживаются начиная с Android 3.1 (API level 12). Режим USB устройства также портирован в Android 2.3.4 (API level 10) в виде библиотеки, поддерживающей большой набор устройств. Производители оборудования сами решают добавить им в системный образ эту библиотеку или нет.
Для разработки USB оборудования для Android предлагается Android Open Accessory Development Kit (ADK), который является имплементацией USB оборудования для Android и включает в себя макет на основе Arduino, код прошивки для Accessory mode и Android приложение для взаимодействия с оборудованием.
В роли аппаратного средства для разработки выступает набор RT-ADK&RT-ADS, который нам пытаются продать за ~390$
Хотя это это всего лишь Arduino Mega2560, Circuits@Home USB Host Shield интегрированный в плату, и набор датчиков и элементов управления. Такой набор обойдется до 100$.
Кроме различных датчиков и индикаторов для Arduino существует большое количество плат расширения (Arduino shield), способных превратить USB устройство, например, в робота.
Android Open Accessory должен способствовать появлению большого числа разных аксессуаров для Android устройств.
В будущем планируется что Android Open Accessory кроме USB интерфейса будет также поддерживать и Bluetooth.
Теги:
Хабы:
Всего голосов 29: ↑26 и ↓3 +23
Комментарии 25
Алексей Журбицкий @blo
Пользователь
Комментарии Комментарии 25
Twitter LinkedIn Facebook Адрес электронной почты
В этом разделе описано, как передать встроенное ПО в MALT, а также как выполнить калибровку датчиков с помощью SensorExplorer. Рекомендуется, чтобы компьютер, контролируемый микроконтроллером, также был тестируемым системой или устройством (SUT/DUT).
Передний план MALT (AMBIENT FACING) | Задняя часть MALT (ЭКРАН С ВЫХОДОМ) |
---|---|
Подключение Arduino Mega на устройство с помощью кабеля USB 2.0 типа A/B.
Подключение платы контроллера MALT на задние контакты Arduino Mega с помощью кабеля ленты радуги.
Подключение платы контроллера MALT до платы датчика MALT с помощью кабеля CAT5(x) или CAT6(x). (Например, CAT5, CAT5e, CAT6 и т. д.)
Примечание
Кабель Ethernet, используемый для подключения платы контроллера MALT к плате датчика MALT, должен иметь все 8 проводов, и эти провода не должны пересекать.
Нажмите кнопку сброса на Arduino Mega.
Создайте папку с именем MALT на диске C компьютера. Путь к файлу должен быть C:\MALT. Здесь мы разместим все необходимые файлы и клонированные репозитории.
Клонируйте репозиторий busiotools в папку MALT . Путь к файлу должен быть C:\MALT\busiotools.
Клонируйте репозитории SerialCommand и SoftI2CMaster в папку MALT . Пути к файлам должны быть C:\MALT\Arduino-SerialCommand и C:\MALT\SoftI2CMaster соответственно.
MALT выполняется Arduino, для которого требуется встроенное ПО для настройки и взаимодействия с датчиками на плате MALT.
Получите и настройте интерфейс командной строки Arduino.
Скачайте последнюю версию arduino-cli и сохраните ее на компьютере.
Добавьте arduino-cli в переменную PATH, если вы еще не сделали этого.
Примечание
Закройте командную строку и откройте новую командную строку после добавления arduino-cli в переменную PATH!
Выполните следующую команду из командной строки с повышенными привилегиями:
arduino-cli config init arduino-cli core update-index arduino-cli core install arduino:avr
Добавьте необходимые библиотеки из диспетчера библиотек Arduino, выполнив следующую команду из командной строки с повышенными привилегиями:
arduino-cli lib install MatrixMath arduino-cli lib install AsyncDelay
Определите COM-порт, назначенный Arduino, выполнив следующую команду из командной строки с повышенными привилегиями:
arduino-cli board list
Отправьте встроенное ПО в Arduino, выполнив следующую команду из командной строки с повышенными привилегиями и заменив X в COMX на номер COM-порта, указанный на предыдущем шаге:
arduino-cli compile --fqbn arduino:avr:mega --port COMX --upload --library C:\MALT\Arduino-SerialCommand --library C:\MALT\SoftI2CMaster C:\MALT\busiotools\sensors\tools\MALT\Code\malt
Ожидаемые выходные данные приведены ниже.
Датчики цвета MALT не поступают на заводе, откалиброванные для реальных цветов мира. Ниже приведен процесс калибровки, чтобы обеспечить точное чтение. Калибровка для MALT должна выполняться для датчика цвета окружающей среды и датчика цвета экрана. Этот процесс должен выполняться только один раз на доску датчика, а микросхемы памяти на PCB сохранят этот параметр. Чтобы обновить параметр, нажмите кнопку сброса на arduino.
Подключите MALT к USB-порту на SUT.
Откройте SensorExplorer и перейдите на вкладку MALT слева (No 3). Выберите правильный тип Vid/Pid в области выбора устройства» и выберите Подключение на устройство.
Выберите вкладку «Калибровка» в верхней части окна.
Известные значения цвета являются ключом к любому процессу калибровки и поступают от датчика, который уже был откалиброван и имеет правильные значения.
Поместите наблюдаемые значения в матрицу известных значений 3×3, используя следующий шаблон:
┌ ┐ │Known RED X value | Known BLUE X value | Known GREEN X value│ │Known RED Y value | Known BLUE Y value | Known GREEN Y value│ |Known RED Z value | Known BLUE Z value | Known GREEN Z value│ └ ┘
Необработанные или немасштабируемые значения — это значения, которые выходят из немасштабируемого датчика цвета MALT до применения любой математики или калибровки. Соберите эти значения, указывая MALT на те же цвета отображения, из которые были собраны известные значения. Этот шаг важен и делает уравнение надежным. Определите, выполняется ли калибровка датчика с экрана или внешнего датчика. Это решение определяет, какая кнопка пользовательского интерфейса нажимается при сборе данных.
Наведите нужный датчик на цветовые блоки, указанные ниже, и выберите«Экран чтения» или«Внешний вид » для каждого цвета, определяемого датчиком, который вы калибровки.
Будет заполнена матрица необработанных немасштабированных значений 3×3 и должна выглядеть примерно так, как показано на следующем рисунке.
После заполнения известных значений и необработанных немасштабируемых значений нажмите кнопку «Вычислить » в нижней части экрана. Матрица калиброванных значений 3×3 должна заполняться примерно так же, как на следующем снимке экрана.
После создания этих чисел выберите«Топ»или«Снизу калибровки » в соответствии с датчиком, который вы выполняете калибровку.
После правильной калибровки датчика цвета экрана и датчика внешнего цвета вернитесь на домашнюю вкладку раздела MALT, выбрав «Главная » в верхней части окна.
На вкладке «Главная» вы сможете выбрать любую кнопку под заголовком данных датчика и вернуть не отрицательные числа.
При калибровке необработанные значения совпадают с тем, нажимаете ли вы клавиши Read Screen RED, Read Screen GREEN или Read Screen BLUE (аналогично true с read Ambient).
Убедитесь, что плата датчика MALT подключена через кабель Ethernet.
Затем убедитесь, что кабель, который вы используете, может поддерживать Power Over Ethernet (POE). Все кабели CAT5 или лучше поддерживают это.
Наконец, попробуйте нажать кнопку сброса на Arduino Mega, если вы уверены, что ваш кабель suppports POE.
При калибровке матрица калибровки содержит «NaN» в одном из квадратов после нажатия кнопки «Вычислить «.
Убедитесь, что необработанные значения предоставляют разные числа для RED, GREEN и BLUE.
При нажатии клавиши RED, зеленый при нажатии клавиши GREEN и синего при нажатии клавиши BLUE убедитесь, что датчик MALT содержит красный цвет.
Если необработанные значения по-прежнему не отличаются, проверьте значение 1 выше.
После завершения калибровки (т. е. вы выбрали калибровку сверху или снизу калибровки) датчик считывает необоснованные значения на начальном экране.
Убедитесь, что вы на самом деле выбрали кнопки Calibrate Top или Calibrate Bottom .
Если вы уверены, что вы правильно откалиброли верхний и нижний датчики, учитывая приведенные выше инструкции, по электронной почте sensortools@microsoft. com.
Если этот раздел устранения неполадок не устраняет проблемы, отправьте сообщение электронной почты [email protected].
спросил
Изменено 10 лет, 9 месяцев назад
Просмотрено 3к раз
Я безуспешно пытался подключить Arduino Mega ADK с помощью исходников Demokit к нескольким телефонам.
Я скомпилировал и загрузил скетч Arduino «Demokit.pde» с помощью arduino 0022. Выглядит нормально, так как плата отправляет «старт» на клиентский USB-порт.
Я скомпилировал приложение Demokit под Eclipse, используя Google API 10 (для телефонов с Gingerbread) и Android API 15 (для ICS). Все в порядке.
Со стороны телефона я попробовал следующие настройки:
И ничего не произошло. В журнале eclipse есть только предупреждение:
W/PowerUI(654): неизвестное намерение: намерение {act=android.intent.action.ACTION_POWER_CONNECTED flg=0x10000010}
Больше ничего. Интересно, может ли плата иметь проблемы с USB-хостом…
Есть у кого идеи?
Спасибо
Есть несколько мест, где что-то идет не так.
Сначала для проверки платы попробуйте запустить простую программу мигания, чтобы убедиться, что сама плата работает.
Далее при подключении к плате телефон начинает заряжаться? Это покажет, есть ли какие-либо проблемы с подключением телефона к плате.
Из 3 телефонов я бы посоветовал вам попробовать nexus S со стандартным ПЗУ, так как CM (даже после нажатия банок) имеет проблемы с включением ADK.
2
Проблема возникла из-за процедуры настройки в скетче Demokit. pde. Я использовал макетную плату для его запуска, но я не подключил все компоненты, а для инициализации джойстика i2c необходимо, чтобы компонент был подключен, иначе процедура переходит в бесконечный цикл. Поэтому, если вы попытаетесь запустить Demokit.pde без платы demokit, обязательно подключите правильный джойстик или прокомментируйте вызов процедуры инициализации.
Пример демонстрационного комплекта на самом деле довольно сложен для начального теста. Я бы посоветовал после запуска программы мигания убедиться, что ваш Arduino Mega ADK работает, чтобы попробовать более простой первый тест.
Есть пара хороших примеров, которые намного проще demokit.
http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-with-your-phone-code-and-explanation/
http://digitalhacksblog.blogspot. com/2012/05/arduino-to-android-turning-led-on-and_29.html
Ни один из них не предназначен для Arduino Mega ADK, поэтому потребуются некоторые изменения, но они должны быть хорошим началом.
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Электронная почта
Требуется, но не отображается
Электронная почта
Требуется, но не отображается
Последовательный портспросил
Изменено 9 лет, 9 месяцев назад
Просмотрено 908 раз
У меня есть Arduino Mega ADK 2560, могу ли я управлять светодиодом из приложения для Android без каких-либо экранов, подключенных к Arduino, то есть через последовательный кабель USB?
Я просмотрел это, и большинство из них используют экран Bluetooth/любые другие экраны. Можете ли вы предоставить некоторые рекомендации или ссылки, содержащие код Arduino и Android, который работает для этой простой задачи?
для Arduino Mega ADK 2560 вам необходимо купить хост-щит USB или bluetooth, чтобы вы могли подключить его к телефону Android с помощью Android ADK .
Если вы хотите использовать свой телефон Android в качестве USB-хоста, а Arduino Mega ADK 2560 в качестве ведомого USB, это возможно, но вам придется много работать над кодом. Поэтому я предлагаю вам купить щит и вместо этого использовать библиотеку Android ADK.
1
Да, для умеренно слаботочных светодиодов больше ничего не нужно, кроме токоограничительного резистора.
Это связано с тем, что Arduino Mega ADK 2560 уже включает в себя микросхему интерфейса USB-хоста, часть, которую необходимо добавить к обычной плате Arduino через экран.