Arduino как USB HID

Можно ли построить HID-устройство (например, клавиатуру) с помощью Arduino uno?

В настоящее время у меня есть входы кнопок на выходах Arduino на последовательной линии. Итак, как я могу преобразовать текущую прошивку в то, что может вести себя как HID-клавиатура?

  • Должен ли я написать драйвер нового окна?
  • Должен ли я создать программный уровень, который мог бы принимать мои последовательные данные и иметь окна, читаемые как вход HID?
  • Есть ли лучший способ достичь этого, если это вообще возможно?
22 голоса | спросил Anomaly 27 FebruaryEurope/MoscowbThu, 27 Feb 2014 18:37:49 +0400000000pmThu, 27 Feb 2014 18:37:49 +040014 2014, 18:37:49

2 ответа


12
  

Можно ли построить HID-устройство (например, клавиатуру) с помощью Arduino uno?

да, это так! И есть отличный учебник о том, как это сделать здесь

  

В настоящее время у меня есть входные кнопки на Arduino, дающие выходы на   последовательная линия. Итак, как я могу преобразовать свою текущую прошивку в нечто, что   может вести себя как HID-клавиатура?

Как показывает учебное пособие, вам необходимо преобразовать свой код прошивки, чтобы вместо печать событий, вы фактически инициируете события. Что вам нужно сделать, это добавить к вашему код:

void triggerKey (uint8_t mod, uint8_t chr) {
    uint8_t buf [8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
    //нажмите клавишу
    Serial.write (buf, 8);
    //эмулировать задержку нажатия клавиши
    задержка (10);
    buf [1] = 0x00;
    //релиз ключа
    Serial.write (buf, 8);
}

То, что вы здесь делаете, отправляется с вашего основного события микроконтроллера Arduino последовательная линия к меньшему микроконтроллеру, который обрабатывает USB-связь. Что микроконтроллер будет принимать эти ключевые «буферы» и передавать их как USB HID Keyboard клавиша нажимает на USB.

Остерегайтесь, что ключевой символ (chr в коде здесь), на самом деле отправлен код ключа через USB, который интерпретируется драйвером USB HID, который затем переводит его в реальный символ, используя текущий макет, который вы установили для своей клавиатуры.

Символ mod - это один из клавиш-модификаторов на клавиатуре (сдвиг, control, alt ...), 0x00 не является модификатором.

  
  • Должен ли я написать драйвер нового окна?
  •   

Нет, вам не нужно! С обновлением DFU ваш ардуино будет рассматриваться как USB-клавиатура по окнам.

  
  • Должен ли я создать программный уровень, который мог бы принимать мои последовательные данные и иметь окна, читаемые как вход HID?
  •   

Вам не нужно это делать, и это на самом деле очень плохая идея по многим причинам:

  • Ваше решение не будет переносимым, и вам нужно будет что-то взломать для каждой платформы, которую вы можете использовать,
  • Ваше решение будет означать много нового кода; чем больше пишется код, тем больше ошибок будет в вашей системе,
  • Ваше решение будет действительно хакерским, поскольку оно будет вести себя как драйвер устройства (т. е. ядро ​​земли ), принимая входные данные от пользовательская программа (т. е. пользовательская земля ) и, скорее всего, не будет работать, быть ад для отладки и подвержен проблемам безопасности ... Если это даже возможно сделать!
  

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

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

ПРИМЕЧАНИЕ. При использовании этого метода нет возможности использовать устройство. Прошивка Arduino для загрузки может всегда обновляться с использованием протокола DFU!

В случае, если что-то действительно сильно ошибочно, и вы получаете повреждение загрузчика в маленький AVR (atmega8u2), вы по-прежнему можете перепрограммировать его используя другой arduino или программист atmel , используя 6 контактов рядом с USB-штекером.

В конце концов, знайте, что только способ блокировать AVR, таким образом, Arduino также играть с предохранителями и перезагружать программируемые предохранители. И даже тогда вы можете использовать HVSP , чтобы сохранить ваше устройство, хотя часто бывает нелегко просто взять новый чип.

ответил zmo 1 MarpmSat, 01 Mar 2014 20:15:11 +04002014-03-01T20:15:11+04:0008 2014, 20:15:11
4

Я создал проект, который полностью заменяет загрузчик Arduino. Вы можете загружать эскизы и использовать их как HID. См. Project HID в Github: https://github.com/NicoHood/HID

ответил 7 AM00000060000002331 2014, 06:13:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132