Как стать автором
Обновить

Комментарии 35

А почему с андроида сразу на десктоп не идти? Зачем эта прослойка?

У андроида возможность эмуляции им Bluetooth HID устройства в большинстве случаев не включена в ядро.

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

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

Не знаю, как это выглядит, но работает это прям хорошо + кроме "тачпада" еще куча всего есть - от управления плеером (с автопаузой при звонке) до всплывания уведомлений со смартфона на компьютере.

Отдельное устройство, у которого на выходе тупой hid - явный перерасход ресурсов

Да нет там никакой вьюхи, просто весь тачскрин используется как тачпад. Иногда лагает, но в целом норм.

KDEC is not vnc.

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

На счет HID в ядре не скажу, но давно пользуюсь Serverless Bluetooth Keyboard на всех телефонах (от 8 до 10 Андроида).

Отлично работает даже на другом телефоне (когда один телефон становится мышкой\клавиатурой для другого). Умеет быть аэромышкой.

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

Я тоже согласен. Вопрос должен решаться программно. Возможно с помощью доп. драйвера на самом ПК, но аппаратный огород тут совершенно лишний.

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

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

Звучит сомнительно

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

А чем тачпад так сильно от мышки отличается? Ну и почему бы тогда не купить вот так
Статья огонь, автор молодец, но:
image

Программно, не всякий программист со стажем решит, а здесь на любителей расчет. Это первое. Второе, основная цель была была показать принцип работы HID в ардуино, а не сделать беспроводной ТАЧПАД для компьютера.

Мне кажется, что статья не об этом.
Управлять с андроида десктопом уже, наверняка, много решений. Хотя когда мне понадобилось найти быстрое, простое и универсальное (linux, windows и так далее) мне не удалось. Всегда приходится повозиться.
Статья, скорее, об ардуинке и простых вещах для неё, может для детей что-то простое, интересное и быстрое в ней найдется.

На самом деле есть универсальное средство.

Android в более-менее современных версиях (начиная где-то с 6.0, начиная с ядра 3.18) имеет в ядре hid gadget по умолчанию, и его можно активировать при помощи https://github.com/tejado/android-usb-gadget и затем использовать при помощи https://github.com/pelya/android-keyboard-gadget/tree/master/remote-client (надо ещё перед запуском remote-client сделать setenforce 0, иначе приложение зависнет на открытии гаджета).

Работает в windows, linux и bios, проверено на смарте и планшетнике. Эмулируются клавиатура и мышь.

Работает по кабелю USB, драйвера не требуются.


Вот про «setenforce 0, иначе приложение зависнет» я и говорил «Всегда приходится повозиться». :)
Android в более-менее современных версиях (начиная где-то с 3.18) имеет в ядре hid gadget по умолчанию,

А точно имеет? Я где-то раз в год вспоминаю про вопрос 'как сделать так, чтобы мой KeePass на телефоне мог набрать пароль в форме на десктопе', в очередной раз ищу 'сделали ли уже так, чтобы телефон мог притворяться клавиатурой?' и нахожу только какие-то древние обсуждения этт hid gadged, где говорят, что нужно свое ядро компилять.


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

Про исключительность leonardo неверно: у большинства ардуинок на борту в качестве usb2serial стоит довольно мощная atmega 16u2, которая вполне себе программируется, в том числе с помощью arduino ide, если установить загрузчик hoodloader2.

Но это уже задача со звездочкой, так и как эмуляция HID на atmega...

Всякие микро, клоны UNO и самоделки подключаются через примитивный мост. Да и программирование 16u2 уже не для любителей.

У 16u2 6 пинов для программатора выведены, как прошить с использованием второй ардуинки написано (вообще ридми предельно пошаговый), программирование как у обычной ардуинки, часть пинов выведена на гребенку, остальные можно самому легко распаять, посадочные места под гребенку на плате есть… Не вижу я тут звездочки :)

А если на плате FT232 или CR210x, то или человек достаточно опытный, или сам виноват :)

Но опять же, тут мы шьем уже не основной контроллер. Соответственно UNO в режиме HID использовать не выйдет

А зачем нужна именно «большая» atmega8 uno? Режим HID единообразно реализуется на любом мк с native usb, мы же не v-usb городим. Мысль в том, чтобы лишнюю плату не покупать и ничего не паять, а подключение и процедура прошивки (после замены бутлодера) полностью совпадают, кроме замены в коде serial1 на serial.

EDIT Виноват, придётся проводки на RX/TX наборот подключить, а в atmega8 или залить пустой скетч, или просто замкнуть reset на ground

Вы утверждали, что я писал о том, что исключительно leonardo можно подключить в режиме HID (хотя не только, можно еще DUE, к примеру), но прошив бутлодер моста 16u2, это все равно не UNO или любая ругая arduino. Так или иначе в оригинальной arduino у нас остается только leonardo и еще несколько вариантов. Вы все же забываете, что речь о любителях. А паять таки все равно придется, так или иначе блютуз надо подключать.

Про любителя всё-таки, а не про дрессированную обезьянку.
Внимательно посмотрел на первую схему: при подключении достаточно штатных гребенки и ардуиновских проводов папа-мама.
чем-то напоминает старый, добрый проект badusb
Serial1.begin(115200); // Настраиваем первый порт Serial1
Обратите внимание, что мы используем не Serial1, а Serial.

мне кажется или тут ошибка в одной из строк? и таки далее везде используется сериал1.
Посмею предложить маленькое улучшение кода:
mess = Serial1.read();      // Пришедшее сообщение    
if (_x)                     // Если пришло сообщение смещения по X
{
  Mouse.move(mess, 0, 0);   // Перемещаем указатель по оси X на пришедшее число 
  _x = false;               // Обнуляем флаг префикса
}else if (_y)                     // Если пришло сообщение смещения по Y
{
  Mouse.move(0, mess, 0);   // Перемещаем указатель по оси Y на пришедшее число 
  _y = false;               // Обнуляем флаг префикса
}else if (_w)                     // Если пришло сообщение прокрутки колеса
{
  Mouse.move(0, 0, mess);   // прокручиваем колесо на пришедшее число 
  _w = false;               // Обнуляем флаг префикса
}
switch(mess){
  case 120: 
  case 120: _x = true; break;// Если пришел префикс смещения по X   
  case 121: _y = true; break;// Если пришел префикс смещения по Y   
  case 122: _w = true; break;// Если пришел префикс колеса прокрутки
  case 108: Mouse.click(MOUSE_LEFT); break;// Левый клик            
  case 114: Mouse.click(MOUSE_RIGHT);break;// Правый клик           
}
Вот бы ещё иметь возможность модули камер из смартфонов к декстопу подключать…

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

Хотелось-бы поинтересоваться — а зачем беспроводной тач-пэд? Какой юзер-кейс? Какую проблему пытается решить эта самоделка?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.