Шина can в круиз контроле

Видео:лекция 403 CAN шина- введениеСкачать

лекция 403  CAN шина- введение

Использование шины CAN: как программно управлять автомобилем

Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.

Шина can в круиз контроле

Автор: Ariel Nuñez
Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.
Шина can в круиз контроле
Рисунок 1: Как при помощи приложения управлять ключевыми функциями автомобиля?
Недавно я вместе со своими друзьями из компании Voyage работал над реализацией программного управления системой кондиционирования в Ford Fusion. На данный момент Voyage занимается разработкой бюджетных самоуправляемых автомобилей. Конечная цель: чтобы каждый смог вызвать автомобиль к своей входной двери и безопасно путешествовать туда, куда вздумается. В компании Voyage считают крайне важной возможностью предоставление доступа к ключевым функциям автомобиля с заднего кресла, поскольку не за горами тот день, когда работа водителя будет полностью автоматизирована.
Зачем нужна шина CAN
Современные автомобили используют множество систем управления, которые во многих случаях функционируют подобно микро-службам в веб-разработке. Например, подушки безопасности, тормозные системы, регулирование скорости движения (круиз контроль), электроусилитель руля, аудиосистемы, управление окнами и дверями, подстройка стекл, системы зарядки для электрических автомобилей и т. д. Эти системы должны уметь осуществлять коммуникацию и считывать параметры друг друга. В 1983 в компании Bosch началась разработка шины CAN (Controller Area Network; Локальная сеть контролеров) для решения этой сложной задачи.
Можно сказать, что шина CAN представляет собой простую сеть, где каждая система автомобиля может считывать и отсылать команды. Эта шина интегрируется все сложные компоненты элегантным образом, что дает возможность реализовать всеми любимые функции автомобиля, которыми мы пользуемся.
Шина can в круиз контроле
Рисунок 2: Впервые шина CAN стала использоваться в 1988 году в БМВ 8 серии
Самоуправляемые автомобили и шина CAN
Поскольку интерес к разработке самоуправляемых автомобилей серьезно вырос, соответственно, словосочетание «шина CAN» также становится популярным. Почему? Большинство компаний, создающих самоуправляемых автомобилей, не занимаются производством с нуля, а пытаются научиться программно управлять машинами после выхода с конвейера фабрики.
Понимание внутреннего устройства шины CAN, используемой в автомобиле, позволяет инженеру формировать команды при помощи программного обеспечения. Самые нужные команды, как вы можете догадаться, связаны с управлением рулем, ускорением и торможением.

Шина can в круиз контроле

Рисунок 3: Введение в LIDAR (ключевой сенсор самоуправляемого автомобиля)
При помощи сенсоров наподобие LIDAR (light detecting and ranging; оптическая локационная система) машина способна смотреть на мир как суперчеловек. Затем компьютер внутри автомобиля на базе полученной информации принимает решения и посылается команды в шину CAN для управления рулем, ускорение и торможением.
Не каждый автомобиль способен стать самоуправляемым. И по некоторым причинам компания Voyage выбрала модель Ford Fusion (подробнее о причинах можно почитать в этой статье).
Исследование шины CAN в Ford Fusion
Перед началом исследования систем кондиционирования воздуха в Ford Fusion я открыл мою любимую книгу The Car Hacker’s Handbook. Перед погружением в суть вопроса заглянем в Главу 2, где описываются три важные концепции: протоколы шины, шина CAN и CAN-фреймы.
Шина CAN
Шина CAN начала использоваться в американских легковых машинах и небольших грузовиках с 1994 года и с 2008 года в обязательном порядке (в европейских автомобилях с 2001 года). В этой шине предусмотрено два провода: CAN high (CANH) и CAN low (CANL). Шина CAN использует дифференциальный сигналинг, суть которого заключается в том, что при поступлении сигнала на одном проводе вольтаж повышается, а на другом понижается на одну и ту же величину. Дифференциальный сигналинг используется в средах, которые должны быть малочувствительны к шуму, например, в автомобильных системах или при производстве.

Рисунок 4: Необработанный сигнал шины CAN, отображаемый на осциллографе
С другой стороны, пакеты, передаваемые по шине CAN, не стандартизированы. Каждый пакет содержит 4 ключевых элемента:

  • АрбитражныйID (ArbitrationID) представляет собой широковещательно сообщение, идентифицирующее устройство, которое пытается начать коммуникацию. Любое устройство может отсылать несколько арбитражных ID. Если в единицу времени по шине отсылаются два CAN-пакета, пропускается тот, у которого ниже арбитражный ID.
  • Расширение идентификатора (Identifierextension;IDE) – в случае с шиной CAN стандартной конфигурации этот бит всегда равен 0.
  • Код длины данных (Datalengthcode;DLC) определяет размер данных, который варьируется от 0 до 8 байт.
  • Данные. Максимальный размер данных, переносимых стандартной шиной CAN, может быть до 8 байт. В некоторых системах происходит принудительное дополнение пакета до размера 8 байт.

Читайте также: Шины нокиан нордман отличие от хакка

Шина can в круиз контроле
Рисунок 5: Формат стандартных CAN-пакетов
CAN фреймы
Для того чтобы включить / выключить климатическую систему мы должны найти нужную шину CAN (в автомобиле таких шин несколько). В Ford Fusion есть как минимум 4 задокументированные шины. 3 шины работают на высокой скорости 500 кбит/с (High Speed CAN; HS) и 1 шина на средней скорости 125 кбит/с (Medium Speed CAN; MS).
К порту OBD-II подключено две высокоскоростные шины HS1 и HS2, однако там стоит защита, которая не позволяет подделывать команды. Вместе с Аланом из компании Voyage мы вынули порт OBD-II и нашли места соединения со всеми шинами (HS1, HS2, HS3 и MS). На задней стенке OBD-II все шины подключались к модулю шлюза (Gateway Module).
Шина can в круиз контроле
Рисунок 6: Homer – первое самоуправляемое такси от компании Voyage
Поскольку климатическая система управляется через медиа-интерфейс (SYNC), нам придется отсылать команды через среднескоростную шину (MS).
Чтение и запись CAN-пакетов осуществляется при помощи драйвера и сетевого стека SocketCAN, созданного исследовательским отделом компании Volkswagen для ядра в Linux.
Мы будем подсоединять три провода от машины (GND, MSCANH, MSCANL) к переходнику Kvaser Leaf Light HSv2 (можно купить за 300$ на Амазоне) или к CANable (продается за 25$ на Tindie) и загружать на компьютере со свежим Linux-ядром шину CAN в качестве сетевого устройства.

После загрузки запускаем команду candump can0 и начинаем отслеживать трафик:

Несмотря на то, что вышеуказанная информация эквивалентна амплитуде звукового сигнала, довольно трудно понять, что происходит, и обнаружить какие-либо закономерности. Нам нужно нечто похожее на частотный анализатор, и такой эквивалент есть в виде утилиты cansniffer. Cansniffer показывает список идентификаторов и позволяет отслеживать изменения в секции данных внутри CAN-фрейма. По мере того как мы будем изучать определенные идентификаторы, мы можем установить фильтр нужных ID, которые имеют отношение к нашей задаче.
На рисунке ниже показан пример информации, снятой при помощи cansniffer с шины MS. Мы отфильтровали все, что имеет отношение к идентификаторам 355, 356 и 358. После нажатия и отпускания кнопок, связанных с подстройкой температуры, в самом конце появляется значение 001C00000000.

Рисунок 7: Информация с шины MS, снятая при помощи утилиты cansniffer
Далее необходимо объединить функционал для управления климатической системой с компьютером, работающим внутри автомобиля. Компьютер работает на операционной системе ROS (Robot Operating System; Операционная система для роботов). Поскольку мы используем SocketCAN, то модуль socketcan_bridge серьезно упрощает задачу по преобразованию CAN-фрейма в блок информации, понимаемый операционной системой ROS.
Ниже показан пример алгоритма декодирования:

Читайте также: Фольксваген венто давление в шинах

Полученные данные хранятся в CelsiusReport.msg:

После нажатия всех нужных кнопок в машине, у нас появляется следующий список:

Затем эти строки отсылаются на узел под управлением операционной системы ROS и далее происходит трансляция в коды, понимаемые автомобилем:

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

Рисунок 8: Удаленное управление климатической системой автомобиля
Это лишь небольшой шаг при создании самоуправляемого такси вместе со специалистами компании Voyage. Я получил массу положительных эмоций во время работы над этим проектом. Если вы тоже интересуетесь этой темой, можете ознакомиться со списком вакансий в компании Voyage.

Видео:Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать

Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.

Как я добавил функции автомобилю по шине CAN, не умея программировать

Шина can в круиз контроле

Цель этой статьи — рассказать о моём опыте модификации автомобиля и экспериментах с шиной CAN.

Видео:CAN шина👏 Как это работаетСкачать

CAN шина👏 Как это работает

С чего всё началось

Сначала я решил добавить фронтальную камеру в свой 2017 Chevrolet Cruze. Поскольку у автомобиля уже есть заводская камера заднего вида, то на высоком уровне нужно было выяснить две вещи:

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

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

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

Видео:Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus networkСкачать

Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus network

Шина CAN

У Chevrolet две разные шины данных. Первая — это стандартная CAN, быстрая (500 Кбит/с) и надёжная, она используется для критических данных. Вторая — то, что GM называет LAN (GMLAN), более старая и медленная шина (33,3 Кбит/с), которая используется для данных, не связанных с безопасностью.

Мне нужен был способ прослушивать трафик по CAN, то есть снифер. Для этой цели невероятно полезно устройство PCAN.

Шина can в круиз контроле

Peak Can

Peak Can (PCAN) представляет собой USB-устройство, способное перехватывать и передавать сообщения. Благодаря программному обеспечению Pcan View можно начинать работу без особого обучения.

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

Самая простая точка доступа — разъём OBD2. Я подключил Peak Can к шине GMLAN, запустил программное обеспечение — и сразу началось прослушивание трафика.

Видео:Кан шина, что это? Поймет школьник! принцип работыСкачать

Кан шина, что это? Поймет школьник! принцип работы

Интеграция

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

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

Передача сообщения через PCAN

Впрочем, я не планировал постоянно ездить с ноутбуком. Нужен был способ автоматизировать эти функции — и здесь пригодилась Arduino. Возможность напрямую получать питание 12V в сочетании с большим количеством ресурсов и поддержки в интернете сделала этот выбор очевидным.

Читайте также: Шина 205 75 r16c forward professional

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

Шина can в круиз контроле

Модуль mcp2515 (сверху), Arduino Uno (посередине), модуль реле (снизу)

После добавления и настройки соответствующих библиотек Arduino установил связь с автомобилем.

Прослушивание трафика через Arduino

Поскольку я уже знал, что могу запустить дисплей, то начал думать о том, КАК это сделать. Первоначальная идея состояла в том, чтобы установить на панели специальную кнопку мгновенного вызова, но я начал думать: «А что ЕЩЁ в сети можно использовать в качестве триггера?»

В ходе экспериментов я обнаружил, что по шине GMLAN также передаются сообщения с ID, соответствующим кнопке «Отмена круиз-контроля». Это было идеально, потому что круиз-контроль включается на скоростях более 65 км/ч, когда я буду использовать переднюю камеру, а на скоростях ниже 15 км/ч будет включаться камера заднего вида, чтобы помочь с парковкой, так что они никогда не будут перекрываться. После написания некоторого кода я смог заставить Arduino распознать, когда нажимается кнопка отмены круиз-контроля.

Распознавание однократного нажатия кнопки

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

После долгого уикенда изучения функции millis и отладки кода я успешно запрограммировал распознавание двойного нажатия.

Распознавание двойного нажатия

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

Видео:Экспресс диагностика CAN шины на автомобиле. №21Скачать

Экспресс диагностика CAN шины на автомобиле. №21

Функциональность

Теперь у меня была возможность включать и выключать дисплей, но оставалась одна проблема — что насчёт камеры заднего вида? Мне нужно было, чтобы они с фронтальной камерой работали вместе, словно их так настроили на заводе.

На блок-схеме я изобразил, как я это представляю.

Шина can в круиз контроле

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

  • Модуль передней камеры: водитель включил или выключил его?
  • Дисплей камеры: изображение на дисплее включено или выключено?
  • Задний ход: автомобиль в реверсе или нет?

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

В конце концов, я добился успеха!

Теперь я смог реализовать операционную логику, которая контролирует реле.

На протяжении всего процесса я всё больше узнавал об Arduino и заметил, что версия Nano способна делать всё, что нужно, при этом у неё меньший размер и более низкая цена. Она идеально подходит для постоянной установки в автомобиль. Я разработал модель и распечатал на 3D-принтере корпус для размещения компонентов в качестве компактного блока для установки.

Видео:Подробно про CAN шинуСкачать

Подробно про CAN шину

Всё вместе

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

Включение/выключение режима парковки, включение/выключение фронтальной камеры, автоматическое переключение на камеру заднего вида и автоматическое переключение обратно

В целом, этот опыт меня многому научил и открыл глаза на возможности интеграции непосредственно с шиной CAN. Довольно удивительно, чего можно достичь соединением по двум проводам.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле

    📹 Видео

    Шина CAN. Часть 1. Разбираемся как работает CAN bus, разберем кадр данных до "костей".Скачать

    Шина CAN. Часть 1. Разбираемся как работает CAN bus, разберем кадр данных до "костей".

    поиск нерабочей can шины, часть дваСкачать

    поиск нерабочей can шины, часть два

    MCP2515, контроллер CAN шины с интерфейсом SPIСкачать

    MCP2515, контроллер CAN шины с интерфейсом SPI

    Круиз контроль своими руками за 32$ на любую машинуСкачать

    Круиз контроль своими руками за 32$ на любую машину

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?

    Для чего служит CAN-шина в сигнализацииСкачать

    Для чего служит CAN-шина в сигнализации

    КАК УБРАТЬ ЛЮБУЮ ЦАРАПИНУ НА ПЛАСТИКЕ ЗА 5 МИНУТ?Скачать

    КАК УБРАТЬ ЛЮБУЮ ЦАРАПИНУ НА ПЛАСТИКЕ ЗА 5 МИНУТ?

    Can Bus - что это такое ? Зачем нужен ? Как настроить ?Скачать

    Can Bus - что это такое ? Зачем нужен ? Как настроить ?

    Круиз-контроль в автомобиле. Что это? Как пользоваться?Скачать

    Круиз-контроль в автомобиле. Что это? Как пользоваться?

    КОГДА НЕЛЬЗЯ использовать круиз-контрольСкачать

    КОГДА НЕЛЬЗЯ использовать круиз-контроль

    Круиз контроль прира 2Скачать

    Круиз контроль прира 2

    Как пользоваться круиз-контролем #37pro #строительство #лайфхаки #тойота #советы #круизконтрольСкачать

    Как пользоваться круиз-контролем  #37pro #строительство #лайфхаки #тойота #советы #круизконтроль
Поделиться или сохранить к себе:
Технарь знаток