1i7 (1i7) wrote,
1i7
1i7

Category:

Управление платой ChipKIT со смартфона Android через шнур USB

Завершающий и обобщающий пост из серии про управление платами ChipKIT со смартфона Android напрямую через шнур USB (в режиме аксессуара USB или USB Accessory).

Также с небольшим дополнением - смартфон Ётафон и плату ChipKIT WF32 всё-таки удалось подружить тоже, поэтому вот обновлённое видео:

ChipKIT WF32 и Ётафон: аксессуар USB from 1i7 on Vimeo.



WF32+Youtaphone-4-ledon.jpg

На ролике также присутствует Робот Машинка, всем своим видом демонстрирующий, что используя предложенный подход, любой смартфон с Android в комбинации с платой ChipKIT можно превратить в мощный интеллект для мобильного робота: смартфон делает всякие сложные подсчёты, использует встроенные камеру GPS и GSM (т.е. выступает в роли головного мозга), а плата получает простые команды и рулит моторами (выступает в роли спинного мозга). Шнур USB нужно взять покороче, а смартфон конечно же не держать в руках, а установить на робота рядом с платой.

Связать плату ChipKIT и смартфон Android через шнур USB
1) ChipKIT и Ётафон: у нас тут не всё так однозначно: выбор оборудования и пара слов о проблеме связи между платой ChipKIT WF32 и Ётафоном
2) ChipKIT и Ётафон: близкие контакты: установка связи между платой ChipKIT и смартфоном Андроид в режиме аксессуара USB
3) ChipKIT и Ётафон: двусторонняя связь: обмен данными между платой ChipKIT и смартфоном Андроид в режиме аксессуара USB
4) Chipkit и Ётафон: дополнительно: дополнительные замечания о работе с аксессуарами USB на Андроид.

Еще один пример практического применения связи платы ChipKIT и Android: левитирующий шарик от настольного тенниса.

Исходники
Мигание лампочкой через USB: прошивка для платы, приложение Андроид, прошивка для платы с бо ́льшим количеством отладочных сообщий (смотреть в mpide в Tools/Serial Monitor).

Управление Роботом Машинкой через USB: прошивка для платы, приложение Андроид.


Про связь ChipKIT WF32 и Ётафона

Немного повторюсь.

Про установку библиотек-драйверов USB для работы плат ChipKIT в режиме аксессуара USB для Android: http://chipkit.net/forum/viewtopic.php?f=16&t=2862
Конретно о проблемах со связью ChipKIT WF32 и Ётафон: http://chipkit.net/forum/viewtopic.php?f=16&t=2924

И про перевод платы ChipKIT WF32 в режим USB хоста (необходимо для работы в режиме аксессуара USB): http://1i7.livejournal.com/27564.html

Плата ChipKIT WF32 имеет 2 порта USB общего назначения (не считая mini USB для питания, прошивки и отладки по UART): большой вход USB как на ноутбуке или стационарном компьютере (он называется тип A) и вход micro USB.

Большой порт USB A используется для использования платы в режиме USB-хоста (USB Host) - это когда к ней подключаются внешние USB-устройства типа мышки или флешки, а сама плата рулит всем процессом - предоставляет устройству питание, общается с устройством при помощи зашитых в контроллер драйверов.

Порт micro USB позволяет самой плате побывать в роли USB-устройства, которое можно подключить к большому компьютеру.

Стартфоны и планшеты Android при использовании подсистемы Accessory работают в режиме USB-устройства, а плата-аксессуар выступает в роли USB-хоста, поэтому на плате мы будем работать с большим входом USB A и драйверами USB-хоста.

WF32-USB.jpg

Чтобы включить его на плате ChipKIT WF32, нужно установить джампер JP10 в положение A, также нужно замкнуть перемычки JP9 и JP11, которые задают кое-какие настройки питания для USB.

WF32-USB-jumpers.jpg


Теперь. Нюанс взаимодействия конкретно платы ChipKIT WF32 с конкретно смартфоном Ётафон в режиме аксессуара USB заключается в том, что после приведенных выше манипуляций с установкой перемычек нужные положения при питании платы от стационарного компьютера через порт mini-USB UART, смартфон, подключенный к плате через порт USB A, с точки зрения программной прошивки платы не подаёт никаких признаков жизни (отладочные сообщения можно посмотреть в mpide через меню Tools/Serial Monitor). При подключении к той же самой плате ChipKIT WF32 некоторых других устройств Android (планшетов и смартфонов), проблема взаимодействия не возникает; точно также, подключение смартфона Ётафон к плате ChipKIT Max32 с Network Shield в аналогичном режиме работает нормально.

Как оказалось, проблема заключается в том, что на конкретной плате ChipKIT WF32 питание от внешнего компьютера через порт UART в сочетании со встроенным регулятором питания внешних устройств 5 Вольт не предоставляет для конкретного смартфона Андроид Ётафон (вероятнее всего проблема в чипсете, поэтому проблема может воспроизвестить и на других устройствах) достаточный уровень питания для того, чтобы устройства увидели друг друга.

Проблема решается следующими способами - ЧИТАТЬ ВНИМАТЕЛЬНО НЮАНСЫ, ИНАЧЕ МОЖНО ЛЕГКО ПОДПАЛИТЬ ПЛАТУ, КАК ЭТО ДЕЛАЛ Я НЕОДНОКРАТНО (ЕСЛИ СМАРТФОН ОПРЕДЕЛЯЕТСЯ СРАЗУ, НИЧЕГО ДОПОЛНИТЕЛЬНОГО ДЕЛАТЬ НЕ НУЖНО):

0) Если питаете плату от стационарного компьютера через интерфейс UART micro-USB (т.е. в режиме отладки с Serial Monitor и прошивки платы из mpide) и при этом подключенный через порт USB A смартфон или планшет Android определяется на плате и определяет плату как аксессуар USB, ничего менять не нужно - пусть регулятор 5 В будет включен - на блоке J16 соединены перемычками ножки IN-VU и OUT-5V0 (в этом положении плата находится по умолчанию); перемычка на блоке J15 стоит в режиме UART:

WF32-5v-on-uart.jpg

1) При питании платы от стационарного компьютера через интерфейс UART micro-USB (т.е. в режиме отладки с Serial Monitor и прошивки платы из mpide), если подключенный смартфон или планшет Android не определяет плату как аксессуар USB, а на самой плате в консоли отладки смартфон не подаёт никаких признаков жизни, можно выключить регулятор 5 Вольт на плате - на блоке J16 напрямую соединить перемычкой ножки VU и 5V0; перемычка на блоке J15 стоит в режиме UART:

WF32-5v-off-uart.jpg

В этом случае плата должна начать видеть смартфон, а смартфон плату как USB-аксессуар, при этом все процессы взаимодействия платы и смартфона можно наблюдать через mpide в окне Tools/Serial Monitor.

2) При питании платы от внешнего источника питания (аккумулятора или батареек), регулятор 5 Вольт нужно ОБЯЗАТЕЛЬНО ВКЛЮЧИТЬ ОБРАТНО (если только вы точно не знаете, что делаете) - на блоке J16 соединить перемычками ножки IN-VU и OUT-5V0 (в этом положении плата находится по умолчанию); перемычка на блоке J15 стоит в режиме EXT:

WF32-5v-on-ext.jpg


Замечание 1: Внешнего аккумулятора на 7,4 Вольт оказалось достаточно, чтобы WF32 и Ётафон начали видеть друг друга даже при включенном регуляторе 5В и между ними всё было хорошо и здорово.

Замечение 2: Если подключить к плате внеший источник питания с достаточно большим, но допустимым для платы вольтажом (я пробовал 14,8В) и при выключенном регуляторе 5 В подключить устройство (смартфон) в порт USB A, порт USB A скорее всего мгновенно выгорит и больше не будет работать (вероятно вместе с ним сгорит что-то еще, но сама плата после этого прошивается и другие её части могут быть работоспособными), смартфон остался живым.

Замечание 3: При включенном регуляторе 5 В и питании платы от аккумулятора 14,8 В (очень близко к допустимому максимуму 15 В) подключение смартфона к плате ни к чему плохому не приводит (плата не сгорает, смартфон вроде тоже живой), но процесс определения аксессуара на смартфоне начитает скажем так немного глючить: на экране появляется уведомление о подключении аксессуара USB, через долю секунды оно исчезает и тут же появляется вновь, и так постоянно несколько раз в секунду до тех пор, пока провод от платы не будет отлключен. С аккумулятором 7,4 В всё нормально, промежуточные варианты могут тоже работать.

Замечание 4: При питании платы от внешнего источника 6 В (4 батарейки AA; естественно, при включенном регуляторе 5 В, хотя здесь это может не играть роли), управление со смартфона простым светодиодом, подключенным к плате, работает без проблем. Но если от этого же источника одновременно подать питание на моторы через драйвер L293D (пример с Роботом Машинкой), процесс подключения платы и смартфона пройдёт нормально, но в момент отправки команды на моторы смартфон и плата на долю секунды разрывают связь (этого достаточно, чтобы повлиять на приложение внутри смартфона). Вероятно это происходит из-за перепада напряжения в момент запуска моторов или смены направления вращения. На данный момент работающее для меня решение - питать плату и моторы от разных источников (например плату от аккумулятора 7,4 В, а моторы от батареек 4 АА=6 В - как на видео), передача сигналов от платы к моторам традиционно через драйвер L293D. Но должен быть способ запитать обе подсистемы от одного источника с использованием промежуточных схем, будет повод узнать, сообщу.

Tags: android, chipkit, Робот Машинка, типовые задачи
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments