Приборная панель на телефоне Разработка программы для отображения данных приборной панели

aivs

aivs

Участник
Сообщения
15
Реакции
14
Город
Москва
Авто
Skoda Octavia A5 1.8 TSI 2011
Всем привет, меня зовут Виталий, я инженер-программист и я делаю виртуальную панель приборов, которая подходит многим VAG'ам.

27165019_m.jpg


Мне давно было интересно узнать, как работает электроника в моей машине Skoda Octavia A5, могу ли я перенастроить ее работу и управлять с телефона. После изучения работы VCDS я понял, что через OBD2 разъем можно запросить все данные о машине, если знать какие команды отправлять.
Для того, чтобы узнать какие CAN команды отправляет VCDS я собрал сниффер из Arduino и модуля MCP2515 TJA1050 Niren и подключил его к кабелю.

27165085_m.jpg


Специальный скетч arduino-canhacker для Arduino отлавливает все CAN команды и передает их в программу CANHacker V2.

27165187_m.png


За несколько месяц исследования я собрал список CAN команд для запроса значения датчиков и подобрал формулы для расшифровки.
Код:
// Двери
714 03 22 22 0D 55 55 55 55
77E 05 62 22 0D 55 65 AA AA - все закрыты
77E 05 62 22 0D 00 65 AA AA - все открыты
77E 05 62 22 0D 54 65 AA AA - водительская открыта
77E 05 62 22 0D 51 65 AA AA - пассажирская открыта
77E 05 62 22 0D 50 65 AA AA - водительская и пассажирская открыта
77E 05 62 22 0D 45 65 AA AA - задняя левая открыта
77E 05 62 22 0D 15 65 AA AA - задняя правая открыта
77E 05 62 22 0D 44 65 AA AA - водительская и задняя левая открыта
77E 05 62 22 0D 40 65 AA AA - водительская, пассажирская, задняя левая открыты
77E 05 62 22 0D 54 65 AA AA - багажник закрыт
77E 05 62 22 0D 54 64 AA AA - багажник открыт


01010101 = 0x55 (все закрыты)
0 бит - водительская
2 бит - пассажирская
4 бит - задняя левая
6 бит - задняя правая

// Ручник
714 03 22 22 05 55 55 55 55
77E 05 62 22 05 21 AA AA AA - нажат
77E 05 62 22 05 20 AA AA AA - не нажат

// Наружная температура
714 03 22 22 0С 55 55 55 55
77E 04 62 22 0C 55 AA AA AA - -7.5°С
77E 04 62 22 0C 65 AA AA AA - 0.5 101°С
77E 04 62 22 0C 66 AA AA AA - 1 = 102°С
77E 04 62 22 0C 68 AA AA AA - 2 = 104°С

// Наружная температура отображаемая
714 03 22 10 14 55 55 55 55
77E 04 62 10 14 84 AA AA AA - 16°С

// Запас хода
714 03 22 22 94 55 55 55 55
77E 05 62 22 94 00 8E AA AA - 142км

// Запас хода в литрах
714 03 22 22 9A 55 55 55 55
77E 05 62 22 9A 00 85 AA AA - 16.625л = 133
77E 05 62 22 9A 00 66 AA AA - 12.750л = 102 // 102/8 = 12.75

// Уровень топлива с датчика
714 03 22 22 06 55 55 55 55
77E 04 62 22 06 2C AA AA AA - 44л
77E 04 62 22 06 16 AA AA AA - 22л

// Положение стрелки указателя уровня топлива
714 03 22 22 96 55 55 55 55
77E 05 62 22 96 01 9A AA AA - 41.0°
77E 05 62 22 96 01 13 AA AA - 27.5°

