Tag Archives: OBD2

Вместо NBT: Часть 6 – пробую OBD2

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

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

С помощью Bluetooth terminal, приложение из Android Market-а, я подключился к своему ELM327, воткнутому в OBD2 разъем. Затем прочитал версию устрйоства, выставил автоматическое определения настроек, проверил это и прочитал скорость и обороты двигателя в разных положениях АКПП.

comb Происходило следующее

  • ATI – печатает весрию устройства вставленного в OBD2
  • at sp 0 – вытсавить автоопределение протокола передачи данных
  • at dp – проверка, что выставлено автоматическое определение протокола

Дальше шли команды для получения скорости и оборотов двигателя:

Зажигание выключено, АКПП в Parking

  • 010C – обороты: 410С0000, нас интересуют последние два байта 0000, что соответсвует 0, поскольку машина незаведена
  • 010D – скорость: 410D00. Посдений байт 00 и показвывает, что я стою

Завел двигатель, АКПП в Parking

  • 010C – обороты: 410С0С12. Последние 2 байта переводим в десятичное число (например используя стандартный Windows Calculator в версии Programmer) и делем на 4 = 772
  • 010D – Скорость 410D00 – без изменений.

Двигатель заведён, АКПП в Drive, стою на месте

  • 010C – Обороты: 410С0С56 – используя тот же метод, получаем 789
  • 010D – скорость 410D00 – без изменений

Двигатель заведён, АКПП в Reverse, стою на месте

  • 010С – Обороты: 410С0С36 – тот же метод даёт нам 781
  • 010D – скорость 410D00 – без изменений

Screenshot_2015-08-27-20-10-45Тест на скорость вперёд и назад провалился так как в обоих случаях 010D (2 последних запроса) показывает 410D03, что при движении задним ходом (предпоследний запрос), что при движении вперед.

То есть, зная передаточные числа, посчитать передачу можно, но только при движении вперёд. Для получения же данных о включении задней передачи OBD2 недостаточно. Возможно удастся прочитать данные с CAN-Шины, к которой ELM327 также имеет доступ. Однако похоже мой ELM327 девайс, мягко говоря, говно, так как выдает мне BUFFER ERROR при попытке просто показывать все сообщения, которые ходят по CAN-шине (команда ATMA):

Почитав доку я решил попробывать с фильтрами (команда AT CRA hhh). Самый простой тест, те сообщения, которые я и так вижу, имеют CAN ID 130, так что поставив фильтр atcra 130 и запустив мониторинг всех сообщений с помошью команды ATMA я попрежнему вижу эти сообщения и получаю BUFFER ERROR. То есть команда работает.

Вооруживщись командами описаными здесь, я попробывал настроить фильтры на статус водительской двери (CAN ID 0EA), скорости (CAN ID 1A1), обороты (CAN ID 0A5), и парочка других, результат один и тот же – тишина.

Есть идеи?

 

 

Вместо NBT: Часть 5 – Android и камера заднего вида

Поскольку проект сложный, то я решил разбить его на несоклько маленьких шажков, выполняя которые станет понятно – на-сколько это реализуемо.

Первое, что я решил сделать – это подружить Nexus 7 c нештатной камерой заднего вида. Купил какую-то дешевую, но чтобы вставала в ручку багажника:20150811_092410

Очевидно, что на Nexus 7 нет ни аналогового ни цифрового видеовхода (да и вообще Android устройство с видеовходом хрен найдёшь), но зато есть USB-Host. На помощь пришёл Google, который подсказал, что есть некий EasyCap, который может передавать аналоговое видео по USB:20150811_092429

Там есть какие-то заморочки с тем на основе кого чипа они построены. Мне повезло, и достался UTV007:20150811_092530

В маркекте есть прога, которая прекарсно работает на Nexus 7 с EasyCap на основе UTV007 – EasyCap Viewer. У неё даже есть возможность автоматического включения при подачи сигнала на камеру заднего вида. Собственно для тех, кто хочет ограничиться простой инсталяцией – идеальный вариант. Подключил камеру к фонарую заднего хода, видеовыход к EasyCap-у, а его воткнул в планшет и всё. По яндекс пробкам приехал куда нужно, влючил заднюю и сразу видишь картинку с камеры заднего вида. Примерно будет выглядеть вот так:

Мне же такой вариант не интересен. Хочу, чтобы камера включалась тогда, когда мне это нужно. Безусловно, при движении задним ходом она должна включаться автоматически, но не должна питаться от фонаря заднего вида, так как это сделает невозможным её использование во время простоя или движения вперёд. Варианты тут есть разные, например есть возможность превратить любую анаглоговую камеру в беспроводную с помощью универсального Wifi адаптера. Работает это примерно так:

Вариант тоже хреновенький, поскольку для работы требуется приложение на Android и стоит в 5 раз дороже EasyCap-а… Хотя наверно можно вскрыть и посмотреть как оно устроено, попробовать поснифать трафик и обойтись без стороннего приложения, а несколько таких штук пустить через WiFi роутер.

Одноако вариант, который мне видется более жизнесопособным, это воткнуть EasyCap в Raspberry Pi а его через Ethernet в обычный роутер. Поднять там стриминг сервер, и подключаться с Android-а к стриму когда это необходимо. Пока правда нужно разобраться какая информация доступна через OBD2 разъем, чтобы получить сигнал о том, что включена задня/первая передача.

Собственно, в интернете полно инфы о том, как работать с OBD2, буду рюхать. Начну пожалуй отсюда.

Что скажите? EasyCap + Аналоговая камера годный вариант?

 

Вместо NBT: Часть 3 – OBD2 и CAN-Bus

Так как у меня завалялся старый Nexus 7 решено было начать с него в качестве головного устройства. Почесав репу и прошерстив интеренет на предмет того, как же мне подружить планшет с автомобильной электроникой решил приобрести OBD2 – Bluetooth адапетр. Это мультимарочная приблуда подходит для всех машин старше какого-то там лохматого года. Выглядит вот так:20150807_101940 Пока не понятно, что удастся получить из нее. Приобрел так же прогу для Android – Torque Pro, которая может с этой штуковиной работать и много чего  показывать. Заодно нашёл команды, котоорая эта штука поидее поддерживает и как с ней работать.

Второй вариант “вторжения” в автомобильную электронику – это CAN-шина. Для работы с ней набрел на девайс на основе Arduino 20150807_101857 – проект на Kickstarter, который уже успешно завершился и перешёл в стадию продажи всем желающим. Его тоже купил с доставкой из США.

Заодно нашёл очень интересный проект одного BMW Энтузиаста, который уже “влез” в CAN-Шину и даже что-то разшифровал из того, что по ней “гоняется”.

По идее CAN-Шина позволит получить гораздо больше инфы чем доступно через OBD2, правда пока не понятно – как с ней работать… К тому же не известно, как отнесётся дилер к тому, что я “врежусь” в штатную автомобильную проводку.

Если у кого-то есть опыт работы с CAN шиной – поделитесь знаниями.