![]() |
Многофункциональная USB клавиатура
Вложений: 1
Выложу и я свой вариант 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://photo.qip.ru/photo/alexstanko.../210360165.jpg http://photo.qip.ru/photo/alexstanko.../210360167.jpg Скрины конфигуратора: http://photo.qip.ru/photo/alexstanko.../210949481.gif http://photo.qip.ru/photo/alexstanko.../210949482.gif |
Фотки готового устройства:
http://photo.qip.ru/photo/alexstanko.../211063235.jpg http://photo.qip.ru/photo/alexstanko.../211063307.jpg |
Первый экземпляр благополучно нашел себе применение в моей машине. Как ни странно - все работает, и не глючит... Странно...
Единственное - пока не реализовывал автоповтор (правда, и не уверен, что буду реализовывать - пока он не пригодился). На данный момент девайс управляет двумя устройствами: 1. Комп (ЮСБ - клава) 2. Круиз-контроль (через аналоговый выход). Теперь в планах подключить его еще к бортовичку. |
Вложений: 2
Вот все необходимое для повторения девайса.
Архив содержит: 1. Прошивка девайса в виде hex файла 2. Схема и плата в формате PCad2006 3. Приложение для конфигурирования 4. Моя текущая конфигурация как пример использования Вложение 33142 Назначение элементов интерфейса программы: 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 ) |
Вложений: 1
Совсем забыл добавить. Аналоговые выходы расчитаны на работу с устройствами, имеющими диапазон входных напряжений 0...5В. Для устройств с напряжениями на входе до 3.3В необходимо поставить на выходе диод шоттки катодом к выходу девайса, а анодом ко входу управляемого устройства. Таким образом напряжение 5В на выходе девайса никоим образом не сможет помешать управляемому устройству ).
Фузы: Вложение 33144 Для работы конфигуратора требуется .Net framework 4.0. Скачать его можно тут. |
Вложений: 1
1. Т.к. протокол NEC для ИК пультов я реализовал по описанию в интернете, а не по реальному сигналу - в софт затесалась досадная ошибка - сигнал на выходе получился инвертированным. Как ни странно, но магнитолы Clarion и Alpine принимают свободно и прямой и инвертированный сигнал, поэтому с ними все работало хорошо. А вот с другими устройствами пришлось доработать прошивку. Результат в аттаче.
2. Т.к. у меня в системе появился новый монитор с контроллером на чипе RTD2660 - меня заинтересовало - а какой там протокол ИК пульта. Оказался - все тот же NEC 16бит адрес + 8 бит команда. Ес-сно, мне стало интересно снять его команды и проверить на моем девайсе. Все заработало успешно ) Результат: Код:
Адрес: 0x6B86 |
Так же пробовали подключить девайс к головному устройству Alpine INE-W977BT.
Как ни странно - заработала с полутыка. Коды отсюда подошли, и альп с удовольствием скушал наши команды. Девайс управлялся от пульта Sony X4S без каких либо доработок. Так же такая девайсина уже полгода работает в моей машине, передавая команды от двух штатных нарульных пультов в компьютер (эмуляция мультимедийной HID клавиатуры), и круиз-контролем (управление резистивными кнопками). Нареканий пока не замечено. Как я уже говорил, все конфигурируется при помощи компьютера через интерфейс USB. |
Не совсем понял, за что прошу извинения.
Можно ли данный дивайс использовать для управления магнитолой и carPC используя только рулевые кнопки? |
Признаться, и я не совсем понял вопрос...
Управлять магнитолой и компом одновременно - да, можно. Можно ли обойтись без тач-скрина - зависит от цели. Если все что надо можно сделать ограниченным числом кнопок клавиатуры - то возможно. |
Отличная идея, отличная подборка ссылок!
Разве что не пытались ли вы найти описания проводных протоколов для ГУ? Меня вот сильно интересует Clarion.. Или же вы сразу решили работать с ИК? |
Часовой пояс GMT +4, время: 17:10. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot