Хакаем CAN шину авто. Мобильное приложение вместо панели приборов

  • Tutorial
Мобильное приложение VAG Virtual Cockpit
Мобильное приложение VAG Virtual Cockpit

Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.

По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.

Программный сниффер VCDS

Программный сниффер VCDS: CAN-Sniffer
Программный сниффер VCDS: CAN-Sniffer

Чтобы узнать по какому протоколу общаются электронные блоки я использовал специальную версию VCDS с программным сниффером в комплекте. В этот раз никаких железных снифферов на Arduino или RPi не пришлось изобретать. С помощью CAN-Sniffer можно подсмотреть общение между VCDS и автомобилем, чтобы затем телефон мог прикинуться диагностической утилитой и отправлять те же самые запросы.

Я собрал некоторую статистику по использованию диагностических протоколов на разных моделях автомобилей:

  • VW/Skoda/Seat (2006-2012) - приборная панель UDS. Двигатель и трансмиссия VW TP 2.0

  • Audi (2006-2012) - приборная панель VW TP 2.0. Двигатель UDS. Трансмиссия VW TP 2.0

  • VW/Skoda/Seat/Audi (2012-2021) - везде UDS

Протокол UDS

Unified Diagnostic Services (UDS) - это диагностический протокол, используемый в электронных блоках управления (ЭБУ) автомобильной электроники. Протокол описан в стандарте ISO 14229-1 и является производным от стандарта ISO 14230-3 (KWP2000) и ныне устаревшего стандарта ISO 15765-3 (Diagnostic Communication over Controller Area Network (DoCAN)). Более подробно в википедии.

Диагностические данные от двигателя по протоколу UDS (Skoda Octavia A7)
Диагностические данные от двигателя по протоколу UDS (Skoda Octavia A7)

В моей машине (Skoda Octavia A5) приборка использует UDS протокол, это дало мне легкий старт разработки, т.к. данные были в простом формате Single Frame SF (фрейм, вся информация которого умещается в один CAN пакет) и большинство значений легко поддавались расшифровке. Volkswagen не дает документацию на формат значений, поэтому формулу расшифровки для каждого датчика приходилось подбирать методом логического мышления. Про UDS протокол очень хорошо и с подробным разбором фреймов написано на canhacker.ru.

Разбор UDS пакета в формате Single Frame
Разбор UDS пакета в формате Single Frame

Пример запроса и ответа температуры моторного масла:

7E0 0x03 0x22 0x11 0xBD 0x55 0x55 0x55 0x55
7E8 0x05 0x62 0x11 0xBD 0x0B 0x74 0x55 0x55

Запрос температуры моторного масла:

  • 7E0 - Адрес назначения (ЭБУ двигателя)

  • Байт 0 (0x03) - Размер данных (3 байта)

  • Байт 1 (0x22) - SID идентификатор сервиса (запрос текущих параметров)

  • Байт 2, 3 (0x11 0xBD) - PID идентификатор параметра (температура моторного масла)

  • Байт 4, 5, 6, 7 (0x55) - Заполнитель до 8 байт

Ответ температуры моторного масла:

  • 7E8 - Адрес источника (Диагностический прибор)

  • Байт 0 (0x05) - Размер данных (5 байт)

  • Байт 1 (0x62) - Положительный ответ, такой SID существует. 0x22 + 0x40 = 0x62. (0x7F) - отрицательный ответ

  • Байт 2, 3 (0x11 0xBD) - PID идентификатор параметра (температура моторного масла)

  • Байт 4, 5 (0x0B 0x74) - значение температуры моторного масла (20.1 °C формулу пока что не смог подобрать)

  • Байт 6, 7 (0x55) - Заполнитель до 8 байт

Первая версия мобильного приложения VAG Virtual Cockpit умела подключаться только к приборной панели по UDS.

VAG Virtual Cockpit - экран с данными от приборной панели по протоколу UDS
VAG Virtual Cockpit - экран с данными от приборной панели по протоколу UDS

VW Transport Protocol 2.0

Volkswagen Transport Protocol 2.0 используется в качестве транспортного уровня, а данные передаются в формате KWP2000. Keyword Protocol 2000 - это протокол для бортовой диагностики автомобиля стандартизированный как ISO 14230. Прикладной уровень описан в стандарте ISO 14230-3. Более подробно в википедии.

Т.к. KWP2000 использует сообщения переменной длины, а CAN шина позволяет передавать сообщения не больше 8 байт, то VW TP 2.0 разбивает длинное сообщение KWP2000 на части при отправке по CAN шине и собирает заново при получении.

Диагностические данные от двигателя по протоколу KWP2000 (Skoda Octavia A5)
Диагностические данные от двигателя по протоколу KWP2000 (Skoda Octavia A5)

ЭБУ двигателя моей машины использует протокол VW TP 2.0, поэтому мне пришлось изучить его. Видимо Volkswagen разрабатывала транспортный протокол не только для работы по надежной CAN шине, но и для менее надежных линий связи, иначе нет объяснения для чего требуется такая избыточная проверка целостности данных. Главным источником информации по VW TP 2.0 является сайт https://jazdw.net/tp20.

Разбор протокола VW TP 2.0 на примере подключения к первой группе двигателя:

200 01 C0 00 10 00 03 01

Настраиваем канал с двигателем. Байт 0: 0x01 - двигатель, 0x02 - трансмиссия. Байт 5,4: 0x300 - адрес источника

201 00 D0 00 03 40 07 01

Получили положительный ответ. Байт 5,4: 0x740 - к двигателю обращаемся по этому адресу

740 A0 0F 8A FF 32 FF

Настраиваем ЭБУ на отправку сразу 16 пакетов и выставляем временные параметры

300 A1 0F 8A FF 4A FF

Получили положительный ответ

740 10 00 02 10 89

Отправляем команду KWP2000 startDiagnosticSession. Байт 0: 0x10 = 0b0001 - последняя строка данных + 0x0 счетчик отправляемых пакетов 0 (0x0 - 0xF)

300 B1

Получили первый ACK

300 10 00 02 50 89

Получили положительный ответ. Байт 0: 0x10 - cчетчик принимаемых пакетов 0

740 B1

Мы отправили первый ACK, что получили ответ

740 11 00 02 21 01

Делаем запрос. Байт 0: 0x11 - счетчик отправляемых пакетов 1. Байт 3: 0x21 - запрос параметров. Байт 4: 0x01 - из группы 1

300 B2

Получили второй ACK

300 22 00 1A 61 01 01 C8 13

Байт 0: 0x22 - 0b0010 (не последняя строка данных) + 0x02 (cчетчик принимаемых пакетов 2). Байт 1,2: 0x00 0x1A длина 26 байт. Байт 3,4: 0x61 0x01 - положительный ответ на команду запроса параметров 0x21+0x40=0x61 из 0x1 группы. Байт 5: 0х01 - Запрос RPM (соответсвует протоколу KW1281). Байт 6,7: (0xC8 * 0x13)/5 = 760 RPM (формула соответствует протоколу KW1281)

300 23 05 0A 99 14 32 86 10

Байт 1: 0x05 - запрос ОЖ. Байт 2,3: (0x0A * 0x99)/26 = 57.0 C. Байт 4: 0x14 = запрос лямбда контроль %. Байт 5,6: 0x32*0x86; Байт 7: 0х10 - двоичная настройка

300 24 FF BE 25 00 00 25 00

0x25 0x00 x00 - Заполнитель, до 8 параметров

300 15 00 25 00 00 25 00 00

Байт 0: 0x15 - 0b0001 (последняя строка данных) + 0x5 (счетчик принимаемых пакетов 5)

740 B5

Отправляем ACK. Прибывляем к нашему предыдущему ACK количество полученных пакетов 0xB1 + 0x4 = 0xB5

300 A3

Запрос KeepAlive, что мы еще на связи

740 A1 0F 8A FF 4A FF

Ответ KeepAlive

740 A8

Мы разрываем связь

300 A8

ЭБУ в ответ тоже разрывает связь

Во второй версии мобильного приложения VAG Virtual Cockpit появилась возможность диагностировать двигатель и трансмиссию по протоколу VW TP 2.0.

VAG Virtual Cockpit - экран с данными от двигателя по протоколу VW TP 2.0
VAG Virtual Cockpit - экран с данными от двигателя по протоколу VW TP 2.0

Диагностический адаптер ELM327

Для меня некоторое время было вопросом, как получить данные из CAN шины и передать на телефон. Можно было бы разработать собственный шлюз с Wi-Fi или Bluetooth, как это делают производители сигнализаций, например Starline. Но изучив документацию на популярный автомобильный сканер ELM327 понял, что его можно настроить с помощью AT команд на доступ к CAN шине.

Копия диагностического сканера ELM327
Копия диагностического сканера ELM327
Не все ELM327 одинаково полезны

Оригинальный ELM327 от компании elmelectronics стоит порядка 50$, в России я таких не встречал в продаже. У нас продаются только китайские копии/подделки, разного качества и цены 10-30$. Бывают полноценные копии, которые поддерживают все протоколы, а бывают и те которые умеют отвечать только на несколько команд, остальные игнорируют, такие адаптеры не имеют доступ к CAN шине. Я например пользуюсь копией Viecar BLE 4.0, который поддерживает 100% всех функций оригинала.

Для работы с протоколом UDS через ELM327 нужно указать адреса назначения, источника и разрешить длинные 8 байтные сообщения, по умолчанию пропускается максимум 7 байт.

Последовательность ELM327 AT команд для работы с UDS по CAN шине:

ATZ // сброс настроек
AT E0 // отключаем эхо
AT L0 // отключаем перенос строки
AT SP 6 // Задаем протокол ISO 15765-4 CAN (11 bit ID, 500 kbaud)
AT ST 10 // Таймаут 10 * 4 мс, иначе EBU шлет повторные ответы каждые 100 мс, а мы не отвечаем, потому что ожидаем конца, а нам нужен только первый ответ
AT CA F0
AT AL // Allow Long (>7 byte) messages
AT SH 7E0 // задаем ID, к кому обращаемся (двигатель)
AT CRA 7E8 // CAN Receive Address. Можно задать несколько 7Xe
AT FC SH 7E0
AT FC SD 30 00 00
AT FC SM 1 // Режим Flow Control 1 должен быть определен после FC SH и FC SD, иначе в ответ придет "?"
03 22 F4 0С 55 55 55 55 // UDS запрос оборотов двигателя

Для работы с протоколом KWP2000 через ELM327 нужно только указать адреса назначения и источника.

Последовательность ELM327 AT команд для работы с VW TP 2.0 по CAN шине:

ATZ // сброс настроек
AT E0 // отключаем эхо
AT L0 // отключаем перенос строки
AT SP 6 // Задаем протокол ISO 15765-4 CAN (11 bit ID, 500 kbaud)
AT PB C0 01
AT SP B // Задаем протокол USER1 CAN (11* bit ID, 125* kbaud)
AT ST 10 // Таймаут 10 * 4 мс, иначе EBU шлет повторные ответы каждые 100 мс, а мы не отвечаем, потому что ожидаем конца, а нам нужен только первый ответ
AT SH 200 // Обращаемся к 200 ID
AT CRA 201 // Ждем ответа от 201 Блок управления двигателем, 202 - Transmission, 203 - ABS, 207 -  Приборная панель
01 C0 00 10 00 03 01 // Initiate channel setup with ECU module - 01, request it use CAN ID 0x300; Transmission 02; ABS 03
AT SH 740 // адрес блока 740 получен в ответе на предыдущую команду
AT CRA 300 // Ждем ответа от 300 ID
A0 0F 8A FF 32 FF // Tell ECU module to send 16 packets at a time, and set timing parameters
10 00 02 10 89 // Send KWP2000 startDiagnosticSession request 0x10 with 0x89 as a parameter.
B1 // ACK
11 00 02 1A 9B // Запрос названия блока KWP2000

Мобильное приложение VAG Virtual Cockpit

Для разработки мобильного приложения подключаемого к автомобилю требовалось:

  • Сниффером собрать трафик от диагностической утилиты VCDS

  • Изучить работу протоколов UDS, VW TP 2.0, KWP2000

  • Настроить диагностический сканер ELM327 на работу с UDS и VW TP 2.0

  • Изучить новый для меня язык программирования Swift

Мобильное приложение VAG Virtual Cockpit для iOS
Мобильное приложение VAG Virtual Cockpit для iOS

В итоге получилось приложение, которое сочетает в себе функции отображения точных данных панели приборов и диагностика основных параметров двигателя и трансмиссии.

Пару слов про точность данных. Штатная панель приборов не точно показывает скорость - завышает показания на 5-10 км/ч, стрелка охлаждающей жидкости всегда на 90 °C, хотя реальная температура может быть 80 - 110 °C, стрелка уровня топлива до середины идет медленно, хотя топлива уже меньше половины и при нуле на самом деле топливо еще есть в баке. Производитель это делает для удобства и безопасности водителя.

На данный момент приложение показывает следующие параметры:

Приборная панель

Двигатель

Трансмиссия (температура)

1) Какая дверь открыта
2) Скорость
3) Обороты
4) Температура масла
5) Температура ОЖ
6) Топливо в баке в л.
7) Запас хода в км.
8) Средний расход
9) Время в машине
10) Пробег
11) Температура за бортом

1) Обороты
2) Массовый расход воздуха
3) Температура забора воздуха
4) Температура выхлопа (рассчитанная)
5) Критический уровень масла
6) Уровень масла
7) Наддув турбины (реальный)
8) Наддув турбины (ожидаемый)
9) Пропуски зажигания в цилиндрах
10) Углы откатов зажигания в цилиндрах

1) ATF AISIN (G93)
2) DSG6 (G93)
3) Блок управления DSG6 (G510)
4) Масло диска сцепления DSG6 (G509)
5) Мехатроник DSG7 (G510)
6) Процессор DSG7
7) Диск сцепления DSG7

Я стремлюсь чтобы приложение поддерживало как можно больше моделей автомобилей. Пока что поддерживаются производители: Volkswagen, Skoda, Seat, Audi. На разных комплектациях могут отображаться не все параметры, но это поправимо.

Сейчас я провожу тестирование версии 3.0. Приложение доступно только на iOS, после релиза 3.0 перейду к разработке версии для Android.

Если интересно потестировать и есть желание принять участие в проекте, то установить приложение можно по ссылке. Также я веду бортжурнал на drive2.ru, где делюсь полезной информацией и новостями о VAG Virtual Cockpit.

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 120

    +1
    Я использовал STN1100 вместо ELM327. Есть новее STN2120.
    www.obdsol.com/solutions/chips
      0

      По опыту какие есть преимущества перед ELM327?

      +5

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

        0

        Опыт расшифровки данных диагностики получен. Теперь должно быть легче расшифровывать данные из CAN шины комфорта и двигателя. Собираюсь доработать панель приборов на RPi, подключив ее к шине комфорта.

          0
          Загрузка панели приборов пару минут? Потребление в спячке в полампера?
            0
            Загрузка RPi без лишних модулей секунд 5. Спячка не нужна.
          0
          для каждого авто индивидуально. Изменяем — ищем что изменилось, подбираем коэффициенты.
          habr.com/ru/post/497140
            0

            Вот только у меня авто нет, только приборная панель, задача — оживить

              0
              что за машина?
                0

                Панель от VW Jetta (та что с 1 разъемом синим), авто в которое имплантируется Nissan March K11, у него CAN шины нет от слова совсем. Сейчас собрана эмуляция: уровень топлива в баке, ABS для работы спидометра, режимы коробки, тахометр, большая часть индикации. Из того что не получается подобрать: индикации открытия дверей, ДХО. Прошивка ключей в приборку без гейта.

          +1

          Вам нужен поиск в первую очередь по ключевым словам "can matrix", "dbc file", "arxml file" (без кавычек, естественно).

          +2
          Очень ждем Android…
            0
            а кто-то пробовал написать приложение для андроидной магнитолы, к которой CAN подведен физически шлейфом?
              +4
              В самих андроид магнитолах нет Can шины. В комплекте идет адаптер, который принимает данные из can шины и по uart передает магнитоле. Думаю, что и расшифровка происходит в этом адаптере и магнитола имеет доступ к ограниченному списку параметров.
              0
              Из минусов адаптера ELM327(в посте на фото) стоит отметить, что у него нет штатного выключателя Wi-Fi. А т.к. питание на CAN-шину подается постоянно, то оставляя адаптер в разъеме, мы рискуем заполучить севший аккумулятор.
                +1
                Так и было!
                  0
                  Решением было бы использование USB адаптера OBD2. С телефоном не актуально, но если стоит головное устройство на Android, это лучшее решение.

                  Но с этим вопросом всё непросто. Я уже 2 года неспешно пытаюсь подключить Android 8 магнитолу к OBD2 по USB, совершил два подхода, но пока что безрезультатно. Готовлюсь к третьему.
                  0
                  «Так вот кто таскает мои плюшки!» (с) Фреккен Бок
                  У меня ELM327 с блютузом, но, тоже за неделю в паре с сигналкой выедают 95А*ч до 10,5В.
                    0
                    Так много не должен потреблять. Я думаю максимум 50 мА адаптер потребляет, т.е. за сутки 1.2 А*ч потребляет.
                      0
                      У меня адаптер, который при неактивности по шине засыпает и потребляет всего 3мА в спящем режиме.
                      Есть адаптеры с переключателем питания.
                        0
                        Скорее всего мой Bluetooth 4.0 адаптер тоже не очень много потребляем, когда нет передачи. Машина под окном обычно стоит и с 3-го этажа из квартиры я всегда могу подключиться.
                    +1

                    Подскажите — подружиться ли приложение с адаптером OBD Elleven?

                      +1
                      Я так понял этот адаптер не совместим с AT командами ELM327, поэтому сразу приложение не заработает. Но уверен можно добавить поддержку этого адаптера, если это будет нужно больше, чем одному человеку.
                        0
                        Я второй.
                        Думается большинство владельцев адаптера (их уже вроде две аппаратные версии) не откажется от такого функционала.
                          +1
                          Добавил в список задач.
                      0
                      У меня простой вопрос — можно ли в шину значение педали газа записать (вы, судя по открыванию дверей, записывать значения в CAN научились) — я давно хочу самопальный круиз-контроль на VW Caddy сделать. Это на любом VAG вообще возможно или только с MFA?
                        0
                        думается мне что врятли. В шине есть значение педали газа, но оно идет от блока двигателя. По кану газовать врятли получится.
                          0
                          На хабре была статью от Starline, как они в CAN шину отправляли команды, что бы газом на Lexus управлять.
                            0

                            Скорее всего, в той статье речь шла не об общей шине CAN, а о специализированной под управление рулём и газом. Но даже в этом случае требуется наличие моста, который будет фильтровать сообщения от других модулей и посылать программные сообщения. Если уже просто флудить пакетами, то может произойти что угодно. Проще говоря, управлять автомобилем, просто подсоединив CAN-интерфейс к диагностическому разъёму в 99% случаев невозможно.

                          +1

                          Весьма опасная затея. Конечно, интересно, имеется ли какая защита на запись определенных значений на уровне прошивок.

                            0

                            В общем случае нельзя. Есть всего два способа управлять газом. Первый — аппаратное решение с электронным потенциометром. Второй — мост на один из ЭБУ, который так или иначе умеет контролировать дроссель. Это может быть как штатный блок круиза, так и блок помощи водителю.

                              0
                              Да, спасибо, теперь понял. Я посмотрел, как drivenge организован — они «врезаются» последовательно с педалью газа. То есть мне два разъёма понадобятся для начала (можно подержанную педаль на разборке найти и выдрать оттуда). Но вот что-то мне всё меньше хочется туда лезть — я надеялся диагностическим разъёмом обойтись, тем более что ELM327 у меня есть.
                              0

                              врятли, я на Весту (мозги Рено Колеос 2) думал сделать доп кнопки круиза (+10), но эти комманды с руля идут напрямую в голову, а оттуда уже отсвечивают. те по кан шине такие комманды не ходят


                              я на первую калину ставил сторонний drivenge — очень понравилось, посмотрел их сайт, они поло поддерживают, наверно можно переколхозить на кадди — ВАГ обычно сильно стандартизован и совместим

                                0
                                За drivenge спасибо — не знал. Попробую принципиальную схему раздобыть, чтобы понять архитектуру решения. Ручку с кнопками на руль я бы мог купить и самостоятельно поставить, но официальное решение потребует также замены мозгов, кроме того мне нужна будет приборная панель с MFA — по итогу «родной» круиз будет очень дорого — несколько сотен евро. Кроме того мне бы хотелось бы сделать лучше — я ведь хочу иметь калиброванные по GPS пресеты 50, 60, 70, 80, 100,120 и 130.
                                  0
                                  По GPS плохо. Ведь тогда вы будете ехать с правильной скоростью, а в реальном круизе скорость занижена на 5-10 км/ч, что помогает избежать штрафов за превышение. А круиз, например при движении с горки может идти быстрее установленной скорости.
                                    +3
                                    По GPS как раз нормально, я и езжу обычно строго по GPS+3 кмч. Открою вам маленькое тайное знание — в Германии никто не ездит педантично по спидометру, за исключением автошкол, тех, кто на испытательном сроке (два года) и, вероятно, моей супруги. Все знают, что спидометр завышает показания и обычно накидывают себе процентов десять. Тут надо, конечно, знать свой автомобиль, а в случае арендованной машины вначале проверить это дело (я пользуюсь TomTom, он показывает реальную скорость). Попытка проехать, к примеру, стройку на автобане, где обычно «80», строго по спидометру кончится тем, что вам в бампер упрётся фура, при этом особо злые дальнобойщики будут ещё и дальним мигать — у них ведь тоже круиз включён, но на максимально допустимую скорость. Ну и ещё важно знать, что фотоаппараты дают вам три кмч «фору». В общем, когда я еду 80, то спидометр показывает где-то 88. А когда ограничение 120, то 130-132, и вот именно при этой скорости я иду «в потоке». Езжу так уже двадцать лет, проехал более трёхсот тысяч и всего два штрафа за скорость словил и оба — по десять евро (причём оба по невнимательности), так что статистически нормально всё. Мне как раз и нужны такие пресеты, чтобы держаться «в потоке», но при этом не ловить штрафы.
                                      0

                                      С вашим опытом вам виднее. Я где дороги не знаю, еду по спидометру, а где знаю, то рассчитываю на максимальную мощность двигателя и здравый смысл.

                                        +1
                                        Да, я точно также. Если я проезжаю Австрию или Швейцарию — то вот там строго по спидометру и даже чуть ниже. В незнакомом городе городе я иногда еду на одну передачу ниже, чем хочется — помогает. Сложнее всего в Италии — там ограничение скорости носит скорее рекомендательный характер и местные джигиты порой гоняют 90 вместо 60 (и это вкупе с конскими штрафами), но они знают «можно» где — не стоит, а у меня этого знания нет, так что я надеюсь на их понимание, так номера у меня не местные (но понимают далеко не все). Вообще в каждой стране формируется определённый «стиль езды», надо просто внимательно присматриваться к нему, так как сильно «выбиваясь» (слишком медленной ездой), можно провоцировать аварийные ситуации (когда все, в том числе грузовики, начинают массово вас обгонять).
                                        +1

                                        В РФ больше ездят по спидометру и ещё в безопасном зазоре. В итоге на участке, где мерят среднюю я еду 89, а остальные 82-85.

                                      0
                                      Попробую принципиальную схему раздобыть, чтобы понять архитектуру решения.

                                      Вряд ли Вы найдете ее в подробностях, но в общих чертах там так: реле с двумя переключающими группами перекидывает вход от ЭБУ между выходом педали и ЦАП внутри блока круиза. В режиме поддержания скорости ЦАП эмулирует сигнал педали газа, поддерживая заданную скорость. Ну и вход от педали всегда подключен внутри круиза к АЦП микроконтроллера для его отслеживания. Если хотите больше подробностей — пишите в личку :)
                                      Сам сигнал с педали газа представляет собой две линии с напряжением, зависящим от нажатия педали (в педали просто два потенциометра). Обычно один из сигналов всегда в два раза больше второго по напряжению, то есть если на первом напряжение меняется в пределах 0.8-4.6 вольта, то на втором будет 0.4-2.3 вольта. Сам диапазон напряжений зависит от напряжения питания, подведенного к педали — оно может быть 3.3 или 5 вольт.
                                        0
                                        Общую схему подключения я нашёл — pdf на официальном сайте.
                                        Собственно по этому фрагменту всё стало понятно — и да, вы были правы, оно в разрыв кабеля к педали газа подключается:

                                        Как бы мне не хотелось туда лезть, но видимо придётся.
                                    0

                                    Можете попробовать порыться на форумах, а затем в бортовом компьютере с помощью шнурка.
                                    VAG'и как конструктор. У меня на бывшей skoda fabia досточно было поменять подрулевой переключатель на тот что с кнопками круиза, и прописать в бортовом "у нас теперь есть круиз контроль".

                                    +12

                                    Температура явно в десятых долях кельвина. 0x0b74 = 2932. А 293.2-273.1 как раз 20.1

                                      +1
                                      Огонь!!! Спасибо! Я не додумался в Кельвинах посчитать.
                                        0
                                        Вдруг догадаетесь, я уже второй день голову ломаю.

                                        Уровень масла — 56.800 мм
                                        0x302E = 12334
                                        0x30 = 48
                                        0x2E = 46

                                        Критический уровень масла — 23.432 мм
                                        0x158E = 5518
                                        0x15 = 21
                                        0x8E = 142
                                          0
                                          Если с точки зрения простой математики, то 2 уравнения, две неизвестных.
                                          Грубое решение:
                                          12334*4,9-3600 = 56836
                                          5518*4,9-3600 = 23438

                                          Нужно сравнивать результат с натурными измерениями в других точках.
                                            0
                                            Спасибо! Удалось получить точные данные и формула сразу же нарисовалась:
                                            Критический уровень масла мм
                                            05 62 11 BD 17 8D 55 55 // 0x178D = 6029; (6029*4)/1000 = 24.116
                                            24.116 = 17 8D
                                            24.120 = 17 8E
                                            24.132 = 17 91
                                            24.152 = 17 96
                                            24.140 = 17 93
                                          0
                                          Как выяснилось другие температуры тоже в Кельвинах передаются, например для температуры выхлопа тоже подходит эта формула.
                                          0
                                          интересно было бы попользоваться этим, но у меня авто другой марки
                                            0
                                            Если бы знали протоколы общения, то можно было добавить поддержку других марок.
                                              0
                                              а какого то общего каталога протоколов нету? для этого надо каждую модель\марку отдельно изучать?
                                                0
                                                Есть общий obd2, но там очень мало параметров, типа температура ОЖ, обороты и еще пара десятков общих для всех машин. А температура масла в двигателе и коробке, наддув турбины и многие другие у каждого производителя по своему закодированы. Транспортный уровень может быть одинаковый у разных марок, а данные внутри разные.
                                            +2
                                            проект закрытый как я понимаю? ссылочки на исходники не нашел
                                              0
                                              Да, пока что стыдно исходники показывать )
                                                +5
                                                эх, зря вы так
                                              0

                                              Есть мнение что для внутреннего рынка в бортовом ПК зашиты скрытые функции которые за доп плату или (скорее всего) в люксовых версиях эти функции просто разблокируются. Касаемо конкретно Шкоды — при включении задней скорости боковые зеркала опускаются вниз для того что бы было видно бордюры и иные помехи, при выключении скорости они возвращаются в исходное положение. Не могу вспомнить где именно встречал (кажется какой то форум шкодоводов)
                                              Вы в ходе своих опытов не встречались с такими возможностями?

                                                0
                                                Так именно за этим и затевался этот проект. У меня не максимальная комплектация, и на моей приборке не показывается, какая дверь открыта, температура масла, топливо в баке в литрах.
                                                Поэтому эти и другие параметры я стал выводить на «дополнительную приборку».
                                                То о чем вы говорить, называется активация скрытых функций. Планирую добавить несколько таких активаций, например за функцию включения противотуманной фары при повороте дилер брал 1500р.
                                                  0

                                                  А где бы посмотреть эти скрытые функции которые в стоке заблокированы? интересует vag skoda yeti

                                                    0
                                                    На drive2 в поиске: активация скрытых функций vcds
                                                      0
                                                      привет yeti-воду от yeti-вода
                                                      вот огроменная тема на этот счёт.
                                                      www.club-yeti.ru/forum/showthread.php?t=123
                                                        0

                                                        Привет! :)
                                                        моей старушке (2012, DSG, 220 т/км пробега) уже поздно делать бальзам но в целом интересна тенденция авто производителей

                                                          0
                                                          Моя старушка точно такая же, только пробег в три раза меньше :)
                                                          Там забавно поковыряться. VCDS стоит копейки, на нашей платформе PQ35 можно не самый свежий шнурок иметь. И вообще мне в VAG нравилось (не знаю как сейчас дела обстоят), что можно много что сделать самому. Я поставил себе сам мультируль, поставил Maxidot (тут к дилеру надо ехать правда, чтобы поставили т.к. там пробег выставлять надо дилерским компом), VCDSом навключал что мне надо.
                                                            0

                                                            Согласен, самая прикольная машина с кучей стоковых функций, единственно что не понравилось — дсг и магнитола (штатная) может быть подключена только при наличии Ок и кода с завода. Если что — сейчас сцепление стоит раза в 2-3 дешевле поменять в сторонних конторах, с гарантией и без головной боли (если что это МСК). Но мне уже пора ее менять на что то свежее тк машинка устала

                                                              0
                                                              код для магнитолы бесплатно берётся у дилера за пять минут.
                                                              а сцепление DSG мне поменяли в 2017-ом по гарантии заводской (в последний можно сказать день) с тех пор — тьфу-тьфу-тьфу, DSG проблем не доставляет, но и ездим мы немного.
                                                                0

                                                                В те времена не бесплатно а за рублей 1500 что ли (уже не помню точно, по тогдашнему курсу почти 50 баксов)
                                                                Мне сцепление меняли аж 3 раза, 1 раз мехатроник, по гарантии по кругу перекрасили — в целом неудачная машина попалась хотя шла с Чехии (специально европейку ждали). Но кузов и ходовка неубиваемые, проверено на нашем пробеге, в целом как авто очень хороший проект, инженерам респект! Сейчас таких уже не сделают..

                                                                  0
                                                                  у меня тоже чешка и с ЛКП особых проблем нет. но, да, на йети-форуме начитался от владельцев про прыщи и перекрас. повезло мне видимо. да, хорошая машина, сам не знаю, что сейчас покупать на замену, особенно с сегодняшними ценами (2 млн минимум за то что минимально хочется иметь).
                                                                    0

                                                                    Взяли второй авто кашкай, отстой полнейший, так что не думайте даже.
                                                                    Касаемо йети — буду пока поддерживать ее работоспособность, благо что запчасти очень не дорогие (очень рекомендую искать здесь zzap.ru) дешевле в 2 раза чем у официалов

                                                      0
                                                      например за функцию включения противотуманной фары при повороте
                                                      не совсем понял зачем это?
                                                      Может имелось ввиду включение (вернее оставить светить габаритную фару) когда временно выходишь из авто? У меня такая нужная фича была в стоке, хотя брали среднюю комплектацию
                                                        0
                                                        >не совсем понял зачем это?

                                                        на невысокой скорости (до 40 км/ч емнип) противотуманка включается при поворота руля подсвечивая таким образом поворот.
                                                          0

                                                          А, теперь понятно :)
                                                          Это нищебродский вариант как на порш кайене — но там целая линза головных фар (причем обе) поворачивают в сторону поворота :))

                                                            0

                                                            Это не нищебродский вариант. У меня на туареге поворачивались основные фары и ещё включалась противотуманка, что было крайне удобно в некоторых ситуациях. Сама фара подсвечивает не совсем тоже самое, что может подсветить противотуманка.

                                                              0
                                                              У меня в Sportage 3 противотуманка включается при включенном ближнем свете + скорость меньше 40 км/ч + включенный поворотник. Мне кажется, что это удобней, чем включение от поворота руля, т.к. я заранее (до начала поворота) уже вижу подсвеченную дорогу. Хотя, может это дело привычки.
                                                              0

                                                              Сейчас на всех более-менее свежих ВАГах есть «подсветка поворотов» на малом ходу. Обычно просто включается туманка. Могут еще быть боковые подсветки отдельным диодом фары или поворотом линзы (более старый вариант), но это уже для подсветки обочины или именно поворота на трассе.

                                                          0
                                                          за функцию включения противотуманной фары при повороте дилер брал 1500р.

                                                          Вот это киберпанк, однако.

                                                            0
                                                            Погуглите цены на софт апгрейды осцилографов (например, увеличение частоты пропускания). Килобакс запросто может быть
                                                            0
                                                            а почему бы не купить на али шнур VCDS да и через него активировать функции? ))
                                                              0
                                                              Я хотел после покупки своего Sportage 3 (2013) добавить круиз-контроль и управление магнитолой на руль. Официалы запросили 31 тысячу (20 тыс. — блок управления, 10 тыс. — кнопки в руль, 1 тыс. работа). Потом на форуме узнал, что все модели Спортиков идут с одним и тем же блоком управления, проводкой и ПО. На корейском сайте купил кнопки за 1500 рублей и за 20 минут сам их установил. Получил и круиз-контроль, и управление магнитолой. Так что официалы умеют деньги «зарабатывать».
                                                              +1
                                                              Так и есть. Некоторые действительно можно официально разблокировать/купить, некоторые есть, но без адаптера пользователь их может включить только если есть крутая приборная панель (пожирнее комплектацию), некоторые просто есть, вероятно как результат унификации блоков для нескольких моделей. Много таких функций, в частности на Шкодах, например:
                                                              — авто. включение/выключение света т.н. Coming home/Leaving home
                                                              — подсветка поворота противотуманкой
                                                              — опускание зеркал при вкл. заднего хода
                                                              — много их
                                                              вот к примеру
                                                              motorstate.com.ua/upload/product-manual/Rukovodstvo_po_kodirovaniyu_VAG%20na_primere_Skoda_Octavia_A5.pdf
                                                              Я себе VCDS-ом много чего навключал.
                                                              P.S.
                                                              Опускание зеркал на включение заднего вида — фигня, официально это было в комплектации с дорогими зеркалами и электросидениями, а на дешёвых эта функция елозит зеркалом отвратно :)
                                                                0

                                                                имхо достаточно просто зеркала опустить и все, или они вместе с поворотом руля синхронизируются?

                                                                  0
                                                                  у самых простых зеркал там, емнип, нет датчика положения, поэтому он их опускает на глазок и также на глазок и поднимает обратно. и вся твоя регулировка к чёртовой бабушке. у меня как-то так было.
                                                                0

                                                                У General Motors просто несколько прошивок для одной и той же платформы. Например, Chevrolet Малибу можно русифицировать, залив прошивку от Cruz. А в Chevrolet Volt можно добавить распознавание дорожных знаков, прошив прошивкой от Opel Ampera. В самих прошивках никаких скрытых возможностей нет.

                                                                  0
                                                                  В некоторых комплектациях часто отключены опции.
                                                                  Вот для примера на фокус некоторые популярные опции которые выключены при покупке но их можно активировать:
                                                                  Автозапирание дверей при начале движения
                                                                  Помощь при старте в гору
                                                                  Мониторинг давления шин DDS
                                                                  Проводи водителя до дома
                                                                  Отключение задних дворников при движении ЗХ
                                                                  Включение отображения температуры на панели приборов
                                                                    0
                                                                    При этом некоторые опции «отключены» не потому, что «не положено» а просто потому, что для их использования нужен «многофункциональный бортовой компьютер» через который водитель сам активирует/деактивирует опции(типа автозапирание дверей или проводи водителя до дома). Нет компьютера — нет возможности управления опциями.
                                                                +1
                                                                В современных авто добавляется secureOnboard communication, в простейшем случае к CAN сообщению добавляется MAC, поэтому посылать такие сообщения уже не получится, они просто будут игнорироваться системой. Функция по запросу (Function on demand), когда вы хотите активировать дополнительные функции, защищена криптографией, без специальной подписи активировать не получится. Примитивный SecurityAccess в UDS заменяется нормальными системами аутентификации.
                                                                  0

                                                                  Современных это каких например? Если не по маркам а какие года выпуска?
                                                                  Просто на ютубе есть канал про сигнализации, в частности серия роликов как угоняют премиальные машины (TLC, Lexus и тп) выдрав кабель CAN шины в районе лючка бензобака, ну и далее подключив свое оборудование и машина была такова — как то не стыкуется с вашим постом

                                                                    0
                                                                    Я, к сожалению, машинами не пользуюсь, но пишу софт под них, поэтому точно не могу сказать, в каких моделях и годах, это начинает использоваться, потому что обычно при разработке известны только кодовые имена. Мой опыт основывается на BMW/Volkswagen, но не думаю, что остальные сильно отстают в этом плане.
                                                                      0
                                                                      В Японских Honda Fit2/Freed/Fit Shuttle к примеру нельзя прописать ключ в иммо без рабочего замка и ключа даже имея дилерский «сканер» HIM/HDS (разрешение на прописку дается замком, а не мозгами с иммобилайзером). Но правда не уверен, что ключ прописывается через CAN, а не свою шину и протокол. Зато так же прописываются системы удаленного запуска типа Carmate, которые для EBU выглядят как еще один «замок зажигания»
                                                                    0
                                                                    Круто! Хотеть! Правда, у меня Android((
                                                                      0
                                                                      Только для VW или универсальная? Интерфейсик выглядит поинтереснее чем у какой-нибудь Torque. Могла бы получится не плохая альтернатива.
                                                                        0
                                                                        Можно сделать более универсальной, но основные функции все равно останутся только для VW.
                                                                        0
                                                                        Какова скорость обновления информации/задержка? Раз это формат запрос-ответ, то я полагаю, можно настроить любую частоту обновления? Если выставить слишком частое обновление, то создаст ли это какие-то проблемы, ну там нагрузка на канал, на модули?
                                                                          0
                                                                          Слабое звено это скорость работы elm327. Wifi версия за секунду может 20 запросов обработать, bluetooth почему-то 10 запрос в секунду успевает.
                                                                          Когда опрашиваешь десяток датчиков, приходится идти на хитрости, что бы создавалось впечатление быстрой работы. На панели приборов я обороты опрашиваю каждый второй раз, и все равно стрелка не плавно передвигается.
                                                                            0
                                                                            Да, про беспроводные интерфейсы я даже не стал упоминать, там понятно есть проблемы, я считаю, что для серьезного применения такую штуку можно и нужно делать проводной (или кастомный адаптер делать, может). А вот если высокая частота опроса будет создавать проблемы для работы машины — это уже серьезно.
                                                                              0
                                                                              Вообще я не дидосю ЭБУ, я отправляю запрос и жду ответ.
                                                                              0
                                                                              Я в программировании, полный профан, но почему бы не использовать вместо WiFi и Bluetooth, соединение через USB порт. А вообще давно просматриваю вашу тему.
                                                                                0
                                                                                С помощью приложения я смотрю на сколько прогрелся двигатель, когда дома пью чай.
                                                                            0

                                                                            Простой вопрос
                                                                            Кто и как будет использовать ваш продукт? И чем он отличается от десятков других?

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

                                                                                Ждём Android версию.
                                                                                Есть ли в планах Android auto/Carplay приложение?
                                                                                Как вот это например?
                                                                                https://github.com/jilleb/mqb-pm

                                                                                  0
                                                                                  Интересный проект. На Carplay как-то мое приложение запускают. Но сам не пробовал. Уверен что полноценную поддержку не сложно добавить.
                                                                                  0

                                                                                  Есть самодельный электромотоцикл с контроллером АРТ 96600 (AE1405, Shanghai APT, Taizhou Quanshun Motor, SIAECOSYS) с CAN.
                                                                                  В нем SAE J1939-21. Описание ("Shanghai Advanced Power Technology") тут: APT CANBUS communication protocol.pdf
                                                                                  https://drive.google.com/file/d/1d39HafzjTfubXrjVYkO4C_sMPDgxwrT8/view


                                                                                  Вопрос: Как CAN-чайнику что-то посмотреть в APT через CAN (температуру, число оборотов — скорость, амперы-вольты и т.п.).
                                                                                  Насколько понял: нужно купить STN1100 или ELM327, подключить его к CANbus АРТ 96600 (три провода) и по блютузу к айфону (надеюсь, что позже и к андроид-смартфону) с загруженным TestFlight (по ссылке). Далее используя TestFlight как терминал посылать в АРТ 96600 "что-то", использую "Разбор UDS пакета в формате Single Frame".
                                                                                  Примерчик бы кодовой комбинации, например, для DC voltage \ Motor current для моего случая.
                                                                                  Или есть более простые способы общения через CAN с АРТ 96600? Производитель (SIAECOSYS \ QSMOTOR) вообще не желает общаться на тему CAN для своего устройства.

                                                                                    0

                                                                                    Надо купить ELM327, подключить его к компу (с нормальным терминалом экспериментировать гораздо удобнее) и проверять…
                                                                                    Кажется мне, необходимо и достаточно раздела Using J1939 в доке. Ну и фильтр настроить надо. Но я, надо сказать, не настоящий сварщик, с кан-шиной общался только БЕЗ этой elm.


                                                                                    А программу для телефона придётся самостоятельно писать. Ничего особо сложного, отправка десятка строчек в порт и парсинг двух ответов с отображением результата, но такой программы точно никто ещё не делал.

                                                                                    0

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

                                                                                      0
                                                                                      А хороша ли «отзывчивость» приложения на быстро изменяющиеся параметры (обороты, расход воздуха, скорость)? Есть видео?
                                                                                        +2

                                                                                          0

                                                                                          Не хватает плавности стрелки тахометра)

                                                                                            0
                                                                                            Согласен
                                                                                        0
                                                                                        Доброго дня! А что насчет круиз-контроля? Есть движок F16D3 и блок Delphi MT80… На него штатно не идет круиз и не прошивается оф.оборудованием…
                                                                                        Возможно ли, теоретически, не разрезая педаль тормоза, через CAN шину сделать управление круизом?)
                                                                                          0
                                                                                          нет, только врезаться в провод педали газа.
                                                                                          0

                                                                                          CAN скоро сдохнет, ethernet наше всё.

                                                                                            0
                                                                                            ждем
                                                                                            –1

                                                                                            Зачем это все?)

                                                                                              0
                                                                                              Сейчас как раз ковыряю протокол TP20. И пока есть один момент которые не вяжется с тем что везде пишут
                                                                                              KWP2000 payload. The first 2 bytes of the first packet sent contain the length of the message.

                                                                                              Лог шины
                                                                                              -
                                                                                              2914.927968 1 200 Tx d 7 1F C0 00 10 00 03 01
                                                                                              2914.934323 1 21F Rx d 7 00 D0 00 03 2E 03 01
                                                                                              2914.939959 1 32E Tx d 6 A0 0F 8A FF 32 FF
                                                                                              2914.945312 1 300 Rx d 6 A1 0F 8A FF 4F FF
                                                                                              2915.097217 1 32E Tx d 5 10 00 02 1A 9B
                                                                                              2915.105583 1 300 Rx d 1 B1
                                                                                              2915.114360 1 300 Rx d 6 10 00 03 7F 1A 11
                                                                                              2915.120126 1 32E Tx d 1 B1
                                                                                              2915.142627 1 32E Tx d 8 21 00 0D 22 F1 87 F1 89
                                                                                              2915.191109 1 32E Tx d 8 22 F1 91 F1 A3 F1 A5 F1
                                                                                              2915.211792 1 32E Tx d 2 13 DF
                                                                                              2915.215202 1 300 Rx d 1 B4
                                                                                              2915.269107 1 300 Rx d 6 11 80 03 7F 22 78 <---------
                                                                                              2915.275091 1 32E Tx d 1 B2
                                                                                              2915.334975 1 300 Rx d 8 22 00 31 62 F1 87 36 4E
                                                                                              2915.374331 1 300 Rx d 8 23 30 39 30 39 39 30 31
                                                                                              2915.382798 1 300 Rx d 8 24 20 20 F1 89 30 32 35
                                                                                              2915.385743 1 300 Rx d 8 25 34 F1 91 36 52 55 39
                                                                                              2915.388641 1 300 Rx d 8 26 33 37 30 38 37 20 20
                                                                                              2915.410020 1 300 Rx d 8 27 F1 A3 48 34 37 F1 A5
                                                                                              2915.422892 1 300 Rx d 8 28 00 06 47 4E 05 FA F1
                                                                                              2915.438445 1 300 Rx d 3 19 DF 00
                                                                                              2915.445937 1 32E Tx d 1 BA


                                                                                              11 80 03 7F 22 78
                                                                                              тут по идее должны быть длинна пакета, но длинна явно 3 байта, а старший бит используется как какой то флаг. Встречал этот флаг только в ответах Pending, что может говорить о том, что возможно это флаг показывает что дальше будет следовать другой пакет. Вопрос в том сколько ещё бит там используется под флаги. Пока сколько не искал найти не удалось. Может кому попадалась эта информация?
                                                                                                0

                                                                                                Размер 03, после него идет негативный (7F) ответ "запрос принят, требуется время для ответа" (код 78).
                                                                                                В принципе в вашем логе если посмотреть другие ответы от ЭБУ, они совпадают с этой схемой:
                                                                                                10 00 02 1A 9B: 10=опкод+счетчик, 00 = некий флаг + 4 бита размер, 02 = длины данных KWP Payload, 1A 9B сами данные
                                                                                                10 00 03 7F 1A 11: 10=опкод+счетчик, 00 = флаги+4 бита размер, 03 = длина данных KWP Payload, 7F 1A 11 — сами данные (негативный ответ: сервис 1A не поддерживается)

                                                                                                  0
                                                                                                  Я вообще про то что везде пишут, что первые два байта первого пакета это его длинна. Однако это явно не так. В остальном пока всё сходится.
                                                                                                0
                                                                                                Отличный проект! Есть два вопроса.
                                                                                                1. А есть ли какие-то opensource библиотеки по работе с подобным железом?
                                                                                                2. Какой сканер ELM327 стоит купить, чтобы можно было максимально полно продиагностировать машину класса второго Гольфа? У меня есть синенький ELM327 с Алиэкспресс, но минимум один раз была ошибка (желтый индикатор подушек безопасности) которую я не мог сбросить.
                                                                                                  0
                                                                                                  Я собираюсь сделать opensource проект на основе полученных данных, но по времени прогноз не дам. Готовых библиотек я не видел.
                                                                                                  С elm327 как повезет, китайцы делают такие экземпляры в которых может работать только 1-2 функции из десятка. Я писал об этом здесь:
                                                                                                  www.drive2.ru/l/535143030550692285

                                                                                                  Хорошая статья от разработчика CarScanner:
                                                                                                  www.carscanner.info/ru/choosing-obdii-adapter

                                                                                                  Я использую Viecar BLE 4.0, он точно работает

                                                                                                Only users with full accounts can post comments. Log in, please.