CAN-BUS Shield "не видит" Audi A3.

alakond
Offline
Зарегистрирован: 24.01.2014

Добрый день, есть CAN-BUS shield. "Полная китайская копия" платы от seeedstudio (http://www.seeedstudio.com/wiki/CAN-BUS_Shield). Пытаюсь получить данные с CAN шины автомобиля Audi.

Скетч со страницы seeedstudio залил, при запуске пишет, что CAN модуль инициализацию проходит, но, никаких данных в serial не падает. Кроме того, сильно смущает, что LED (Rx) на CAN модуле не моргает. 

Занимался ли кто-нибудь похожей задачей? Как подружить Arduino и CAN шину автомобиля? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

alakond пишет:

Занимался ли кто-нибудь похожей задачей? Как подружить Arduino и CAN шину автомобиля? 

а вы его куда подключаете вообще? или машина в гараже а ардуина на кухне? зажигание в машине пробовали включать?

alakond
Offline
Зарегистрирован: 24.01.2014

Давайте по порядку :) 

1. Проверяю на заведенной машине.

2. Подключаю к диагностическому разъему ODB II который находится возле правого колена водителя. Для подключения пробовал использовать колодки (под отвертку) на плате расширения, потом сваял кабель по схеме: ODBII to DB9

Но, тоже не взлетело. 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вы уверены что распиновка разъема p2 одинакова у всех машин?

alakond
Offline
Зарегистрирован: 24.01.2014

http://pinoutsguide.com/CarElectronics/audi_obd_ii_interface.shtml

Да, уверен. Шнурки OBDII - USB работают. На ауди, шкоде, митсубиши, суббаре. Может ещё к чему-то цеплял, не помню. Вообщем, в распиновке разъема уверен.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Подбирайте терминирующий резистор. Вообще не самый удачный CAN шилд, но вполне рабочий. Скорость шины правильно выставляете ? Точнее так... Скорость шины в этом месте знаете ? Да , вот еще вспомнил. По умолчанию фильтры настроены так, что вы ничего не примете. Смотрите в сторону настройки аппаратных фильтров. В библиотеке седуины они включены всегда, но настроены так, что ни одного сообщения вы не получите. Если не задействовано ни одного фильтра с расширеным ID, то ни одного расширенного сообщения вы не получите. Со стандартными хидерами там то же какой то косяк был... Почитайте мануал на кан драйвер этого шилда.

На таких шилдах собрал сквозной кан логер с автоопределением скорости шины. Сей час дописываю софт. В принципе все работает.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ваш шилд поддерживает 

CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS and CAN_1000KBPS

а по второй ссылке CAN протоколы всего у нескольких моделей было. в основном другие

может конечно я неверно понял, но в эту сторону вы не копали?

alakond
Offline
Зарегистрирован: 24.01.2014

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

Подскажите, аппаратные фильтры это что? 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Аппаратные фильтры настраивают получение драйвером только сообщений с определенными ID, вплоть до отключения приема сообщений. В вашей бибилиотеке это функции :

   INT8U init_Mask(const INT8U num,const INT32U ulData);                     /* init Masks   */
   INT8U init_Filt(const INT8U num,const  INT8U ext,const  INT32U ulData);   /* init filters */

 Масок всего две.

Фильтров шесть, причем при определенных обстоятельствах первые два фильтра взаимодействуют с первой маской, остальные 4 со второй. Попробуйте проинициализировать фильтры так :
CAN.init_Mask(0, 0); // разрешить маскам получать обычные сообщения
CAN.init_Filt(0, 0, 0); // разрешить фильтрам получать обычные сообщения
CAN.init_Mask(1, 0); // разрешить маскам получать расширенные сообщения
CAN.init_Filt(1, 1, 0); // разрешить маскам получать расширенные сообщения

Кстати говоря... Шилд поддерживает любую скорость до 1 мегабита. А вот настроек в библиотеке описано всего несколько, причем явно недостаточно для работы со всей автотехникой. Кроме того, на скорости 500kbps нужно четко подбирать терминатор, иначе работать точно не будет, проверено. Тем более вы подключаетесь к не терминированной шине. Диагностический разъем работает только с терминированным получателем, поскольку при подключении шнура на этой шине будет всего ДВА узла. Если же шнур не подлючен, то узел будет всего один, который после некоторого времени работы вообще уйдет в ошибку и прекратит вещание.

 
 
alakond
Offline
Зарегистрирован: 24.01.2014

brokly, большое спасибо за оказываемую помощь :) 

По документации на плате должен быть установлен терминирующий резистор R3 = 60 Ом.

В реальности, мультиметр говорит, что там R3=0.97 kOm.

Меня начинает смущать, что я подключаюсь в диагностический разъем. Я хочу попробовать подключиться в другое место: 

вот тут: http://www.superb-club.com/forum/showthread.php?t=5392 на третьей странице автор говорит что подключается к магнитоле. А вот тут: http://ev-a2.blogspot.ru/2013/06/can-bus-analysis-started.html я пока не могу понять, куда автор подключается. Но, учитывая, что есть всего 3 места, то не сложно и проверить все 3 )) 

О результатах отпишусь, что бы последователи знали где и что искать ) 

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

На оригинальном шилде резистор вообще не впаивается !!! По крайней мере так на версии 1.0 .

Если подключаться у магнитолы, то терминатор не нужен. На схеме терминатор вообще от балды нарисован - проверено. Кан шина магнитолы это CAN-инфотеймент, ее скорость у автомобилей группы ваг 100 килобит. По второй ссылке товарищ, похоже, подключается к кан-комфорт. Эта шина так же работает на частоте 100 кбит (У СОВРЕМЕННЫХ АВТО ГРУППЫ VAG). Существует еще три шины, одна из них мотор с трансмиссией, одна - высокоскоростная (в частности на нее вешается контроль давления в шинах) и диагностическая , идущая к диагностическому разъему. Обмен данными между шинами происходит в блоке именуемом ГЕЙТВЕЕМ. Не все данные доступны на любой шине. На диагностической шине вообще информационный трафик только в режиме запрос ответ, да еще и с паролями, дилерскими идентификаторами и авторизацией. 

Все совсем не так просто как вам кажется. Для чего хотите подключиться к кану ?

alakond
Offline
Зарегистрирован: 24.01.2014

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

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Для этого вам понадобится два шилда, температуру масла читать придется из моторной шины, а выводить на экран магнитолы в кан инфотеймент. Но если первая зада дочтаточно простая, то вторая потребует досконального изучения протокола инфотеймент и скорее всего не осуществима... Вы никогда не сталкивались с устройством по имени "FIS" ? Купить его будет проще ;)

alakond
Offline
Зарегистрирован: 24.01.2014

нет, про FIS-Control раньше ничего не слышал. Кроме FIS есть ещё Vario Plus Control Module. Уверен, что есть ещё такие проекты. От идеи покупки отказался по 2 причинам: не гуманный ценник, и just for fun ).

вот тут: http://secuduino.blogspot.ru/2011/10/fis-seat-leon-cupra-english.html автор пишет, что выводить свою информацию на приборку возможно. 

Ну не получится, так не получится. Что я потеряю? 15$ за CAN bus shield? Попробовать стоит ) 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Вы определитесь, на приборку или на экран магнитолы !? :) На приборку - возможно, но тогда нужно врезаться перед приборкой, перехватив ВЕСЬ трафик идущий на приборку. То есть тогда понадобится ТРИ шилда. Кстсти, у меня мозги показывают температуру масла в коробке по умолчанию :) Может достаточно поставить галочку в настройках приборки ?

alakond
Offline
Зарегистрирован: 24.01.2014

На приборку конечно. Оговорился. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Дело интересное, потребуется много времени и сообразительности :) У ауди ID сообщений точно будут другие. Пишите о достижениях, буду с удовольствием читать :) Если смогу и будет нужно чего нибудь посоветую :)

alakond
Offline
Зарегистрирован: 24.01.2014

Спасибо большое :) 

pmaster
Offline
Зарегистрирован: 23.05.2011

          интересная задумка. получилось что нибудь?

alakond
Offline
Зарегистрирован: 24.01.2014

Где-то  через пару недель/месяц после поднятия темы идея потеряла для меня актуальность: я больше не могу "мучить" ауди ) Это была машина коллеги, а я уволился.  Так что до покупки мной новой машины проект заброшен ) 

abt06
Offline
Зарегистрирован: 13.07.2013

У меня получилось подключить этот модуль только напрямую к шине на Ауди Q5

pmaster
Offline
Зарегистрирован: 23.05.2011

подключить, прочитать не проблема. сложнее что либо путное из этого сделать :)

 

InterSky
Offline
Зарегистрирован: 24.12.2014

А зачем для подключения к CAN-шине надо было использовать CAN-BUS_Shield с кабелем картинка которого в третьем сообщении? Там ведь всё равно надо подключиться только к двум проводам CAN High и CAN Low (ну может ещё +12 и GND).
Для этого подошёл бы и модуль TJA1050 за 1$
Или есть какие-то подводные камни?

pmaster
Offline
Зарегистрирован: 23.05.2011

по моему разницы нет никакой. и тот и тот подойдет.

InterSky
Offline
Зарегистрирован: 24.12.2014

А что делает микросхема MCP2515? Она случайно не просто обеспечивает SPI интерфейс?
Потому что есть много плат с микросхемой TJA1050 и MCP2551 которые обеспечивают работу с CAN-шиной через RX/TX.

Вот например: