КИА РИО КЛУБ РОССИЯ Лента RSS
AleksVL
Профессор
 
Аватар для AleksVL
KIA Ceed SW 2017
1.6 МКПП
Сообщений: 2,170
Получил "Мне нравится"140  Отдал "Мне нравится"34
В клубе с 26.01.2012
04.02.2022 12:58
#1
Добрый день всем ардуинщикам и прочим рукоблудам!

Благодаря @ne_shurik и его реализации индикации КК, решил вот на досуге поиграться с CAN-шиной.
Погуглил в интернете, довольно много разной информации, но все как-то фрагментально, или слишком подробно, с описание каких-то ненужных технических дебрей или примеры уже готовых работ без какого-либо объяснения...
Поэтому решил вот создать отдельную тему на этом форуме, т.к. судя по всему, среди Рио-водов больше всего людей разбирающихся в этой теме.
Вот наверно, самая полезная статья из всего этого мусора который я просмотрел - ТЫК. Очень лаконично, никакой воды и все понятно.

Заказал себе такую вот плату MCP2515 хочу подружить ее с Ардуино Нано.
Принцип работы вроде понятен, но вопросов еще очень много.

1) Насколько я понимаю в автомобиле может быть несколько параллельных CAN-шин (отдельно для двигателя, датчиков и т.д., отдельно для приборки, всяких стеклоподъемников и т.д.), а тот разъем, который находится под рулем (под капотом) это некая внешняя линия, которая выдает обобщенную и отфильтрованную информацию?

2) Хотелось бы понять как в этом плане обстоят дела с КИА. Насколько принципиально отличаются схемы между разными моделями (Рио, Сид и т.д.). В каком месте лучше всего подключится и т.д.
Если подключиться к подрулевому разъему, там достаточно просто "слушать" эту CAN-шину, чтобы отслеживать текущие показания температуры, скорости и т.д. или для этого нужно отправлять какие-то запросы?

3) Ну пожалуй основной вопрос, есть ли где-то полное описание всех КИАвских CAN-кодов (ID и формат данных)?
Меня в первую очередь интересует температура охлаждающей жидкости (и вообще вся температура которая у нас есть), ну и текущая скорость и обороты двигателя.

4) Еще вообще нет никакой информации по поводу штатной кнопки "SOS", там же используется Глонасс, можно ли как-то через CAN-шину получить координаты автомобиля?

5) Еще я не понял, нужен ли какой-то преобразователь логических уровней (5В <> 12В) при подключении 5В микросхемы MCP2515 к CAN-шине авто, или там тоже везде 5В логика?

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

А вот любой практический опыт (схемы подключения, фото, фрагменты кода и т.д.) будет полезен, надеюсь не только мне!
AleksVL вне форума
НачСвязи
Младший научный сотрудник
Kia Rio 2012
1.6 АКПП
Сообщений: 260
Получил "Мне нравится"38  Отдал "Мне нравится"11
В клубе с 18.01.2014
04.02.2022 13:29
#2
В киа рио 3 может быть 2 CAN шины: C--CAN и B-CAN. Первая - основная и вся нужная Вам информация в ней и она же на OBD2 в салоне. Вторая - это обмен данными между приборкой и BCM, имеется только на старших комплектациях. Еще есть K-line, но за нее ничего не скажу.
По поводу трансивера - TJA1040 уже имеется в приборке и можно сделать выход с ее 4-й ноги сигнала TX, таким образом избавиться от внешнего трансивера. Вывод можно сделать через свободную ногу штатного разъёма приборки. В большинстве модификаций приборок будет достаточно снять только заднюю крышку для доступа к tja1040 и контрольным точкам TP30 (обычная) и TP25 (supervision) - они и есть 4-я нога TJA.
По поводу уровней логических - трансивер (второй, не MCP) как по вашей ссылке на Али я подключал напрямую к C-CAN, без всяких преобразователей уровня, ну и питание на него 5 вольт подавал, естественно.
По остальным Вашим вопросам - не подскажу.

И еще по поводу отличий сигнала в разных моделях Kia - статусы круиз-контроля одним и тем же устройством через СAN прекрасно читаются на: Kia Rio3, Solaris1, Sportage 4, Ceed1,2, Cerato2, Venga, Soul - это то что я лично проверял. Вывод - структура пакетов и ID на kia/Hyundai с большой вероятностью одинаковые (хотя какие то исключения наверное есть)
НачСвязи вне форума
AleksVL
Профессор
 
Аватар для AleksVL
KIA Ceed SW 2017
1.6 МКПП
Сообщений: 2,170
Получил "Мне нравится"140  Отдал "Мне нравится"34
В клубе с 26.01.2012
04.02.2022 13:49
#3
@НачСвязи, Спасибо большое за ответ!

Сообщение от НачСвязи Посмотреть сообщение
По поводу трансивера - TJA1040 уже имеется в приборке и можно сделать выход с ее 4-й ноги сигнала TX
Т.е. TJA1040 4ю ногу можно подключить к RX микроконтроллера и слушать как обычный COM-порт?
На какую частоту настраивать в Serial.begin(ХХХ)?


Сообщение от НачСвязи Посмотреть сообщение
статусы круиз-контроля одним и тем же устройством через СAN прекрасно читаются на
Если не сложно, можете показать тот фрагмент кода, который определят эти статусы.
AleksVL вне форума
Эту рекламу можно отключить.
НачСвязи
Младший научный сотрудник
Kia Rio 2012
1.6 АКПП
Сообщений: 260
Получил "Мне нравится"38  Отдал "Мне нравится"11
В клубе с 18.01.2014
04.02.2022 14:35
#4
Сообщение от AleksVL Посмотреть сообщение
Т.е. TJA1040 4ю ногу можно подключить к RX микроконтроллера и слушать как обычный COM-порт?
Наверное, да - как Com порт. Наверное - потому что я не силен в программировании Ардуины, сам использую STM32 и заливаю в нее готовую прошивку. Я хотел сказать, что mcp внешняя не нужна, а 4-ю ногу TJA цепляйте туда же, куда собирались цеплять TX от MCP.

Сообщение от AleksVL Посмотреть сообщение
На какую частоту настраивать в Serial.begin(ХХХ)
Не в курсе, так как сам не писал скетчи

Сообщение от AleksVL Посмотреть сообщение
Если не сложно, можете показать тот фрагмент кода, который определят эти статусы.
То же самое, см.выше
НачСвязи вне форума
AleksVL
Профессор
 
Аватар для AleksVL
KIA Ceed SW 2017
1.6 МКПП
Сообщений: 2,170
Получил "Мне нравится"140  Отдал "Мне нравится"34
В клубе с 26.01.2012
04.02.2022 14:54
#5
Сообщение от НачСвязи Посмотреть сообщение
заливаю в нее готовую прошивку
А готовая прошивка в виде С++ (ну или какой там используется) кода или в виде бинарного файа?
AleksVL вне форума
НачСвязи
Младший научный сотрудник
Kia Rio 2012
1.6 АКПП
Сообщений: 260
Получил "Мне нравится"38  Отдал "Мне нравится"11
В клубе с 18.01.2014
04.02.2022 17:49
#6
Сообщение от AleksVL Посмотреть сообщение
А готовая прошивка в виде С++ (ну или какой там используется) кода или в виде бинарного...
Бинарник. Исходников у меня нет
НачСвязи вне форума
Эту рекламу можно отключить.
alco-naft
Академик
Kia Rio 2018
1.4 АКПП
Сообщений: 6,218
Получил "Мне нравится"749  Отдал "Мне нравится"521
В клубе с 02.02.2019
04.02.2022 17:58
#7
Сообщение от AleksVL Посмотреть сообщение
можно ли как-то через CAN-шину получить координаты автомобиля?
Я как-то заходил в этот блок через диагностику, там среди переменных были и координаты, значит скорей всего получить их можно, но какая должна быть последовательность запросов - это быстрей через какой-нибудь кан-хакер можно выяснить, чем найти документацию.
alco-naft вне форума
AleksVL
Профессор
 
Аватар для AleksVL
KIA Ceed SW 2017
1.6 МКПП
Сообщений: 2,170
Получил "Мне нравится"140  Отдал "Мне нравится"34
В клубе с 26.01.2012
04.02.2022 18:58
#8
Сообщение от alco-naft Посмотреть сообщение
это быстрей через какой-нибудь кан-хакер можно выяснить
Это все понятно, я собственно говоря и создал эту тему, чтобы народ делился своим опытом.
Наверняка уже кто-то все это уже сделал до тебя. А так каждому чайнику типа меня приходится заново изобретать велосипед, хакать эту шину и т.д.
AleksVL вне форума
Eugenika
Студент
 
Аватар для Eugenika
Kia rio x 2021
Сообщений: 31
Получил "Мне нравится"9  Отдал "Мне нравится"7
В клубе с 17.04.2021
05.02.2022 13:33
#9
Сообщение от AleksVL Посмотреть сообщение
Заказал себе такую вот плату MCP2515 хочу подружить ее с Ардуино Нано
Аккуратно разложенные грабли 1.
На просторах интернета в очень многих готов скетчах и переделанных библиотеках подразумевается плата с 16мгц , а плата с алиэкспресса обычно 8 мгц. Надо явно указывать частоту генератора в коде скетча, иначе не заработает верно.

Менее аккуратно разложенные грабли 2.
Не забывайте про INT, хотя часто указывают его как необязательный.
Eugenika вне форума
randy
Старший научный сотрудник
Kia Rio 2013
1.4 МКПП
Сообщений: 552
Получил "Мне нравится"28  Отдал "Мне нравится"10
В клубе с 29.10.2013
05.02.2022 14:33
#10
Вот тут БК для Рио своими руками. Из Ардуины. начало. Я не помню была там ссылка или нет, но вот выложу ссылка. И вот библиотека, которую использовал (я её немного изменил для себя) ссылка.
А вот продолжение:
Как я писал в теме БК для Rio, в моей машине по CAN постоянно передаются 12 видов пакетов. Чтобы попытаться определить, что они означают, решил записать их на флешку одновременно с известными параметрами диагностики OBD, перенести на комп и попытаться сравнить их.
Вот на такой девайс:


В раздумьях, как мне его покрасивше соединить с Ардуиной, на Ali наткнулся на Arduino prototype shield:


Из чего и собрал вот такое устройство:


Позже обнаружил, что продаются уже готовые такие устройства и называются "регистраторы". Но было поздно — запчасти уже были закуплены. Ну да ладно, это мелочи.
Казалось бы, всё хорошо. Установил модуль в БК. Добавил в скетч процедуру записи принятых пакетов и записывай. Но не тут-то было. Отдельно принимает, отдельно записывает, работает на столе. А как подключаешь в машине – то пишет, то не пишет, то пишет не то, что надо. До конца я не стал разбираться, но моё предположение в критической нехватке оперативной памяти, т.к. библиотека FAT сожрала половину ОП, которой и так-то у Ардуины всего 2К. Потратив несколько дней на модификации и отладку скетча, мне так и не удалось добиться стабильной совместной работы CANshield и CardAdapter. В конце концов, мне это надоело, и решил я более не тратить время на отладку скетча для слабенького микроконтроллера, а использовать его на изучение STM32. О котором знал только то, что он круче Ардуины.
К этому моменту у меня уже лежала и ждала своего часа плата STM32F407VET6.


Выбор этой платы обусловлен тем, что:
1) В отличие от популярной F103 может работать одновременно CAN и USB
2) На борту есть слот microSD
3) Есть гнездо для батарейки RTC
И умеренная цена среди аналогов.
Заказывал я её без четкого представления, зачем она мне, собственно, нужна. Просто потому, что круто! Теперь, когда стало понятно, что из неё делать, обнаружилось, что для подключения к CAN-шине автомобиля необходим драйвер шины.
Заказал. А пока ждал, для того, чтобы хоть с чего-то начать, начал учиться подключать OLED дисплей, т.к. вычитал, что ОЛЕД не боится морозов, а во-вторых – углы обзора такие, что TFT отдыхает в сторонке. Потому что как-бы для автомобиля. Тут выявился ещё один ништяк этой платы – возможность прошивки без программатора, просто по USB программой DfuSeDemo.
Подключил, поигрался со шрифтами. Параметры подобрал такие, что добился 300 FPS при полной прорисовке экрана.


Но, пока учился подключить ОЛЕД по SPI, узнал, что у F407 есть порт FSMC специально для подключения дисплеев по 16-ти разрядной шине. Чтобы бездействовал такой крутой порт за который, в том числе, плочены деньги – такого я допустить не мог! И тут, как говорится, Остапа понесло – нашел и заказал дисплей 3.97” LCD Display IPS Touch Screen Module Full View HD 800X480.


Ну, и в силу своей некомпетентности, этой покупкой наступил на грабли, причем 2 раза. Во-первых, как позже выяснил, такое разрешение для такого устройства совершенно не нужно, только расход памяти и процессора. Во-вторых, контроллер дисплея OTM8009A оказался очень непопулярным. Убил море времени, чтобы найти инфу для этого дисплея и адаптировать под себя. Наиболее подходящую библиотеку нашел у Jean-Marc Zingg здесь ссылка. Эта библиотека под Arduino. Пришлось ещё её переделать (нужные куски) под SW4STM32. Фотку, когда платы были соеденины dupont-шлейфами, не делал.
Следующая проблема вылезла в виде того (аукнулось дикое разрешение экрана), что стандартные Адафрутовские шрифты, которые используются в библиотеке, можно разглядеть только в микроскоп. Даже очки не помогают. А русских вообще не нашел. Пришлось ещё и этим заниматься. Зато теперь приспособился: могу любой Виндовый шрифт для себя конвертировать любого размера за пару часов.
Это если с буквами Ё Й. Если без них, то и вовсе минут за 30. Наделал себе несколько от 20 точек до 120-ти (120 только цифры и знаки).
Моя первая программа – вывод текста. Здесь шрифты 60 и 120:


Далее решил, как собрать в одно целое с STM32. Нужно было, чтобы и шлейф был покороче, и разъемы платы не перекрывались. Долго крутил-вертел, в конце концов решил сделать так:


Обе платы крепятся к соединительной пластине из стеклотекстолита 120х84.
Шлейф сделал из шлейфа floppy дисковода. Питание сделал не от разъема дисплея, где 3,3 в, а отдельным проводом от +5 вольт. Что надо тАк делать, уже не помню где, в Инете прочитал.


К тому времени пришел драйвер CAN. И осталось решить ещё один вопрос — о питании всего БК (дадим пока такое рабочее название). Ну, тут всё просто – от OBD через DC-DC с 16 до 5 вольт, коих валом. Ардуино питалась напрямую от бортсети — CANshield так сделана, как не сгорела – сам удивляюсь.
Чтобы собрать всё это без соплей, применил Ардуиновский подход – типа CAN-шилда для STM32. На нём же коммутация BOOT0, BOOT1 для регулярной прошивки. Пришлось заказывать разъемы с длинными пинами, опять ждать:

(Как оказалось, фотоап-т не умеет резкость наводить)

Зеленый провод – резерв для K-line драйвера.
Вот так это соединяется


И вот какое устройство получилось:








В один из моментов в голову пришла мысль, что делать из такого устройства какой-нибудь показометр для машины – будет слишком жирно. Так что теперь это не БК, а портативная многоцелевая лаборатория STM32. И первый проект – SkyNET CANsniffer.

Развитие программы: чтение тачскрина, настройка CAN, прослушка CAN, запросы OBD, настройка FAT, проверка SD:


Кстати, тут обнаружился ещё один ништяк этой платы: слот microSD не просто на плате, а к нему на кристалле есть специализированный аппаратный контроллер SD. Его не видно, но он есть.

"Корпус"

Камера, мотор!


И вот, собственно, для чего всё затевалось, вот такие файлы получаются:


Проект, в котором куча недоделок и ошибок.
Теорию расписывать не буду, сам всё с Инета брал. А если будут вопросы — задавайте.

Пример 10-ти минутной поездки


Программу просмотра, в силу её убогости, пока выкладывать не буду.

Продолжение следует.

P.S. Да. И забыл написать самое главное. В добавление к находкам нашего коллеги удалось определить вот ещё что:
0x0a0 — elc x x x x x x x — 04 calculated engine load +
0x0a0 — x temp x x x x x x — 05 coliant temp
0x0a0 — x x x x x tp x x — 11 throttle position
0x0a0 — x x x x x x low high — 03 fuel system status +

0x0a1 — short x x x x x x x — 06 short term fuel bank1
0x0a1 — x long 0 0 x x x x — 07 long term fuel bank1
0x0a1 — x x 0 0 x 0 0 0

2A0 — x 0 x 0 0 0 0 0

2C0 — 1 0 0 0 0 0 0 0 — всегда, когда вкл зажигание

260[1]=316[4]

А есть ещё вариант влезть в КАН-шину - купить адаптер CANhaker и ловить пакеты, например, ноутбуком одноименной программой.

randy вне форума

Метки
can-шина

Эту рекламу можно отключить.
© Киа Рио клуб Россия, 2024
© vBulletin 2024, Jelsoft Enterprises Ltd.
Текущее время: 11:59. Часовой пояс GMT +3.