Arduino usb keyboard: USB мини клавиатура на Arduino Pro Micro / Хабр

Не забыть: USB-Keyboard with Arduino

http://blog.petrockblock.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/

https://florianfries.me/en/arduino-as-a-keyboard.html

http://www.vladcazan.com/electronics/arduino-keyboard-emulator
http://robocraft.ru/blog/1002.html

Посте того, как сгорел мой «ноутбук», я вспомнил про свой старый системник (точнее материнку и блок питания).
Достав его из кучи барахла, заметил что кроме мышки нету никакого устройства ввода, немного посидел,и начал рыть инет. Так как у меня в асоррименте только Arduino UNO R3 смотрел статьи только с ней. Многие делают клавиатуру на Arduino micro (ну там все просто).

В поисках наткнулся на статью где ардуино играет в 2048.

Так как для упавления игрой надо нажимать клавиши, нужно превратить ардуино в клавиатуру.То что надо!

Нам понадобится:

  • Arduino UNO R3
  • Перемычка
  • Arduino IDE
  • Фирменная утилита Atmel – Flip
  • Архив с прошивками и примером + библиотека

Цель: написать скетч для Arduino UNO, который будет эмулировать нажатие клавиш стрелок на клавиатуре.
Алгоритм наших действий:

  • Пишем скетч с нужным функционалом и заливаем в МК ATmega328
  • Прошиваем загрузчик Arduino, usb контроллер ATmega16U2

Для эмулирования нажатий клавиш я использовал библиотеку HIDKeyboard.
Что ж теперь переходим к самому интересному – будем превращать Arduino UNO в HID устройство, а конкретней в USB клавиатуру.
Немного теории.
Прошивка загрузчика — для начала нужно перевести Arduino в режим Device Firmware Update или в более часто используемом варианте DFU.

Он служит для перепрошивки контроллера выполняющего роль конвертера serial to usb.
Как известно, основное отличие Arduino UNO от предыдущих моделей плат Arduino заключается в наличие второго контроллера ATmega8U2, на смену аппаратному конвертору USB <-> COM (FT232R). Преимуществом данного решения является возможность замены прошивки в интерфейсном контроллере с целью эмуляции произвольного устройства при подключении Arduino к ПК (накопителя, hid-устройства и т.д.). Как это сделать? У интерфейсного контроллера имеется режим DFU – прошивка контроллера ATmega8U2 через подключение через USB. Почти как прошивка центрального контроллера Arduino. Для этого можно воспользоваться фирменной утилитой Flip. Для того чтоб перевести контроллер в этот режим программирования потребуется небольшая аппаратная модернизация Arduino.
Для  Arduino UNO R3 достаточно поставить перемычку.

После этих действий компьютер обнаружит новое устройство и попытается самостоятельно поставить драйвера, но у него ничего не получится. Настало время установить фирменную утилиту Flip от Atmel. Открываем диспетчер задач и видим новое устройство Arduino Uno DFU.

Выберем драйвер из папки недавно установленной утилиты FLIP. В итоге у нас появится новое устройство – ATmega16U2. В дальнейшем при подключении Arduino, устройство будет определять как USB устройство. Теперь нам следует залить HEX файл с инструкциями USB клавиатуры. Чтоб компьютер в дальнейшем распознавал нашу Arduino как usb клавиатуру. Запускаем FLIP.

  • Выбираем в меню Device > Select > ATmega16U2
  • Выбираем в меню Setting > Communication > USB
  • Жмем Open берем прошивку
  • Приступаем к прошивке, жмем Run

По окончании процесса прошивки можно закрыть программу и проверить, как работает устройство. В итоге мой Arduino успешно играл в 2048 почти неделю. Даже на ночь его не выключал. В подтверждение вот мой результат.

Вот так можно превратить Arduino UNO в HID-устройство. Кстати можно не только играться в игры но и разыграть друга, подключив к его компьютеру устройство, которое запустит блокнот и будет писать там анекдоты, либо запускать команды, ведь клавиатура это главный пульт управления компьютером. К сожалению нельзя применить этот метод к плате Arduino Nano. Как уже говорилось ранее – второй контроллер Arduino UNO (ATmega8U2) используется в роли конвертера USB to Serial для определения компьютером Arduino UNO как USB устройство. Можно сделать вывод: реализовать этот метод, без посторонних устройств, возможно лишь при наличии на плате Arduino микроконтроллера запрограммированного как USB-to-serial конвертер. Но что делать, если у вас Arduino Nano или иная плата без конвертера USB to Serial? В таком случае можно купить отдельно конвертер подобный этому.

Чтобы вернуть Arduino UNO к жизни надо перепрошить ATmega16U2
Найти прошивку можно тут:

C:\Program Files\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2

На всякий случай собрал весь софт который использовал в

  — Arduino-HID-Bot-2048. ino — Скетч для Arduino UNO для игры в 2048.
   
  — Arduino-keyboard.hex       — этот hex файл заливаем при помощи FLIP для перевода arduino

в режим USB клавиатуры (но сначала нужно залить основной скетч).

прошиваем вот так!

шьем по isp

делаем клавиатуру

avrdude -p m16 -b 19200 -F -P COM4 -c avrisp -U flash:w:Arduino-keyboard-0.3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

«-p m16» это код atmega16u2

делаем копию arduino uno R3

avrdude -p m328p -b 19200 -c avrisp
 -P COM13 -e -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex

   
  — Arduino-usbserial-uno.hex — этот файл нужен для того чтоб обратно вернуть Arduino UNO
в стандартный режи работы, чтоб она определялась в ПК как виртуальный COM-порт
в котром мы можем загружать скетчи. 
https://vk.com/doc5127466_437873517

http://www.atmel.com/tools/FLIP.aspx

 Дополнительно:

 http://pythoneiro.

blogspot.ru/2015/04/transformando-seu-arduino-uno-em-um-usb.html

USB клавиатура и мышка на обычной Arduino Nano! смотреть онлайн видео от Заметки Ардуинщика в хорошем качестве.

Скачивайте приложения

Инструкции

Подписывайтесь на нас

© 2023, Rutube

12+

1 год и 2 месяца назад

Заметки Ардуинщика396 подписчиков

В этом видео мы научимся эмулировать USB клавиатуру и мышь, на обычной Arduino Nano! По всем вопросам: [email protected] ► Библиотека EasyHID: https://github.com/GyverLibs/EasyHID (примеры внутри) ► Подборка инструментов с Aliexpress: https://www.youtube.com/watch?v=fAYTFOkso34 ► Подборка осциллографов с Aliexpress: https://www.youtube.com/watch?v=Allnjy2Rza8 Подборка инструментов и материалов для пайки с Aliexpress! ► Мультиметры — Крутой 409B: https://ali.

ski/2uhsR — Мультиметр + токовые клещи: https://ali.ski/I-hqX — Мультиметр + осциллограф: https://ali.ski/rLpvF ► Тестер компонентов — Несколько моделей на выбор: https://ali.ski/bM1qUI — Дешевый, на плате: https://ali.ski/FElCB ► Осциллографы начального уровня — DSO150 набор/собранный: https://ali.ski/Z_JOn — DSO FNIRSI PRO 5МГЦ: https://ali.ski/3hSqLm — WAVE2 2,4 2 канала + 2 щупа!: https://ali.ski/a-jWyC ► Паяльные станции Hakko T12 — Готовая без БП: https://ali.ski/R3Fi3 — Готовая с БП: https://ali.ski/Dr1ny — Набор 7-сегмент: https://ali.ski/l-wb3U — Набор oled: https://ali.ski/NdT8hc — Паяльник под жала T12: https://ali.ski/hTjt8D — Жала T12: https://ali.ski/Yy0DYV ► Другие паяльники — Паяльник CXG E90W: https://ali.ski/_tash — Паяльник SH72: https://ali.ski/XFFwd — Жала SH72: https://ali.ski/FtdgMB — Паяльник TS100: https://ali.ski/rIBqy — Жала TS100: https://ali.ski/Q4Jtk — Паяльник TS80: https://ali.ski/ULMMm — Жала TS80: https://ali.ski/qbMTOX — Дешевый: https://ali.ski/SZi-6 — USB паяльник: https://ali.
ski/Lh5N4B ► Паяльные фены — Хороший 8858: https://ali.ski/xUQAOH — Дешевый 8858: https://ali.ski/fRv2X4 — Станция с феном 8586D: https://ali.ski/RKG-2 — Фен с питанием 220В: https://ali.ski/xfs04 ► Силиконовые коврики для пайки — Самый большой, серый: https://ali.ski/3GkrYS — Разные размеры, цвета: https://ali.ski/zJGgh — Голубой, дешевый: https://ali.ski/odC32X ► Третья (4я, 5я) рука — 4 зажима + лупа: https://ali.ski/Zxp2w8 — 5 зажимов + лупа: https://ali.ski/pBJxre — Бич — вариант: https://ali.ski/E2qYt ► Припой Solder — Флюс гель NC-559: https://ali.ski/rfkph — Большая катушка 500г: https://ali.ski/rXZTr5 — Катушка 50/100г: https://ali.ski/KNYjK — Маленькая катушка 50г: https://ali.ski/o7ql8Y ► Паяльная паста — Разная тара: https://ali.ski/PxMFvE — Шприц 10 куб: https://ali.ski/OcGVk6 ► Удаление припоя — Шпильки для выпайки: https://ali.ski/msKHd8 — Медная оплетка: https://ali.ski/9iqnOC — Хороший оловоотсос: https://ali.ski/07LdO — Дешевый оловоотсос: https://ali.ski/aGVkC ► Мелкий инструмент — Стриппер для зачистки: https://ali.
ski/HpEng6 — Кусачки: https://ali.ski/yDtso — Очень крутые пинцеты для SMD: https://ali.ski/wYCWI2 — Большие пинцеты из нержавейки: https://ali.ski/7ZnM83 — Пинцеты с керамическими кончиками: https://ali.ski/oQAeW — Набор пинцетов: https://ali.ski/-xQLP — Дешевый набор пинцетов: https://ali.ski/sIYK3P — Вакуумный пинцет профессиональный: https://ali.ski/osY0oa — Вакуумный пинцет дешевый: https://ali.ski/7bRjz — Набор надфилей: https://ali.ski/Zu7ca ► Подборки на AlexGyver.ru — Всё для пайки httpsalexgyver.ruall-for-soldering — Всякий инструмент httpsalexgyver.rumy_instruments ► Огромный стартовый набор GyverKIT httpskit.alexgyver.ru ► Уроки Arduino на сайте httpsalexgyver.rulessons ► Модули и датчики с Али httpalexgyver.ruarduino_shop ► Страница Заметок Ардуинщика httpalexgyver.ruarduino_lessons Теги #arduino #aliexpress #инструмент ●●●●●●●●●●●●●●●●●●●● ► Основной канал httpswww.youtube.comcAlexGyverShow ► Поддержать автора httpsalexgyver.rusupport_alex ► Официальный сайт httpsalexgyver.
ru ► Почта [email protected]

Использование библиотеки клавиатуры Arduino для автоматизации простых задач

В этом уроке мы поговорим об использовании библиотеки клавиатуры Arduino! Это действительно полезный способ автоматизировать функции клавиатуры с помощью USB-библиотек Arduino и запрограммировать их на плату Arduino! Посмотрите видео и урок ниже!

 

Вы когда-нибудь находили повторяющуюся задачу, которую выполняете на своем компьютере, и думали про себя: «Хотел бы я автоматизировать это»? Ну, один из способов автоматизировать такие задачи — использовать библиотеки USB, встроенные в Arduino IDE. В этом уроке мы рассмотрим использование библиотеки клавиатуры. На следующем уроке мы рассмотрим использование библиотеки мыши.

Обе эти библиотеки очень просты в использовании. Они действительно удобны для автоматизации этих простых повторяющихся задач, которые вы можете время от времени выполнять на своем компьютере. Мы собираемся пройтись по каждой функции в этих библиотеках.

Аппаратное обеспечение (мы будем использовать Arduino Leonardo)

Давайте перейдем к определению типа аппаратного обеспечения, необходимого для использования этих библиотек. Поэтому вам нужно использовать плату Arduino, основанную на платах 32u4 или SAMD. Так что будет

: Leonardo, Esplora (на пенсии), Zero, Due или любая из плат Arduino семейства MKR. В этом примере я буду использовать Леонардо.

Эти типы плат позволяют Arduino выступать в качестве встроенного USB-устройства. Когда вы подключаете его, ваш компьютер распознает доску как мышь, клавиатуру или что-то, что действует как устройство ввода.

Предустановленные библиотеки

Как я уже упоминал, библиотеки для мыши и клавиатуры предустановлены вместе с Arduino.

 

Но, в отличие, например, от библиотеки последовательных портов, для того, чтобы они работали, на самом деле необходимо использовать операторы #include. Это должно выглядеть примерно так.

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

И затем в библиотеках Arduino, если вы спуститесь, вы можете найти клавиатуру или мышь.

И если вы нажмете на это, он просто запишет это прямо здесь для вас.

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

Итак, если вы дойдете до файла, перейдете к примерам и перейдете к USB, вы увидите несколько примеров для клавиатуры.

У них есть несколько программ, которые можно попробовать и проверить, очень поучительно, как использовать эти функции.

Затем у них есть пара на мышке, а затем еще одна на клавиатуре и мыши вместе взятых.

Другим местом, где можно найти информацию об этих двух библиотеках, является справочная веб-страница Arduino.

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

Проработаем все функции библиотеки клавиатуры.

Итак, выписав наш код, мы можем увидеть все функции клавиатуры, о которых мы будем говорить.

Обратите внимание, что я поместил все функции в оператор if и хочу, чтобы вы увидели, что я здесь настроил. По сути, я создал кнопку, я установил ее как контакт пять. Затем я устанавливаю эту кнопку, которую я называю enableBTN. Я установил его как вход. А потом это, если выписка проверяется, идет, пишет digitalRead, включить пин. Таким образом, он будет считывать состояние на пятом выводе. А если высокое, возвращает единицу, что тоже верно. Или, если он низкий, он возвращает ноль, что также неверно.

Итак, если кнопка нажата, то мы выполняем этот код.

Если кнопка не нажата, цикл пропустит это, потому что условие будет ложным. Таким образом, этот код работает только тогда, когда это условие истинно. И это условие выполняется только тогда, когда я нажимаю кнопку.

Теперь я использую Kit-on-a-Shield для Arduino.

 

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

Теперь вы можете спросить: «Ну, Майк, зачем тебе эта конструкция?»

Причина, по которой у меня есть эта конструкция здесь, заключается в том, что на веб-сайте Arduino, в этих библиотеках, как для клавиатуры, так и для мыши, есть предупреждение о том, что как только вы начнете использовать клавиатуру и мышь библиотеки, они сразу становятся активными. То есть, как только вы подключите плату Arduino, она начнет эмулировать клавиатуру или мышь.

В данном случае клавиатура. И это означает, что он начнет выполнять все эти разные команды, которые вы, возможно, захотите выполнить.

И вы можете себе представить, ваш Arduino работает очень быстро и может эмулировать ввод с клавиатуры намного быстрее, чем вы на самом деле печатаете. Так что, если вы подключите плату Arduino, а затем вдруг ваша клавиатура начнет печатать в тесном цикле, вы получите сотни строк материала, которые будут записаны. уверен, что все они защищены внутри какой-то конструкции, подобной этой, будь то оборудование, код или что-то в этом роде.

Keyboard.begin и Keyboard.end

Давайте поговорим об этих первых двух функциях Keyboard.begin, Keyboard.end. Короче говоря, эти функции еще не реализованы, поэтому они по сути ничего не делают.

Итак, если вы перейдете на страницу GitHub для этой библиотеки, keyboard.cpp и дойдете туда, где они есть, они будут пустыми. Там ничего нет.

Итак, у нас есть еще пара функций. Давайте просто быстро пробежимся по ним.

Keyboard.println & Keyboard.print

Давайте посмотрим на .print.ln и .print. Итак, что они делают, так это то, что где бы ни был ваш курсор, он будет печатать этот текст. Если вы используете строку печати, она напечатает этот текст. А затем в основном он нажмет Enter и перейдет на новую строку. Если вы просто используете print, он просто напечатает этот текст. Итак, позвольте мне продолжить и загрузить это на мою плату Arduino. А потом я поставлю курсор прямо здесь, хорошо. Итак, еще раз, где бы ни находился ваш курсор, это не значит, что он должен быть в Arduino IDE.

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

Так что неплохая идея добавить небольшую задержку в конце этих вещей.

 

Это не очень быстро, и вы можете нажать кнопку и отпустить кнопку, и она будет работать.

Keyboard.press, Keyboard.release и Keyboard.releaseВсе

Итак, следующая пара — это Keyboard.press, Keyboard.release и Keyboard.releaseAll.

 

На вашей клавиатуре есть не только цифры и буквы, верно? Итак, если вы хотите распечатать цифры и буквы, вы можете использовать println и print. Но что, если вы хотите что-то сделать, например Control + Alt + Delete или Control + Z или что-то в этом роде, верно?

Здесь вы можете использовать ключевые слова для нажатия определенных клавиш или комбинации клавиш. Они также будут расположены на справочной странице Arduino.

Итак, вот что я вам скажу, давайте попробуем UP_ARROW. Так что я вставлю сюда UP_ARROW. Позвольте мне прокомментировать этот другой материал. А потом я пойду и загружу это. Я на самом деле выношу все это. Итак, каждый раз, когда я нажимаю кнопку, я буду нажимать стрелку вверх. Итак, позвольте мне продолжить и загрузить это. Итак, теперь, когда я нажимаю эту кнопку, курсор должен подниматься вверх. Хорошо, теперь заметьте, что он поднялся полностью. Я нажал его один раз, но он поднялся до конца. И посмотрите на это. Я здесь внизу, а он все еще идет вверх. Что с этим? Видите, как будто его всегда нажимают. Помните, что всякий раз, когда вы используете библиотеки клавиатуры или мыши, библиотека всегда работает. Теперь вы можете сказать: «Но, Майк, послушай, разве мы не вызвали digitalRead, разве это не должно было остановить это?»

Нет, потому что, как вы заметили, я больше не нажимаю на кнопку. Разве это поведение не должно было прекратиться, когда мы не нажимаем это? Что ж, у вас может возникнуть соблазн так подумать, но происходит то, что эти нажатия на клавиатуру фиксируются. Поэтому, когда вы говорите «нажмите», мы буквально все еще нажимаем кнопку. Итак, мы сказали: «Эй, мы хотим, чтобы эта функция работала». Это произошло. И когда мы выходим из него, он все еще удерживается. Итак, чтобы не отключить это, мы должны использовать эту следующую функцию, эту Keyboard.release. Теперь вот что занятно. Смотри сюда, я постараюсь удалить этот комментарий здесь. Ты видишь, как это борется со мной.

Вот почему здесь может быть немного сложно программировать, и вы должны быть постепенными в том, как вы это делаете, и осторожными в том, как вы это делаете. Когда я играл с этой библиотекой, я, возможно, создал цикл for, который никогда не завершался и писал буквы по всей среде Arduino IDE и двигал мышь.

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

Теперь вы всегда можете отключить плату Arduino, но если вы хотите попробовать перепрограммировать рядом с Arduino, это может быть немного сложно. Итак, что я собираюсь сделать, так это снова загрузить скетч. И что это будет делать, так это то, что мы еще не нажали эту активную кнопку. Так что эта строка кода еще не выполнена. Итак, теперь я собираюсь перейти на Keyboard.release. Итак, Keyboard.press нажмет клавишу UP_ARROW, но теперь я воспользуюсь Keyboard.release и отпущу KEY_UP_ARROW.

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

И, наконец, у нас есть еще два. Это довольно просто. Последний здесь — Keyboard.releaseAll. Итак, скажем, я хотел сделать какую-то комбинацию клавиш, в которой я хотел бы одновременно нажимать Command + Shift, в то время как у меня было бы две кнопки, правильно, которые я нажимаю. Таким образом, были нажаты две кнопки, и вместо того, чтобы выполнять Keyboard.release для каждой из них, я мог бы просто выполнить Keyboard.releaseAll, и тогда он просто отпустит любую кнопку, которая была нажата ранее, вот что делает releaseAll.

Keyboard.write

Итак, наконец, мы добрались до Keyboard.write.

Keyboard.write во многом похож на Keyboard.print и keyboard.println, за исключением того, что вместо вывода строки, например текста, он будет печатать в ASCII. Так получилось, что число 65 — это заглавная буква А.

Так что, если я закомментирую это и загружу это, и я наведу курсор прямо здесь, когда я нажму кнопку, заметьте базиллион Как выйдет. И помните, многие из них выходят, потому что у нас нет задержки в этом операторе if. Пока я нажимаю эту кнопку, мы получаем все эти А, давайте просто поместим их туда, просто для удовольствия. Да, видите, это круто. Хорошо. Хорошо, избавься от этих А. Давайте продолжим и просто взглянем на документацию для Keyboard.write. Итак, я снова в справочнике, я в функциях, перехожу к клавиатуре. Теперь я ищу Keyboard.write. И вы можете видеть прямо здесь, это то, на что мы смотрим. Итак, он отправляет значение ASCII 65, он напечатает A, если вы поместите свой единственный символ в кавычки, он напечатает это, верно? ASCII там. Вы можете написать это в шестнадцатеричном виде, если хотите, или, эй, вы даже можете сделать это в двоичном формате.

Итак, с клавиатурой покончено. Надеюсь, у вас в голове уже закрутились мысли о том, как ее использовать. Это действительно довольно весело, особенно если вы обнаружите, что у вас есть повторяющаяся задача. Итак, в следующем видео мы поговорим об использовании библиотеки мыши. Это очень похоже, это также довольно просто. Там есть пара вещей, о которых вам нужно подумать, надеюсь, вы нашли это действительно полезным.

Как считывать ввод с USB-клавиатуры на Arduino

Как правило, платы Arduino могут служить только в качестве ведомых устройств USB. Они не могут работать как хосты USB. Вот почему невозможно подключить USB-устройства, такие как USB-клавиатура или мышь, напрямую к Arduino. Эти универсальные USB-устройства могут быть очень полезны во многих приложениях. Например, в некоторых приложениях клавиатуры 4X4 может быть недостаточно, и вам может понадобиться полноценная клавиатура для пользовательского ввода. Это может быть ситуация, когда встроенное устройство может получать AT-команды непосредственно от пользователя или требовать сложного ввода текста или обновления текста.

Хотя Arduino по своей природе не может работать как USB-хост, его можно преобразовать в USB-хост с помощью платы Arduino USB-хост. Хост-шилд USB позволяет подключать USB-устройства к платам Arduino. Он основан на микросхеме MAX3421E, периферийном или хост-контроллере USB. Он может реализовать полноскоростное периферийное устройство или полноскоростной/низкоскоростной USB-хост в соответствии с USB 2.0. Экран также совместим с модулями TinkerKit. В этом проекте мы свяжем USB-клавиатуру с Arduino через USB-хост-шилд и обнаружим клавиши, нажатые на клавиатуре.

Необходимые компоненты

  1. Arduino UNO/Arduino Mega x1
  2. Защитный экран USB-хоста Arduino x1
  3. USB-клавиатура x1
  4. Кабель Micro USB (для соединения Arduino и компьютера) x1

Плата Arduino USB Host Shield

Плата Arduino USB Host Shield — это аппаратное обеспечение с открытым исходным кодом, которое позволяет реализовать полноскоростные периферийные устройства USB или USB-хосты на платах Arduino в соответствии с USB 2. 0. Экран можно использовать с Arduino UNO и Arduino Mega. Плата основана на микросхеме MAX3421E, периферийном/хост-контроллере USB. Arduino взаимодействует с MAX3421E на плате через шину SPI, доступную через заголовок ICSP. Шина SPI на Arduino UNO находится на контактах GPIO10, GPIO11, GPIO12 и GPIO13. На Arduino Mega шина SPI находится на контактах GPIO10, GPIO50, GPIO51 и GPIO52. GPIO7, GPIO8 и GPIO9на обеих платах используются для GPX, INT и RES соответственно.

Пример платы Arduino USB Host Shield

Плата расширения может подключать к Arduino устройства HID, такие как USB-клавиатура, USB-мышь и USB-джойстик. Он может связывать игровые контроллеры с Arduino, такие как PS4, Xbox360 и Nintendo Wii. Он может подключать к Arduino цифровые камеры и устройства хранения данных, такие как флэш-накопители, внешние жесткие диски или устройства чтения карт памяти. Даже Bluetooth-донглы можно подключить к Arduino через хост-щит USB. Android-смартфоны и планшеты с поддержкой ADK можно подключить к Arduino через экран. Шилд также может подключать преобразователи USB в последовательный порт с Arduino. Shield позволяет подключать, добавлять или использовать множество полезных устройств со встроенным устройством Arduino.

Библиотека Arduino для хост-защиты USB
Библиотека, необходимая для работы с Arduino USB Host Shield, называется «Библиотека USB-хоста для Arduino». Исходный код этой библиотеки Arduino с открытым исходным кодом доступен на GitHub. Чтобы установить библиотеку в Arduino IDE, перейдите в Tools-> Manage Libraries. Найдите «USB-хост». Прокрутите вниз до «USB Host Shield Library 2.0» и нажмите «Установить». Попробуйте установить последнюю версию библиотеки.

Установка библиотеки Arduino для USB host Shield

Соединения цепей
Вставьте защитный экран USB-хоста в верхнюю часть Arduino UNO или Arduino Mega, как показано на рисунке ниже.

Установка платы хоста USB Arduino на Arduino UNO

Вставьте клавиатуру USB в плату и подключите Arduino к компьютеру с помощью кабеля Micro-USB. Настройка Arduino с хост-экраном USB и клавиатурой будет выглядеть следующим образом.

Подключение USB-клавиатуры к Arduino UNO через хост-щит USB

Скетч Arduino

Как работает проект
Библиотеки hidboot.h и usbhub.h необходимы для работы с USB-клавиатурой. Скрытый ботинок. h отвечает за анализ устройств USB HID, таких как клавиатура и мышь. Библиотека используется для анализа ввода с клавиатуры и отображения нажатых клавиш на последовательном мониторе Arduino IDE. Клавиша ASCII и ее код отображаются на последовательном мониторе при нажатии клавиши на клавиатуре. Скетч также может обнаруживать измененные клавиши, то есть нажатия клавиш в сочетании с клавишами Alt, Ctrl, Shift и GPU.

Код
Скетч начинается с импорта библиотек hidboot.h и usbhub.h. Библиотека hidboot.h используется для анализа ввода с устройств USB HID, таких как клавиатура и мышь. Библиотека usbhub.h пригодится, если клавиатура подключена к шилду через какой-нибудь USB-хаб. Затем импортируется библиотека SPI, поскольку плата взаимодействует с Arduino через порт SPI.

Некоторые глобальные переменные объявлены keyasc и keycode и предназначены для хранения нажатой клавиши, кода клавиши и отслеживания состояния нажатой клавиши соответственно. Класс KeyboardInput определяется как дочерний класс KeyboardReportParser из hidboot.h. Методы OnKeyDown и OnKeyPressed импортируются из суперкласса KeyboardReportParser. Эти методы переопределяются в скетче. Метод OnKeyDown переопределен для обнаружения нажатия клавиши на клавиатуре. Метод OnKeyPressed переопределен для сохранения клавиши и кода нажатой клавиши в глобальных переменных keyasc и keycode соответственно. Логический флаг выражается и устанавливается в значение true в качестве нового ключа, а код ключа регистрируется.

Определен объект класса USB вместе с объектами HIDBoot и определяемым пользователем классом KeyboardInput. В функции setup() скорость последовательной связи с последовательным монитором Arduino IDE установлена ​​на 115200. Если между Arduino и компьютером установлена ​​последовательная связь, на последовательный монитор выводится сообщение «старт».

Затем код проверяет обнаружение USB-устройств через USB host Shield. Если он не обнаружен, он печатает сообщение «OSC не запущен. » на последовательный монитор. Метод SetReportParser() вызывается для объекта HidKeyboard с передачей в качестве аргумента объекта класса KeyboardInput.

В функции loop() метод task() вызывается для объекта USB. Если на клавиатуре нажата клавиша, это обнаруживается путем проверки состояния выраженной логической переменной. Если значение равно true, ключ и код ключа, обновленные в глобальных переменных keyasc и keycode, выводятся в Serial Monitor, а логическое значение снова устанавливается равным false.

Результат
В этом проекте мы обнаружили нажатия клавиш на клавиатуре. Клавиши ASCII, видимые с клавиатуры, можно использовать в качестве команд или для обновления ввода текста во встроенных приложениях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *