PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Резистивные кнопки под андроид (http://pccar.ru/showthread.php?t=18478)

max_64rus 31.01.2016 22:15

Цитата:

Сообщение от fedor5800 (Сообщение 350253)
Только смотри, чтоб контроллер мог прикидываться HID устройством, тогда можно его подключить его к планшету.

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

godmal 04.02.2016 08:28

Подскажите, кто силён в ардуинках, как Uno Rev.3 прикинуть HID-устройством без перевода в режим DFU?
Заказал себе вот такой ардуино + вот такой преобразователь в наджежде, что смогу саму ардуину использовать в обычном режиме, а преобразователь подключит к плате и прикинуть его HID-устройством. Либо наоборот преобразователь сделать основным для заливки скетчей, а ардуину перевести в DFU. Реальная затея?
Просто я с ардуинами еще ни разу не общался и нюансов всех не знаю, но вещь занятная, хочется попробовать пошаманить немного.
Цель простая: прикинуть ардуинку HID-клавиатурой, но при этом не гонять ее в DFU и обратно каждый раз для заливки скетчей. Лучше пусть будет 2 USB, у каждого своя задача.

=== Дополнил ===
Кажется, придется еще заказать Leonardo или Micro, она на чипе ATmega32U4 и умеют прикидываться USB-HIDом. Но вопрос по Uno не закрыт :)

YAM1966 04.02.2016 10:55

Цитата:

Сообщение от godmal (Сообщение 350671)
.......Но вопрос по Uno не закрыт :)

UNO R3 из ссылки по USB содержит микросхему USB->UART моста CH340G. Следовательно может прикидываться ТОЛЬКО виртуальным последовательным портом.
Вот если бы купили UNO R3 не китайский, то там стоит atmega162u2 в качестве моста, вот ее можно сделать кем угодно по USB, но не средствами ардуино ;)

godmal 04.02.2016 10:58

Цитата:

Сообщение от YAM1966 (Сообщение 350695)
Вот если бы купили UNO R3 не китайский, то там стоит atmega162u2 в качестве моста, вот ее можно сделать кем угодно по USB, но не средствами ардуино ;)

При такой стоимости она мне не особо инетесна, китайская UNO 200р, в пять и более раз дороже. Не-не-не :)
Сегодня думаю купить Digispark ATtiny85, она вроде как умеет быть HID. Куплю, попробую и буду ждать свою UNO :)

YAM1966 04.02.2016 11:07

Вот Вам HID ардуина по смешной цене, причем 32 битный...

godmal 04.02.2016 11:22

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

oleg707 04.02.2016 12:53

Цитата:

Сообщение от YAM1966 (Сообщение 350699)
Вот Вам HID ардуина по смешной цене, причем 32 битный...

у ардуино есть своя IDE, которой далеко до атмел студио, но для поделок хватает. Как обстоят дела у стм?

YAM1966 04.02.2016 13:14

А мужики-то не знали...

Еще на-водку дать? :acute:

Наводка.

oleg707 04.02.2016 18:17

Цитата:

Сообщение от YAM1966 (Сообщение 350718)
А мужики-то не знали...

Еще на-водку дать? :acute:

реально не знал:ohmy2:
на-водки много не бывает ;)

demtro 09.02.2016 23:05

Вложений: 1
Есть такая кнопка на клавиатуре, как контекстное меню, как заставить ардуино эмулировать её нажатие?

YAM1966 09.02.2016 23:22

Цитата:

Сообщение от demtro (Сообщение 351239)
Есть такая кнопка на клавиатуре, как контекстное меню, как заставить ардуино эмулировать её нажатие?

HID Usage Tables страница 27 System Context Menu.

demtro 10.02.2016 09:32

Цитата:

Сообщение от YAM1966 (Сообщение 351240)
HID Usage Tables страница 27 System Context Menu.

Т.е получаем код кнопки 0x84, правильно понимаю?

YAM1966 10.02.2016 11:09

Цитата:

Сообщение от demtro (Сообщение 351269)
Т.е получаем код кнопки 0x84, правильно понимаю?

Нет, 0x84 не код кнопки.
Для кнопок в таблице 6 необходим свой HID дескриптор описывающий его конфигурацию типа такого:
Код:

  0x05, 0x01, //        Usage Page (Generic Desktop)
  0x09, 0x80, //        Usage (System Control)
  0xA1, 0x01, //        Collection (Application)
  0x85, REPORT_SYSTEM_CONTROL_ID, //            Report ID (6)
  0x75, 0x01, //            Report Size (1)
  0x95, 0x08, //            Report Count (8)
  0x15, 0x00, //            Logical Minimum (0)
  0x25, 0x01, //            Logical Maximum (1)
  0x09, 0x81, //            Usage (System Power Down)
  0x09, 0x82, //            Usage (System Sleep)
  0x09, 0x83, //            Usage (System Wake Up)
  0x09, 0x84, //            Usage (System Context Menu) <-Использование Вашей кнопки
  0x09, 0x85, //            Usage (System Main Menu)
  0x09, 0x86, //            Usage (System App Menu)
  0x09, 0x87, //            Usage (System Menu Help)
  0x09, 0x88, //            Usage (System Menu Exit)
  0x81, 0x02, //            Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
  0xC0        //        End Collection


demtro 10.02.2016 22:23

Цитата:

Сообщение от YAM1966 (Сообщение 351274)
Нет, 0x84 не код кнопки.
Для кнопок в таблице 6 необходим свой HID дескриптор описывающий его конфигурацию типа такого:
Код:

  0x05, 0x01, //        Usage Page (Generic Desktop)
  0x09, 0x80, //        Usage (System Control)
  0xA1, 0x01, //        Collection (Application)
  0x85, REPORT_SYSTEM_CONTROL_ID, //            Report ID (6)
  0x75, 0x01, //            Report Size (1)
  0x95, 0x08, //            Report Count (8)
  0x15, 0x00, //            Logical Minimum (0)
  0x25, 0x01, //            Logical Maximum (1)
  0x09, 0x81, //            Usage (System Power Down)
  0x09, 0x82, //            Usage (System Sleep)
  0x09, 0x83, //            Usage (System Wake Up)
  0x09, 0x84, //            Usage (System Context Menu) <-Использование Вашей кнопки
  0x09, 0x85, //            Usage (System Main Menu)
  0x09, 0x86, //            Usage (System App Menu)
  0x09, 0x87, //            Usage (System Menu Help)
  0x09, 0x88, //            Usage (System Menu Exit)
  0x81, 0x02, //            Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
  0xC0        //        End Collection


т.е для работы этой кнопки мне надо переписать библиотеку HID.cpp и USBAPI.h (которые мы используем для мультимедиа клавиатуры в этой теме)?

YAM1966 10.02.2016 23:03

Цитата:

Сообщение от demtro (Сообщение 351328)
т.е для работы этой кнопки мне надо переписать библиотеку HID.cpp и USBAPI.h (которые мы используем для мультимедиа клавиатуры в этой теме)?

Не переписать, а добавить HID дескриптор для выдачи события по нажатию нужной кнопоки и сделать соответствующую функцию для ее передачи по USB.

Kudryash 19.02.2016 21:06

Вложений: 1
Подрулевой джойстик ford fusion
Вложение 42689
Не силен в сопротивлениях , но паять умею :)
Запитал с привязкой к минусу через 20 кОм, при не подсоединенном джойстике показатель равен 0.
Присоединяю джойстик к ардуино , монитор порта выдаёт 817 (не пойму почему так)
vol + 1016
vol - 1021
track + 1008
track - 996
mute 973
Прошу совета , понимаю что кнопки очень рядом друг с другом по значениям .
Пробовал менять 20 кОм на другие сопротивления , но расхождение в показателях кнопок так и остаётся не большим.
Посоветуйте как правильно поступить ?!

oleg707 19.02.2016 21:35

del.

awtoap 19.02.2016 23:37

Контакт 1 на вход АЦП абдурины и этот же контакт подтянуть резистором 1ком к плюс 5В. Контакт 2 на массу.

Kudryash 21.02.2016 00:53

И так , подтянул к плюсу через 1 кОм
0 если не подсоединять к пульту
855 присоединил пульт , кнопки не нажаты
vol + 130
vol - 50
track + 235
track - 365
mute 519
теперь вроде разброс хороший ,кнопки не залазят друг на друга.
Спасибо за помощь !

P.S. пульт проверен , всё исправно работает !
Еще раз спасибо за помощь !

Melkior 22.02.2016 12:07

Гайз, а никто не делал отдельного ликбеза на тему "Как передавать нажатие кнопок в андроид плейер" Честно говоря читать все страници с первой не очень захватывающе, учитывая что в 2012году обсуждали совсем не ардуину.

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

lti1 22.02.2016 12:34

Цитата:

Сообщение от Melkior (Сообщение 352464)
Гайз, а никто не делал отдельного ликбеза на тему "Как передавать нажатие кнопок в андроид плейер" Честно говоря читать все страници с первой не очень захватывающе, учитывая что в 2012году обсуждали совсем не ардуину.

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

пост 307

Melkior 22.02.2016 12:41

Цитата:

Сообщение от lti1 (Сообщение 352465)

признателен

alucard91 19.03.2016 10:34

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

YAM1966 19.03.2016 12:25

Цитата:

Сообщение от alucard91 (Сообщение 355512)
Господа, вот тема резистивных кнопок в планшет вроде бы раскрыта, а как насчет устройства обратного действия? Если хочется убрать стандартную кнопочную панель управления и заменить ее приложением на планшете, а к ГУ подключить через адруину или другой контроллер.
Нигде еще не видел подобной реализации.

Плохо смотрели, контроллер V4, 2 канала для имитации резистивных кнопок.

alucard91 19.03.2016 16:02

Цитата:

Сообщение от YAM1966 (Сообщение 355518)
Плохо смотрели, контроллер V4, 2 канала для имитации резистивных кнопок.

Сказать по правде отсеял эту тему на автомате, так как посчитал реализацию слишком сложной для неподготовленного человека.
Чтож, появился повод вернутся в ветку, покурить инструкции :)
Спасибо за наводку)

Hitachi 25.03.2016 22:53

Всем доброго времени суток.Нужна ваша помощь. Arduino nano (китайская) + под рулевой джойстик Ford Focus 2. С ардуино сталкиваюсь первый раз, как и с програмированием.
Как я понимаю подключать джой нужно на +5 и Аналоговый вход (допустим А1)?
У джоя 3 вывода, в авто изначально задействовано 1 и 2.
Почитал уроки, пробовал этот код, который должен показывать данные в мониторе порта. Но почему то там пусто.
void setup() {
Serial.begin(9600);
}

void loop() {
int sensorValue = analogRead(A1);
Serial.println(sensorValue, DEC);
delay(1);
}

В какую сторону нужно копать?

Kavalsky 26.03.2016 00:15

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

bizz 26.03.2016 09:32

smart keyboard поставте

Az0m@ 03.04.2016 20:13

Подскажите, кто нить на базе ардурино нано реализовывал? Или обязательно нужна именно прошка?

godmal 04.04.2016 08:20

Цитата:

Сообщение от Az0m@ (Сообщение 357322)
Подскажите, кто нить на базе ардурино нано реализовывал? Или обязательно нужна именно прошка?

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

Я когда с этой темой разбирался, понял, что китайскую UNO на базе чипа CH340 использовать не получится, т.к. нативно он не может представляться как HID-устройство (есть вариант с переводом в режим DFU, но это гемор). В итоге купил себе Pro Micro (примерно вот такую http://www.5v.ru/pro-micro.htm , это не реклама, просто первая попавшаяся под руку страничка с хорошей фоткой). В ней стоит чип 32U4. Еще, например, можно взять Леонардо.

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

Tommy_Gun 06.04.2016 04:47

Мужики, ткните. Не могу найти... Кто- то из форумчан выкладывал скетчи и даже видео, где по USB ардуино рулит не только кнопками, но и яркостью экрана Nexus. Планируются кнопки на морду нексуса изготовленные 3d печатью. Они закроют родной датчик освещенности, а с ним очень удобно.

DelleTenebre 06.04.2016 05:54

Tommy_Gun, может быть он, проект KeyRes?

Tommy_Gun 07.04.2016 00:57

DelleTenebre, спасибо!
Просматривал его видео в этой ветке, только с двумя энкодерами. Это сбили с толку.
Вот уж точно - нет предела совершенству. Два года пилю свой проект. Дорос до двусторонней платы управления, на штыревом соединении с внутренней, ответной платой в нексусе и полным отказом от реле с кнопками от старого Гу на морде нексуса и управлением на руле. В общем законченный инсталл. А тут на тебе! Друг закончил сборку 3д принтера... И понеслось...

olllegan 09.04.2016 16:31

Подскажите как добавить сочетания кнопок. Использую Arduino Leonardo. Взял скетч из поста #307. Все прекрасно работает.
Пытаюсь добавить ещё одно сочетание (нужно CTR+Z и CTRL+B) на основе сочетания Alt+Tab не получается.

oleg707 09.04.2016 18:25

Цитата:

Сообщение от Tommy_Gun (Сообщение 357513)
Мужики, ткните. Не могу найти... Кто- то из форумчан выкладывал скетчи и даже видео, где по USB ардуино рулит не только кнопками, но и яркостью экрана Nexus. Планируются кнопки на морду нексуса изготовленные 3d печатью. Они закроют родной датчик освещенности, а с ним очень удобно.

они еще камеру фронтальную закроют. может дырку там просверлить или прозрачный световод вставить можно?

olllegan 11.04.2016 00:04

Цитата:

Сообщение от olllegan (Сообщение 357827)
Подскажите как добавить сочетания кнопок. Использую Arduino Leonardo. Взял скетч из поста #307. Все прекрасно работает.
Пытаюсь добавить ещё одно сочетание (нужно CTR+Z и CTRL+B) на основе сочетания Alt+Tab не получается.

Ещё раз прошу помощи в правке скетча.
Вот скетч
PHP код:

//****************** Здесь необходимо указать свои значения ***************  

int analogPin=0// пин для подключения кнопок, по умолчанию A0  

int release_button 0// значение при отпущенных кнопках  
int button_release_range 50// диапазон значения + - при отпущенных кнопках  
int button_range 20// диапазон значения нажатых кнопок + -  
int time_holding 300// время для удержания кнопок в миллисекундах  
int time_tinkling 30// время исключающее дребезг контактов в миллисекундах 
int ctrl_z 740// значение кнопки которая будет работать как CTRL + Z 
int alt_tab 854// значение кнопки которая будет работать как Alt + Tab  
int next 409// значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании  
int previous 667// значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании  
int play_pause 555// значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании  

//**************************************************************************  

int data;   
unsigned long flag 0;   
unsigned long eventTime 0;   
unsigned long pauseMillis 0;  

void setup()   
{  
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)  
Keyboard.begin();   
}   

void loop()   
{   
data=analogRead(analogPin);   
if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 0)   
{   
eventTime=millis();   
}   

//********************** Ctrl+Z ************************************    
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= ctrl_z button_range && data <= ctrl_z button_range)   
{    
flag 1;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis == 0)   
{   
Keyboard.press(KEY_LEFT_CTRL);   
Keyboard.press('z');   
Keyboard.release('z');   
Keyboard.press('z');   
Keyboard.release('z');   
flag 0;   
pauseMillis millis();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis != 0)   
{   
Keyboard.press('z');   
Keyboard.release('z');   
flag 0;   
pauseMillis millis();   
}   

if(
pauseMillis && millis()-pauseMillis >= 800 && data>=release_button button_release_range && data<=release_button button_release_range)   
{   
flag 0;   
pauseMillis 0;   
Keyboard.releaseAll();   
}   

if(
millis()-eventTime>time_holding && data >= ctrl_z button_range && data <= ctrl_z button_range && flag == 1)   
{    
flag 0;   
}   

  
//********************** AltTab + Ещё что то ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= alt_tab button_range && data <= alt_tab button_range)   
{    
flag 1;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis == 0)   
{   
Keyboard.press(KEY_LEFT_ALT);   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
flag 0;   
pauseMillis millis();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis != 0)   
{   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
flag 0;   
pauseMillis millis();   
}   

if(
pauseMillis && millis()-pauseMillis >= 800 && data>=release_button button_release_range && data<=release_button button_release_range)   
{   
flag 0;   
pauseMillis 0;   
Keyboard.releaseAll();   
}   

if(
millis()-eventTime>time_holding && data >= alt_tab button_range && data <= alt_tab button_range && flag == 1)   
{    
flag 0;   
}   
//********************** Next и Fast Forward ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= next button_range && data <= next button_range)   
{    
flag 2;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 2)   
{   
Remote.next();   
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= next button_range && data <= next button_range && flag == || data >= next button_range && data <= next button_range && flag == 3)   
{    
Remote.forward();   
flag 3;   
Remote.clear();   
delay(100);   
}   
//********************** Previous и Rewind ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= previous button_range && data <= previous button_range)   
{    
flag 4;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 4)   
{   
Remote.previous();   
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= previous button_range && data <= previous button_range && flag == || data >= previous button_range && data <= previous button_range && flag == 3)   
{    
Remote.rewind();  
flag 3;   
Remote.clear();   
delay(100);   
}   

//********************** Play/pause + Mute ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= play_pause button_range && data <= play_pause button_range)   
{    
flag 7;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 7)   
{   
Remote.play_pause();    
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= play_pause button_range && data <= play_pause button_range && flag == 7)   
{    
Remote.mute();  
flag 0;  
delay(10);  
Remote.clear();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == || data>=release_button button_release_range && data<=release_button button_release_range && flag == || data>=release_button button_release_range && data<=release_button button_release_range && flag == 6)   
{   
flag 0;   
}    


Без раздела ******Ctrl+Z****** всё работает. Как только добавляю раздел ******Ctrl+Z****** кнопка Alt+Tab и кнопка на которой находится Ctrl+Z выдают одну и туже команду которая соответствует команде Ctrl+Z. В чём подвох?

Tommy_Gun 11.04.2016 06:17

Цитата:

Сообщение от oleg707 (Сообщение 357833)
они еще камеру фронтальную закроют. может дырку там просверлить или прозрачный световод вставить можно?

Идея рулить с дуины яркостью планшета давно назрела, только я вот с Андроидом не особо дружу в плане его расковыривания. (Прошить, рутануть и т.д по инструкции запросто, а на уровне программирования - 0. (Хотя под винду пишу мелкие програмулины). У меня подсветка приборной панели регулируется вручную позиционным резистором. Вот все в одну кучу собрать хотелось бы- и планшет и приборка.
А камера за два года эксплуатации так и не пригодилась. Была мысль каждый раз при просыпании планшета делать фото и отправлять на сервер (на случай угона). Но планшет расположен так, что водитель не попадает в кадр).... Через скайп тоже не общаюсь с машины... Больше идей для камеры у меня нет. (так что камеру не жалко)

Alekssandr 11.04.2016 12:04

Цитата:

Сообщение от Tommy_Gun (Сообщение 357994)
Идея рулить с дуины яркостью планшета давно назрела, только я вот с Андроидом не особо дружу в плане его расковыривания.

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

Но в принципе могу сделать простенькое приложение которое работало бы в фоне и принимала значения от 0 до 255 для регулировки яркости дисплея с ардуино.

вот здесь я управлял светодиодом с системной яркости андроид.


Tommy_Gun 11.04.2016 13:21

Цитата:

Сообщение от Alekssandr (Сообщение 358012)
без приложения это никак не сделать, я уже записывал видео как это можно сделать. Но пока руки не доходят чтоб всё до ума довести.

Но в принципе могу сделать простенькое приложение которое работало бы в фоне и принимала значения от 0 до 255 для регулировки яркости дисплея с ардуино.

Приложение бы пригодилось.

Потихоньку ковыряю app inventor. До коммуникации со сторонним железом пока далеко. В далеких планах - управлять питанием усилителей, подогревом сидений, климатом, контролировать напряжение АКБ авто (отключение усилителей при падении ниже установленного). Ну и чего еще душа пожелает...

oleg707 11.04.2016 13:30

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


Часовой пояс GMT +4, время: 13:14.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot