Сделать плату Arduino одновременно и USB-накопителем, и клавиатурой?
Я делаю проект интерфейса, который при подключении к компьютеру отображается как флэш-память USB и может печатать как клавиатура при нажатии некоторых физических кнопок на плате.
Я видел проекты, которые делают одно или другое, но не оба одновременно.
Мне удалось заставить его работать с помощью USB-концентратора и двух чипов, которые совместно используют одно и то же хранилище (поскольку я хочу, чтобы кнопки быстрого доступа также вводили информацию, хранящуюся на стороне флэш-накопителя), причем один действовал как HID и один действует как USB-накопитель, но у него есть несколько проблем. Во-первых, это кажется излишним. Во-вторых, это сложно программировать, так как каждый раз, когда я подключаю беспорядок, он случайным образом присваивает имя каждому чипу, и нет простого способа сказать, на что отправлять HID-код и с чем отправлять код USB-накопителя. Я должен подключать их по одному, что не сработает, если весь этот проект находится на одной плате. Последняя проблема заключается в том, что кнопки работают непоследовательно, поскольку, как я предполагаю, два чипа плохо справляются с разделением доступа к текстовому файлу, который он пытается прочитать, чтобы текст «напечатался» на компьютере.
Есть ли более удобный способ сделать это, используя одну Arduino, выступающую в обеих ролях, для доступа к одному флэш-хранилищу? Спасибо!
@teasub, 👍8
Обсуждение3 ответа
Вы хотите создать композитное USB-устройство. Я не вижу примеров в сообществе arduino, но я не вижу причин, по которым вы не могли бы используйте 16u2 в качестве составного устройства, просто это потребует больше усилий, чем вы обычно вкладываете в проект Arduino.
Leonardo можно легко использовать в качестве клавиатуры. Существуют также специальные коды для превращения чипа USB-to-Serial на новых Unos в клавиатуру (см. здесь)
Запоминающее устройство USB — это совсем другая игра. Brondani EasyUSB — это простая микросхема, предоставляющая 2 МБ дискового пространства как на USB, так и на микроконтроллере. Они говорят, что будут высвобождать большие емкости.
В easyUSB также встроен последовательный канал от UC к компьютеру.
Если вы действительно хотите, вы можете сделать свой собственный стек USB, чтобы справиться с этим самостоятельно, но жалко малый объем оперативной памяти на этих чипах не позволит это сделать.
Вы можете попробовать использовать Arduino Mega ADK. Это связано с тем, что у него есть отдельный USB-порт для USB-устройств, а также множество последовательных портов для других последовательных устройств.
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Ошибка "'Serial' does not name a type"
- Построение графика на Python с использованием Tkinter Canvas
- Команда strtok() с Serial связью
- Как отправить целое число через pyserial с Python на Arduino и получить тот же результат?
- Ошибка 'Serial' was not declared in this scope
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Bluetooth-модуль HC-05 не принимает AT-команды
http://www.atmel.com/Images/doc7631.pdf http://www.atmel.com/Images/doc8446.pdf, @Ignacio Vazquez-Abrams