что такое obd порт
Что можно сделать через разъем OBD в автомобиле
Ни для кого не секрет, что в современных автомобилях все системы под завязку забиты различной электроникой, даже простой стеклоподъемник имеет собственный микроконтроллер и адрес в общей сети. Мне, как интересующемуся владельцу, стало интересно, что же можно сделать имея просто доступ к разъему OBD и ничего более.
Все описанное в статье относится к автомобилю 2008 года (Mitsubishi Lancer), но как показала практика, спустя 10 лет у производителя ничего не изменилось и все функции продолжают использоваться и работать на современных авто.
Строение сети в автомобиле изображено на картинке:
В машине имеются 3 CAN шины (скоростная шина двигателя 500kbps, низкоскоростная салонная 83.3 kbps, диагностическая) и одна шина LIN. Связующим звеном между ними является блок ETACS (Electronic Total Automobile Control System), который выступает «шлюзом» и пересылает сообщения из одной шины в другую, по определенным правилам, а также занимается обработкой некоторых из них. Что же можно сделать с CAN шиной? Например, пообщаться с блоками, а может и что-нибудь изменить. Чтобы начать диалог с любым блоком необходимо знать его адрес, а также поддерживаемые функции (PID), которые он сможет обработать и дать ответ.
В открытом доступе лежит ПО для дилерских центров под названием MUT III. Изучив базы данных из него, можно найти всю интересующую нас информацию.
О адресах (запрос-ответ) в CAN сети:
PID’ы запросов, полные расшифровки ответов от всех блоков, включая положение байт в ответе (если за один кадр отправляются несколько значений) и множители с единицами измерений:
Например, хотим мы узнать угол поворота рулевого колеса. Для этого отправим в блок управления ESP команду 2102. В ответ прилетит сообщение 6102 FFEA000008FFF302
Взглянув в таблицу, узнаем, что нужны байты 2 и 3.
Таким образом можно запросить из блоков управления очень много информации, вплоть до того, сколько часов играло радио и сколько дисков было загружено в магнитолу, а также запускать диагностические проверки на всех узлах (можно на приборной панели включать разные лампочки и дергать стрелки, например).
Хорошо, все что хотели мы узнали, а какая от этого польза? Вот если что-нибудь изменить/включить/отключить…
Простой пример. В блоке управления автоматической коробкой передач есть программный счетчик уровня старения масла и при накоплении определенного порогового значения на экране бк появляется сообщение о том, что необходимо произвести обслуживание трансмиссии. Масло поменяли, а сообщение продолжает отображаться на экране, ведь счетчик никто не сбросил и сбросить может только дилерский сканер MUT-III (который стоит около 1000$, не каждый может себе такое позволить) и некоторые программы (тоже не бесплатные). Все в тех же таблицах можно найти команду под говорящим само за себя названием CLEAR_CVT_oil_degradation_level_Start. Можно злобно посмеяться в сторону ОД и самому сбросить этот злополучный счетчик. Отправляем команду 3103 в блок CVT и… получаем в ответ 7F3133.
Небольшое отступление. Почти во всех автомобилях для проведения диагностики и обслуживания используется механизм UDS (он же ISO 14229).
Он упрощает жизнь разработчикам автомобильных диагностических сканеров и является унифицированным для всех автопроизводителей (но это не значит, что некоторые не могут придумывать поверх него свои надстройки).
В итоге имеем расшифрованный ответ от вариатора: 7F — запрос отклонен, 31 — это PID, который мы отправляли и Negative response code 33, а именно Security Access Denied. То есть, у нас нет прав на изменение или запрос этой функции. У кого же она есть?
Отступление 2. В UDS используется механизм разграничения доступа по нескольким уровням — обычная диагностическая сессия, расширенная сессия, сессия программирования и т.п. В каждой сессии присутствуют уровни допуска, которые решают, что вам можно, а что нет. Чтобы получить доступ к ним, необходимо запросить у блока так называемый Seed, обработать его определенным алгоритмом и отправить обратно в блок (Key). Подробнее можно почитать тут.
Попробуем запросить seed. Отправляем в ECU команду 2701 и получаем в ответ 6701 6A43FD3C.
Отправив в ответ любое 4-байтное значение (27 02 DEADBEEF), получим в ответ 7F2735, где 35 это Invalid Key (неверный ключ), т.к. было отправлено значение «с потолка». Где же искать алгоритм вычисления ключа? В прошивке блока управления, больше негде. Достать его достаточно легко (но не на всех блоках, все зависит от используемого микроконтроллера), сначала находим обработчик приема CAN, затем функцию обработки PID 0x27.
Повторив обмен seed-key с алгоритмом из прошивки получим в ответ 6702 34, где 34 это «Доступ разрешен». После этого команда на сброс уровня деградации масла успешно отрабатывает и возвращает не negative response code, а положительный ответ 7103 01 и счетчик успешно сбрасывается.
Таким образом, через OBD разъем можно делать с автомобилем практически все: менять VIN номера в блоках, настраивать кодировку (конфигурацию), менее чем за секунду отключить иммобилайзер, очищать информацию об ошибках, вводить блок в состояние загрузки, когда можно загрузить в RAM контроллера любой код и выполнить его. Система безопасности у японцев слегка хромает.
Распиновка OBDII где правда?
По книге одно, а общестандартная распиновка то другая…
Распиновка ОBD-2 (On-Board Diagnostic) – термин, который обозначает стандарт при диагностике и контроле за деятельностью двигателя автомобиля, некоторых частей шасси и иных вспомогательных устройств.
История OBD-II началась еще в середине XX века, когда правительство Соединенных Штатов Америки неожиданно обнаружило, что автомобилестроение, которое они так яро поддерживают, в конечном счете приносит большой ущерб экологии, в целом, и человеку, в частности. Появлялись законодательные акты, но никто им не следовал. Однако когда пришел энергетический кризис, нерадивым производителям пришлось предпринимать хоть какие-то меры по спасению самих себя и своих потребителей. Именно на этом фоне стала бурно развиваться концепция, предполагающая стандартизацию такого устройства, как диагностический разъем OBD-II.
По сути, распиновка OBD-II — это несколько составляющих стандартизированных правил и требований, которые должны соблюдать автопроизводители, дабы все системы по управлению двигателями удовлетворяли требованиям федеральных норм, касающихся выхлопных газов и бесперебойного функционирования машины.
Основные составляющие данной системы, которые и обеспечивают стандартизацию или, другими словами, «распиновку» 16-ти контактных разъемов OBD-2 для проведения диагностических операций это:
Контакт 1 (определяется производителем);
Контакт 2 — шина J 1850;
Контакт 3 (определяется производителем);
Контакт 4 — заземление шасси;
Контакт 5 — сигнальное заземление.
Контакт 6 — CAN (прямой) J2284;
Контакт 7 — ISO 9141 — 2 (К — линия);
Контакт 8 и 9 (определяется производителем);
Контакт 10 — шина J1850;
Контакт 11, 12, 13 (определяются производителем).
Контакт 14 — CAN (инвестированный) J2284;
Контакт 15 — ISO 9141 — 2 ( L — линия );
Контакт 16 — напряжение аккумулятора.
Основная функция диагностического разъема OBD-II состоит в обеспечении связи сканера с управленческими блоками. Такой разъем OBD-II, как DLC, относящийся к стандарту SAE J1962, должен размещаться примерно в центре автомобиля в 3 — 18 сантиметрах от руля. При этом производители имеют право подбирать многие контакты сами. Очень важно то, что в состав разъема OBD-2 (распиновка это предполагает) включено заземление и питание, позволяющие автосканеру успешно работать, не подключая никаких дополнительных источников питания.
OBD I, OBD II и EOBD – все что вам нужно знать
Требования, связанные с заботой об окружающей среде, вылились в автомобильную промышленность в виде целого ряда дизайнерских решений. В эту группу входят ненавистные многим фильтры DPF и, что интересно, бортовая диагностическая система, то есть популярная OBD. Какова роль OBD в автомобиле? Сколько версий OBD мы имеем в настоящее время и каковы возможности?
В этой статье мы расскажем основную информацию об этой системе. Более подробно читайте здесь: https://elm327-obd2.ru/.
Что такое OBD I?
Концепция решения, которое мы теперь знаем как OBD (бортовая диагностика), была разработана в 1970-х годах в Калифорнийском управлении воздушными ресурсами. Этот офис изучает влияние выбросов вредных соединений, выбрасываемых автомобилями с двигателями внутреннего сгорания, на окружающую среду. Желание внести конкретные изменения для снижения загрязнения воздуха потребовало использования бортовой системы диагностики. Оказалось, что только такая система способна эффективно контролировать работу всех автомобильных систем так, чтобы автомобиль создавал минимально возможную нагрузку на окружающую среду. Так была создана система OBD, позже получившая название OBD I (ее первая версия).
Система OBD I была относительно простым решением, касающимся в основном:
Автомобильная диагностика с помощью разъема OBD стала нормой в американских автомобилях с 1988 года, а сама система зарекомендовала себя настолько хорошо, что вскоре была создана ее следующая, модернизированная версия.
Что такое OBD II?
ODB II — это бортовая диагностическая система, созданная на основе более старой системы OBD I и введенная для обязательного использования в автомобилях с бензиновыми двигателями с 1996 года и для дизельных автомобилей с 1997 года. Система OBD II взяла на себя многие основные функции после своей предшественницы, но была дополнительно обогащен несколькими новыми решениями, такими как:
Система OBD II, тем не менее, по-прежнему является американским стандартом, который также на короткое время получил европейский аналог.
Что такое EOBD?
Система EOBD (Европейская бортовая диагностика) — это система, разработанная в соответствии с применимыми европейскими правилами по выбросам выхлопных газов, но не только. Обязательство иметь такое решение распространяется на все (предназначенные для европейского рынка) бензиновые автомобили, произведенные после 2000 года, а автомобили с дизельными двигателями были включены в него только через 3 года, то есть в 2003 году. Его функциональность почти на каждый дюйм напоминает американскую систему OBD II (отсюда ее еще иногда называют), она отличается в основном другими стандартами, хранящимися в памяти управляющего компьютера.
Где найти разъем OBD?
Поиск разъема OBD не должен стать проблемой для вас, хотя он будет расположен в немного другом месте в каждой модели автомобиля. В случае проблем с его местонахождением проще всего поискать в Интернете или спросить на любом автомобильном форуме.
Для чего нужен разъем OBD?
Основное назначение разъема OBD — диагностика. Подключившись к системе OBD, вы можете считывать коды ошибок и распознавать, в чем проблема. Просто чтение кода — это еще не все, настоящее искусство — его правильная интерпретация, но и здесь Интернет часто приходит на помощь.
Интересной особенностью разъема OBD в современных автомобилях, оснащенных электроникой, является возможность самостоятельно и часто совершенно бесплатно запускать определенные функции транспортного средства. В первую очередь речь идет о многочисленных системах комфорта, работа которых хранится в компьютере, но не была активирована дилером. И часто такая активация в салоне связана с доплатой.
Автор: Илья Васильев
Специалист сайта: elm327-obd2.ru
Разъем OBD 2
Устройства с разъемом OBD 2
Описание OBD 2
OBD (On board diagnostics, от англ. бортовая диагностика) предполагает наличие специального диагностического разъема. Данное решение необходимо для подключения сканера, ноутбука или смартфона к системе OBD. Само наличие ОБД в автомобиле означает возможность самодиагностики ТС, а также позволяет считывать определенную информацию с различных бортовых систем: ЭБУ двигателем, управляющие блоки Airbag, система ABS и т.д. Другими словами, OBD позволяют осуществить проверку состояния различных систем.
Указанная самодиагностика появилась в США, произошло это достаточно давно (с начала 80-х годов). Главной задачей внедрения стала борьба за экологию, то есть контроль за составом выхлопных газов и исправностью работы систем, которые снижали токсичность выхлопа. Первые версии были способны только определить наличие или отсутствие неполадок, при этом без локализации самой проблемы. Добавим, что на начальном этапе каждый производитель автомобилей имел свой стандарт диагностического разъема OBD-I и необходимое для считывания данных диагностическое оборудование, что значительно затрудняло проверку ТС различных марок в рамках одного автосервиса.
Дальнейшее развитие привело к тому, что появился OBD 2, который превратился в унифицированный стандартный цифровой разъем. Через такой разъем можно просматривать информацию о состоянии и работе отдельных систем любого ТС в режиме реального времени, считывать необходимые данные и коды записанных в память блоков управления ошибок для их расшифровки. Благодаря такой функциональности проверка машины через OBD-II сегодня позволяет намного быстрее и точнее обнаружить имеющуюся неисправность в случае ее возникновения.
Если сравнить систему OBD на начальном этапе с более современным решением, тогда ранние версии затрагивали следующие элементы: датчик кислорода, систему рециркуляции (EGR), систему питания ДВС и блока управления двигателем (ЭБУ). Вся проверка сводилась к определению уровня токсичности выхлопных газов. Появление стандарта OBD II стало набором требований, согласно которым система управления двигателем должна соответствовать закрепленным на законодательном уровне стандартам применительно к составу отработавших газов. Получается, OBD II это не просто диагностический разъем с определенной распиновкой, особыми протоколами связи и форматами отображаемой информации для проверки авто, а целый пакет требований, которым должна соответствовать продукция различных автопроизводителей.
В Европе указанный стандарт называется EOBD и основан на американской OBD-II. Такой стандарт обязателен для всех ТС с января 2001 г. В Японии аналогичный стандарт получил название JOBD. Сегодня активно разрабатывается автодиагностика по стандарту OBD-III, которая должна в скором времени сменить OBD II.
Распиновка OBD 2
Вывод | Описание |
---|---|
1 | OEM (протокол производителя). |
2 | Шина + (Bus positive Line). SAE-J1850 PWM, SAE-1850 VPW. |
3 | — |
4 | Заземление кузова (Chassis Ground). |
5 | Сигнальное заземление (Signal Ground). |
6 | Линия CAN-High высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284). |
7 | K-Line (ISO 9141-2 и ISO 14230). |
8 | — |
9 | Линия CAN-Low, низкоскоростной шины CAN Lowspeed. |
10 | Шина — (Bus negative Line). SAE-J1850 PWM, SAE-1850 VPW. |
11 | — |
12 | — |
13 | — |
14 | Линия CAN-Low высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284). |
15 | L-Line (ISO 9141-2 и ISO 14230). |
16 | Питание +12в от АКБ (Battery Power). |
Контакты 3, 8, 11, 12, 13 не определены стандартом.
Разъем диагностики OBD-II, как интерфейс для IoT
Когда-то давно, примерно в середине 90-х, во время появления процессора Pentium Pro, один из основателей компании Intel Гордон Мур заметил, что: «Если бы автомобилестроение развивалось со скоростью эволюции полупроводниковой промышленности, то сегодня Роллс-Ройс мог бы проехать полмиллиона миль на одном галлоне бензина, и было бы дешевле его выбросить, чем платить за парковку». Но, пожалуй, уже сегодня автомобилестроение совершает гигантский шаг развития в направлении, как кардинальной смены типа топлива, так и технологий управления автомобилем. Практически недавно представлены коммерческие электромобили и авто на водородном топливе, а автопилот становится желаемым компонентом электронной «начинки» транспортного средства. В большинстве своем, как раз стремительный рывок автопрома обусловлен появлением надежных и безопасных решений на основе умной электроники для автомобильных бортовых систем управления. Но, где же в повседневной жизни Интернет в автомобиле, где же технологии Интернета вещей (IoT), а также многим известная концепция подключенного к сети автомобиля (Connected Car)?
The Rolls-Royce 103EX. Rolls-Royce unveils driverless, electric concept car, complete with silk love seat – The Telegraph.
На самом деле, все вышеперечисленные технологии уже существуют и используются, однако, только в достаточно обособленных решениях. Виною тому, строгие требования к обеспечению безопасности, которые непременно должны быть реализованы при запуске любой новой технологии или решения на транспорте. Поэтому, нельзя сказать, что, садясь в автомобиль со смартфоном, можно автоматически получить решение IoT или Connected Car. В большинстве стран, и это очень логично, существует запрет на использование смартфона или других гаджетов за рулем, а если говорить о голосовых ассистентах, то в большинстве случаев они сейчас раздражают и отвлекают, как водителя, так и пассажиров. В свою очередь, медиа-центр, дополнительные видеоэкраны и отличная акустика, конечно, являются очень привлекательными составляющими современного автомобиля. Но хочется поймать себя на слове, и отметить, что как хорошо приглушить музыку и просто смотреть в окошко на проносящиеся мимо улицы или природу. Конечно, есть пробки, но в этой публикации ставится цель отметить не сколько этическую составляющую или рассмотреть проблемы информационного перенасыщения участников дорожного движения, а рассмотреть те «невидимые» компоненты технологий IoT, которые уже используются в транспортных средствах и доступны для широкого применения.
На сегодня, интересным и очень перспективным решением автомобильного IoT, является платформа Open Connected Car компании Mojio. Эта платформа с открытым интерфейсом (API) предоставляет облачный сервис для «подключенных» авто и уже доступны коммерческие предложения. Например, телекоммуникационный гигант Т-Mobile, на базе этой платформы, предоставляет сервис SyncUP DRIVE. Это программно-аппаратное решение на базе портативного устройства, подключаемого к автомобилю через разъем диагностики OBD-II, и соответствующее мобильное приложение. Благодаря такому подходу можно эффективно выполнять непрерывный мониторинг параметров работы своего автомобиля и в любой момент времени получать его текущее месторасположение. Приложение может рассказать о стилях вождения, предупредить о профилактическом обслуживании, а также уведомить владельца о проблемах с транспортным средством. Кроме того, SyncUP DRIVE разворачивает в автомобиле точку доступа Wi-Fi, используя доступ по высокоскоростному протоколу мобильного стандарта LTE.
The Open Connected Car Platform – Mojio
Для подключения к автомобилю используется стандартный диагностический разъем OBD-II. Большинство серийных автомобилей, выпущенных после 1996 года, уже оснащены таким разъемом. Хотя такой разъем диагностики и стандартизирован, но в нем поддерживаются сразу несколько протоколов различных систем управления двигателем (физически используются разные контакты на разъеме), которые должен «знать» коммуникационный модуль IoT. Соответственно в разных марках автомобилей могут быть разные внутренние шины получения данных диагностики с бока управления двигателя (ECU — Electronic control unit). Для работы с сервисом SyncUP DRIVE предлагается решение на основе модуля VM6200S компании ZTEWelink.
Модуль VM6200S поддерживает подключение по мобильному протоколу LTE, содержит интегрированный 3-х осевой датчик ускорений и 3-х осевой гироскоп, приемник GPS-сигналов, чип OBD-II, с поддержкой протоколов ISO 15765-4 (CAN), ISO 14230-4 KWP (Keyword Protocol 2000), ISO 9141-2 (Chrysler, Euro, and Asian automobiles), SAE J1850 PWM (Ford vehicles), SAE J1850 VPW (GM vehicles). Таким образом, модуль позволяет развернуть точку доступа Wi-Fi 802.11 b/g/n/, регистрировать события во время движения, выполнять диагностику работы двигателя, оценивать экономичность расхода топлива и т.п. А поскольку партнерами Mojio являются проекты Amazon Alexa, сервис IFTTT и другие, то для разработчиков и интеграторов решений открываются все перспективы вплоть до создания социального IoT на основе «подключенного» автомобиля, как составляющей такой инфраструктуры.
VM6200S4G OBD Device – ZTEWelink Corporation
Но не только SyncUP DRIVE сейчас представлена на рынке, например, многие компании предоставляют нечто подобное. Конечно, недавно появившийся Samsung Connect auto device – одно из таких интересных предложений, превращающих автомобиль в подключенное устройство. Решение от Samsung аналогичным образом использует мобильную сеть поколения 4G LTE и разворачивает внутри автомобиля точку доступа Wi-Fi: 802.11 a/b/g/n. Connect auto device поддерживает подключение Bluetooth v4.1, содержит GPS-приемник, датчик ускорений, гироскоп и базируется на 4-х ядерном процессоре с частотой 1.2GHz и операционной системе Tizen. Следует отметить, что корейский электронный гигант Samsung говорит о защищенности системы за счет использования Samsung Knox – мобильного решения с защитой уровня предприятия. Фактически Samsung Knox – это программно-аппаратное решение для усиления защиты операционной системы Android.
Samsung Connect auto
Таким образом, информация, полученная по средствам считывания данных OBD-II, текущие координаты месторасположения с GPS-приемника и параметры динамики движения автомобиля, полученные с гиро-сенсоров, на текущий момент времени и де-факто, стали основой для превращения любого транспортного средства в устройство IoT. Дальше можно рассмотреть сценарии использования агрегированной информации, полученной от автомобилей, применять различные методики обработки Big Data, и при этом не нужно забывать о перспективах объединения таких данных с информацией от инфраструктуры «умных» дорог. Но прежде чем заняться обработкой данных, нужно их сначала получить, поэтому в этой публикации уделим основное внимание аппаратной составляющей реализации сценариев работы на уровне диагностического разъема OBD-II.
Так или иначе, но все ранее рассмотренные решения – это более совершенные промышленные изделия, по сравнению с обычным устройством считывания кодов диагностики на базе микросхемы ELM327 канадской компании Elm Electronics. ELM327 – это универсальный преобразователь протоколов, используемых в диагностических шинах автомобилей, в последовательный протокол типа RS-232.
Структурная схема микросхемы ELM327 v2.2 – Elm Electronics
Mini ELM327 Bluetooth OBD-II Car Diagnostic Adaptor V1.5
Теперь можно подключить стандартный модуль Mini ELM327 Bluetooth OBD-II V1.5 (интересно, что во многих источниках советуют использовать модули со старой прошивкой версии 1.5, а не новые с версией 2.2, т.е. как аргумент высказывается более стабильная работа модуля на старой прошивке и поддержка большего количества авто, но это очень субъективно) и поэкспериментировать с подключением смартфона к выбранному модулю, например, для платформы Android можно использовать одну из самых популярных программ диагностики Torque Lite (OBD2 & Car) или Torque Pro (OBD 2 & Car), а также что-нибудь попроще или использовать свои наработки.
Работа приложения Torque Pro под Android.
Кстати, хочется отметить, очень удобный сервис MockUPhone с бесплатными mock-up современных гаджетов, который очень пригодился, для подготовки скриншота работы программы Torque. Но это небольшое отступление от темы публикации. Нужно заметить, что в большинстве случаев, разъем OBD-II, к которому подключается модуль диагностики, находится под рулевой колонкой автомобиля.
Getting Started with OBD-II – SparkFun Electronics
ECUsim 2000 OBD Simulator – ScanTool
Конечно, профессиональный эмулятор не заменишь, но энтузиастов и гиков вполне может заинтересовать самостоятельная реализация менее сложного проекта на Arduino или Raspberry Pi. Например, можно ограничиться только наиболее распространенным интерфейсом CAN (Controller Area Network). В свое время, стандарт CAN, предложенный компанией Bosch, совершил заметный прогресс в разработке систем для автомобильной электроники. Если автомобиль в сети Интернет появился только недавно, то концепция сети внутри автомобиля существует уже с середины 80-х. Идея очень проста, и как Ethernet совершил прорыв в компьютерных сетях, так и CAN стал основой надежных коммуникаций внутри автомобиля.
An Arduino Based CAN Bus Network – Henry’s Bench
Раньше в автомобиле, как правило, к центральному блоку управления двигателем «стекались» шины и провода различных подключенных модулей и устройств. Последовательная двухпроводная шина CAN позволила реализовывать уже независимые интеллектуальные модули, например, центральный блок управления стал просто одним из таких модулей, которые «общаются» друг с другом фактически по сетевому протоколу. При этом значительно уменьшается количество проводки внутри автомобиля.
В отличие от Ethernet, сеть CAN значительнее надежнее, что обусловило ее применение не только в автопроме, но и в системах промышленной автоматики, решениях умного дома и т.п. На физическом уровне в CAN используется двухпроводная линия, CAN Lo и CAN Hi, которые побитно передают данные, упакованные в пакет. На концах шины присутствуют согласующие сопротивления по 120 Ом, а также для подавления помех следует использовать скрутку проводов. Скорость передачи данных может достигать 1 Мбит/с.
A Controller Area Network (CAN bus)
Передача данных в CAN bus чем-то напоминает модель «издатель-подписчик», где каждое устройство на шине имеет уникальный идентификатор и, когда передает данные одно устройство, то все остальные слушают, и принимают решение на основе этого идентификатора – нужны ли конкретно им эти данные для приема и обработки или нет. В общем, протокол достаточно сложен, но для микроконтроллера или микропроцессора вряд ли придется писать реализацию CAN, а также думать об особенностях физической среды передачи данных. Для решения этих задач уже есть готовые аппаратные контроллеры шины, а для согласования уровней, зачастую применяются интегральные преобразователи. Например, контроллер MCP2515 с интерфейсом SPI и трансивер (согласовательная микросхема уровней) MCP2551. Как раз на базе этих микросхем и предложен проект Arduino OBD2 Simulator, опубликованный на площадке Instructable. Для его реализации потребуется лишь плата Arduino UNO и CAN-BUS Shield, например, компании Seeed Technology.
Эксперименты с применением Arduino OBD2 Simulator
В принципе, для разработки эмулятора данных OBD-II, не помешает наличие блока питания DC на 12V для модуля ELM327, а также разъем OBD-II. Впрочем, no-name преобразователь DC-DC-USB-TO-12V вполне может решить проблему, т.к. несколько блоков питания на 5V, пожалуй, будут под рукой у любого разработчика для Интернета вещей и не только. Для подключения к OBD-II потребуется два информационных провода CAN_H и CAN_L, а также наличие питания 12 V, но как было замечено ранее, 12 V нужно только для обеспечения работоспособности для модуля ELM327.
CAN-BUS Shield V1.2 — Seeed Development Limited Wiki
На плате расширения CAN-BUS Shield очень удобно использовать не разъем D-SUB, а просто клеммник на два контакта (CAN_H, CAN_L). С точки зрения разработки программного кода, следует отметить, что прототип энтузиасты выложили на GitHub. Сейчас платы от Seeed изменились, да и в любом случае для контроллера MCP2515 лучше использовать новые драйверы все той-же Seeed-Studio. Конечно, оригинальную программу нужно будет немного доработать под новые драйверы, но это дело на пару минут.
Работа с CAN-BUS в среде Arduino IDE на основе low cost OBD2 ECU Simulator
Однако, рассмотренный пример очень примитивен, так как все параметры, отправляемые по протоколу OBD-II, просто генерируются случайным образом, нет связи параметров работы двигателя между собой и т.д. Как продолжение проекта очевидным является разработка приложения, похожего на Freematics OBD-II Emulator GUI. Это графическая оболочка с открытым исходным кодом, которая используется в аппаратном решении Freematics OBD-II Emulator.
Freematics OBD-II Emulator GUI – Freematics
Таким образом, собрав на базе Arduino модуль, позволяющий работать с CAN, вполне можно создать эмулятор OBD-II, так как протокол диагностики хорошо описан и его несложно реализовать. Следует отметить, что реализация взаимодействия микроконтроллера и бортовой шины CAN – это совсем другая задача и нужно понимать, что внутренние высокоуровневые протоколы этой шины не документируются автопроизводителями, да и с другой стороны – не следует внедрятся во внутреннее устройство автомобильной электроники, чтобы не коим образом не снизить безопасность эксплуатации транспортных средств. Если говорить о CAN в общем, то для разработки своих устройств на базе этой шины вполне можно использовать высокоуровневый открытый протокол CANopen.
Остается дело за малым – немного свободного времени и в удовольствие выполнять разработку своего кода. Правда, где же это время найти в конце года? Но будем оптимистами. А вот, если говорить о применении такого эмулятора OBD-II, то самое прямое направление – это разработка уже своего модуля для диагностического разъема. Например, за отправную точку можно взять открытый проект Carloop, который нацелен на создание модуля подключения автомобиля к облаку с использованием технологий 3G, Wi-Fi или Bluetooth.
Carloop Bluetooth
Проект Carloop основывается на использовании плат: Particle Photon (на базе Wi-Fi модуля Cypress BCM43362, который поддерживает стандарт 802.11b/g/n; контроллера семейства ARM Cortex M3 – STM32F205 на частоте 120Mhz; 1MB флеш-памяти; 128KB оперативной памяти) и Electron (платы с поддержкой подключения к сети мобильной связи 3G/2G). Платформа Particle и сама очень интересна, поскольку базируется на облачном сервисе подключения устройств IoT, облачной IDE для разработки, например, на базе плат Photon, где используется язык похожий на C/C++ для Arduino. Фактически Particle – это отдельная тема для публикации, а проект Carloop однозначно заслуживает отдельного внимания со сороны энтузиастов автомобиля, как подключенного устройства IoT.
Подключив автомобиль к сети Интернет и сервисам IoT, можно реализовать множества сценариев, которые несомненно будут способствовать удобству эксплуатации транспортных средств, повышению комфорта и, просто, эфективному решению повседневных задач, конечно, включая и решение транспортных перевозок. Например, данные о стиле вождения, надежности работы двигателя и агрегатов автомобиля, вполне могут и уже сейчас учитываются страховыми компаниями. Текущее месторасположение автомобиля будет актуально для сервисов такси и аренды автомобилей. Взаимодействие участников дорожного движения стает более удобной при использовании IoT, так же проблема парковок, поиска свободных мест на стоянке, и многое-многое другое.
Надеемся, что идея этой публикации достигнута – в одном месте собраны материалы по работе с диагностическим разъемом OBD-II, как на уровне простого считывания кодов неисправностей, так и эмуляции физического подключения к автомобилю. Также надеемся на комментарии читателей. В завершении хочется отметить, что рассмотрены лишь некоторые вопросы разработки устройств Connected Car, но «за кадром» остались многие технологии, которые, так или иначе, превращают современный автомобиль в устройство IoT и делают поезки более комфортными и безопасными. Разумеется мы будем возвращаться к этим темам в наших будущих публикациях.