// Температура ОЖ
714 03 22 F4 05 55 55 55 55
0 = 63
77E 04 62 F4 05 63 AA AA AA - 27°С
77E 04 62 F4 05 85 AA AA AA - 52.5°С - 133 // 1.5 = 2; 52.5/1.5 = 35; 
77E 04 62 F4 05 87 AA AA AA - 54.0°С - 135
77E 04 62 F4 05 8F AA AA AA - 60.0°С - 143
77E 04 62 F4 05 91 AA AA AA - 61.5°С - 145
77E 04 62 F4 05 93 AA AA AA - 63.0°С - 147
77E 04 62 F4 05 95 AA AA AA - 64.5°С - 149
77E 04 62 F4 05 97 AA AA AA - 66.0°С - 151
77E 04 62 F4 05 BD AA AA AA - 94.5°С - 189 // (189 - 63)/2*1.5 = 94.5
77E 04 62 F4 05 BF AA AA AA - 96.0°С - 191
77E 04 62 F4 05 C1 AA AA AA - 97.5°С - 193
77E 04 62 F4 05 С5 AA AA AA - 100.5°С - 197
77E 04 62 F4 05 С7 AA AA AA - 102.0°С - 199
77E 04 62 F4 05 СB AA AA AA - 105.0°С - 203

// Обороты двигателя
714 03 22 F4 0C 55 55 55 55
77E 05 62 F4 0C 0B C6 AA AA - 753.5 об/мин; 0BC6 = 3014/4 = 753
77E 05 62 F4 0C 0B DC AA AA - 759 об/мин; 0BDC = 3036
77E 05 62 F4 0C 0B E8 AA AA - 762 об/мин; 0BE8 = 3048
77E 05 62 F4 0C 1C 32 AA AA - 1804.5 об/мин

// Скорость
714 03 22 F4 0D 55 55 55 55
77E 04 62 F4 0D 18 AA AA AA - 24 км/ч
77E 04 62 F4 0D 16 AA AA AA - 18 км/ч
77E 04 62 F4 0D 1С AA AA AA - 28 км/ч


// Температура масла
714 03 22 20 2F 55 55 55 55
77E 04 62 20 2F 36 AA AA AA - -4°С
77E 04 62 20 2F 67 AA AA AA - 45°С
77E 04 62 20 2F 68 AA AA AA - 46°С

// Температура в салоне 
746 03 22 26 13 55 55 55 55
7B0 05 62 26 13 00 5B AA AA - 9.1, 91 == 0x5B
7B0 05 62 26 13 00 5C AA AA - 9.2°С
7B0 05 62 26 13 00 5D AA AA - 9.3°С

// Время
714 03 22 22 16 55 55 55 55
77E 05 62 22 16 11 1E AA AA - 17:30

// Кнопки подрулевого переключателя
714 03 22 22 1B 55 55 55 55
77E 05 62 22 1B 80 AA AA AA - не нажата
77E 05 62 22 1B 81 AA AA AA - нажата вверх
77E 05 62 22 1B 84 AA AA AA - нажата вниз

// Средний расход 2
714 03 22 22 99 55 55 55 55
77E 05 62 22 99 00 91 AA AA - 14.5л/100км
77E 05 62 22 99 00 49 AA AA - 7.3л/100км


// Текущий расход
714 03 22 22 98 55 55 55 55
77E 05 62 22 98 00 00 AA AA - 0.0л/100км

// Пробег
714 03 22 22 03 55 55 55 55
77E 05 62 22 03 24 C0 AA AA - 94080 км 0x24С0 * 10

// Напряжение сети
746 03 22 02 86 55 55 55 55
7B0 04 62 02 86 8C AA AA AA - 14.0В
7B0 04 62 02 86 8B AA AA AA - 13.9В

// TRIP

Я протестировал эти команды на нескольких Octavia A5 разных комплектаций и они всегда срабатывали, но вот на Octavia A7 не все работает, например для состояния дверей другие команды.

Следующим этапом было визуализировать полученную информацию с датчиков. На базе микрокомпьютера Raspberry Pi и 7 дюймового дисплея я собрал панель приборов, которая подключается к CAN шине.

27165250_m.jpg


