Радиоудлинитель USB

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

День добрый.

Возникла у меня желание подключить к компу цифровое пианино. Штатно это предполагается делать обычным шнурком USB A-B.
Но вот незадача, девайс стоит далеко от компа (в пределах 5 м) в противоположных концах комнаты и ни один из них подходить ближе к другому не желает. Как и жильцы не желают видеть между ними проводов. :)

Посему родилась идея, почему бы не организовать цепь "Компьютер - USB - WIFI/Bluetooth - USB - Device"? Поверхностное гугленье таковых простых решений почему-то не выявило, а переплачивать за навороченные устройства не хочется. Поэтому изучаю вопрос возможности сделать такое самому с бюджетом в ..., ну в общем, чем дешевле, тем лучше :) Главное, чтоб работало :)) Руки прямые, голова вроде варит. Тему разместил в разделе AVR, потому как думаю, что без МК не обойтись, а АВР-ки я вроде щупал.

Вопрос сообществу мягколапых - есть ли смысл в жизни в подобном проекте? Оно вообще возможно? :shock: Прошу покидать идей или ссылок на похожие реализации.
Спасибо.
Реклама
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

чисто теоретически для очень небольших скоростей это возможно
но вам надо быть готовым не только удлинитель сделать, но и драйвер для пианино написать самому - старый может не захотеть работать на пониженных скоростях

решение вашей задачи есть готовое - это usb/print серверы с функцией форврда usb
они правда не все устройства поддерживают, а стоят 2-3т.р.

вот что то типа такого вам нужно (стоит чуть дороже 1000р) но увы тут никто гарантии не даст, что с пианино заработает
с принтером/диском/вэбкамерой должна, а с пианино как повезет
http://www.buyincoins.com/item/2110.html
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

axillent писал(а):но и драйвер для пианино написать самому - старый может не захотеть работать на пониженных скоростях
С пианино не идёт никаких драйверов - винда его воспринимает как midi-устройство ввода.

Что касается скоростей - те же WiFi принт-серверы как то справляются. Здесь же скорость гораздо ниже.
Вообще, рассуждая по дилетантски, сам девайс и компьютер будут видеть обычное USB соединение. Просто команды протокола будут транслироваться по радиоканалу.
Затык может быть в латентности, но для моих расстояний это не проблема.
c2n
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара

Сообщение c2n »

Ну и я внесу 5 копеек.

Так называемая "несущая частота" у USB2.0 целых 12МГц....

Отсюда и пляшите :) Думаю на WiFi передатчиках можно изобразить чтонить
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

c2n писал(а):Так называемая "несущая частота" у USB2.0 целых 12МГц....
У USB2.0 есть две спецификации - Full и High. Знаете, чем они отличаются?
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 423
Зарегистрирован: Сб фев 21, 2009 16:11:32
Откуда: Харьков

Сообщение khomych »

а нет ли случаем на вашем пианино выхода под названием MIDI?
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

khomych писал(а):а нет ли случаем на вашем пианино выхода под названием MIDI?
Нет, такого нету. Есть USB 2.0 и Line Out L/R.

Немного вдаваясь в подробности, придумалась такая схема.
Берём МК с нативным USB (чтобы не подключать отдельный USB->UART чип), например AT90USB162 или PIC16F1459. А в качестве передатчика используем микросхемку типа MRF49XA. Связь МК и передатчика по шине SPI.

ЗЫ
Выяснилось, что MRF49XA тянет максимум 256 kbps, что не вписывается даже в low-speed границу :(
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

На передающем конце (куда будете втыкать USB кабель от пианино) будет нужен МК с поддержкой режима USB Host. В вышеупомянутом PIC-е USB модуль работает только как USB Client.
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

"Устройство midi-ввода"? Дык, оно наверное USB HID, т.е. low speed. По обычному миди вроде скорости совсем маленькие. Там же только команды (ноты/чем_играть) передаются. Ищите спецификацию или воткните в линуксовый комп и посмотрите что lsusb -v выдаст про тип и скорость.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

Ser60 писал(а):будет нужен МК с поддержкой режима USB Host
А каким образом этот факт обычно отражён в даташитах? Я просмотрел несколько AVRок с USB, но не нашёл там такого термина. Может быть вы подскажете, какие МК гарантированно обладают этим функционалом?
Kavka писал(а):или воткните в линуксовый комп и посмотрите
К сожалению у меня нет компа с линуксом, а с наскока я не нагуглил тулзы под винду, чтобы узнать тип соединения.
Пианино без родных драйверов попадает в "Аудио устройства". Родной драйвер Yamaha USB-MIDI реализует MIDI-over-USB подключение.
ИМХО, что это всё же low-speed.
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

alexg-nn писал(а):А каким образом этот факт обычно отражён в даташитах?
Ищите МК с интерфейсом USB OTG. Например, АT90USB1287 или AT90USB647.
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

Нашёл я таки способ узнать параметры соединения.
Спойлер

Код: Выделить всё

 ========= USB Port2 =========

Connection Status        : Device is connected
Port Chain               : 2-1-2

      ====== USB Device ======

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB-Verbundgerat
Device ID                : USB\VID_0499&PID_160F\6&3B069A8E&0&2
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0013 (GUID_DEVCLASS_USB)
Driver                   : C:\Windows\system32\DRIVERS\usbccgp.sys (Version: 6.1.7601.18328  Date: 2013-11-27)
Legacy BusType           : PNPBus
Class                    : USB
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0003
Location IDs             : PCIROOT(0)#PCI(1A00)#USBROOT(0)#USB(1)#USB(2)
Container ID             : {9ad6ffca-99f7-11e3-a177-002522b06c00}
Manufacturer Info        : (Standard-USB-Hostcontroller)
Capabilities             : Removable, SurpriseRemovalOK
Address                  : 2
Problem Code             : 0
Power State              : D0 (supported: D0, D3, wake from D0)
 Child Device 1          : Yamaha USB-MIDI Driver (WDM)
  Device ID              : USB\VID_0499&PID_160F&MI_00\7&2D66B851&0&0000
  Class                  : MEDIA

        ---------------- Connection Information ---------------
Connection Index         : 0x02
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01
Device Address           : 0x03
Is Hub                   : 0x00 (no)
Number Of Open Pipes     : 0x02 (2)
Device Bus Speed         : 0x01 (Full-Speed)
Pipe0ScheduleOffset      : 0x00 (0)
Pipe1ScheduleOffset      : 0x00 (0)

        ------------------ Device Descriptor ------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x08 (8 bytes)
idVendor                 : 0x0499 (Yamaha Corporation)
idProduct                : 0x160F
bcdDevice                : 0x100
iManufacturer            : 0x01
 Language 0x0409         : "YAMAHA Corporation"
iProduct                 : 0x02
 Language 0x0409         : "Digital Piano"
iSerialNumber            : 0x00
bNumConfigurations       : 0x01

        -------------- Configuration Descriptor ---------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0065 (101 bytes)
bNumInterfaces           : 0x02
bConfigurationValue      : 0x01
iConfiguration           : 0x00
bmAttributes             : 0xC0 (Bus Powered, Self Powered)
MaxPower                 : 0x00 (0 mA)

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0009
bInCollection            : 0x01
baInterfaceNr[1]         : 0x01

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x03 (MIDI Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24
Data (HexDump)           : 07 24 01 00 01 41 00 

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24
Data (HexDump)           : 06 24 02 02 01 00 

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24
Data (HexDump)           : 06 24 02 01 21 00 

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24
Data (HexDump)           : 09 24 03 02 41 01 21 01 00 

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24
Data (HexDump)           : 09 24 03 01 61 01 01 01 00 

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x01 (Direction=OUT  EndpointID=1)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x40 (64 bytes)
wInterval                : 0x0000
bSyncAddress             : 0x00

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25
Data (HexDump)           : 05 25 01 01 21 

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN  EndpointID=2)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x40 (64 bytes)
wInterval                : 0x0000
bSyncAddress             : 0x00

        ----------------- Unknown Descriptor ------------------
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25
Data (HexDump)           : 05 25 01 01 61 

Теперь, однако, встала проблема передатчика. Я так понимаю, что найти в свободной продаже трансмиттеры WiFi с нормальной документацией крайне сложно. Практически единственное, что мне удалось нагуглить - это микросхемы от MAXIM типа MAX2820/21/22. В моём славном мухосранске их нет, к сожалению. :(
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

В китае можно купить модули wifi-uart типа таких http://www.dealextreme.com/photogallery.dx/sku.264680

Вы оценили какая минимальная скорость нужна? Nrf24l01p дает 2мбит
Открыл глаза
Аватара пользователя
Сообщения: 60
Зарегистрирован: Пн дек 09, 2013 14:06:21
Откуда: Н.Новгород

Сообщение alexg-nn »

axillent писал(а):Вы оценили какая минимальная скорость нужна?
К сожалению, я не знаю, как проверить минимальную скорость, при которой соединение будет работать.
Судя по дампу, юзается Full-Speed соединение, для него я знаю только верхнюю границу скорости в 12Mbits/s. :dont_know:
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Тогда из распространенного только wifi
Кстати кроме тех модулей что указал выше можно взять xbee можули с вайфай. Они хорошо документированы, правда выйдут раза в два дороже
Ответить

Вернуться в «AVR»