PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   Arduino+CANBUS Shield (http://pccar.ru/showthread.php?t=23221)

olegik_ah 05.08.2015 19:31

Да я что-то не заметил, чтоб китайский стаб сильно грелся... По температуре почти как трупик:) В любом случае вариант пилотный - если стаб умрет - буду думать:)

ГУ во всех VAG сильно разные... В смыле в разных ауди ГУ сильно разные, в разных фольцах ГУ разные, в разных шкодах разные:)... У меня, к примеру, ГУ вообще из нескольких блоков состоит...

alexfox 05.08.2015 19:42

CS ---> 9pin
INT ---> 2pin
MOSI -> MOSI
MISO -> MISO
SCK -> SCK
Питание 5V.
Arduino IDE версии 1.0.5., пробовал последнюю 1.6.5 - так же всё...
Скорость порта пробовал менять везде и 9600 и 115200.
Есть два шилда с кварцами на 8 и 16 Мгц.
Залил твою либу и скетч, шина 500 у меня, кварц 16 выставил - инициализация проходит и дальше затык...

Цитата:

Сообщение от olegik_ah (Сообщение 334598)
Куда подключаешься? Скорость шины точно та, что нужна?

В аттаче моя либа и скетч. Либа не типовая - взял какую-то с гитхаба и ее под себя немного допилил.

Обрати внимание на строчку CAN.begin(CAN_100KBPS, MCP_8MHz)
Первый параметр - скорость шины, второй - тип кварца (MCP_16MHz или MCP_8MHz) на шилде.

Либа и скетч 100% рабочие - проверено на разных тачках, на разных шинах, на разных кварцах...


olegik_ah 05.08.2015 21:19

А что за машинка? И куда подключение? К какому-то блоку или в диаг разъем?

Можно фотку кан-шилда крупным планом?

alexfox 05.08.2015 21:50

Машина Infiniti FX35, подключение на внутреннюю шину AV-Com (BUS+ и BUS-), между блоком кнопок и Display Control Unit:
http://meb54.ru/av1.jpg
Шина точно 500KBPS.
Шилд такой: http://ru.aliexpress.com/item/Free-s...235683419.html
Второй: http://pccar.ru/showpost.php?p=289078&postcount=95

olegik_ah 05.08.2015 22:46

Ну тогда сдаюсь. Я не эксперт в автоэлектронике... Я программер и в прошлом радиогубитель:) Визуально все должно быть ок - все также, как и у меня.
Финика у меня не было никогда - ничего конкретного сказать по нему не могу. Но, если интересно - вот мои мысли.
1. Быстренько посерчил по инету - не нашел ни одного однозначного упоминания, что на картинке это шина это CAN со скоростью 500 (хотя где-то встречается инфа). Попробовал бы для начала другие скорости. Ничего плохого не должно произойти. В либе в файле mcp_can_dfs.h с 410 строчки перечислены все скорости, поддерживаемые либой...
2. Поэкспериментировал бы с терминатором. попробовал бы разные варианты с резистором от 60 до 120ом. Хотя при таком подключении он врядли нужен - но все же...
3. Если это не помогло - то попробовал бы вскрыть корпус устройства и подглядеть какой там стоит трансивер - попробовать использовать такой-же. Can трансиверы в дорогом московском магазе стоят примерно по 100рублей. Я не эксперт в трансиверах, но, насколько я понял из форумов, PCA82C251 - это наиболее универсальный. Почти все трансиверы имеют распиновку 1 в 1 как TJA1050...

Боюсь, что это все мысли на данный момент...

alexfox 05.08.2015 22:56

Дело в том, что у человека с форума работает на финике и шина там 500 выставлена. подключение к этим же блокам.
Термирующий резистор пробовал.
Микруха такая: M6636B

xmetal 05.08.2015 23:37

На 12 ноге mcp2515 в момент когда она готова передать данные ардуине будет 0, в противном случае 1. Либо попробовать передать что нить в кан шину и осциллографом посмотреть 1 ногу.

alexfox 05.08.2015 23:41

Из даташита на M6636B:
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps
Разве она может работать на 500KBPS ?
Странно...

xmetal 05.08.2015 23:49

Еще может отличаться формат данных, есть стандартный и расширенный. Эту настройку надо в либе смотреть.
Upd: Наврал, просто при отправке можем указать, что формат расширенный, принимает похоже любые. В общем я не проверял, не знаю.

olegik_ah 06.08.2015 01:14

Цитата:

Сообщение от xmetal (Сообщение 334638)
Еще может отличаться формат данных, есть стандартный и расширенный. Эту настройку надо в либе смотреть.

Стандартные и расширенные - не имеет значения. Та либа, которую я прислал - по умолчанию принимает все, если не ставить доп фильтров и масок.

olegik_ah 06.08.2015 01:17

Цитата:

Сообщение от alexfox (Сообщение 334631)
Микруха такая: M6636B

Ну вот и разобрались - эта микруха это не CAN трансивер!!! Протокол те тот - кан тансивер не поймет!!!

Либо подключаетесь не туда, либо шилд нужен другой...

olegik_ah 06.08.2015 01:39

эта микруха работает с протоколом SAE J1850 - это один из подвидов obd-II.
Курить в сторону https://www.sparkfun.com/products/9555

и чипов STN1110 или ELM327

olegik_ah 06.08.2015 01:52

во! и схему нашел.
http://pinoutsguide.com/CarElectroni...e_pinout.shtml
выкинуть все, сто касается ISO и CAN.

xmetal 06.08.2015 02:38

olegik_ah, ты через диагностический разъем общаешься с авто?

olegik_ah 06.08.2015 10:07

Я - нет.

Disgraced 06.08.2015 11:59

Цитата:

Сообщение от olegik_ah (Сообщение 334488)
Привет!
Тоже вмешаюсь в разговор. Не так давно мутил проектик для своей ауди. Тоже весь мозг сломал по поводу can сниффилки. Купил шилд и ардуину - не мог подружить. Что только не делал. И кварц менял и трансивер... После 2 недель пыток пришла мысль о том, что шилд мертв. Шилд, кстати, был такой-же, как у тебя... Покупал я его в России. Было безумно жалко денег на новый шилд. Порылся на алиекспрессе и нашел дешманские варики. И купил сразу по 5 штук:)
Ардуина нано http://ru.aliexpress.com/item/Nano-3...659109175.html 151руб штучка
CAN шилд http://ru.aliexpress.com/item/5pcs-l...259606078.html 200рублей штучка.

С этим всем заработало почти сразу... Вот мои комменты:
0. Если ни с какими либами шилд не хочет инициализироваться - либо мертв шилд, либо не корректное подключение...

Спасибо, за информацию.
Похоже что у меня как раз это - шилд мёртв. Ни либы ни замены кварцев, ни смены ардуин не помогли - просто не происходит инициализация. Причем с кварцем на 8 вообще ничего не происходит, а с кварцем на 16 в мониторе порта сообщения об ошибке инициализации. Как я вычитал, инициализация должна проходить даже без подключения к шине, а то уже устал разбирать салон по 2 раза в неделю.
Думаю закажу пару шилдов, как по ссылке.
Хотя есть более интересный вариант:
http://www.hobbytronics.co.uk/leonardo-canbus
леонардо+каншилд в одном флаконе, но дороговато

xmetal 06.08.2015 12:41

А вот тоже интересные железки от российских разработчиков http://www.canny.ru/ Специально для авто. У них там даже своя визуальная среда программирования имеется. Только ардуино китайская всеже дешевле.

olegik_ah 06.08.2015 15:18

Цитата:

Сообщение от Disgraced (Сообщение 334672)
Как я вычитал, инициализация должна проходить даже без подключения к шине.

100% поддерживаю - без шины инит проходит. Скажу даже больше - в контроллере есть режим loopback. Нужно в либу добавить процедурку:

INT8U MCP_CAN::setLoopback(void)
{
INT8U res = MCP2515_OK;

res = mcp2515_setCANCTRL_Mode(MODE_LOOPBACK);
if(res > 0){
#if DEBUG_MODE
Serial.print("Enter setting mode fall\r\n");
#endif
}
return res;
}

и ее вызывать после инициализации шилда. Тогда можно без машинки даже отладку небольшую делать - если шлем в sendMsgBuf тут же получаем checkReceive и данные в readMsgBuf...

Цитата:

Сообщение от Disgraced (Сообщение 334672)
Хотя есть более интересный вариант:
http://www.hobbytronics.co.uk/leonardo-canbus
леонардо+каншилд в одном флаконе, но дороговато

да ну.... дорого...

