Как создать контроллер USB, имеющий ручки, ползунки и переключатели

34

Как можно создать интерфейс для USB-устройства, который позволяет подключать к компьютеру кюветы, линейные / логарифмические контуры и мгновенные переключатели / тумблеры?

Если бы кто-то мог дать мне описание высокого уровня, я был бы признателен. Я могу читать спецификации, поэтому понимание деталей не является проблемой, если я знаю, где их найти.

Роберт Харви
источник

Ответы:

29

Я бы использовал одну из досок Teensy . Это Arduino-подобные микроконтроллерные платы с поддержкой USB. В отличие от Arduino, они могут отображаться на ПК как любое USB-устройство. Это означает, что вы можете создать свою собственную USB-клавиатуру, джойстик, MIDI-устройство и т. Д. И использовать на ПК стандартные драйверы.

Teensy поддерживает Arduino IDE , или вы можете программировать на C и использовать LUFA (для поддержки USB) напрямую.

Вот некоторые ссылки на проекты, чтобы помочь.

Тоби джеффи
источник
10
Для такого типа приложений я бы предложил притвориться HID. Драйвера уже написаны, вы просто эмулируете мышь или подобное устройство.
Кортук
1
+1 для джойстика, вам даже не нужно собирать плату mcu, плата, восстановленная с помощью джойстика с аналоговыми осями, будет работать так же хорошо ...
peufeu
6

Я бы использовал плату микроконтроллера, как Arduino. Вы читаете АЦП и цифровой ввод / вывод и отправляете символы ASCII на ПК, используя соединение UART-> USB.

Сколько внешнего оборудования вам нужно, зависит от требуемой точности. Я думаю, что для большинства приложений достаточно встроенного в микроконтроллер оборудования. Я бы разоблачил переключатели в оборудовании.

Для интерфейса USB просто напишите простой парсер, чтобы вы могли запросить показания. Например, если ПК отправил строку «A00?» УК может отправить обратно показания по аналоговому каналу 0. "D00?" УК может отправить обратно состояние цифрового входа 0. Чтобы изменить цифровой выход, может быть что-то вроде «D00 = 1» или «D00 = 0». Это короткие строки фиксированной длины. Должно быть очень легко разобрать.

jluciani
источник
4

Мне нравится использовать Arduinos, они просты в программировании, и вы можете легко отправлять данные на свой компьютер с различных входов через встроенное USB-соединение. Данные могут быть отправлены в среду программирования Arduino Serial Monitor - что полезно для отладки.

Затем я использую такую ​​программу, как Pure Data (PD) или Max MSP, чтобы получить последовательные данные. Данные могут быть отправлены из этих программ во всех видах полезных форматов. Потому что это достаточно просто сделать любые кривые логарифмирования или масштабировать в программном обеспечении - вам не нужно беспокоиться о покупке дорогих бревен или о труднодоступных ценностях - просто купите рабочую партию того же значения и позаботьтесь о подробности позже (обычно легко получить 1K или 10K).

Это бесплатно: http://puredata.info/

Это платная за шикарную версию, но у нее есть хорошая демонстрация: http://cycling74.com/downloads/

Джим
источник
4

Получить Arduino

Получите DangerShield .

Введите код для отправки данных датчика DangerShield на ПК через RS-232 через USB-соединение.

Напишите пользовательское приложение, например, VB.NET или что-то для преобразования данных во что-то полезное на ПК, например, сообщения Windows Win32 или что-то подобное.

Дж. Полфер
источник
3

Я бы предложил использовать PoKeys . Очень легко добавить 55 цифровых входов / выходов, 7 аналоговых входов (12 бит), ШИМ-выходы и многое другое. Это может даже сочетаться с чем-то вроде этого .

Avra
источник
2

Я бы пошел с Arduino или Sanguino, как предлагали большинство людей. Просто Google для них. Они чрезвычайно просты в использовании, и вы можете начать работу через несколько часов, как только у вас будут все необходимые компоненты.

Сушрут Дж Маир
источник
2
"Просто Google для них" не принимается в качестве ответа здесь. Дайте подробности здесь.
Stevenvh
1

Альтернатива, которая может подходить или не подходить, состоит в том, чтобы купить имеющиеся в продаже аналоговые джойстики / джойстики (от $ fckall на ebay china или в магазине игр) и заменить их аналоговые входные компоненты своими собственными, или просто вырвать основную печатную плату и пересадить в ваше оборудование.

Вам нужно будет соответствовать некоторым электрическим характеристикам, но тяжелая работа по кодированию / USB-соединениям и т. Д. Выполняется за вас, и обычно протоколы связи / отображение входных данных хорошо известны.

Китайские подделки USB-контроллеров в стиле PlayStation и т. Д. Можно купить за несколько долларов, что значительно ниже цены на любительские платы duino IO и т. Д. И достаточно дешево, чтобы быть одноразовым, когда вы взорвете первый или два.

Джон У
источник
0

В GamepadBlock использует в ATmega32U2 вместе с LUFA осуществить полную скорость USB HID устройство опрашивать несколько оригинальных игровых контроллеров. ATmega имеет аппаратный интерфейс USB, и начать работу было легко, поскольку LUFA предоставляет несколько демонстрационных проектов.

user165785
источник