Bluetooth usb хаб
Прекрасное время – последний курс института. Диплом начинается. Просто восхитительно, когда при этом еще и особо не шаришь в теме своего диплома. В общем, к концу апреля мне нужно уже доделать эту работу хотя бы на процентов так 90, поэтому очень надеюсь на Вашу помощь в разборе материала. Я далее изложу задание и то, к чему я пока пришел. Хотелось бы не только ответы на вопросы получить, но и может какие-то комментарии или полезные ссылки, если таковые имеются.
Заранее спасибо за помощь.
Задание:
Создание программного обеспечения для устройства и мобильника.
Суть устройства проста это своего рода usb хаб, только с некоторыми особенностями. Это автономное устройство, которое через Bluetooth подключается к мобильнику и в приложении на телефоне производятся операции с файлами – удаление, перемещение, копирование.
Данная задача актуально поскольку половина телефонов не поддерживают работу с usb накопителями, и поэтому создать некое универсальное устройство (в меру универсальное, не надо нам через него мышки, клавиатуры, жесткие диски и прочее подключать, только обычные флешки)
По условиям задачи мобильник на платформе android. Устройство на основе микроконтроллера семейства AVR. Принципиалки в данный момент нет, поскольку физическое исполнение проекта поручено другому человеку. Мне исключительно программная составляющая поручена.
С товарищем ответственным за железо сошлись пока на том, что будем делать на AT90USB162, а для экспериментов и постепенного решения задач используем отладочную плату AVR USB 162. Также были куплены два обычных USB type А и Bluetooth модуль НС-06.
Возможно будет рассматриваться использование МК других семейств, например AT91SAM7S
Есть устройство и мобильник. Соответственно нужно рассматривать две отдельные системы, которые через bluetooth будут взаимодействовать между собой.
Система для устройства представляет собой переходник по своей сути от usb к bluetooth, поэтому в моем представлении ее можно разбить на три основные элемента:
1. «Ядро» программы
2. Модуль usb
3. Модуль bluetooth
Соответственно модули позволяют производить инициализацию устройства, отключение, чтение данные поступающих с него, и отправку данных на него. И они в отличии от драйверов будут просто закомпилены вместе с условным ядром в цельную программу.
Система для телефона представляет собой своеобразный файловый менеджер, который в моем представлении можно разбить на три составляющие:
1. Пользовательский интерфейс
2. «Ядро» программы
3. Модуль bluetooth, аналогичный тому, что будет на МК
Для исправной работы всего этого комплекса необходимо, чтобы usb модуль соответствовал стандартам. А протокол общения по bluetooth можно выбрать любой (вплоть до разработки своего на коленке), главное, чтобы он был одинаков на обоих устройствах.
1. Правильно ли я понимаю саму структуру этого проекта?
2. Реализуемо ли это в принципе за данные сроки? Если нет, как можно упростить данную задачу? Учитывая, что я знаю только Си с щепоточкой С++, и имел небольшой опыт работы с МК на Си и ассемблере, думаю проблема не так велика, но хотелось бы узнать мнение людей, более просвещенных в данной области, если таковые читают этот длиннопост (попытаться договориться на счет упрощения думаю получится, если не урезать задачу в разы)
3. Для usb можно попытаться нашаманить что-то при помощи библиотеки v-usb. Это оптимальный вариант? Или есть какие-нибудь предложения получше? Если есть готов выслушать. Если нет, хотелось бы тогда узнать есть ли на русском полноценная о нем информация? (на английском много нашлось, но если возможно упрощение, я бы хотел им воспользоваться в любом случае ) Или может быть лучше использовать встроенные в МК возможности использования USB? Если последний вариант лучше, то как это сделать? Мне не удалось понять. Особенно на отладочной плате, в которой нет возможности подключиться дополнительно к этим портам, но если купить отдельно МК, то возможно и получится. Как я понял USB у АТ90USB162 нужен только для программирования, но если я не прав, буду рад поправкам.
4. Для bluetooth я нашел, что вроде протоколы общения есть, но они все разные для разных нужд, получается если я соберу полный набор команд, которые мне нужно передавать между телефоном и устройством я могу и сам составить свой, более приспособленный к моим навыкам программирования протокол общения?
5. Есть ли возможность писать программы на андроид на Си? Или тут только ява, только хардкор? (пока я ее не знаю, для меня это какая-то дичь, все через классы и объекты делать, это слишком мощно для меня, возможно именно поэтому я на С++ не перешел полноценно, а тут это похоже еще больше внедрено в структуру программирования)
Usb bluetooth with avr
Миниатюрный модуль позволяет подключиться к телефонам, PDA, наладонникам, смартфонам, ноутбукам, к любым устройствам, имеющим на борту модуль Bluetooth в режиме master, и передавать данные через стандартный RS-232.
Модуль HC-04 (так коротко он называется в даташите) питается от 3.3 вольт, снабжен малогабаритной антенной, имеет TTL сигналы приема и передачи RXD и TXD стандартного RS-232, а также выход на светодиод, отображающий статус радиоканала.
Процедура подключения выглядит следующим образом: сразу после включения питания модуль отвечает на нехитрый набор AT-команд (см. далее). Настройки порта по умолчанию 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности (скорость можно менять AT-командой в широких пределах). При отсутствии связи по радиоканалу индикационный светодиод часто мигает. После того, как master Bluetooth установил соединение, светодиод переходит на постоянное свечение, модуль перестает отвечать на AT-команды, и начинает просто передавать данные. Образуется следующий канал связи:
Таким образом, можно по радиоканалу Bluetooth передавать данные на стандартный UART, имеющийся в большинстве встраиваемых систем (этот порт имеется почти во всех микроконтроллерах, либо легко организуется программно). На стороне master-устройства BlueTooth (телефон, PDA, ноутбук с Linux или Windows и проч.) появляется виртуальный COM-порт, с которым можно легко работать программно.
Модуль построен на чипе BC417143B-IQN-E4 (BlueCore4-External device) компании CSR (Cambridge Silicon Radio), см. [2], и 8-мегабитном чипе FLASH-памяти ES29LV800DB, в котором записано firmware BC417143B.
[Технические параметры модуля HC-04]
— используемые радиочастоты 2.40 .. 2.48 ГГц, диапазон ISM (регистрация и лицензирование частот не требуется), уровень мощности Class2 (+6 dBm), чувствительность приемника -85 dBm.
— протокол BlueTooth V2.0.
— возможные скорости передачи данных 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 бод. Скорость может быть выбрана пользователем с помощью AT-команд, по умолчанию скорость 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности
— напряжение питания 3.3 вольт, ток потребления 35 мА в режиме поиска радиосоединения, и около 8 мА, когда радиоканал установлен и функционирует, ток в режиме сна — рабочий температурный диапазон -40 .. +105 o C.
— размеры 28 x 15 x 2.35 мм.
[Система AT-команд модуля HC-04]
Модуль отвечает на команды AT, когда радиоканал не установлен.
AT проверка RS-232 (в ответ на эту команду модуль выдает OK).
AT+BAUDx установка скорости, где x шестнадцатеричное число от 1 до C (1 соответствует 1200 бод, C соответствует 1382400 бод), подробности см. в даташите (пакет [3]). Измененная настройка скорости сохраняется при выключении питания.
AT+NAMEname изменение имени устройства (в нашем примере linvor) на другое имя name.
AT+PINpppp изменение пароля (PIN-кода), где pppp новый пароль. Пароль по умолчанию 1234.
[Тестирование модуля HC-04]
1. Нужно подключить светодиод и подать 3.3 вольта на модуль. Получается следующая простая схема:
2. После подачи питания светодиод на модуле начинает часто мигать, сигнализируя о готовности к подключению радиоканала. В качестве master BlueTooth я использовал телефон HTC TOUCH pro2 T7373 (Windows Mobile 6.1 Professional, OS CE 5.2.21048). Чтобы установит канал связи, нужно сначала через меню настроек включить радиоинтерфейс Bluetooth.
3. После того, как интерфейс BlueTooth включен, нужно запустить поиск новых устройств Bluetooth через Меню -> Добавить устройство. После поиска телефон обнаружит новое Bluetooth-устройство linvor, это и есть наш радиомодуль. Для соединения с устройством щелкните на имя linvor, появится запрос пароля. В качестве пароля (PIN-код) нужно ввести 1234. После успешного подключения будет предложено выбрать имя COM-порта, с которым будет связано Bluetooth-подключение (например COM2).
4. Чтобы соединиться с устройством, нужно выбрать его в списке и щелкнуть на надписи «Соединить». Как только соединение установлено, светодиод на модуле HC-04 переключится на постоянное свечение, и через COM2 можно передавать и принимать данные.
5. Для проверки передачи данных я использовал putty (на телефоне putty Windows Mobile, см. [4], а на компьютере putty для Windows XP, см. [5]). К TTL-сигналам порта RS-232 модуля я подключил микроконтроллер Atmel AVR AT90USB162MU (установленный на макетной плате AVR-USB162MU). При таком подключении питание +3.3 вольта подается на модуль Bluetooth от внутреннего стабилизатора напряжения микроконтроллера AT90USB162MU (перемычка SJ1 должна стоять в положении 2-3).
Передачу данных я контролировал через виртуальный COM-порт USB CDC, скомпилированный из примеров библиотеки LUFA. Получилась такая тестовая цепочка:
К сожалению, связь между двумя модулями HC-04 не поддерживается, связь возможна только с master-устройством Bluetooth (любой телефон, смартфон, наладонник или ноутбук, у которого есть интерфейс Bluetooth). Однако есть возможность написать для модуля HC-04 своё firmware с любым функционалом, в том числе и с поддержкой режима master Bluetooth (см. [2] и [8]).
Резюме: радиомодуль Bluetooth HC-04 очень удобен для быстрой и недорогой реализации двухсторонней беспроводной связи с различными embedded-системами — различными датчиками, роботами, бытовыми приборами. Модуль стоит на dealextreme.com всего лишь 7.2 доллара (бесплатная доставка free shipping), его можно легко заказать по предоплате через PayPal или картой VISA, MasterCard, получите прямо на почте. Мои модули я получил через 22 дня после заказа.
[Программатор для HC-04]
Компания CSR предлагает довольно дорогие программаторы, самый простой и дешевый из них стоит около $300 (USB SPI Converter, Product ID: DEV-SYS-1808-1A), и его в России нигде не купить. К счастью, можно собрать самому довольно простой программатор, подключающийся через порт LPT компьютера. Этот же программатор позволяет делать полноценную отладку по исходному коду программы и по дизассемблированному коду, просматривать значения регистров процессора и ячеек памяти.
Внешний вид собранного программатора:
С программатором работают GUI-программы PSTool и BlueFlash, которые позволяют скачивать данные настроек и firmware из чипа FLASH, а также стирать и перезаписывать настройки и firmware. Утилиты PSTool и BlueFlash находятся в пакете по ссылке [8]. Кроме того, этот LPT-флешер работает как полноценный аппаратный отладчик в среде разработки xIDE фирмы CSR (находится в том же пакете).
Программа PSTool позволяет считывать, сохранять, редактировать, сливать вместе (merge), записывать в память FLASH чипа настройки модуля и настройки firmware. Настройки сохраняются в виде текстового файла с расширением *.psr. Внешний вид интерфейса программы PSTool:
Для сохранения всей FLASH-памяти целиком и для её перезаписи служит программа BlueFlash.
1. Wireless Bluetooth RS232 TTL Transceiver Module site:dx.com .
2. BlueCore4-Ext™ site:csr.com — общее описание BlueCore4-External device на сайте компании CSR.
3. Документация на модуль (описание модуля, AT-команды, даташит на чип BC417143B).
4. PocketPuTTY download site:pocketputty.net — Putty для Windows Mobile.
5. PuTTY Download Page site:chiark.greenend.org.uk — putty для Windows XP и других платформ.
6. Как покупать на dealextreme site:dealextreme.spb.ru .
7. LUFA — бесплатная библиотека USB для микроконтроллеров Atmel AVR.
8. 180318CSR_CASIRA_BLUELAB_SDK_v4.1.zip — CSR CASIRA BLUELAB SDK v4.1, пароль на архив casira (пароль установлен потому, что иначе Deposit удаляет файл). Здесь есть все необходимое для разработки и отладки firmware для HC-04 (документация, среда разработки xIDE3, примеры кода, библиотеки, утилиты для прошивки и бекапа памяти).
9. Дампы настроек (.psr) и firmware HC-04 (.xdv и .xpv), сделанные программами PSTool и BlueFlash.