Роль USB устройства

blo
Offline
Зарегистрирован: 28.06.2011

Возможно глупый вопрос, но все же, подскажите пожалуйста можно ли использовать тот USB, который предназначен для заливки скетчей для подключения и коммуникации с устройствой, выступающим в роли USB хоста? Т.е. сама плата arduino должна выступать в роли USB устройства.

Если да, то как в таком случае заливать скетчи и отлаживаться? Вижу пины RX и TX, может их можно использовать?

leshak
Offline
Зарегистрирован: 29.09.2011

 Нет. Нельзя. Нужен либо отдельный USB шилд, либо версия ардуины где он есть встроенный. Например Arduino ADK

blo
Offline
Зарегистрирован: 28.06.2011

 Шилд то есть, но он зараза прожорливый, хочу попробовать обойтись без него. ADK было бы в самый раз, но он ко мне никак не дойдет. 

Вроде нашел что-то похожее, буду копать в эту сторону.

leshak
Offline
Зарегистрирован: 29.09.2011

 "Что-то похожие", это совсем не хост. А slave.  Возможно, теоретически и можно заюзать эту Atmega8U2 как хост (но не думаю что это будет тривиально), но возможность прошивать скетчи вы при этом потеряете почти наверняка. Потребуется какой-то внешним программатор.

Тот же ADK, все-таки, для USB хоста отдельную микруху юзает MAX3241.

По поводу "прожорливый", ну в любом случае хост не может святым духом питатся. Так что не факт что вы много выиграете от отказа от шилда. К тому же нет гарантии  что это "он жрет", а не то устройство которые вы к нему подключили (например пытается зарядить свои аккумы).

blo
Offline
Зарегистрирован: 28.06.2011

 Нет-нет, мне как раз нужно чтобы arduino выступало в роли "USB устройства" а не "USB хоста".

maksim
Offline
Зарегистрирован: 12.02.2012

Так она и так выступает в роли USB устройства.

maksim
Offline
Зарегистрирован: 12.02.2012

Где то слышал, что можно прошить Atmega8U2 так что бы определялась компом по-разному, например как джойстик или еще как...

leshak
Offline
Зарегистрирован: 29.09.2011

blo пишет:

 Нет-нет, мне как раз нужно чтобы arduino выступало в роли "USB устройства" а не "USB хоста".

Не совсем ясно что-же вам нужно. USB устройства бывают двух типов

host (ведущий) - ну собственно большой компьютер это и есть пример хоста, роутеры некоторые и т.п.

slave (ведомый) - клавиатуры, мышки, джойстики, сама ардуина (serial устройство), usb флешки и т.п.

Если вам нужно "slave", то тут очень сильно зависит от того какой именно тип устройства вы хотите изображать. Для каких-то уже есть готовые либы, для кого-то нужно будет самому выкуривать как USB работате.

Это действительно можно сделать с помощью 8U2, но 90% что при этом комп перестанет видеть плату именно "как ардуину". И скетчи уже так просто не зальешь.

 

 

blo
Offline
Зарегистрирован: 28.06.2011

leshak пишет:

Не совсем ясно что-же вам нужно. USB устройства бывают двух типов

host (ведущий) - ну собственно большой компьютер это и есть пример хоста, роутеры некоторые и т.п.

slave (ведомый) - клавиатуры, мышки, джойстики, сама ардуина (serial устройство), usb флешки и т.п.

Прошу прощения если ввел в заблуждение. Я использовал терминологию википедии, там два типа называются "устройство" (device) и "хост" (host). Мне из ардуино нужно сделать device (slave). 

Насчет класса устройств - похоже мне нужен PID (Physical Interface Device). Т.е. к ардуине будут подключены манипуляторы и возможно датчики, а управлять ими надо посредством USB.

leshak
Offline
Зарегистрирован: 29.09.2011

blo пишет:

leshak пишет:

Не совсем ясно что-же вам нужно. USB устройства бывают двух типов

host (ведущий) - ну собственно большой компьютер это и есть пример хоста, роутеры некоторые и т.п.

slave (ведомый) - клавиатуры, мышки, джойстики, сама ардуина (serial устройство), usb флешки и т.п.

Прошу прощения если ввел в заблуждение. Я использовал терминологию википедии, там два типа называются "устройство" (device) и "хост" (host). Мне из ардуино нужно сделать device (slave). 

Насчет класса устройств - похоже мне нужен PID (Physical Interface Device). Т.е. к ардуине будут подключены манипуляторы и возможно датчики, а управлять ими надо посредством USB.

Нет. Все-таки дело не терминологии, а понимании. Потому что вы опять, фактически высказали два противоположных утверждения. "Мне нужно сделать slave" и " к ардуине будут подключены" (то есть нужен host).

Смотрите. Тот к кому подключают - master (ведущий), кого подключают - slave (ведомый). Если вы к ардуине подключаете usb манипулятор - ардуина выступает в роли host усройства. Если вы подключаете ардуину к компу - она выступает в роли slave устройства (а компьютер является host-том).

Вообщем-то одно и тоже устройство может одновременно играть несколько "ролей" (на разных интерфейсах). Вот ADK является примером такой одновременности. Через один разъем она выступает как Slave (объявляет себе serial портом), через другой - как host, куда можно подключать другие usb-устройства.

Но тут нужно решить, действительно ли нужно подключать к ардуине разных "джойстики, датчики" через USB. Это имеет смысл только если вы заранее не знаете какие именно "джойстики/датчики" вы будете подключать (но четко знаете их тип). Если же есть возможность, то гораздо проще, все-таки, подключать их не через USB, а какие-то более простые интерфейсы (SPI, 1-wire, просто к пинам и т.п.)

blo
Offline
Зарегистрирован: 28.06.2011

Так, видимо я опять все неправильно описал. Есть ардуино, к ней подключаются датчики и манипуляторы (то, чем ардуино будет манипулировать, например, сервоприводы) посредством посредством цифровых и аналоговых входов/выходов. Для контроля и управления ардуино должна подключаться в другому устройству по USB, в этом случае другое устройство выступает в роли хоста. Устройство, выступающее в роли хоста не обязательно компьютер, скорее всего это будет другая железка, в которой будут "мозги", а ардуино нужна только как посредник.

leshak
Offline
Зарегистрирован: 29.09.2011

 Ага. Ну вот так уже понятней.

Тут вам нужно танцевать от того какие классы slave устройств умеет понимать "устройство, выступающее в роли хоста не обязательно компьютер". Решить кого из себя будет "изображать" ардуина. Мышку, джойстик, midi устройство, HID устройство, USB mass storage и т.п.

А может, это ваше устройство сможете понять ее и как Serial port, тогда вам вообщем-то вообще ничего не нужно :) Открывай на этом устройстве порт и пиши/читай комманды/данные