21.04.2016, 00:31 | #1 |
Старший Пользователь
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
|
Адаптер рулевых кнопок. Безжалостный и беспощадный.
Выкладываю свою версию адаптера рулевых кнопок.
На данный момент устройство работает - спасибо Дмитрию (Demon083)! Я не претендую на гениальность. Развивать данный адаптер дальше не буду, так как это временная мера. Адаптер изготавливался под определенный руль и определенную магнитолу, но это не исключает возможность переделки и использования для других комплектов руль-магнитола. Итак, поехали! После установки руля с медиа-кнопками возник естественный вопрос: «А как его «подружить» с магнитолой?» Конечно, существует великое множество всевозможных адаптеров на любой вкус и кошелёк, но это не для нас. Поскольку моя магнитола (Kwnwood KDC-6051U) понимает только протокол NEC, была использована имеющаяся Arduino Nano, немножко резисторов, стабилизатор 7812, пара кондеров и кусок монтажной платы. Всё это хозяйство было собрано на монтажке. Для снятия кодов был использован самый обычный ИК-фотодиод, купленный с известного всем сайта, и родной пульт от магнитолы. В скетче использовал специально заточенную под это дело библиотеку IRremote.h. На сколько я понял описание этой библиотеки, выход только D3. Его можно даже не прописывать, всё и так работает. Достоинства: Дёшево, быстро. Недостатки: Подходит только для магнитол с импульсным управлением. Настроить можно только на месте и только с ноутбуком, Нужна модифицированная библиотека: IRremote.zip. Рабочий скетч: PHP код:
PHP код:
PHP код:
Нужна была программа, которая умеет конвертировать между собой, шестнадцатеричные, десятичные и двоичные числа и первая, которая пришла мне на ум была калькулятор из винды в расширенном виде и обратил внимание на двоичный код и пришло прозрение! Возьмем наш код из ардуины 9D6228D7, где 9D62-является адресов, а 28D7-командой. Теперь представим 9D62 в двоичном виде и получим 1101100101100010. А теперь самое интересное. Надо прочитать с конца данный двоичный код 0100011010011011 и преобразовать обратно в HEX. Получаем 469B. Это уже знакомые нам цифры, не так ли? Теперь команда. С ней немножко сложнее. Её надо разбить на 2 части 28 и D7. Получаем 28 00101000 D7 11010111 Как видим, одно значение инверсно другому. Читаем 28 наоборот и получаем 14. Теперь обратное преобразование Возьмем адрес:46B9 и команду:15 [Vol-] и переведем это на язык ардуины. 46B9 -> 0100 0110 1011 1001 ->1001 1101 0110 0010 -> 9D62 15-> 0001 0101 -> 1010 1000 -> A8 (читаем наоборот) 1010 1000 0101 0111 -> 57 (инвертируем) Складываем всё в кучу и получаем 9D62A857. Надеюсь кому-нибудь пригодится. Последний раз редактировалось admin; 02.07.2020 в 02:20. |
22.04.2016, 18:34 | #2 |
Старший Пользователь
Регистрация: 15.02.2013
Город: Москва
Регион: 77, 97, 99, 177
Машина: x-trail T30
Сообщений: 400
|
Я бы границы уставок увеличил по максимуму, до "упора" в соседние, работать надежнее будет, если резисторы/контакты/напряжения поплывут.
Вот так: if (val1>840&&val1<870)//Громкость + if (val1>871&&val1<999)//Громкость -
__________________
http://www.pccar.ru/showthread.php?t=18648 мой проект. Icar DS , Cityguide,bGEO, Семь дорог. I3 3220T, 4Gb, W10х32. SSD 128Gb |
25.04.2016, 14:23 | #3 |
Старший Пользователь
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
|
Народ, помогайте! Адаптер работает только на половину. Если на выход цепляю ИК-диод - работает. Подключаю к магнитоле - реакции 0.
|
25.04.2016, 15:21 | #4 | |
Новый Пользователь
Регистрация: 21.11.2012
Возраст: 40
Город: Уфа
Регион: 02
Машина: Renault Logan
Сообщений: 4
|
Цитата:
На ИК-диод подается модулированный сигнал частотой 38кГц (описание протокола NEC http://radiohlam.ru/teory/nec.htm ), с ИК приемника подается без несущей частоты. На вход магнитолы необходимо подавать сигнал без несущей частоты. Для этого правил библиотеку IRremote.cpp (в место включения и выключения ШИМ выдавал в порт логические 1, 0), в функции sendNEC в место enableIROut(38); записал pinMode(3, OUTPUT);, в функциях marc, space: в место TCCR2A… записал digitalWrite(3, HIGH) (для mark), digitalWrite(3, LOW) (для space). Вход у магнитолы может быть инверсный, тогда digitalWrite(3, LOW) (mark), digitalWrite(3, HIGH) (space). После такого вмешательства в библиотеку работа с ИК-диодом не возможна. Последний раз редактировалось admin; 15.10.2018 в 23:34. |
|
25.04.2016, 16:03 | #5 | |
Старший Пользователь
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
|
Цитата:
PHP код:
Последний раз редактировалось admin; 15.10.2018 в 23:34. |
|
26.04.2016, 11:14 | #6 | |
Новый Пользователь
Регистрация: 21.11.2012
Возраст: 40
Город: Уфа
Регион: 02
Машина: Renault Logan
Сообщений: 4
|
Цитата:
В функциях MARK и SPACE кроме включения и выключения ШИМ дополнительно формируются задержки, длительность которых задается при вызове функции (NET_BIT_MARK, NET_ONE_MARK, NEC_ZERO_SPACE), поэтому digitalWrite предлагаю вставлять в место строчек TCCR2A|=_BV(COM21); в функции marc, TCCR2A&=~(_BV(COM21)); в функции space. инициализацию порта (pinMode) оставить в sendNEC |
|
26.04.2016, 14:58 | #7 | |
Старший Пользователь
Регистрация: 15.02.2013
Город: Москва
Регион: 77, 97, 99, 177
Машина: x-trail T30
Сообщений: 400
|
В этом не может быть дело? Сигнал возможно нужно инвертировать.
Цитата:
__________________
http://www.pccar.ru/showthread.php?t=18648 мой проект. Icar DS , Cityguide,bGEO, Семь дорог. I3 3220T, 4Gb, W10х32. SSD 128Gb |
|
26.04.2016, 15:53 | #8 |
Старший Пользователь
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
|
Всё заработало, шапку обновил
|
12.02.2017, 17:38 | #9 |
Новый Пользователь
Регистрация: 12.02.2017
Возраст: 39
Город: Кемерово
Регион: 42
Машина: Волга
Сообщений: 3
|
|
13.02.2017, 00:27 | #10 |
Новый Пользователь
Регистрация: 13.02.2017
Возраст: 47
Город: Москва
Регион: 77, 97, 99, 177
Машина: Легнум
Сообщений: 1
|
Огромное, человеческое спасибо ) Заработало почти сразу ) единственное, выход на магнитофон сделал напрямую с ардуины. сначала пытался сделать как по схемам встречал до этого, через полевой транзистор, но так не работало, подключил напрямую и ура )
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|