11.10.2013, 13:53 | #1 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Многофункциональная USB клавиатура
Выложу и я свой вариант USB клавиатуры с расширенной функциональностью )
Дело было вечером. Заняться было чем, но в результате установки круиз-контроля в мою машину оказалось, что у меня есть два свободных провода из недр руля наружу через специализированную контактную группу в виде спирали. А у меня в руле уже давно сидят два ИК пульта управления компьютером и магнитолой. Плюс еще проводной пульт управления Круиз-Контролем. Так получается, что в силу ИК принципа передачи сигнала на фотоприемники компа и магнитолы - при незначительном повороте руля (больше 20градусов) - сигнал перестает достигать цели. А тут еще Костя740 поделился информацией о либе V-USB. В общем - было принято решение начать работы по передаче команд с руля по проводам. В качестве системы кодирования были выбраны резистивные кнопки. Т.е. нажатая кнопка определяется по сопротивлению между двумя проводами. Подключать к компьютеру было решено по USB, эмулируя стандартную и мультимедийную клавиатуры. Но тут полет мысли опередил разум, и понеслось.... Захотелось управлять не только компьютером, но и прочими устройствами - магнитолой (спец протокол), бортовичком (аналог), круизом (аналог), прочими девайсами. Девайс умеет следующее: 1. Принимает команды с резистивного пульта (до 15 кнопок). Измеряет напряжение и считает сопротивление цепи. На любую из кнопок можно повесить любую комбинацию из следующих функций: 2. Определяется компьютером как USB клавиатура. Может посылать в комп любые нажатия на кнопки. При этом можно задействовать alt, ctrl, shift левые и правые в любых комбинациях. На данный момент можно посылать только одну стандартную кнопку в один момент(+ alt/shift/ctrl). Или одну мультимедийную кнопку. 3. Позволяет управлять до 8ми внешними линиями. При этом можно задавать режим работы выхода - либо просто при нажатии кнопки подать +5В или 0В на выход, либо триггерный выход (нажал один раз - появилось напряжение, нажал второй - пропало). 4. Управлять двумя аналоговыми устройствами - магнитола, бортовик, круиз контроль. Т.е. всем, что управляется такими же аналоговыми кнопками. 5. Управлять одним устройством (магнитолой), работающим по проводам и использующим стандартным протоколом проводного ДУ от Clarion/Alpine. 6. Использовать два банка кнопок для эмуляции управления разными устройствами при помощи одних и тех же кнопок. Кнопку переключения между банками можно задавать программно. 7. Все вышеперечисленные функции можно конфигурировать на лету при помощи програмки-конфигуратора для PC через тот же USB интерфейс. 8. Девайс может работать и без компьютера, если надо управлять, скажем, магнитолой. 9. Так же конфигуратор позволяет показывать на лету сопротивление, напряжение, и код нажатой кнопки, что удобно для конфигурирования. 10. Питание устройства - от USB или от борт сети автомобиля. Фото макета: Скрины конфигуратора:
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 Последний раз редактировалось Alex_St; 18.11.2015 в 12:49. Причина: добавил конфигуратор |
11.10.2013, 13:56 | #2 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
11.10.2013, 13:58 | #3 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Первый экземпляр благополучно нашел себе применение в моей машине. Как ни странно - все работает, и не глючит... Странно...
Единственное - пока не реализовывал автоповтор (правда, и не уверен, что буду реализовывать - пока он не пригодился). На данный момент девайс управляет двумя устройствами: 1. Комп (ЮСБ - клава) 2. Круиз-контроль (через аналоговый выход). Теперь в планах подключить его еще к бортовичку.
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
11.10.2013, 14:02 | #4 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Вот все необходимое для повторения девайса.
Архив содержит: 1. Прошивка девайса в виде hex файла 2. Схема и плата в формате PCad2006 3. Приложение для конфигурирования 4. Моя текущая конфигурация как пример использования Назначение элементов интерфейса программы: 1. Кнопки прочитать/сохранить/сравнить в описании не нуждаются ) 2. Слева снизу три радиокнопки - ADC, Voltage, Resistance. Они переключают варианты отображения данных в таблице. Рядом с ними три текущих значения, которые раппортует нам устройство. 3. Кнопка "Установить значение" записывает текущее значение из одного из значений слева от нее в активную строку. Записывает только в случае если вся строка выделена. Таким образом можно быстро записать сопротивления всех подключенных кнопок в таблицу. 4. Таблица содержит значения сопротивлений кнопок, и реакцию на нажатие каждой кнопки. Одна строка - одна аналоговая кнопка. Все варианты реакций независимы и могут работать параллельно. Исключение - параллельно не могут работать клавиши стандартной и мультимедийной клавиатур. Поля таблицы: - Bank - номер банка кнопок. Есть возможность записывать до трех банков кнопок в устройство. Всего не более 22х кнопок. Переключение между банками - при помощи кнопки, которая назначена как Standard: Switch. Переключение происходит по кольцу. - ADC_Val/Voltage/Resistance - один из вариантов отображения значения сопротивления кнопки. - ADC_Diff/Volt Diff/Res_Diff - размер корридора значений. Кнопка считается нажатой, если значение укладывается в диапазон (Resistence - Res_Diff)...(Resistence + Res_Diff). - Left Ctrl/Left Shift/Left Alt/Left Win/Right Ctrl/Right Shift/Right Alt/Right Win - Данные события будут посланы в комп при нажатии на кнопку. - Key - Клавиша стандартной клавиатуры, которая будет нажата при нажатии соответствующую аналоговую кнопку. - mmKey - клавиша мультимедийной клавиатуры, которая будет нажата при нажатии на соответствующую аналоговую кнопку. - MM Key Repeat - пока не реализовано. В будущем возможно будет автоповтор для мультимедийных клавиш. - Dac Out1/Dac Volt1/Dac Res1 - управляют первым аналоговым выходом. Принцип такой: по-умолчанию на выходе максимальное напряжение. При нажатии на кнопку на выходе будет выставлено напряжение соответственно таблице. Пересчет в сопротивление идет из расчета, что на приемном конце сопротивление на плюс 4.7к. Рекомендую смотреть на напряжение, а не на сопротивление. Примечание: т.к. устройство питается от USB через диод шоттки - то максимальное напряжение на выходе будет меньше 5В (примерно 4.85В). Остальные напряжения уменьшатся так же пропорционально. Если не предусматривается питание от внешнего источника питания - рекомендую диод шоттки на входе закоротить. - Dac Out2/Dac Volt2/Dac Res2 - то же самое, только для второго аналогового канала. - rcAddr, rcCmd - задает команду для цифрового выхода управления магнитолами Clarion/Alpine. Подробное описание формата тут, системы команд - тут. - PortData/PortInit/PortTrig - управление 8ю бинарными цифровыми выходами. PortInit задает начальное значение на выходах. Так же он задает полярность реакции на PortData. Иными словами - PortData показывает - на какие каналы действует данная кнопка. PortTrig - задает триггерную реакцию на кнопку вместо обычной. Данный механизм временный, ищу лучшие решения. Пока сделано так: Код:
void controlPortKeyPressed( UInt8 portData, UInt8 portInit, UInt8 portTrig ) { UInt8 port = getPortState(); portInit &= portData; // mask only necessary pins portTrig &= portData; // mask only necessary pins releasedPortValue = port ^ portTrig; // this value will be applied when the key will be released UInt8 set = ( portData ^ portInit ) & ~portTrig; UInt8 reset = ~( portData & portInit ) | portTrig; port |= set; port &= reset; port ^= portTrig; setOutputsState( port ); }
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
11.10.2013, 14:05 | #5 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Совсем забыл добавить. Аналоговые выходы расчитаны на работу с устройствами, имеющими диапазон входных напряжений 0...5В. Для устройств с напряжениями на входе до 3.3В необходимо поставить на выходе диод шоттки катодом к выходу девайса, а анодом ко входу управляемого устройства. Таким образом напряжение 5В на выходе девайса никоим образом не сможет помешать управляемому устройству ).
Фузы: Для работы конфигуратора требуется .Net framework 4.0. Скачать его можно тут.
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
29.11.2013, 12:54 | #6 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
1. Т.к. протокол NEC для ИК пультов я реализовал по описанию в интернете, а не по реальному сигналу - в софт затесалась досадная ошибка - сигнал на выходе получился инвертированным. Как ни странно, но магнитолы Clarion и Alpine принимают свободно и прямой и инвертированный сигнал, поэтому с ними все работало хорошо. А вот с другими устройствами пришлось доработать прошивку. Результат в аттаче.
2. Т.к. у меня в системе появился новый монитор с контроллером на чипе RTD2660 - меня заинтересовало - а какой там протокол ИК пульта. Оказался - все тот же NEC 16бит адрес + 8 бит команда. Ес-сно, мне стало интересно снять его команды и проверить на моем девайсе. Все заработало успешно ) Результат: Код:
Адрес: 0x6B86 Клавиша код команды Video Select: 1B Menu: 05 Power: 12 Left: 04 Right: 06 Mode Select: 15
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
29.11.2013, 12:57 | #7 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Так же пробовали подключить девайс к головному устройству Alpine INE-W977BT.
Как ни странно - заработала с полутыка. Коды отсюда подошли, и альп с удовольствием скушал наши команды. Девайс управлялся от пульта Sony X4S без каких либо доработок. Так же такая девайсина уже полгода работает в моей машине, передавая команды от двух штатных нарульных пультов в компьютер (эмуляция мультимедийной HID клавиатуры), и круиз-контролем (управление резистивными кнопками). Нареканий пока не замечено. Как я уже говорил, все конфигурируется при помощи компьютера через интерфейс USB.
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
29.11.2013, 15:22 | #8 |
Старший Пользователь
Регистрация: 26.03.2011
Город: СПб
Регион: 78, 98
Машина: Nissan X-Trail (T31)
Сообщений: 591
|
Не совсем понял, за что прошу извинения.
Можно ли данный дивайс использовать для управления магнитолой и carPC используя только рулевые кнопки?
__________________
CarPC: мать Zotac, проц Core i3, память 4 Гб, Win 8.1x86 |
29.11.2013, 18:49 | #9 |
Старший Пользователь
Регистрация: 09.04.2008
Возраст: 44
Город: Одесса
Регион: Украина
Машина: Chevrolet Aveo-II LS 2008
Сообщений: 896
|
Признаться, и я не совсем понял вопрос...
Управлять магнитолой и компом одновременно - да, можно. Можно ли обойтись без тач-скрина - зависит от цели. Если все что надо можно сделать ограниченным числом кнопок клавиатуры - то возможно.
__________________
Мой журнал: http://www.pccar.ru/showthread.php?p=79335 |
02.12.2013, 19:28 | #10 |
Пользователь
Регистрация: 12.01.2011
Возраст: 37
Регион: 77, 97, 99, 177
Сообщений: 71
|
Отличная идея, отличная подборка ссылок!
Разве что не пытались ли вы найти описания проводных протоколов для ГУ? Меня вот сильно интересует Clarion.. Или же вы сразу решили работать с ИК? Последний раз редактировалось doneAlexandro; 02.12.2013 в 19:29. Причина: Добавил |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|