Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.01.2014, 11:42   #1
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию AVR-CDC

Виртуальный COM порт через Low-Speed USB

Сайт автора: http://www.recursion.jp/avrcdc/

Литература:

1. Datasheet AR9331 - AR9331 Highly-Integrated and Cost Effective IEEE 802.11n 1x1 2.4 GHz SoC for AP and Router Platforms.
2. V-USB - программная реализация low-speed usb на мк AVR.

Описание:
Цитата:
AVR-CDC converts USB and RS-232C signals using the AVR micro- controller which has no on-chip USB interface. This technology is based on Object Deveopment's V-USB (Software-USB on AVR), and the CDC (Communication Device Class) protocol was extended over it. AVR-CDC enables PC to communicate with the USB device through virtual COM port.
The basic idea of using CDC protocol over Low-speed USB is based on Kyosuke Ishikawa's experiment in 2005. To make it stable and practical, Christian Starkjohann in Object Development helped me modifying his V-USB stack. Since three endpoints and the bulk transfer on low-speed device violates the USB standard, I added a tiny patch driver on Windows' USB stack.
Although this technology is quite experimental, it may be useful to interface your original system to PC easily. The circuit is very simple, but it requires a certain amount of skills to control. If you need practical or stable solutions, or you are not familiar with electronics nor installing drivers, use the dedicated chip from vendors like FTDI.
The back door to the low-speed bulk transfer is gradually closing on the newer OS. After enjoying this USB technology, switch to the HID protocol or to MCU having on-chip USB controller.
Что касается работы под Linux:

Цитата:
Linux 2.4 and 2.6.31- recognize the device as /dev/ttyACM* (* is some numbers).
Linux <2.6.31 does not allow the low-speed bulk transfer. Replace the kernel to 2.6.31 or higher. Tiny Core Linux 3.0 has the kernel 2.6.33.
Доступные "переходники":

1. CDC-232 - это непосредственно виртуальный UART.

Пример схемы:


2. CDC-IO - это виртуальный микроконтроллер AVR. Имеется доступ к внутренним регистрам специального назначения (SFR), т.е. можно конфигурировать микроконтроллер, управлять его портами целиком (по 8 бит). Управление происходит через специальный командный протокол.

Пример схемы:


3. CDC-SPI - виртуальный SPI через USB.

Пример схемы:


Внимание. Поскольку устройства подключаются как low-speed, то необходим промежуточный usb-hub с usb 2.0 для "понижения скорости".

В качестве макетных можно использовать платы с сайта http://microsin.ru/.

Пример low-speed usb устройства на базе ATtiny45 (или ATtiny85):

__________________
Россия навсегда!

Последний раз редактировалось uni; 07.01.2014 в 12:13.
uni вне форума   Ответить с цитированием
Старый 07.01.2014, 11:52   #2
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: AVR-CDC

Если подключить low-speed usb устройство напрямую к роутеру, то получим ошибку:

Код:
root@OpenWrt:/# [   67.630000] hub 1-0:1.0: connect-debounce failed, port 1 disabled
[   70.030000] hub 1-0:1.0: connect-debounce failed, port 1 disabled
[   72.430000] hub 1-0:1.0: connect-debounce failed, port 1 disabled
[   74.830000] hub 1-0:1.0: connect-debounce failed, port 1 disabled
[   77.230000] hub 1-0:1.0: connect-debounce failed, port 1 disabled
Она имеет описание на сайте OpenWrt.

#11985 (No low-speed usb device support on TL-MR3020)

Цитата:
Directly attached low speed usb device are not detected on TP-MR3020 an producing the following error "connect-debounce failed" in the kernel error log. If the same device is connected through a usb hub, everything works fine (log lines with 1933).
При подключении устройства, основанного на V-USB и собранного на AVR микроконтроллере и подключенного через usb-hub, оно определяется:

Код:
[   38.610000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   38.760000] hub 1-1:1.0: USB hub found
[   38.760000] hub 1-1:1.0: 4 ports detected
[   81.120000] usb 1-1.3: new low-speed USB device number 3 using ehci-platform
[   81.230000] usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x1 is Bulk; changing to Interrupt
[   81.240000] usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x81 is Bulk; changing to Interrupt
Теперь нужно собрать какое-нибудь устройство по схемам выше, прошить их прошивкой с сайта автора и подключить к хабу. Должно сразу заработать.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 07.01.2014, 12:52   #3
vuln
Junior Member
 
Регистрация: 12.02.2013
Сообщений: 10
Вес репутации: 0
vuln is an unknown quantity at this point
По умолчанию Re: AVR-CDC

Цитата:
Сообщение от uni Посмотреть сообщение
Теперь нужно собрать какое-нибудь устройство по схемам выше, прошить их прошивкой с сайта автора и подключить к хабу. Должно сразу заработать.
подтверждаю работает, можно еще at90usb162 попробовать, у него аппаратное usb на борту
vuln вне форума   Ответить с цитированием
Старый 07.01.2014, 13:30   #4
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: AVR-CDC

Да, сам автор на сайте у себя там пишет, что потом нужно переходить на аппаратную реализацию. Но мк с usb на борту уже не такие простые и идут в составе всяких ардуин уже. Есть платки на основе арм'ов с usb, которые можно использовать для реализации виртуальных uart, но их тоже трудно где взять именно в таком исполнении. Их можно и самому собрать, но многие хотят без паяния.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 22.04.2014, 08:56   #5
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: AVR-CDC

CDC-IO прекрасно работает! Правда нужно установить пакет kmod-usb-acm (~16 Кб) и использовать usb-hub как переходник к low-speed устройству.

Вот лог при подключении:
Код:
[  826.230000] usb 1-1.3: new low-speed USB device number 5 using ehci-platform
[  826.340000] usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x1 is Bulk; changing to Interrupt
[  826.350000] usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x81 is Bulk; changing to Interrupt
[  826.370000] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device

root@OpenWrt:/# ls /dev/
bus        mtd0ro     mtd4ro     mtdblock5  ttyACM0    ttyS14     ttyS8
console    mtd1       mtd5       null       ttyATH0    ttyS15     ttyS9
full       mtd1ro     mtd5ro     port       ttyS0      ttyS2      urandom
fuse       mtd2       mtdblock0  ptmx       ttyS1      ttyS3      watchdog
kmsg       mtd2ro     mtdblock1  pts        ttyS10     ttyS4      zero
log        mtd3       mtdblock2  random     ttyS11     ttyS5
mem        mtd3ro     mtdblock3  shm        ttyS12     ttyS6
mtd0       mtd4       mtdblock4  tty        ttyS13     ttyS7
Появилось устройство ttyACM0. Проверить его работу можно следующим образом. Подключаемся двумя терминалами к роутеру. На одном выполняем команду cat /dev/ttyACM0, а на другом терминале посылаем команды, например: echo @ > /dev/ttyACM0. На что устройство отвечает: cdc-io.

Итого, чтобы сделать 3 цифровых выхода нам понадобится: ATtiny45(85), три резистора (68, 68, 1к5), 2 диода (4148). Всё. Даже можно без разъёма USB обойтись, сделав его прямо из платы. Если нужно больше выходов, то берём мк постарше. Возможно даже, что примитивная система команд может не только дискретные входы считывать, но и настраивать АЦП и считывать аналоговый сигнал.

Поскольку исходники открыты, то можно вообще свою систему команд сделать.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 07:42. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика