Взломать Can-Шину Автомобиля. Бортовой Компьютер Диагностики Vag.



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

С большим энтузиазмом я исследую протоколы CAN-шины и разрабатываю устройства, взаимодействующие с автомобилем.

у меня уже есть голосовое управление центральным замком , виртуальная панель управления и даже мобильное приложение для моей Шкоды Октавии А5. Теперь я решил разработать диагностический бортовой компьютер для автомобилей группы VAG (VW, Audi, Skoda, Seat).

Мои технические требования были: OLED-дисплей, простота установки и подключения, множество диагностических параметров.

В качестве компонентной базы я выбрал:

  • STM32F103C8T6 — дешевый MCU с поддержкой CAN шины на макетной плате
  • 2,8" OLED 256*64 — дисплей с достаточным количеством точек на драйвере SSD1322
  • SN65HVD230DR - CAN-трансивер с питанием 3,3 В
  • Мини-360 - импульсный регулируемый понижающий стабилизатор напряжения постоянного тока на микросхеме МП2307


Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Процесс разработки был разделен на 3 этапа и каждый этап приносил мне массу нового опыта и удовольствия:

▍ Проектирование печатной платы в Протеусе

Первый рабочий вариант был собран на макетной плате за один вечер, а еще сутки понадобилось, чтобы выяснить, что для работы трансивера необходима перемычка (Rs - GND), которая включает ВЫСОКОСКОРОСТНОЙ РЕЖИМ:

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

На всякий случай оставлю здесь свои заметки от техническая спецификация на SN65HVD230DR. Убедившись, что на макетке все работает, я перешел к разработке печатной платы в Протеусе 8. Можно было бы перенести все компоненты дисплея и Blue Pill на одну плату, но паять было лень да, для первой версии сойдет!

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Изготовление печатной платы я заказал в компании Seeedstudio, потому что она была дешевой и отличного качества.

Помимо пайки компонентов, вам придется еще и доработать их напильником, вот так и надо.



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Конечно, в первом варианте сложно все продумать, но не предусмотреть кнопку ВЫКЛ, для этого нужен талант. Устройство подключается к разъему OBD2, на котором всегда присутствует напряжение 12 В.

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

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



▍ Разработка прошивки для STM32

Это мой первый опыт работы с STM32, но никаких сложностей я пока не испытывал.

Разрабатываю в STM32CubeIDE, решил писать код на C и так как я новичок в этом деле, то не отказался от HAL, хотя в процессе разработки понял его избыточность.

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



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Самое главное в бортовом компьютере – отображаемые диагностические параметры.

Для компьютерной диагностики своей Шкоды Октавии я использую автомобильный сканер VCDS.

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Если послушать сниффером, как VCDS общается с автомобилем по CAN-шине, то можно воспроизвести протокол в моем бортовом компьютере.

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



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

В автомобилях группы VAG, выпущенных с 2004 по 2012 годы, для диагностики двигателя и коробки передач используется либо протокол TP2.0 (KWP2000), либо UDS; на машинах после 2012 года только УДС.

UDS — очень удобный для программиста протокол, длина кадра CAN всегда 8 байт, запрос состоит из одного кадра и ответа, чаще всего тоже из одного кадра.

А в TP2.0 используется несколько проверок целостности пакетов, но TP2.0 относится к группе параметров и за один запрос можно получить до 4-х разных параметров.



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

На экране бортового компьютера отображается 4 параметра, это оптимальное количество по нескольким причинам: а) полная группа TP2.0; б) видны пропуски зажигания сразу всех 4-х цилиндров; в) элементы оптимального размера.

Я еще не создал точный список параметров, которые будет показывать устройство, но есть параметры, которые очень важны:

  • Уровень моторного масла
  • Наддув турбины (реальный)
  • Наддув турбины (ожидается)
  • Пропуски зажигания в цилиндрах
  • Углы отката зажигания в цилиндрах
  • Температура коробки передач DSG/AISIN
Таким образом, бортовой компьютер будет иметь десяток экранов с разными параметрами; переключение между экранами осуществляется с помощью кнопок вперед/назад.

▍ Разработка акрилового кузова

После общения с сообществом автолюбителей на сайте Drive2.ru было предложено сделать простое устройство, тогда любой желающий мог бы установить его где угодно, например, в воздуховод. Но я все же решил сделать корпус; мне кажется, не каждый захочет видоизменить салон своей машины:

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

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

Мне не понравился корпус из ABS, напечатанный на 3D-принтере.

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

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Корпус легко разбирается, поэтому при желании можно снять плату с дисплеем и установить ее в воздуховод. В комплекте с бортовым компьютером идет кабель для подключения к разъему OBD2. Заказал на Али компактную заглушку OBD2, но она оказалась не очень удобной.

Отверстие для кабеля находится сбоку вилки, из-за чего ее неудобно вытаскивать из разъема, но я доработал корпус вилки напильником, чтобы кабель выходил сзади и получил то, что нужно :

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Кабель подключается к устройству с помощью разъема XH2.54. Сначала я припаял контакты к проводам, но после нескольких дней тестирования они отвалились.

Потом я обнаружил кримпер с губками SN-2549 (SN28B+SN01BM).

Использование этого инструмента принесло массу положительных эмоций, как легко и красиво можно сделать разъемы! Теперь не понимаю, как я раньше без него жил, это супер удобная и супер нужная вещь для электронщика:

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Как говорит Джордж из Свинки Пеппы: Динозавррррррр!

▍ Заключение

Разработка еще продолжается, но 80% работы уже сделано.

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

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

Прилагаю видео, демонстрирующее работу бортового компьютера диагностики VAG: ОБНОВЛЕНО 19.12.2021 В статье я задавался вопросом, как лучше организовать функцию включения/выключения.

Рассматривал 3 варианта: физический тумблер, переход в сон при отключении CAN шины, переход в сон при падении напряжения ниже 12,5В.

Но в комментариях мне подсказали, что на ВАГах в OBD2 разъем на контакт №1 подключен к «клемме 15», которая обеспечивает питание только при работающем автомобиле.

В разъеме OBD2 первый контакт является OEM-контактом и каждый производитель устанавливает свою функцию.

Для питания бортового компьютера я буду использовать клемму 15.

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Скриншот из Википедия ОБНОВЛЕНО 13.01.2022 Настал момент, когда прошивка уже не умещалась в 64Кб.

И я решил узнать, есть ли у моего чипа дополнительная недокументированная FLASH память.

В интернете пишут, что изначально чип идет со 128Кб, а в результате отбраковки получается 64Кб.

Для проверки запускаем STM32CubeProgrammer и пробуем сначала записать, а потом прочитать последний байт размером 128Кб по адресу 0x801FFF0. Как вы можете видеть на скриншоте, мне это удалось и я могу попробовать использовать дополнительную FLASH-память.

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



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

STM32CubeIDE не знает, что можно использовать FLASH-память объемом 128Кб и при попытке заливки жалуется на чрезмерный размер прошивки.

При сборке проекта в журнале заметил файл конфигурации STM32F103C8TX_FLASH.ld .

В нем заменил 64К на 128К и о чудо! Прошивка залилась и даже работает.

Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.



Взломать CAN-шину автомобиля.
</p><p>
 Бортовой компьютер диагностики VAG.

Теги: #Программирование микроконтроллеров #stm32 #Сделай сам или Сделай сам #Гаджеты #Автомобильные гаджеты #ruvds_articles #ruvds_articles #oled display #can bus #stm32f103c8t6 #stm32f103 #vag #skoda #volkswagen #audi #oled #seat #smart car

Вместе с данным постом часто просматривают: