Соединение через USB
Планшет, по определению, является носимым мини-компьютером. Следовательно, одним из основных интерфейсов у него должен быть USB. На практике это означает, что большинство современных Андроид – планшетов имеют на корпусе разъем, в котором предусмотрены соответствующие цепи.
Соединение по USB является асимметричным, т.е. в связке обязательно должен быть ведущий (Host) и ведомый (Device). Первый из них инициирует запросы, а второй генерирует ответы. Типичный Host – это компьютер, типичный Device – флешка. Соединение Host- Host или Device- Device принципиально работать не будет.
Host, кроме всего прочего, обеспечивает питанием +5 В ведомое устройство. Ток нагрузки по стандарту 0…500 мА. Если требуется больше, то применяют внешнее питание.
Host ou Device?
Наличие в паспортных данных планшета записи «USB-интерфейс» еще ни о чем не говорит. Чтобы планшет поддерживал режим ведущего, должно быть прямое указание «USB- Host» или «USB-OTG». Такие планшеты по цене немного дороже, но оно того стоит, ведь через кабель-переходник к ним можно напрямую подключить: клавиатуру, мышь, флешку, носимый жесткий диск, джойстик от игровой приставки, Ethernet-модем, хаб и даже принтер.
Планшет с USB-OTG может общаться с МК через конвертор UART-USB (рис.28), выполненный, например, на микросхемах: FT232, PL2303, CP2102, ATmega 16U2. В такой системе планшет работает через виртуальный СОМ-порт с двунаправленной передачей данных.
Чтобы наделить МК функцией ведущего устройства, требуется специализированная микросхема USB-хоста, подобная MAX3421 (рис.29). Сопряжение с ней производится через интерфейс SPI.
Современные МК, которые имеют внутренний тракт USB, как правило, допускают работу в двух режимах – ведомый и ведущий (рис.30). Соответственно, выполняемые функции у них будут разными.La табл.9 приведены варианты практической реализации USB-соединений с платами и модулями, содержащими 8- и 32- разрядные МК.Но, имеет ли смысл перелагать на хрупкие плечи низкоростных МК работу в режиме Host? Это, по сути дела, попытка сымитировать драйвер компьютера, что приводит к неоправданному усложнению программного обеспечения и излишнему расходу памяти. Гораздо проще руководствоваться древним принципом «Кесарю кесарево» и использовать планшет как Host, а МК как Device.
USB-OTG câble
Сокращение OTG расшифровывается как «On The go», т.е. « в движении», «в работе», «весь день на ногах». Речь идет об образном представлении ситуации, когда два периферийных USB-устройства могут в любой момент времени соединиться друг с другом напрямую без компьютера или ноутбука. К примеру, фотопринтер сразу распечатывает снимки с цифрового фотоаппарата или видеокамеры.
Между выражениями USB-Host и USB-OTG часто ставят знак равенства. Но, строго говоря, OTG является более широким понятием, поскольку включает в себя возможность работы не только в режиме Host, но и Device. Визуально легко запомнить, что классический Host – это 4-контактный разъем в компьютере, а классический OTG – 5-контактный разъем microUSB-AB с дополнительным управляющим сигналом ID.
Для того чтобы активизировать в планшете режим USB-Host, требуется специальный кабель. Его отличие от аналогичных заключается в закорачивании контактов 4 и 5 разъема XP1 microUSB (рис.31).
На рис. 32-34 показаны конструктивные разновидности USB-OTG кабелей и переходников. Иногда их называют адаптерами, поскольку от «чистого» кабеля их отличает внутреннее соединение цепей. Допускается в качестве переходника использовать планшетные картридеры, имеющие розетку для подключения флешки.
Надо правильно понимать, что OTG – это функция планшета, а не кабеля. Устройство, к которому подстыковывается такой кабель, автоматически настраивается как Host. Если закоротку контактов 4 и 5 удалить, то устройство настраивается как Device.
Для проверки кабеля надо подключить его к планшету и наблюдать за сообщениями вверху экрана. Как правило, сразу появляется надпись: «Подключен USB-кабель». Далее следует вставить в розетку исправную флешку и через пару секунд наблюдать надпись: «Съемный USB-носитель подключен». После этого можно открыть в планшете приложение «Total Commander» и прочитать содержимое памяти в разделе /storage/UsbDriveA/.
Если используется USB- OTG кабель с внешним питанием (рис.35), то «лишний» разъем следует подключить к стабилизированному блоку питания 5 В. Это снизит нагрузку по току на аккумулятор планшета и позволит подзаряжать его налету, без перестыковки разъемов.Если возникают проблемы с тестирование кабеля, то надо скачать в магазине GooglePlay приложение: «USB Host Diagnostics», «OTG Troubleshooter», «USB Host Check», которые попытаются определить состояние канала OTG в планшете и устранить неисправность коррекцией софта.
Avis important. Режим USB- OTG программно реализован, начиная с версии ОС Android-3.1 образца 2011 года, следовательно, на устаревших (не обновленных) планшетах он работать не будет.
Программный терминал в планшете
Пользователи МК знают, что канал UART широко используется для передачи информации в компьютер через виртуальный СОМ-порт. В нашем случае компьютер замещается планшетом, следовательно, в магазине приложений надо выбрать одну из бесплатных терминальных программ:
– USB Serial Terminal Lite (автор Hosun Lim);
– USB Serial Control Panel Lite (автор Hosun Lim);
– TermUSB v4.1 (автор А. Шипов);
– Android USB Serial Monitor Lite (автор «ksksue»);
По функциональным возможностям лучшими оказались первые две из них, имеющие схожий пользовательский интерфейс. К тому же, приложение «Terminal Lite» отдаленно напоминает известную компьютерную программу «Terminal by Br@y» https://sites.google.com/site/terminalbpp/, а приложение «Control Panel Lite» удобно использовать в качестве кнопочного пульта управления.
«Планшет-USB-Arduino»
De рис.36 показана схема для экспериментов. Соединительный тракт состоит из двух кабелей, причем со стороны Arduino используется штатный кабель для связи с компьютером. Дополнительный кабель USB-OTG переводит планшет в режим Host.Первым делом кабель USBa- USBb надо подключить к компьютеру и прошить в Arduino скетч листинга 3, в котором в бесконечном цикле анализируется символы, принимаемые по каналу UART. Если принят символ «1», то включается светодиод «L» на плате Arduino, если принят символ «0», то светодиод выключается. Правильность транзакции проверяется через внутренний терминал Arduino: «Сервис-Монитор порта». (рис.37).
Далее Arduino соединяется с планшетом, на котором запускается приложение «Terminal Lite». На вопрос: «Разрешить приложению получать доступ к USB- устройству?» Ответить «Да». Иконкой гаечного ключа в настройках задается скорость 9600 бод, режим 8-N-1 (рис.38). Иконкой телефона устанавливается связь с Arduino, что подтверждается вступительной надписью «Press<1> or <0>:». Теперь можно ввести с сенсорной клавиатуры планшета в нижней строке ТХ цифры «1», «0» и отправить их в Arduino иконкой со стрелкой, при этом на плате должен реально включиться и выключиться светодиод «L».Автоматизировать отправку цифр можно макросами М1…М7, активизировав их иконкой карандаша в правом нижнем углу экрана. Но макросы лишь вводят данные в нижнюю строку ТХ, а отправлять их все одно придется иконкой со стрелкой.
Истинно однокнопочного управления можно добиться приложением «Control Panel Lite» (рис.39).Настройка скорости и соединения производиться аналогично «Terminal Lite». Панели для команд «Включить светодиод» и «Выключить светодиод» создаются в интерактивном режиме иконками крестика и карандаша (рис.40).Нажатие пальцем на эти панели сразу же приводит к зажиганию или гашению светодиода «L».
«Планшет-USB-STM32F4Discovery»
Внимательный читатель должен был обратить внимание, что надписи, передаваемые из Arduino в планшет в листинге 3, были выполнены по-английски. Связано это с тем, что компилятор Arduino переводит текст надписей в формат UTF-8, в котором цифры и английские символы в диапазоне 0х00…0х7F кодируются одним байтом, а буквы кириллицы 0х80…0хFF – двумя байтами. Но, далеко не все терминальные программы четко воспроизводят формат UTF-8. Например, встроенный в Arduino терминал здесь тоже дает сбой.
К чести автора планшетных приложений «Terminal Lite» и «Control Panel Lite»,поддержка кириллических надписей UTF-8 в них имеется, правда, программный декодер пока еще «не вычищен» и через раз путается в буквах.
Данная программа будет отсутствовать в тех микроконтроллерных схемах, которые программно не привязаны к Arduino. ТО есть, Си-компиляторы, подобные WinAVR, CooCox, генерируют текст в однобайтовом формате Windows-1254, что позволяет успешно использовать стандартные терминальные программы.
В качестве примера на рис. 41 приведена схема, которая выполняет удаленное включение и выключение светодиода, но уже на плате STM32F4Discovery. Для связи с планшетом используется встроенный в МК STM32F407VG канал USB и разъем CN5. Компьютер нужен только для программирования. Электрическое соединения контактов РА9 и 5V необходимо, чтобы питание на плату подавалось от планшета, а не от компьютера или внешнего источника.На программном уровне МК нужно записать код, переводящий его в режим виртуального СОМ-порта в классе CDC (Communication Device Class).
Порядок действий.
- На странице <http:/vg.ucoz.ru/load> найти ссылку «STM32F4: Текстовый проект реализующий подключение USB CDC» и скачать файл «44_myusb.zip» длинной 398 Кбайт (автор В. Горбунков). Находящуюся в нем папку «myusb» скопировать по пути «С:/CooCox/ColDe/workspace/». Запустить в среде CooCox-1.7.6 проект «myusb», скомпилировать его и прошить в STM32F4Discovery по методике [2], но для семейства STM32F
- Подключить проверяемую плату к планшету. Если нет обрывов по питанию, то должен загореться зеленый светодиод возле разъема microUSB.
- Запустить на планшете приложение «Terminal Lite». Нажать иконку гаечного ключа и настроить пункт «Charset» на строку «windows-1251» для правильного отображения кириллицы. Скорость связи может устанавливаться любой в диапазоне 600…256000 бод.
- С нижнего окна ТХ терминальной программы послать в STM32F4Discovery цифры «1»… «4» и наблюдать отклики. Если они соответствуют рис.42, значит, программная и аппаратная часть функционирует нормально.
- Откорректировать файл «main.c» в проекте «myusb» согласно листингу 4 и вновь скомпилировать проект. Запустить в планшете приложение «Control Panel Lite» и убедиться, что надпись «Нажмите <1> или <0>:» читается по-русски без ошибок, а светодиод синего цвета на плате STM32F4Discovery включается и выключается однократным нажатием на одноименные панели сенсорного экрана.
Пояснения к листингу 4
Строки 5,6,10,19,20 являются обязательными для любой программы, использующей виртуальный СОМ-порт в классе USB CDC.
Строки 11-18 определяют настройку выходной линии PD15, к которой на плате подключается синий светодиод. Текст скопирован один к одному из файла «mx_gpio.c», который генерируется программой MicroXplorer по методике [4]. Файл инсталлятора «MicroXplorer-3.2» (фирма STMicroelectronics, 21 Мбайт) продублирован по адресу http://drive.google.com/file/d/0B4tt7VlagNLHampSLURDc2Fidk0/edit?usp=sharing.
Строки 25-26. Прием символа производиться в нулевой элемент массива inByte [0], а выдача символа обратно по USB использует весь массив inByte. Такова специфика работы с функцией «usb_cdc_printf».
Строка 31. Уровень оптимизации в исходном проекте «myusb» был задан –О0, т.е. вообще без оптимизации. Однако, для ускорения работы имеет смысл изменить его на –О1. Следует учесть, что при уровнях –О2, –О3 проект тоже компилируется, но с многочисленными замечаниями.
Littérature
- STM32. В MicroXplorer добавлен генератор кода // ChipSpace, 2013 http://chipspace.ru/stm32-microxplorer-source-code/.
Архив к проекту (Télécharger)
Auteur : Sergey Рюмик, Tchernigov
Source : Радиоаматор №9, 2014