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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка устройств

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 02:42   #1
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию Чтение клавы магнитолы --> эмуляция USB клавы/мыши

Приветствую.

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

Опрос клавиш у магнитолы как положено динамический. В Андроиде мудрить особо ничего не хочется и хочется сделать девайс универсальным. Поэтому идея такая: берем микроконтроллер, на нем пишем прогу, которая будет считывать динамический опрос клавы магнитолы (это несложно, нужно взять матрицу по X, смотреть когда проц магнитолы выставляет там нужные уровни, и читать матрицу по Y, выявляя, соответственно, нажатые клавиши) -- это решение тоже будет универсальным для всех магнитол. Опционально можно считывать код нажатой клавиши с проца магнитолы (т.к. именно в моей магнитоле есть выход data link на внешний блок навигации, предполагаю, что коды нажатых кнопок туда передаются по одному проводу).

Далее, микроконтроллер должен иметь USB slave порт с программируемым ID, чтобы его можно было закосить под стандартную USB keyboard или USB mouse. Коды кнопок, считанных с магнитолы передаем туда, используя таблицу соответствия (должна настраиваться в прошивке).

Девайс можно будет использовать практически с любой магнитолой и с любым carPC, независимо на какой ОС он работает, лишь бы был USB.

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

Есть конечно микроконтроллеры со встроенным USB->COM (та же Ардуина), но это немножко не то... Да и софт придется писать для Андроида, а хотелось бы просто эмулировать клаву USB.

Либо например есть такой чип:

http://www.datasheetcatalog.org/data...3/135595_1.pdf

Он уже сам по себе есть USB клава. Может быть с микроконтроллера на него сигналы посылать? В принципе, он должен быть в любой USB клаве, можно просто оттуда выпаять...

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

Но вообще, хочется конечно простого решения, чтобы быстро и легко.
AngelOfGrief вне форума   Ответить с цитированием
Старый 09.03.2012, 02:56   #2
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

А вот я уже что-то сам нашел...

PIC18F2550

Вот здесь человек написал программу для эмуляции USB клавы:

http://www.picbasic.co.uk/forum/showthread.php?t=8291

Я правда ни разу не писал под PIC... Но там на бейсике.
AngelOfGrief вне форума   Ответить с цитированием
Старый 09.03.2012, 06:11   #3
St@rz
Модератор
 
Аватар для St@rz
 
Регистрация: 27.05.2008
Возраст: 50
Город: Пермь
Регион: 59
Машина: INDESIT/2007
Сообщений: 1,330
St@rz is a splendid one to beholdSt@rz is a splendid one to beholdSt@rz is a splendid one to beholdSt@rz is a splendid one to beholdSt@rz is a splendid one to beholdSt@rz is a splendid one to beholdSt@rz is a splendid one to behold
По умолчанию

Может это поможет еще.
St@rz вне форума   Ответить с цитированием
Старый 09.03.2012, 12:11   #4
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

Да, это пожалуй и есть то что нужно, спасибо.

В вольтмастере 330р стоит этот м/к:

http://www.voltmaster.ru/cgi-bin/qwe...2453&group=170

А чип-дипе -- 1000р!!!! Все, завязываем с чип-дипом.
AngelOfGrief вне форума   Ответить с цитированием
Старый 10.03.2012, 00:31   #5
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

Купил, собрал, прошил микроконтроллер (правда без бутлоадера как у Стансона, потому что его бутлоадер написан под *никс, а у меня его под рукой нету). Можно напрямую шить, работает. Софт взял WinPic800, программатор на LPT порту, вот этот:

http://products.foxdelta.com/art2003.htm

Только почему то не снимается LVP бит, да Бог с ним, замкнул ногу 26 на землю.
У Стансона задумано, что после прошивки бутлоадера режим LVP отключается навсегда.

Можно было использовать виндузовый бутлоадер, но искать было лень.

В результате... Все запустил, светодиодик мигает, команды выдаются на USB интерфейс виртуальной клавы... Проблема в том, что в моей магнитоле клава оказалась не резистивная, в ней используется просто матрица с опросом, причем их три штуки. Щас буду смотреть, на разъеме есть data link для блока нави, возможно, туда отсылаются коды нажатых кнопок, будем раскодировать и переписывать стансоновскую прогу.

В любом случае, старт оч. неплохой, спасибо! PIC крутой реально: может эмулировать сразу несколько девайсов на USB шине!
AngelOfGrief вне форума   Ответить с цитированием
Старый 10.03.2012, 16:06   #6
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

В общем, в магнитоле отдельный небольшой проц отвечает за обработку всей клавы. Нашел выход где он выдает код, сейчас пока смотрю его через комп в режиме RS-232, пытаюсь подобрать скорость и параметры. Если получится, можно будет сразу задействовать готовые либы PIC для RS232 и все должно получиться несложно.
AngelOfGrief вне форума   Ответить с цитированием
Старый 10.03.2012, 23:13   #7
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

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

Проблема со стансоновским софтом, что у него все написано под *никс и у меня не получается собрать его прошивку под виндой.

Сейчас пытаюсь настроить MPLAB IDE и загрузить в него микрочиповские примеры для эмуляции HID клавы...

p.s. Последняя версия бутлоадера не в архиве, а отдельно - MCHPUSB_2550.hex. В архиве тоже полурабочий: не умеет прошивать config микроконтроллера.

При пользовании бутлоадером программы должны начинаться с адреса 0x800, т.к. с нулевого адреса идет собственно бутлоадер.

Бутлоадер нужен для упрощения загрузки программ микроконтроллер, чтобы не дергать его каждый раз на перепрошивку. Но сам бутлоадер надо хотя бы раз прошить программатором. Один раз можно для этого к другу сходить у кого он есть. Либо использовать софт WinPic800 и программатор ART2003, который работает на LPT порту под Windows - в нем практически нет деталей, один резистор и один кондер.
Вложения
Тип файла: rar bootloader_pic18f2550.rar (736.5 Кб, 575 просмотров)

Последний раз редактировалось AngelOfGrief; 12.03.2012 в 11:52.
AngelOfGrief вне форума   Ответить с цитированием
Старый 11.03.2012, 20:50   #8
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

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

Найденная мною программа успешно скомпилировалась в MPLAB под виндой (она была под другой проц, пришлось править до фига...), на данном этапе мой девайс умеет печатать символы через USB как клавиатура. Подрубил уже с другой стороны к магнитоле, пытаюсь теперь для PIC написать функцию, которая будет читать и расшифровывать коды мафоновских кнопок. Когда заработает, останется составить таблицу соответствия... И ВСЕ!

Кстати, выяснил, что в андроиде (по крайней мере на тукане) на клаве есть эквиваленты всех служебных кнопок: НАЗАД, ДОМОЙ, НАСТРОЙКА, ПЛЕЕР, ПОЧТА. Они назначены на функ. клавиши. Так что у меня на магнитоле будут эти кнопки, УРА! Вверх/вниз назначу на энкодер, а ENTER -- на нажимаемую крутилку энкодера.

Последний раз редактировалось AngelOfGrief; 12.03.2012 в 11:52.
AngelOfGrief вне форума   Ответить с цитированием
Старый 12.03.2012, 02:33   #9
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

Ну что... Сделал я, заработало! Боялся очень, что на андроиде не будет пахать (проверял же на ПК), но USB есть USB! Некоторые клавиши работают неправильно, видимо наши друзья из тукана на своем пульте функц. клавиши некоторые поменяли местами. Подключу щас к андроиду обычную клаву и проверю.

У меня только не совсем получилось написать процедуру декодирования кодовых посылок магнитофона, в общем в 10% случаев нажатия кнопок пропускаются. Кварц на 4мгц маловат, надо другой, а эти деятели (создатели магнитолы) почему-то изволили передавать данные из проца клавиатуры на скорости около 260 кбит. Зачем это было нужно, конечно вопрос.

Но вцелом выглядит круто! Можно теперь пользоваться магнитолой без пульта. Работают кнопки домой, Enter, отмена, настройка, стрелки курсора, вызов области уведомлений (F3).

Не придумал как прикрутить кнопки к запуску навигации и плеера. По клавише F6 родной клавы вызывается встроенный плеер. Это не та F6 что в обычной клаве (коды отличаются почему-то).

Мож выложу видео попозже. Ну и исходники разумеется.

Последний раз редактировалось AngelOfGrief; 12.03.2012 в 11:54.
AngelOfGrief вне форума   Ответить с цитированием
Старый 12.03.2012, 02:57   #10
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию

Так и есть: поключил к тукану обычную usb клаву, у нее функ. клавиши частично не совпадают с его родной беспроводной клавой. Кто-нибудь знает где можно взять USB скан-коды, которые использует Android или где они у него хранятся? Нужны именно USB скан-коды, не коды символов и не обычные скан-коды клавиатуры. Вот кусочек моей программы:

if (n=='H') return 0x3B; // F2 home
if (n=='A') return 0x3f; // F6 audio/player
if (n=='N') return 0x3e; // (F5) navi
if (n=='L') return 0x50; // left
if (n=='R') return 0x4f; // right
if (n=='U') return 0x52; // up
if (n=='D') return 0x51; // down
if (n=='E') return 0x28; // enter
if (n=='B') return 0x29; // ESC back
if (n=='S') return 0x3a; // F1 settings
if (n=='F') return 0x3d; // F4 find/search
if (n=='O') return 0x3c; // F3 notification area

То, что возвращает функция, USB скан-коды. Не работает F6, F4 и F5.
AngelOfGrief вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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