olegik_ah 06.08.2015 15:24

Цитата:

Сообщение от xmetal (Сообщение 334674)
А вот тоже интересные железки от российских разработчиков http://www.canny.ru/ Специально для авто. У них там даже своя визуальная среда программирования имеется. Только ардуино китайская всеже дешевле.

Да ну... Если ардуина знакома - то проще на ней сделать. В их среде разработке без бутылки сложно разобраться. Особенно, когда нужно сколь-нибудь серьезную логику замутить... Схемы получаются в километр! Да и стоимость не гуманная...
Плюс еще один момент - порою не хватает мощности процессора этого канни. Был такой проектик - когда нужно было в шине 500кбит кое-какие пакетики подменить. Для этого было закуплено 2 таких устройства. Одно читает из шины, другое передает дальше. По итогу они при большой нагрузке на шину теряли много пакетов... Пришлось на ардуину переписывать.

AlexN 06.08.2015 18:54

Цитата:

Сообщение от olegik_ah (Сообщение 334680)
Да ну... Если ардуина знакома - то проще на ней сделать.

Это хорошо если знакома....

Цитата:

Сообщение от olegik_ah (Сообщение 334680)
В их среде разработке без бутылки сложно разобраться.

А мне показалась проще простого. Может от того что я не программист и не пьющий :smile1:

Цитата:

Сообщение от olegik_ah (Сообщение 334680)
Для этого было закуплено 2 таких устройства. Одно читает из шины, другое передает дальше.

Есть аналогичная задумка. А как они были между собой связаны?

olegik_ah 06.08.2015 20:53

Цитата:

Сообщение от AlexN (Сообщение 334698)
А мне показалась проще простого. Может от того что я не программист и не пьющий :smile1:

То, что не программист - это хорошо. То, что не пьющий - плохо :)

Цитата:

Сообщение от AlexN (Сообщение 334698)
Есть аналогичная задумка. А как они были между собой связаны?

Да вот как-то примерно так http://forum.canny.ru/viewtopic.php?id=104

AlexN 06.08.2015 22:41

Цитата:

Сообщение от olegik_ah (Сообщение 334708)
Да вот как-то примерно так http://forum.canny.ru/viewtopic.php?id=104

То есть включались в разрыв CAN по такой схеме:

CAN <--> [CANNY7] <--LIN--> [CANNY7] <--> CAN

?

olegik_ah 06.08.2015 23:25

Ну да, именно

AlexN 07.08.2015 10:51

Почитал про LIN.

Они были связаны между собой каналом, чья скорость в двадцать пять раз ниже чем скорость CAN, в которой они должны были подменять пакеты?

CAN <--500 Кбит/сек--> [CANNY7] <-- LIN 20 Кбит/сек--> [CANNY7] <- 500 Кбит/сек -> CAN

olegik_ah 07.08.2015 13:02

Честно говоря - привел первую попавшуюся ссылку. Порылся у себя в архивах - диаграмму для канни не могу найти. Может и не по LIN они были связаны. У канни есть много аппаратных драйверов для передачи данных (UART, LIN, I2C). Как именно были связаны те 2 контроллера - не помню. Но точно помню, что затык был не в связке. Затык был в том, что если на шине CAN 500 не ставить аппаратных фильтров (принимать все сообщения CAN), то при высокой загрузке шины CAN часть сообщений теряется, т.к. контроллер не успевает обрабатывать все сообщения из буфера.

Лучше подобные вопросы задать на форуме канни - они оперативно отвечают.

(vS) 08.08.2015 07:08

судя по клочку схемы, это первый FX, там НЕ CAN
не веришь? разбери монитор, проще всего, или DCU, если тебе его достать проще, но я тебе как доктор - монитор достать проще )

alexfox 08.08.2015 08:41

Я с самого начала и думал, что там не Can протокол...
Просто мне человек с форума утверждал, что с 2003 по 2009 во всех Infiniti один и тот же внутренний Can-протокол. У него чуть свежее финик и всё управляется по Can, подключение в те же точки, что и у меня на схеме.
У меня в блоке кнопок стоит: M6636B
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps

Цитата:

Сообщение от (vS) (Сообщение 334829)
судя по клочку схемы, это первый FX, там НЕ CAN
не веришь? разбери монитор, проще всего, или DCU, если тебе его достать проще, но я тебе как доктор - монитор достать проще )

Мне вообще всё просто! У меня монитор + DCU + блок кнопок лежат дома на столе... :-))

Farman 08.08.2015 10:25

LIN как я знаю максимум 20кб/с бывает. Я использую LIN

AlexN 08.08.2015 11:48

Цитата:

Сообщение от olegik_ah (Сообщение 334770)
Затык был в том, что если на шине CAN 500 не ставить аппаратных фильтров (принимать все сообщения CAN), то при высокой загрузке шины CAN часть сообщений теряется, т.к. контроллер не успевает обрабатывать все сообщения из буфера.

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

А если не отрывать одну половину машины от другой и не вставать посередине, то я чота и не придумаю для чего может понадобиться принимать ВСЕ сообщения и чтоб без пропусков :smile1:

(vS) 09.08.2015 05:31

Цитата:

Сообщение от alexfox (Сообщение 334837)
У меня в блоке кнопок стоит: M6636B
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps

Мне вообще всё просто! У меня монитор + DCU + блок кнопок лежат дома на столе... :-))

и в мониторе такой же, и в DCU - ДВА

так что... сниффер надо делать, в первую очередь ))
готов поучаствовать, мне интересно

alexfox 09.08.2015 10:07

Разговаривал с YAM1966, что бы его USB HID контроллер V4 настроить на перехват кнопок по шине Infiniti, говорит, что должно получиться, но у него пока нет времени...
А так там всё по аналогии как на Лексусах/Тойотах внутренний протокол AVC-LAN, используется вход контроллера для шины IEBUS (AVC-LAN) с поддержкой PWM, нужно организовать софтовую поддержку.

Цитата:

Сообщение от (vS) (Сообщение 334907)
и в мониторе такой же, и в DCU - ДВА

так что... сниффер надо делать, в первую очередь ))
готов поучаствовать, мне интересно


(vS) 09.08.2015 12:09

да хрена вам там, а не AVC-LAN )))
хотя осцыл я туда не пихал... железа не достаточно

alexfox 09.08.2015 13:31

Цитата:

Сообщение от (vS) (Сообщение 334920)
да хрена вам там, а не AVC-LAN )))
хотя осцыл я туда не пихал... железа не достаточно

Ну я не говорю, что именно AVC-LAN, но что-то похожее с PWM модуляцией.
На осцилле чётко видны пачки импульсов при нажатии кнопок.
Из даташита на M6636B (Modulating/demodulating: PWM (Pulse Width Modulation).
Схемка конвертера-сниффера протокола SAE J1850:
http://pavel-pervomaysk.com/files/SA...0converter.pdf
Хотя тоже не подойдет, SAE/J1850 VPW

alexfox 09.08.2015 17:00

А если использовать вот такой трансивер для протокола SAE J1850 PWM:
ELM320 (OBD (PWM) TO RS232 INTERPRETER)
http://www.elmelectronics.com/DSheets/ELM320DS.pdf
Там и схемка есть, выход для RS232-порта Rx, Tx., потом дальше куда-то этот сигнал выводить...

(vS) 10.08.2015 10:42

а где этот ELM взять?
наверное, спорно )) проще родной чип отсниффить, но не факт, что он будет прозрачным, скорее всего на адресацию завязан и чужие мессаги не будет принимать

alexfox 10.08.2015 12:54

Купить не проблема...правда он относительно дорогой: от 900 р. до 1100р. примерно.

Цитата:

Сообщение от (vS) (Сообщение 334982)
а где этот ELM взять?
наверное, спорно )) проще родной чип отсниффить, но не факт, что он будет прозрачным, скорее всего на адресацию завязан и чужие мессаги не будет принимать


(vS) 10.08.2015 13:02

ссылку дай, я попробую

и адрес свой для доставки в личку )) одному скушно пробовать :dntknw:

alexfox 10.08.2015 13:14

В МСК
http://www.elitan.ru/price/item288020
ELM320SM SO8
5 дней
1033 р. за 1шт.
по 909р. за 3шт.

(vS) 10.08.2015 13:17

мне Москва не вариант ) мои карты россия не принимает, мне бы чонить за бугром, или у желтых или на враже$$ской стороне

на али и в наебае нету...

alexfox 10.08.2015 13:28

http://www.elmelectronics.com/


Часовой пояс GMT +4, время: 15:54.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot