Arduino как hid устройство
Перейти к содержимому

Arduino как hid устройство

  • автор:

Arduino как hid устройство

Сегодня у меня геймерская тема.

И я раcскажу об этом устройстве, как оно работает и как его сделать своими руками.

Открыть полностью

Автокликер своими руками на базе Digispark Attiny85. С рандомной задержкой между кликами.

Дешевый и простой в использовании настраиваемый автокликер, который не станет кричать через неделю, мол пробная версия закончилась:)

После прошивки, плата Digispark определяется компьютером, как компьютерная мышь.

Открыть полностью

HomemadeArduinoProMicroMacroKeyboard

Самодельная клавиатура с макросами на базе Arduino Pro Micro

Это клавиатура на 30 кнопок, на одну такую кнопку, можно запрограммировать какое то действие, или даже последовательность из нескольких действий.

Можно забиндить любые функции: для программ, для игр, для командной строки, да для чего угодно!

Открыть полностью

Крутой менеджер паролей своими руками на Arduino Pro Micro Atmega32u4 с защитой от кражи.

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

Открыть полностью

Творческая мастерская Мастер Колотушкин 2023

Проекты на базе Arduino для начинающих, электронные самоделки своими руками.

Злой HID. Делаем и программируем хакерский девайс для HID-атак

Универсальность шины USB создает большую поверхность атаки. Исследователи из Университета Бен-Гуриона выделяют почти три десятка хакерских техник использования USB. В данной статье мы рассмотрим один из самых эффективных вариантов — автоматизированную отправку команд при помощи самодельного устройства класса HID.

HID-атаки

HID-атака — хитрая разновидность BadUSB. Ее суть сводится к тому, что в USB-порт вставляется простейший хакерский девайс, эмулирующий устройство ввода. Практически любая современная ОС поддерживает plug-n-play и содержит универсальный драйвер устройства каждого класса. Хакерский девайс автоматически определяется ОС как нужный нам Human Interface Device — HID. Далее ОС безо всяких проверок принимает его команды.

Есть много готовых девайсов для атак через USB-порт. Например, Rubber Ducky и ее разновидности. На мой взгляд, интереснее разобраться, как сделать такую штуку самому. Это довольно просто (когда знаешь как) и дешево. Нам даже флешка на этот раз не понадобится.

Преимуществ HID-атаки перед атакой вручную сразу несколько: это скорость, незаметность и автоматизация. Все необходимые действия выполнятся быстрее, чем ты сможешь набрать то же на клавиатуре, и без опечаток (если их не было изначально). Подключить к USB-порту миниатюрное устройство можно за пару секунд. Это не такое палево, как садиться за чужую клавиатуру и поминутно оглядываться через плечо. Из-за малых габаритов самодельный девайс легко спрятать и пронести через охрану даже на режимный объект. В крайнем случае можно просто выдать его за флешку и «случайно» уничтожить легким нажатием ботинка, после чего изготовить хоть мешок других таких же.

WARNING

Статья написана в исследовательских целях. Вся информация в ней носит ознакомительный характер. Ни автор, ни редакция не несет ответственности за неправомерное использование упомянутых в ней аппаратных платформ, программ и техник!

Выбираем аппаратную платформу

Сотворить такую хакерскую железку можно и на одноплатниках (вроде Raspberry Pi), но это все равно что перевозить ноутбук на фуре. Есть «братья меньшие» не такие известные, но не менее «злые» и опасные в руках из плеч. По сути, для выполнения HID-атаки нам необходим микроконтроллер, USB-порт и минимальная электронная обвязка, чтобы это все заработало.

Arduino Micro Pro

На мой взгляд, это один из идеальных кандидатов на роль хакерского девайса.

Arduino Micro Pro

Другие статьи в выпуске:

Xakep #234. Взломать iPhone

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Плата размером 33×16 мм работает на микроконтроллере ATmega32u4 и имеет на борту 28 Кбайт свободной памяти (вообще памяти 32 Кбайт, но 4 Кбайт уже заняты загрузчиком). С ней очень легко работать, так как проект Arduino хорошо поддерживается и для него написано много документации. Также для него есть готовая среда разработки Arduino IDE с дистрибутивами для Windows, Linux и macOS. Купить плату можно от 350 рублей.

Teensy Low Cost

Teensy LC

Хорошая альтернатива — семейство плат Teensy, совместимых с Arduino. С ними также можно использовать Arduino IDE. Например, плата Teensy LC размером 17×35 мм оснащена процессорным ядром ARM Cortex-M0+ и 64 Кбайт памяти. Купить ее в России может быть проблематично (основной упор делается на продажи Teensy 3.2–3.6), но заказать из-за рубежа вполне возможно. Цены на Teensy LC начинаются от 10 долларов.

Digispark

Многие думают, что Digispark — это самая подходящая плата для HID-атак. Да, она выигрывает по некоторым параметрам у остальных: крошечный размер 18×22 мм, практически нет лишних функций (и точек отказа), USB-разъем типа А и смешная цена порядка 100–150 рублей.

Однако в использовании она не так проста. Даже подключать ее стоит в порт USB 2.0 (или через USB-хаб v.2.0) либо лезть в BIOS, отключать xHCI и выставлять режим USB 3.0 порта как USB 2.0 compatible. Обратная совместимость у версий USB 3.0 и 2.0 заявлена, но порой нужен бубен, чтобы она реально заработала, особенно на Windows 10.

Digispark

Работает данная плата под управлением микроконтроллера Attiny85. С памятью у нее негусто — всего 8 Кбайт, из которых два уже заняты загрузчиком. Совсем не вдохновляет ограничение ROM в 512 байт под исполняемый код, но оптимизация тебе в помощь.

Процессор (если его можно так назвать) опять же совместим с Arduino IDE, только желательно использовать версию 1.6.5r2, а 1.6.6 и 1.6.7 не рекомендуется вовсе. Digispark Wiki любезно предоставляет мануал по «вживлению» этой платы в Arduino IDE, или можно скачать уже специально заточенные версии ПО.

Альтернативы

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

NodeMCU и SparkFun с микроконтроллером ESP8266. Этот чип разрабатывался с направлением на поддержку Wi-Fi, поэтому платы с беспроводным модулем получились довольно большими. NodeMCU имеет размер 60×30 мм при не самой выгодной цене от 400 рублей. Однако если планируется многоэтапная атака, то беспроводное подключение будет совсем не лишним.

SparkFun в целом неплох, но смущает ценой (от 17 долларов за копеечный процессор). Однако его контроллер совместим с Arduino IDE, что делает разработку удобной.

Функционально Particle Photon похож на платы с ESP8266, но его цена гораздо выше. На борту у него довольно дорогой и ненужный для HID-атак ARM Cortex M3 STM32F205RGY6 с Wi-Fi-модулем Broadcom BCM43362, что поднимает цену до 2000 рублей и выше. Он будет оправдан в том случае, если помимо эмуляции клавиатуры планируется выполнять какие-то более сложные задачи, требующие универсального процессора архитектуры ARM.

INFO

Обрати внимание, что из всех рассмотренных плат лишь Digispark оснащен USB-портом типа А. Остальные имеют разъемы micro-USB и mini-USB, поэтому советую сразу обзавестись OTG-адаптером на интерфейс платы или кабелем для подключения нашего хакерского девайса к компу.

Делаем хакерский девайс за пять долларов

Приступим к практической части на примере платы Arduino micro Pro и переходника mini-USB ↔ USB Type A. В качестве основной ОС используется Kali Linux (4.14.0-kali3-amd64), но на других сборках Linux и в Windows проблем возникнуть не должно. Arduino IDE v. 1.8.6 скачана с официального сайта. В качестве жертвы выбран тот же компьютер.

Готовим софт

Скачиваем дистрибутив, распаковываем. В каталоге лежит файл с символичным названием install.sh. Его и запустим на исполнение:

./install.sh 

Минуту-две смотрим на надпись Adding desktop shortcut, menu item and file associations for Arduino IDE. и вуаля! На рабочем столе появляется ярлык для запуска.

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

Командой lsusb можно проверить, что устройство определено верно и все идет по плану (Arduino Micro Pro определяется как Leonardo).

lsusb

Следующая команда покажет порт, на котором повис наш Leonardo:

ls /dev/ | grep tty 

У меня это ttyACM0 .

ls /dev/ | grep tty

Теперь можно открыть саму IDE. Сразу после запуска идем в меню «Инструменты» и в разделе «Платы» выбираем Arduino Leonardo. Там же в «Инструментах» выбираем нужный порт (он там, скорее всего, будет один) из списка tty.

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

После запуска Arduino IDE картинка будет следующая.

Интерфейс Arduino IDE

Есть еще один вариант запустить подобие Arduino IDE. На сайте представлен Arduino Web Editor. На мой взгляд, он менее удобен, но тут уже кому как по вкусу. Для его использования будет необходимо зарегистрироваться на сайте либо авторизоваться через Google-аккаунт. Также для связи браузера с устройством потребуется установить плагин (он есть для Chrome и Firefox). Его удобство в том, что все написанные скетчи будут онлайн (с любой точки земли можно получить доступ к ним), но я в таких тонких деталях предпочитаю локальную работу.

Интерфейс Arduino Web Editor

В остальном редакторы похожи.

Изначально присутствует заготовка из void setup() и void loop() . Напомню, что код, написанный в функции setup(), будет исполняться сразу при подаче питания на плату, причем он исполнится один раз. Функция loop() отреагирует на питание таким же образом, вот только повторяться действие будет постоянно (цикл с бесконечным счетчиком и неизменным кодом на каждый проход).

Пишем скетч

Нам нужно, чтобы микроплата Arduino выдавала себя за клавиатуру. Для этого в самом начале следует добавить библиотеку Keyboard.h .

Далее основные элементы, которыми мы будем пользоваться:

  • Keyboard.begin() — строка необходима для начала эмуляции клавиатуры;
  • Keyboard.print() — вводит заданный текст;
  • Keyboard.press() — зажимает указанную клавишу;
  • Keyboard.release() — отпускает указанную клавишу;
  • Keyboard.releaseAll() — отпускает все клавиши;
  • delay() — задает период ожидания (между командами или для начала выполнения действия).

Ключи нажимаемых клавиш можно найти тут. Для простоты мы говорим «нажимаем/отпускаем клавишу», подразумевая, что контроллер отправляет ее скан-код, имитируя нажатие командами Keyboard.press/Keyboard.release.

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

Задается она вот такой конструкцией:

void function_name()

В скетче указывается как function_name(). Для начала другие элементы управления платой нам не понадобятся.

Теперь можно попробовать написать свой первый скетч. Ведь в теории между теорией и практикой разницы нет, а на практике — есть.

В качестве PoC используем такую задачу: после подключения нашего девайса в USB-порт на компе с Linux должен автоматически открыться терминал, а затем в домашнем каталоге создаться файл с содержимым Hello World , который открывается в текстовом редакторе (у меня будет Leafpad).

Скетч выглядит следующим образом.

Код задания

В самом начале указана знакомая всем сишникам конструкция #include c указанием на использование библиотеки Keyboard.h . Как уже говорилось выше, она нужна для того, чтобы наша ардуина смогла выдать себя за клавиатуру.

В коде повторяется нажатие клавиши Enter три раза, поэтому удобнее создать отдельную функцию pressEnter() , что я и сделал. Обрати внимание: она находится за пределами setup(), а между нажатиями клавиши Enter вставлена задержка (ниже поясню, зачем она нужна).

Keyboard.press(KEY_RETURN); delay(50); Keyboard.release(KEY_RETURN); 

Далее идет основная функция void setup() .

Keyboard.begin(); // Начало эмуляции клавиатуры delay(5000); // Задержка 5000 мс Keyboard.press(KEY_LEFT_GUI); // Нажимаем клавишу «Пуск» delay(5000); Keyboard.release(KEY_LEFT_GUI); // Отпускаем ее delay(500); Keyboard.print("terminal"); // Пишем в поиске delay(500); pressEnter(); delay(1000); Keyboard.print("echo Hello World >> test"); // На этом моменте терминал уже открыт delay(50); pressEnter(); delay(1000); Keyboard.print("leafpad test"); // Открываем файл test в Leafpad delay(50); pressEnter(); 

Сложно? Пока нет, но станет сложнее, когда вместо Hello World ты запишешь в файл код зловреда и запустишь его на исполнение.

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

Есть еще один важный нюанс с раскладкой клавиатуры. Мы написали код, ориентированный на английскую раскладку. Если в момент подключения нашего устройства к атакуемому компьютеру раскладка будет не та, под которую писался скетч, то нужного нам действия не получится. Горячие и функциональные клавиши, конечно, отреагируют как надо, а вот с набором текста возникнут проблемы. Вместо «terminal» получится «еукьштфд», со всеми вытекающими последствиями.

Примеры атак

При проведении реальных HID-атак можно начать с быстрого создания локального пользователя. Демонстрирую это на примере Windows 10 сборки 1607.

Создаем пользователя

Согласись — удобно. Незаметно вставил микроардуину в USB-порт чужого компа, и через несколько секунд на нем уже появилась локальная учетка с заданными тобой параметрами логин/пароль.

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

Загружаем файл с FTP

Поясню момент с файлом: да, можно выполнить все команды вводом, но суть опять в тайм-ауте исполнения. Мы не знаем, как долго может сервер реагировать на команды (на это влияет скорость интернет-соединения, скорость работы самого компьютера и еще куча разных факторов). Также стоит учесть то, что ты можешь использовать в своих тестах SSD (и все вроде бы работает), но при подключении к компьютеру с HDD. думаю, ты уловил смысл.

Наверняка ты обращал внимание, что USB-клавиатура определяется BIOS еще до загрузки ОС. В UEFI вообще интегрирована расширенная поддержка USB-портов разных версий с готовыми профилями для HID-девайсов и USB-накопителей. Большой объем флеш-памяти современных материнок и унифицированная структура UEFI позволяют загрузить низкоуровневый бэкдор, просто вставив копеечный хакерский девайс из ардуины.

Как защититься от HID-атак

Как мне кажется, самый надежный способ защиты для любой ОС — блокировать учетную запись (паролем, RFID-чипом или биометрическим сканером), когда уходишь из-за компа. Фишка атаки в беспалевности и скорости, поэтому вряд ли пентестер будет вставлять такую штуку в заблокированный компьютер (хотя в некоторых довольно крупных организациях девочки из бухгалтерии практикуют не блокировку компьютера, а выключение монитора. Как ты понимаешь, это не подойдет). Также можно совсем отключить незанятые USB-порты (в BIOS или физически), но что помешает атакующему вытащить легитимную клаву и подключить вместо нее эмулятор на ардуине? Только настройки политики безопасности и сторонний софт для контроля подключений по USB.

Что касается ОС Windows, то тут есть несколько решений. Во-первых, комплексные антивирусы. Они уже научились определять класс BadUSB и блокировать такие устройства. К примеру, в серверной части «Антивируса Касперского» при настройке политик безопасности есть функция «Защита от атак BadUSB».

Настройка политики безопасности с сервера управления Kaspersky

Во-вторых, есть средства борьбы с подобного рода атаками при помощи групповых политик. Необходимо открыть gpedit.msc , пройти цепочку «Конфигурация компьютера → Административные шаблоны → Система → Ограничения на установку устройств». В этом разделе есть несколько правил. Нам нужно «Запретить установку устройств, не описанных другими параметрами политики». Суть правила заключается в том, что при его включении драйвер нового устройства не будет автоматически установлен, если только этот девайс прямо не указан в политиках. Есть, конечно, небольшое неудобство в данном методе, но если все грамотно настроить, то проблем не будет.

Настройка правил групповой политики Windows 10

В своих исследованиях защиты от HID-атак я использовал в качестве жертвы комп с Windows 10 (1607). В первом случае антивирь Касперского сработал на ура. Во втором ОС сама заблокировала мое устройство. Правда, когда я попытался подключить вторую клавиатуру к компьютеру, тоже получил отказ.

Для Linux можно воспользоваться udev и его правилами. Необходимо создать файл /etc/udev/rules.d/10-usbblock.rules и вписать в него следующее содержимое (классы можно блокировать любые):

#ACTION=="add", ATTR=="03" RUN+="/bin/sh -c 'echo 0 >/sys$DEVPATH/../authorized'" 

Теперь можно заблокировать добавление новых HID-устройств командой

sed -i 's/#//' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules 

А вот команда для разблокировки:

sed -i 's/^/#/' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules 

Заключение

Эмуляция клавиатуры — опасный инструмент в умелых руках. Это было наглядно продемонстрировано еще в 2014 году на Black Hat. Доклад Building Trojan Hardware at Home вызвал всплеск интереса к данной теме.

Изначально в серьезность угрозы верилось с трудом, а в Сети циркулировали шуточки на тему USBola, сравнивающие эту атаку с известным вирусом. После публикации статьи Computer Ebola шутки закончились. Вдобавок Карстен Нол подлил масла в огонь, создав список уязвимых устройств, которые удобно использовать для проведения атак вида BadUSB.

За последние годы ситуация изменилась. С одной стороны, стало проще создавать копеечные эмуляторы клавиатуры, находить примеры готовых скетчей и пейлоадов. С другой — некоторые комплексные системы защиты научились распознавать хакерские HID-девайсы, а в современных ОС появились расширенные настройки политик безопасности, препятствующие их несанкционированному подключению.

WWW

  • Делаем реалистичный девайс для HID-атак
  • Подробное описание BadUSB
  • BadUSB на Black Hat

Как создать USB HID из Arduino?

У меня есть Arduino Mega, и появилось желание, сделать usb-устройство, которое будет легко распознаваться компьютером. Например, как USB HID — клавиатура, мышь и т. д.
Где можно узнать, про то как работать с USB, как компьютер распознаёт устройство?

  • Вопрос задан более трёх лет назад
  • 22644 просмотра

Комментировать
Решения вопроса 2
Михаил @Inkvizitor66

Брать ардуино на Atmega32u4 (leonardo большая, pro micro компактная) она умеет в железный HID и требует всего пары строк инициализации.
А если строить на атмера32, atmega328 (большинство ардуин) то как в ответе от Александр v-usb в помощь.

Upd. Сперва ответил на вопрос шапки, потом прочитал уточнение. Но все равно пускай будет

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
vanyamba-electronics @vanyamba-electronics

Самому пытаться программировать USB можно, конечно, но приготовьтесь, что на решение только одной этой задачи у Вас уйдут следующие несколько лет. Проще воспользоваться готовой библиотекой.
В случае, если в микроконтроллере нет встроенного USB-порта, то можно попробовать использовать библиотеку V-USB (виртуальный USB), но как и все чисто софтовые решения, это скорее эмулятор, чем полноценный порт. Требует много процессорного времени, и к тому же качество её работы оставляет желать лучшего. Например, если погрузить компьютер в спящий режим, то V-USB вряд ли это распознает, и придётся каждый раз переподключать микроконтроллер, или нажимать на кнопку сброса.
Так что попробовать стоит, но лично я рекомендую использовать микроконтроллер ATmega32U4, на котором построена плата Arduino Leonardo. Для него поддержка USB HID реализована в самом программном обеспечении Arduino IDE, так что для того, чтобы превратить микроконтроллер в «мышь» и «клавиатуру» (одновременно), достаточно просто загрузить скетч примера.
И наконец, третий вариант. В современных Arduino вместо чипа USB-RS232 используется микроконтроллер ATmega16U2. Это практически тот же Arduino Leonardo, только памяти у него в 2 раза меньше. Можно перепрограммировать в USB HID его, разве что потребуется программатор, потому что он программируется через интерфейс ICSP.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Ответы на вопрос 1

NeiroNx

Программист

гуглите по «V-USB HID Arduino»
вот один из примеров rukodelie-ds.ru/forum/viewtopic.php?t=804

Также есть от Digispark для Attiny85 — его основа V-USB
Также вам придется узнать что такое «HID дескриптор» и о правилах его написания(в инете есть документация и проги для этого).

Arduino.ru

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 02:23
Зарегистрирован: 31.07.2020
enxls пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 02:28
Зарегистрирован: 26.05.2017

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:02
Зарегистрирован: 31.07.2020
b707 пишет:

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:05
Пушной звер

Пушной звер аватар

Зарегистрирован: 17.03.2013

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:10
Зарегистрирован: 31.07.2020
Пушной звер пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:16
Пушной звер

Пушной звер аватар

Зарегистрирован: 17.03.2013

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:20
Зарегистрирован: 31.07.2020
Пушной звер пишет:

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 03:21
Пушной звер

Пушной звер аватар

Зарегистрирован: 17.03.2013

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 05:07

asam аватар

Зарегистрирован: 12.12.2018
Пушной звер пишет:

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 06:03
Зарегистрирован: 23.11.2016
asam пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 06:09

asam аватар

Зарегистрирован: 12.12.2018
rkit пишет:
asam пишет:

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 09:01

dimax аватар

Зарегистрирован: 25.12.2013
enxls пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 10:06
Зарегистрирован: 26.05.2017
enxls пишет:

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 10:18
Зарегистрирован: 19.10.2016
b707 пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 10:43

ЕвгенийП аватар

Зарегистрирован: 25.05.2015
b707 пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 12:47
Зарегистрирован: 25.12.2019
dimax пишет:
enxls пишет:

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

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 13:54
Зарегистрирован: 31.07.2020
genia1991 пишет:
dimax пишет:
enxls пишет:

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

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

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 13:55
Зарегистрирован: 31.07.2020
asam пишет:
rkit пишет:
asam пишет:

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 13:58
Зарегистрирован: 26.05.2017
enxls пишет:

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:04
Зарегистрирован: 25.12.2019
enxls пишет:
genia1991 пишет:
dimax пишет:
enxls пишет:

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

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

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

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:05

dimax аватар

Зарегистрирован: 25.12.2013

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:05
Зарегистрирован: 31.07.2020
b707 пишет:
enxls пишет:

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:07
Зарегистрирован: 25.12.2019
b707 пишет:
enxls пишет:

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

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:12

wdrakula аватар

Зарегистрирован: 15.03.2016
enxls пишет:

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:15
Зарегистрирован: 19.10.2016

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 14:16
Зарегистрирован: 31.07.2020
wdrakula пишет:
enxls пишет:

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

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 15:20
Пушной звер

Пушной звер аватар

Зарегистрирован: 17.03.2013
asam пишет:
rkit пишет:
asam пишет:

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

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

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

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 15:34

ЕвгенийП аватар

Зарегистрирован: 25.05.2015
sadman41 пишет:
Тогда ещё пары двигателей недостает в наборе.

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

  • Войдите на сайт для отправки комментариев

Пт, 31/07/2020 — 16:02
Зарегистрирован: 26.05.2017
wdrakula пишет:

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

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

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

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

  • Войдите на сайт для отправки комментариев

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

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