Лаборатория Коллина: Взлом USB с помощью Arduino

Лаборатория Коллина: Взлом USB с помощью Arduino
Лаборатория Коллина: Взлом USB с помощью Arduino
Anonim
Изображение
Изображение

USB-устройства в наши дни настолько распространены, не правда ли, было бы неплохо использовать их в своих проектах по домашней электронике? Я хотел использовать свою компактную USB-MIDI-клавиатуру со схемами домашнего синтезатора. Поначалу это казалось достаточно простой перспективой – слушать выходные данные, нажимать кнопки, отмечать изменения, а затем запрограммировать микроконтроллер, чтобы он превратил эти изменения во что-то, что я мог бы использовать (например, в базовые последовательные MIDI-данные).

После небольшого исследования я узнал немного о том, как работает USB, и что мне понадобится дополнительное оборудование, способное играть роль «USB-хоста» (эту работу обычно выполняет полный компьютер), чтобы правильно работать с моей клавиатурой. Введите USB Host Shield из Circuits@Home. Этот щит, совместимый с Arduino, использует периферийный/хост-контроллер MAX3421E + чип библиотеки поддерживающего кода, чтобы быстро решить мою проблему «USB без компьютера».

Я использовал примеры, включенные в библиотеку Arduino щита, чтобы собрать некоторую информацию с моей USB-MIDI-клавиатуры (Akai LPK25), а затем подключил эти значения к одному из прилагаемых демонстрационных эскизов. Выяснив, какие сообщения я получаю, я перенаправил эти байты на исходящее последовательное соединение, и вуаля – родился преобразователь USB-MIDI в MIDI!

В процессе я столкнулся с несколькими сбоями, но как только я смог действительно прочитать вывод с USB-порта клавиатуры, я просто применил базовую технику взлома: нажимайте кнопки и наблюдайте за результатами. HexDecBin оказался очень полезным для многих преобразований двоичных чисел в десятичные, которые я делал по пути.

Обновление: Почти забыл – эскиз, который я написал для использования с LPK25, можно найти здесь