Роль USB устройства
- Войдите на сайт для отправки комментариев
Пнд, 14/05/2012 - 19:23
Возможно глупый вопрос, но все же, подскажите пожалуйста можно ли использовать тот USB, который предназначен для заливки скетчей для подключения и коммуникации с устройствой, выступающим в роли USB хоста? Т.е. сама плата arduino должна выступать в роли USB устройства.
Если да, то как в таком случае заливать скетчи и отлаживаться? Вижу пины RX и TX, может их можно использовать?
Нет. Нельзя. Нужен либо отдельный USB шилд, либо версия ардуины где он есть встроенный. Например Arduino ADK
Шилд то есть, но он зараза прожорливый, хочу попробовать обойтись без него. ADK было бы в самый раз, но он ко мне никак не дойдет.
Вроде нашел что-то похожее, буду копать в эту сторону.
"Что-то похожие", это совсем не хост. А slave. Возможно, теоретически и можно заюзать эту Atmega8U2 как хост (но не думаю что это будет тривиально), но возможность прошивать скетчи вы при этом потеряете почти наверняка. Потребуется какой-то внешним программатор.
Тот же ADK, все-таки, для USB хоста отдельную микруху юзает MAX3241.
По поводу "прожорливый", ну в любом случае хост не может святым духом питатся. Так что не факт что вы много выиграете от отказа от шилда. К тому же нет гарантии что это "он жрет", а не то устройство которые вы к нему подключили (например пытается зарядить свои аккумы).
Нет-нет, мне как раз нужно чтобы arduino выступало в роли "USB устройства" а не "USB хоста".
Так она и так выступает в роли USB устройства.
Где то слышал, что можно прошить Atmega8U2 так что бы определялась компом по-разному, например как джойстик или еще как...
Нет-нет, мне как раз нужно чтобы arduino выступало в роли "USB устройства" а не "USB хоста".
Не совсем ясно что-же вам нужно. USB устройства бывают двух типов
host (ведущий) - ну собственно большой компьютер это и есть пример хоста, роутеры некоторые и т.п.
slave (ведомый) - клавиатуры, мышки, джойстики, сама ардуина (serial устройство), usb флешки и т.п.
Если вам нужно "slave", то тут очень сильно зависит от того какой именно тип устройства вы хотите изображать. Для каких-то уже есть готовые либы, для кого-то нужно будет самому выкуривать как USB работате.
Это действительно можно сделать с помощью 8U2, но 90% что при этом комп перестанет видеть плату именно "как ардуину". И скетчи уже так просто не зальешь.
Не совсем ясно что-же вам нужно. USB устройства бывают двух типов
host (ведущий) - ну собственно большой компьютер это и есть пример хоста, роутеры некоторые и т.п.
slave (ведомый) - клавиатуры, мышки, джойстики, сама ардуина (serial устройство), usb флешки и т.п.
Прошу прощения если ввел в заблуждение. Я использовал терминологию википедии, там два типа называются "устройство" (device) и "хост" (host). Мне из ардуино нужно сделать device (slave).
Насчет класса устройств - похоже мне нужен PID (Physical Interface Device). Т.е. к ардуине будут подключены манипуляторы и возможно датчики, а управлять ими надо посредством USB.
Не совсем ясно что-же вам нужно. 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, просто к пинам и т.п.)
Так, видимо я опять все неправильно описал. Есть ардуино, к ней подключаются датчики и манипуляторы (то, чем ардуино будет манипулировать, например, сервоприводы) посредством посредством цифровых и аналоговых входов/выходов. Для контроля и управления ардуино должна подключаться в другому устройству по USB, в этом случае другое устройство выступает в роли хоста. Устройство, выступающее в роли хоста не обязательно компьютер, скорее всего это будет другая железка, в которой будут "мозги", а ардуино нужна только как посредник.
Ага. Ну вот так уже понятней.
Тут вам нужно танцевать от того какие классы slave устройств умеет понимать "устройство, выступающее в роли хоста не обязательно компьютер". Решить кого из себя будет "изображать" ардуина. Мышку, джойстик, midi устройство, HID устройство, USB mass storage и т.п.
А может, это ваше устройство сможете понять ее и как Serial port, тогда вам вообщем-то вообще ничего не нужно :) Открывай на этом устройстве порт и пиши/читай комманды/данные