Arduino как USB Mass Storage
- Войдите на сайт для отправки комментариев
Ср, 27/04/2011 - 15:56
Стоит следующая специфичная задача. Есть пром.оборудование которое пишет свои логи в на юсб-флешку. Для сбора данных приходится вынимать в конце дня карту и сливать руками данные на комп.
Возникла мысль подключить вместо флешки ардуино (с SD шилдом), который должен в момент работы агрегата видится со стороны просто флеш-носителем, а по внешнему прерыванию запускаться механизм передачи данных дальше по этапу.
Насколько реальна поставленная задача и в какую сторону копать?
Насколько я понимаю если перепрошить ATmega8U2, то можно его заставить представится необходимым устройством, но каким образом дальше все реализовать затрудняюсь. Был ли у кого-то подобный опыт?
Тут рыть надо в сторону LUFA, на контроллерах где за USB отвечает atmega8u2 чип, таких как UNO, с помощью этой библиотеки можно эмулировать любой USB устройство в том числе mass storage насколько я понимаю.
Вот здесь http://hunt.net.nz/users/darran/ есть примеры как заставить arduino UNO работать как мышь, MIDI девайс или как клавиатуру. Mass storage нет, но сама идея таже
задача немного мутновата расписанна но насколько я понял проще писать ардуиной тогда уд на сд карту а по команде скидывать все по радиоканалу или реализовывать схему моста юсб лан и проклыдывать сеть тут все зависит от условий финансовых ну и быстродействия а так стандартная схема ардуино сди карта и зиг би а вообще на рынке много конвектеров юсб рс485 юсб ком ну и тд
Так я так понимаю товарищу надо чтобы ардуино определялся устройством как mass storage
Да именно так. Просто устройстово которое скидывает логи, умеет только работать с флешкой и писать на нее поэтому единственный вариант это либо подключить флешку сразу и к прибору и к ардуино и через "лобовой" разрыв цепи юсб давать доступ либо тому, либо другому. Но в этом случае придется реализовывать в ардуине юсб-хаб (кажется так называется когда устройство является ведущим), но с этим гемора не меньше.
Второй вариант это то что я писал выше, что бы ардуино сам представилмя как mass storage и выступал чем-то вроде контроллера в флешке, а самой памятью была бы sd-карта.
Modular спасибо за ссылку, буду изучать. Хотя HID и UMS все ж немного поразному функционируют, а гугление по LUFA+arduino дает кучу статей, где говорится что можно все что угодно, но увы ни одной реализации.
Спасибо всем за участие.
http://microsin.ru/
http://habrahabr.ru/blogs/arduino/107825/
так оно наверно проще
Уважаемый forester!
Передо мной стоит подобная задача. Хотелось бы узнать как Вы решили Вашу задачу.
До практического решения задачи к сожалению пока не дошло, но изучив мат.часть могу сказать что эмуляция юсб вешь достаточно муторная и не быстрая. Одно описание протокола листов на 30 насколько я помню.
Но было найдено интересное решение, есть такая штука уже снятая с производства но на ебее есть в достаточных объемах ну и при больших тиражах на алибабе всегда можно партию заказать. Называется SD plus:
Это сд карта с одного краю и юсб с другого. То есть для решения задачи нужно просто реализовать переключатель (реле) и либо давать прямую дорогу устройству которое хочет флешку или обрубать у него доступ к оной и с другого краю читать данные через стандартный сд-шилд.
Если мой вариант подойдет, буду рад почитать об вашей истории реализации.
Да, действительно, хорошая идея. И сравнительно легко реализуемая.
Благодарю!
а если так - соеденить СД карту вместе с устройством записывающим и ардуино одновремено, самой ардуиной постоянно ничего не считывать, дальше раз там в 30минут ардуино выключает "логгер" и считывает быстро данные с карты??? и по юсб уже дальше отдаёт в комп
Или вообще на реле многовыводное повесить карту и когда надо переключать карту между устройствами? Я же не думаю что секундное отключение логгера испортит малину
Если внешнее устройство умеет работать с сд-картами то все проще, можно даже без реле, а сигналы которые идут на sd "проксировать" через ардуину. Все гораздо веселее когда внешний логер хочет именно юсб-флешку а не карту памяти, вот тут и начинается проблема с эмуляцией UMS.
Всем привет!
Была ли решена задача?