Специально для ceedclub.ru
© 2013 drPopov
Design by Popov Andrey
OBDII на верхнем дисплее
KIA CEED FL


Всем привет.
 
  Сразу после покупки машины, я поменял штатную магнитолу на магнитолу с навигацией и другими функциями. В KIA CEED FL есть небольшой дисплей над магнитолой, на который выводиться информация от магнитолы: что играет, какая станция, время и т.п. Так вот, когда штатная магнитола перехала жить в шкаф, этот дисплей показывал только дату и время.
  Наступали зимние праздники и было принято решение провести их за одним из "хобей".

  Мне всегда было интересно, как информация из магнитолы попадает на дисплей и возможно ли вывести на этот дисплей произвольную информацию?

  Из шкафа была выдворена штатная магнитола, она увидела свет после своего заключения в 3 года и не издав ни звука, съела диск, зажужжала, заскрипела и из маленького динамика послышалась мелодия. Ага! работа началась.

   Если магнитола работает, то надо из машины достать дисплей и сделать обоим девайсам интим с помощью проводов. Сказано-сделано. Раздобыв схемы подключения, на дисплее появились названия песен, длительность и т.д. Все работает в штатном режиме.

  Слева на изображении схема по которой делал интим магнитоле и дисплею.

  Только после того, как я соединил проводами два девайся, пришло осознание, что вся инфа передается по двум проводам: CAN-HIGH и CAN-LOW (первый и второй контакты).

  А если так, то эта инфа зашифрована и расшифровать ее дело не простое.

  В закромах родины (шкаф), нашелся старый OBD адаптер. Подключил, терминальной прогой стал получать пакеты данных по CAN интерфейсу и ужаснулся, как много там всего передается.

  Не буду вдаваться в подробности, как я сидел ночами и проверял каждый пакет на наличие в нем нужной инфы, как поняв алгоритм передачи, смог получить первую надпись на дисплее длительностью всего 1-2 сек. Но начало было положено и я ...пошел спать...
  Оставалось дело за малым. Необходимо было понять на какие функциональные зоны поделен дисплей производителем.

зоны дисплея распледены так-

1- служебная зона для отображения значков. На одном месте (выводится что-то одно) - FM, FM1, FM2, FMA, MW, AM, AMA, CD, AUX, FM1 TA, FM2 TA, FMA TA. Правее на одном месте (выводится что-то одно) - SCAN, AF, PTY, SCAN папка. Совсем справа - filexxyy, где x и y числа и могут быть установлены только с надписью file
Для нас эта зона малоинтересна.
2- зона короткой малой строки длинной в 11 символов. Тут должна будет выводиться скорость и название экрана (всего 5).
3- зона 5 символов - подойдет для вольтажа.
4- зона большой строки. 12 символов. Возможно равнение по левому, правому краю или по центру.
Будет выводиться информация: температура антифриза, масла, обороты. Чередование.
5- Альтернативная индикация круиз-контроля - CD-круиз контроль включен, BT - Set нажат-скорость зафиксирована.

 

Ну, как вы поняли, задумка хорошая. Начнем реализовывать.

Для реализации мне надо было разобраться на какой базе это все делать. Выбор пал на микросхемы MCP2515 и MCP2551. Это микросхемы CAN интерфейса, которые передают и получают информацию по шине SPI. Такая шина есть в микроконтроллере фирмы Atmel - Atmega.

Нашел в инете схему как подключить между собой эти микросхемы и какие выводы отвечают за обмен информацией с микроконтроллером.

С Atmega я знаком уже давно и изучать что-то другое было некогда - празники проносились мимо меня.

На поиск микросхем ушло 20 минут - в нашем городе есть магазины электронных компонентов, где цена за штуку, как за 10 в Китае.

С микроконтроллером вообще весело - одна микросхема ATMEGA328P-AU стоит 290 рублей.

Для справки, в Китае готовая Arduino mini pro с такой микросхемой, на плате, с обвязкой, с преобразователем питания, с кнопочкой сброса стоит, внимание, 120 рублей.

В сборе у нас Mini стоит 800 рублей.

Габаритные размеры печатной платы Pro Mini составляют 1,8х3,3 см.

Где то в этих размерах было желание сделать плату с микросхемами MCP.

Сел за разводку и сделал односторонюю плату всего с тремя перемычками. Это заняло два дня, т.к. вариантов было перепробавано штук 5.

Родилась такая схема
И такая плата:
Далее пошел процесс изготовления платы, описывать не буду, в инете есть даже видео.

После травления и пайки получил плату, на которую надевается Arduino и запаивается.

Для наглядности размера положил SD карту.

Несколько кликабельных картинок.

После примерки плат, срезу не запаиваем. Надо прошивку залить в микроконтроллер, а то потом будет сложно.

Прошивку во все Arduino заливают через 4 провода: Tx, Rx, GND и +5v. Когда начнется процесс прошивки на компе, на плате надо нажать кнопку РЕСЕТ, это будет сигналом плате на начало процесса и получение данных с компа. Для прошивки можно использовать кабель на основе cp2102 или FTDI. Прошивку выложу в конце со всеми материалами.

Далее надо не забыть про вывод кнопки управления, хотя без нее тоже будет работать, только нельзя будет менять режимы о которых далее... и для тех у кого штатная магнитола, вывод на транзистор управления реле, комутирующее отккуда будет поступать информация на дисплей: от магнитолы или от моего устройства.

Я себе это не делал, т.к. у меня магнитола не штатная и устройство подключил сразу к шине CAN.

Из схемы видно, когда устройство выключено, то верхний дисплей в нормально замкнутом состоянии с магнитолой, но как только включается устройство, на контакте D5 Arduino появляется +5 вольт и реле срабатывает. Замыкается цепь "дисплей - устройство".

В схеме один резистор, NPN транзистор и реле. Все можно выполнить навесным монтажем. ВАЖНО!!! реле должно быть 12-ти вольтовым. После обсуждения на форумах, было предложено вместо реле использовать электронные ключи, т.к. реле не айс. Над этим надо будет еще подумать.
     
Функции устройства и как реализовано.

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

На верхнем дисплее отображается информация в какой зоне, какие параметры будут выводиться. После этого устройство переходит в режим "карусели" и все параметры меняются друг за другом. Это первый режим работы - карусель.

При кратковременном нажатии на кнопку (подключается на выход Arduino D3 и вторым проводом на землю), осуществляется переход в режим два - отображение оборотов.

Далее режим три - отображение температуры антифриза.

Далее режим четыре - температура масла в двигателе.

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

А далее при повторном нажатии опять первый режим "карусель".

При длительном, более 2 секунд, нажатии на кнопку, устройство выключается полностью и не шлет никакую информацию в шину CAN. Если еще раз долго подержать кнопук, то просыпается. При повторном заводе - просыпается и работает "карусель".

Индикация круиз контроля на приборной панели работает независимо от режима работы устройства и даже в его выключенном состоянии. Альтернативная индикация работает только в режимах 1, 2, 3, 4. При выключенном устройстве - не работает.

     
Небольшое видео с обзором функций.
Все материалы тут.
!!! Заказать такой блок можно ТУТ !!!
Если изложенная информация была полезна для Вас, можете поддержать мои проекты и сказать мне спасибо на кошелек WebMoney: 179002269090
Копируйте информацию со ссылкой на этот сайт. СПАСИБО.
Яндекс.Метрика