В Skoda Octavia A5 особо нет места для дополнительно дисплея, поэтому я решил бардачок на торпедо переделать в стойку для панели. Из черного пластика вырезал заглушку для бардачка и на ней закрепил все компоненты.

27165255_m.jpg


Вот так выглядит установленная панель приборов

27165272_m.jpg


Исходные коды выложены на github, при желании любой может повторить. Работать должно и на VW, Audi, Skoda, Seat. Интерфейс написан на python kivy и работает очень быстро.

Видео работы панели приборов

Я не стал останавливаться на достигнутом и решил найти способ, как перенести эту панель приборов на телефон. У меня был ELM327 Wi-Fi сканер, который я изредка использовал для считывания и сброса ошибок. Я решил выяснить, может ли он работать с CAN шиной и как оказалось ДА! при правильной настройке ELM327 может отправлять и принимать CAN команды через OBD2 разъем.

27165331_m.png


Вот так можно получить доступ к CAN шине с помощью ELM327:
Код:
atz // сброс всех настроек
at e0 // отключаем эхо
at sh 714 // ID к которому будем отправлять запрос
at cra 77e // ID с которого будем получать ответ
at fc sh 714 // Включить Flow control для ID 714
at fc sd 30 00 00 // Задать данные для Flow control
at fc sm 1 // Режим Flow Control, когда юзер задает ID и данные
at al // Разрешить длинные сообщение, больше 7 байт
at sp 6 // Протокол общения ISO 15764-4 CAN (11 bit ID, 500 kbaud)
at ca f0 // CAN auto formating off
at l0 // отключаем перенос

Тестовый запрос в CAN-шину:
Код:
03 22 22 0D 55 55 55 55 // запрос температуры масла
05 62 22 0D 55 65 AA AA // ответ

Оставалось нехитрое дело, а именно написать приложение для телефона, которое по Wi-Fi отправляет запрос на ELM327, а адаптер запрашивает данные уже по CAN шине. В итоге получилось приложение VAG Virtual Cockpit пока, только под iOS.

27165385_m.png



27165394_m.png



27165397_m.png


Приложение умеет показывать:
  • Какая дверь открыта
  • Скорость
  • Обороты
  • Температура масла
  • Температура двигателя
  • Объем топлива в баке в литрах
  • Запас хода в километрах
  • Средний расход
  • Время в машине
  • Пробег
  • Температура за бортом
Протестировано на:
  • Skoda Octavia A5 2011
    Skoda Octavia A5 Универсал 2012
    Skoda Yeti 2011
    Skoda Octavia A7 2014 (не все параметры отображаются)</li>
Видео панели приборов на телефоне

Сейчас я активно работаю над следующей версией, если есть идеи, что добавить, пишите. Версия для Android планируется.
 
Классное хобби :)
По А7 не все работает, скорее всего, из-за того, что там другая платформа - MQB, которая также в основе 7-го Гольфа, 3-го Леона и А3 (не помню номер поколения).
UI дизайн приложения тоже сам делал или взял где-то готовый?
 
UI сам делал, пришлось осваивать навыки разработки векторной графики.
Приложения периодически обновляю, на данный момент есть поддержка Bluetooth адаптеров и показывает температуры DSG и AISIN.
 
Может и мне что посоветуете.Периодически падает стрелка бензина.Октавия А-5.Ни от чего не зависит.Ни от погоды,ни от качества топлива,ни от количества топлива в баке?Может 2 дня нормально вести себя,может 10 раз в день упасть.Кодда включаешь зажигание,всегда стрелка показывает кол-во топлива,но через 10-15 минут падает на ноль.В баке другой насос и датчик,поэтому исключил поломку датчика.Думаю если бы от не работал,он бы и не показывал каждый раз топливо.
 
Могу только посоветовать приложением vag virtual cockpit для телефона смотреть уровень топлива. Может в приборке контакт от поплавка в баке глючит.
 
А для чего это, отображать данные приборной панели на другой панели?
 
А для чего это, отображать данные приборной панели на другой панели?
Чтоб гламурнее было :cool: . Ещё значёк wv в кружке на капот, как на мерсах, типа прицела...
Вот если бы данные моторного смотреть, типа диагностики, там давление наддува, масла, топлива, расход воздуха, угол зажигания, коррекцию форс... :rolleyes:. Но простому смертному нахрен это нужно, разве что если поломка, последние данные показать ремонтнику...
 
от если бы данные моторного смотреть, типа диагностики, там давление наддува, масла, топлива, расход воздуха, угол зажигания, коррекцию форс..
Вот это ещё понятно.

А данные приборки на дополнительном экране зачем? Это на тот случай, если приборка сломается? :unknw:
 
Чтоб гламурнее было :cool: . Ещё значёк wv в кружке на капот, как на мерсах, типа прицела...
Вот если бы данные моторного смотреть, типа диагностики, там давление наддува, масла, топлива, расход воздуха, угол зажигания, коррекцию форс... :rolleyes:. Но простому смертному нахрен это нужно, разве что если поломка, последние данные показать ремонтнику...
Имеете ввиду такие данные мотора
Simulator Screen Shot - iPhone Xs Max - 2019-10-29 at 10.57.48.png


Или может температура DGS еще нужна кому-то?
image0.png

Post automatically merged:

Вот это ещё понятно.

А данные приборки на дополнительном экране зачем? Это на тот случай, если приборка сломается? :unknw:
Конкретно в моей комплектации приборка не показывает температуру масла и место в баке в литрах. Еще мне хотелось знать точную температуру антифриза и скорость, а не то что показывает приборка всегда 90 С и скорость минус 5 км/ч.
Post automatically merged:

Вообще изначальная идея была, удалить штатную приборку и вместо нее планшет поставить. Иду к этой задумке маленькими шажками.
 
Имеете ввиду такие данные мотора
Посмотреть вложение 70480

Или может температура DGS еще нужна кому-то?
Посмотреть вложение 70481
Post automatically merged:


Конкретно в моей комплектации приборка не показывает температуру масла и место в баке в литрах. Еще мне хотелось знать точную температуру антифриза и скорость, а не то что показывает приборка всегда 90 С и скорость минус 5 км/ч.
Post automatically merged:

Вообще изначальная идея была, удалить штатную приборку и вместо нее планшет поставить. Иду к этой задумке маленькими шажками.
Во, это уже ближе к делу :good:. Ещё бы регистратор данных хотя бы с памятью на 2 -3 минуты...:rolleyes:
 
Ничего, счас сюда зайдёт Алекс и обьявит своё весистое мнение :cool:... И не только :LOL: .
 
Не знаю,но иногда работает пару дней?Летом ездил на юг,так работала от бака до бака,тоесть от полного до лампочки.
 
Нет стрелка на панели А-5 шкоды падает,И нет никакого обьяснения пока....
А как связано с топиком?.. :unknw: Твой вопрос должен быть в электрике!:rtfm:
Сымай панель, ищи трещины пайки сперва на разъёме, потом по дорожкам к указателю. Найдёшь - пропаивай.
 
А как связано с топиком?.. :unknw: Твой вопрос должен быть в электрике!:rtfm:
Сымай панель, ищи трещины пайки сперва на разъёме, потом по дорожкам к указателю. Найдёшь - пропаивай.
Там многослойная плата, трещин на разьёме не бывает, но вот монтаж резисторов, кондёров, микрух и разных других тараканов следовало бы перепаять.
 
Добавил еще немного диагностики. Теперь с помощью Elm327 адаптера на телефоне можно видеть пропуски и откаты угла зажигания. У исправного и правильно настроенного двигателя не должно быть пропусков зажигания, т.е. их количество 0. И откаты угла зажигания тоже должны быть в нуле.
IMG_0543.PNG
 
Назад
Сверху Снизу