USB устройство на Pro micro

Как сделать USB устройство в среде Ардуино?

Берем ,например, Pro micro 5V 16MHz на Atmega32U4 с аппаратно реализованным USB и начинаем курить тему. Хоть USB аппаратно и реализован, но это не значит , что все просто - бери , настраивай и пользуйся. Дело в том, что спецификация протокола USB представлена не на одном десятке страниц. Там очень многовариантно рассказано что должен послать host и что должен ответить device при инициализации,при установке режима работы,в случае ошибки и т.д.

Поскольку в среде Ардуино можно тупо загрузить скетч с примером HID клавиатуры и он будет без проблем работать (устанавливаются автоматом в ОС драйвера, происходит нажатие клавиш), попробуем и мы вкурить как все это работает и понять как можно в будущем штамповать свои USB девайсы под различные нужды.

    Берем проект "Keyboard Message test":
  • один подключаемый файл #include "Keyboard.h"
  • ищем данный файл и находим его в C:\Program Files (x86)\Arduino\libraries\Keyboard\src
  • раскручиваем далее , приходим к #include "HID.h"
  • и так далее

получается примерно такая картина

  • USBAPI.h
    • USBCore.h
      • PluggableUSB.h
        • HID.h
          • Keyboard.h





Т.е. родоночальником всего является USBAPI.h, и остальные добавляют последовательно свой функционал. Файла с расширением *.cpp , которые соответствуют файлам с расширением *.h не забываем тоже изучить.

Для просмотра, редактирования и глобального поиска я пользуюсь чаще , например, редактором Geany, когда надо глобально во всех вложенных папках найти все слова с конкретным текстом.

Прошиваем скетч "Keyboard Message test" и в системе Windows появляется USB-устройство ввода [ USB\VID_2341&PID_8036&REV_0100&MI_02 ].

    После недолгих поисков 2341 и 8036 находим в boards.txt
  • leonardo.vid.1=0x2341
  • leonardo.pid.1=0x8036