В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.
В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).
Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.
В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.
- CAN сниффер из Arduino Uno
- Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
- Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
- Софт панели приборов на Python и Kivy (UI framework)
- Видео работы цифровой панели приборов на базе Raspberry Pi
Под катом полная реализация проекта, будет интересно!
Водительская дверь открыта
- CAN сниффер из Arduino Uno
- Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
- Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
- Софт панели приборов на Python и Kivy (UI framework)
- Видео работы цифровой панели приборов на базе Raspberry Pi
- Приложение на телефон Виртуальная панель приборов
- iek заглушка на шину
- Хакаем CAN шину авто для голосового управления
- Разработка CAN шилда для Raspberry Pi
- Установка ПО для работы с CAN шиной
- Подключение к CAN шине авто
- Голосовое управление с помощью Homekit и Siri
- 💡 Видео
CAN сниффер из Arduino Uno
Чтобы послушать, что отправляет VCDS в CAN шину я собрал сниффер на макетке из Arduino и модуля MCP2515 TJA1050 Niren.
Схема подключения следующая:
Для прослушивания трафика использовал анализатор CanHackerV2 и прошивку arduino-canhacker для Arduino, которая реализует API совместимое с этой программой. Прошивка в гите https://github.com/autowp/arduino-canhacker.
CanHackerV2 позволяет смотреть пролетающий трафик, записывать и проигрывать команды с заданным интервалом, что очень сильно помогает в анализе данных.
Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
Описание VCDS с официального сайта ru.ross-tech.com:
Программно-аппаратный сканер VCDS предназначен для диагностики электронных систем управления, устанавливаемых на автомобилях группы VAG. Доступ ко всем системам: двигатель, ACP, АБС, климат-контроль, кузовая электроника и т.п., считывание и стирание кодов неисправностей, вывод текущих параметров, активация, базовые установки, адаптация, кодирование и т.п.
Подключив сниффер к линиям CAN_L и CAN_H в диагностическом шнурке я смог увидеть какие запросы делает VCDS и что отвечает авто.
Особенность авто группы VAG в том, что OBD2 разъем подключен к CAN шине через шлюз и шлюз не пропускает весь гуляющий по сети трафик, т.е. подключившись в OBD2 разъем сниффером вы ничего не увидите. Чтобы получить данные в OBD2 разъёме нужно отправлять шлюзу специальные запросы. Эти запросы и ответы видно при прослушивании трафика от VCDS. Например вот так можно получить пробег.
Читайте также: Зимние шины изменения в пдд
В VCDS можно получить информацию почти с любого датчика в машине. Меня в первую очередь интересовала информация, которой вообще нет на моей приборке, это:
- температура масла
- какая именно дверь открыта
Скорость, обороты, температура ОЖ, пробег, расход, место в баке и другие запросы я тоже получил, для справки размещу.
Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
В качестве аппаратной части я выбрал Raspberry Pi. Была идея использовать Android планшет, но показалось, что на Raspberry Pi будет проще и быстрее. В итоге докупил официальный 7″ дисплей, и сделал CAN шилд из модуля TJA1050 Niren.
OBD2 штекер использовал от старого ELM327 адаптера.
Используются контакты: CAN_L, CAN_H, +12, GND.
Тесты в машине прошли успешно и теперь нужно было все собрать. Плату дисплея, Raspberry Pi и блок питания разместил на куске черного пластика, очень удачно подобрал пластмассовые втулки, с ними ничего не болтается и надежно закреплено.
Местом установки выбрал бардачок на торпедо, которым я не пользуюсь. По примеркам в него как раз помещается весь бутерброд.
Напильником довел лист черного пластика до размера крышки бардачка, к нему прикрепил бутерброд и дисплей. Для прототипа сойдет, а 3D модель с крышкой для дисплея и всеми нужными крепежами уже в разработке.
Софт панели приборов на Python и Kivy (UI framework)
Параллельно со сборкой самой панели приборов я вел разработку приложения для отображения информации с датчиков. В самом начале я не планировал какой либо дизайн.
Первая версия панели приборов
По мере разработки решил визуализировать данные более наглядно. Хотел гоночный дизайн, а получилось, что-то в стиле 80-х.
Вторая версия панели приборов
Продолжив поиски более современного дизайна я обратил внимание какие цифровые приборки делают автопроизводители и постарался сделать что-то похожее.
Третья версия панели приборов
Ранее, я никогда не разрабатывал графические приложения под Linux поэтому не знал с чего начать. Вариант на вебе простой в разработке, но слишком много лишних компонентов: иксы, браузер, nodejs, хотелось быстрой загрузки. Попробовав Qt PySide2 я понял, что это займет у меня много времени, т.к. мало опыта. Остановился на Kivy — графический фреймворк для Python, простой в понимании с полной библиотекой графических элементов и дающий возможность быстро создать мобильный интерфейс.
Kivy позволяет запускать приложение без Иксов, прямо из консоли, в качестве рендера используется OpenGL. Благодаря этому полная загрузка системы может происходить за 10 секунд.
Алгоритм работы следующий, используется 3 потока:
- В главном потоке работаем с графическими элементы (спидометр, тахометр, часы, температуры и др) на экране
- Во втором потоке каждые 5 мс делаем опрос следующего датчика
- В третьем потоке слушаем CAN шину, получив ответ парсим его и обновляем соответствующий графический элемент
Читайте также: Размер шин в чем разница
Работает стабильно, самый долгий процесс в разработке был связан с рисованием дизайна. На данный момент обкатываю решение и потихоньку пишу мобильное приложение для iOS, чтобы любой мог попробовать цифровую панель приборов.
Проект цифровой панель приборов открытый. Рад буду предложениям и комментариям!
Видео работы цифровой панели приборов на базе Raspberry Pi
Приложение на телефон Виртуальная панель приборов
Для телефона написал приложение — виртуальная панель приборов, данные от машины передаются через ELM327 Wi-Fi адаптер. Адаптер подключается в OBD2 разъем, делает запросы по CAN шине и возвращается ответы в приложение по Wi-Fi.
Приложение VAG Virtual Cockpit уже в AppStore. Пока, что только под iPhone/iPad, но Android версия планируется. Приложение решил сделать платным с минимальной символической стоимостью.
Если есть желание поддержать проект, то вот ссылка на приложение, принимаю любые замечания и предложения!
VAG Virtual Cockpit
Видео:Защита CAN шины автомобиляСкачать
iek заглушка на шину
Заглушка на соединительную шину 1-фазную (50шт)
Заглушка на соединительную шину 3-х фазную (50 штук)
Заглушка для шины PIN 1Р 100А шаг 27 мм
Заглушка для шины PIN 3P 63А IEK
Заглушка для шины PIN 1P 63А IEK
Заглушка для шины PIN 3Р 100А шаг 27 мм
Заглушка для шины PIN 4P 63А IEK
Заглушка для шины PIN 2P 63А IEK
Заглушка для шины PIN 2Р 100А шаг 27мм
Заглушка для шины PIN 4Р 100А шаг 27мм
Заглушка на соединительную шину 2-фазную (50шт)
Шинопровод осветительный однофазный 1,5м белый в комплекте c токовводом и заглушкой IEK
Компания ЭТМ — член ассоциации «Честная позиция».
Член ассоциации независимых европейских дистрибьюторов IDEE . Входит в Реестр надежных поставщиков
Видео:CAN шина👏 Как это работаетСкачать
Хакаем CAN шину авто для голосового управления
Современный автомобиль это не только средство передвижения, но и продвинутый гаджет с мультимедийными функциями и электронной системой управления агрегатами и кучей датчиков. Многие автопроизводители предлагают функции ассистентов движения, помощников при парковке, мониторинга и управления авто с телефона. Это возможно благодаря использованию в авто CAN шины к которой подключены все системы: двигатель, тормозная система, руль, мультимедиа, климат и др.
Мой автомобиль Skoda Octavia 2011 г. в. не предлагает возможностей управления с телефона, поэтому я решил исправить этот недостаток, а заодно и добавить функцию голосового управления. В качестве шлюза между CAN шиной и телефоном я использую Raspberry Pi с шилдом CAN BUS и WiFi роутер TP-Link. Протокол общения агрегатов авто закрытый, и на все мои письма предоставить документацию протокола Volkswagen отвечал отказом. Поэтому единственный способ узнать, как общаются устройства в авто и научиться ими управлять является реверс-инжиниринг протокола CAN шины VW.
- Разработка CAN шилда для Raspberry Pi
- Установка ПО для работы с CAN шиной
- Подключение к CAN шине авто
- Разработка сниффера и изучение протокола CAN шины
- Разработка приложения для телефона
- Голосовое управление с помощью Homekit и Siri
Читайте также: Как выбрать зимние шины для ниссан ноут
В конце видео голосового управления стеклоподъемником.
Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
Разработка CAN шилда для Raspberry Pi
Схему шилда взял здесь lnxpps.de/rpie, там же и описание выводов, для общения с CAN используются 2 микросхемы MCP2515 и MCP2551. К шилду подключаются 2 провода CAN-High и CAN-Low. В SprintLayout 6 развел плату, может кому пригодится CANBoardRPi.lay (на заглавном фото прототип шилда на макетке).
Видео:поиск нерабочей can шины, часть дваСкачать
Установка ПО для работы с CAN шиной
На Raspbian 2-x годичной давность мне потребовалось пропатчить bcm2708.c, чтобы добавить поддержку CAN (возможно сейчас это не требуется). Для работы с CAN шиной нужно установить пакет утилит can-utils с github.com/linux-can/can-utils, после этого подгрузить модули и поднять can интерфейс:
Проверяем, что интерфейс CAN поднялся командой ifconfig:
Проверить, что все работает можно отправив команду и получив ее.
В одном терминале слушаем:
В другом терминале отправляем:
Более подробный процесс установки описан здесь lnxpps.de/rpie.
Видео:Подробно про CAN шинуСкачать
Подключение к CAN шине авто
Немного изучив открытую документацию на CAN шину VW я выяснил, что у меня используется 2 шины.
Шина CAN силового агрегата, передающая данные со скоростью 500 кбит/с, связывает все обслуживающие этот агрегат блоки управления.
Например, к шине CAN силового агрегата могут быть подключены следующие приборы:
- блок управления двигателем,
- блок управления АБС,
- блок управления системой курсовой стабилизации,
- блок управления коробкой передач,
- блок управления подушками безопасности,
- комбинация приборов.
Шина CAN системы «Комфорт» и информационнокомандной системы, позволяющая передавать данные со скоростью 100 кбит/с между обслуживающими эти системы блоками управления.
Например, к шине CAN системы «Комфорт» и информационно Исходники приложения управления авто для iOS
Есть способ не писать свое приложение для телефона, а воспользоваться готовым из мира умных домов, всего лишь потребуется установиться на Raspberry Pi систему автоматизации Z-Way командой:
После этого добавляем наши CAN устройства в Z-Way систему автоматизации
И управляем стеклоподъемником как обычным выключателем:
Мобильный приложения для Z-Way: ZWay Home Control и ZWay Control.
Видео:Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать
Голосовое управление с помощью Homekit и Siri
В одной из своих статей я описывал процесс установки Homebridge на Raspberry Pi для голосового управления домашней системой автоматизации Z-Way. После установки Homebridge вы получите возможность голосового управления с помощью Siri. Уверен, что для Android есть множество приложений позволяющих голосом отправлять HTTP запросы для управления Z-Way.
Видео голосовогу управления стеклоподъемником прилагаю.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
💡 Видео
Как проверить CAN шину Используем симулятор ElectudeСкачать
Экспресс диагностика CAN шины на автомобиле. №21Скачать
CAN-шина, простой поиск данных в кан шине автомобиля. Как расшифровать и найти данные в кан шине?Скачать
CAN шина на осциллографе FINIRSI ADS1013DСкачать
Демонстрация управления системой с использованием шины CANСкачать
Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать
Такого от KIA я не ожидал. CAN шину затянуло в вакуум ч.1Скачать
Как управлять автомобилем через CAN-шину?Скачать
Универсальная плата CAN шиныСкачать
Мерседес разьем CAN шины, как выглядит и где?Скачать
тестирование разветвителя CAN-шиныСкачать
Компьютерная диагностика авто. K-линия и CAN шинаСкачать
STM32 CAN шина. Часть 1. Настройка и странности HALСкачать
LIN шина - пример работы. LIN bus exampleСкачать