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)

ghans 12.11.2017 09:30

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

xmetal 13.11.2017 17:44

Цитата:

Сообщение от ghans (Сообщение 394651)
Проблема в том, что прерывание по кан шине ардуинку не будит. По другим прерываниям просыпаемся нормально, а по шине нет. Есть где что то почитать по этой теме?

а кто будит ардуину по кан прерыванию, mcp2515?

ghans 14.11.2017 23:07

Как я понимаю, да.
Вот эта железка
Вот схема http://www.hobbytronics.co.uk/datash...an-bus-100.pdf

xmetal 15.11.2017 12:55

Должно просыпаться по низкому уровню INT mcp2515.


void test()
{
detachInterrupt(4);
}

настройки в setup()
pinMode(7, INPUT_PULLUP);
attachInterrupt (4, test, LOW);

а сама mcp2515 не спит?

ghans 15.11.2017 22:01

Вроде, делал так. Но еще раз попробую....

Скорее всего засыпает mcp2515, ибо вся железка в спящем режиме с тремя портами, подтянутыми к VCC жрёт всего около 4 mA.
Нарыл русскоязычное описание mcp 2515. http://microsin.net/adminstuff/hardw...interface.html
Видимо, придется напрямую работать с регистрами CANINTE/CANITF, а, значит, курочить библиотеку... :shok:

xmetal 15.11.2017 23:09

Сама 2515 не засыпает. Для доступа к регистрам есть в библиотеке функции
INT8U mcp2515_readRegister(const INT8U address);
void mcp2515_setRegister(const INT8U address, register const INT8U value);
и еще вот эта, управление режимами
INT8U mcp2515_setCANCTRL_Mode(const INT8U newmode);
они не доступны извне, их нужно из приват перенести в паблик.
Когда 2515 выходит из сна устанавливается режим только прослушивания, нужно переводить в нормальный режим. У меня по другому сделано, Can трансивер выводит из сна ардуину, а ардуино будит 2515 и переводит Can трансивер в нормальный режим.

ghans 21.11.2017 21:51

Нашёл на магнитоле + 5в, который появляется при активности на шине и решил наплевать на ковыряние регистров. Тупо поставил прерывание на появление RISING на пине SLA.

P.S. Твоя прога у меня снова глючит. Вылетает при выборе порта. Не помнишь, как мы с ней справились в прошлый раз?

xmetal 21.11.2017 22:36

Я тогда подправил прогу и она стала сама сбрасывать ардуино при выбор порта. Может ты старую используешь?

civil-zz 24.11.2017 16:18

Вложений: 2
Заинтересовался недавно микроконтроллерами, и, т.к. моргать диодами и опрашивать датчики надоело тут же, то в качестве упражнения по изучению Arduino и C решил собрать что-то для автомобиля (своего Ford Focus 2), а именно - с работой с CAN. Просто получать и отображать данные было бы слишком просто, а процесс перепрошивки блоков — наоборот, слишком громоздко, да и не думаю, что с моим нулевым опытом, получилось бы все упихнуть в ардуину, поэтому решил сделать устройство для прошивки ключей - по объему задачи как раз.

Собственно, использовал как раз сабж - CAN Shield 1.2 на MCP2515. Плюс еще SD Shield для хранения нужных файлов и LCD Keypad Shield для экрана и кнопок. Этажерка, конечно, вышла, знатная)))

Видео, как все работает (почему-то видео, если его вставить сюда, не работает, поэтому ссылкой):

https://youtu.be/_6MOT5jQ94o

elik745i 29.01.2018 12:25

Цитата:

Сообщение от civil-zz (Сообщение 395319)
Заинтересовался недавно микроконтроллерами, и, т.к. моргать диодами и опрашивать датчики надоело тут же, то в качестве упражнения по изучению Arduino и C решил собрать что-то для автомобиля (своего Ford Focus 2), а именно - с работой с CAN. Просто получать и отображать данные было бы слишком просто, а процесс перепрошивки блоков — наоборот, слишком громоздко, да и не думаю, что с моим нулевым опытом, получилось бы все упихнуть в ардуину, поэтому решил сделать устройство для прошивки ключей - по объему задачи как раз.

Собственно, использовал как раз сабж - CAN Shield 1.2 на MCP2515. Плюс еще SD Shield для хранения нужных файлов и LCD Keypad Shield для экрана и кнопок. Этажерка, конечно, вышла, знатная)))

Видео, как все работает (почему-то видео, если его вставить сюда, не работает, поэтому ссылкой):

https://youtu.be/_6MOT5jQ94o]

Интересная штука!

elik745i 29.01.2018 12:29

Спрошу тут мож кто поможет советом:

Задача не тривиальная, нудно всего лишь замутить автостарт на кукурузнике. Можно через КАН шину заводить авто?

Скажем связка GSM модуль + Ардуина + MCP2515.

Вероятно както надо будет обходить иммоб и охранку так, что бы машинка находилась на охране, но заводить и кондиционировать салон разрешала...

randy 20.02.2018 13:34

Цитата:

Сообщение от elik745i (Сообщение 398623)
Спрошу тут мож кто поможет советом:

Задача не тривиальная, нудно всего лишь замутить автостарт на кукурузнике. Можно через КАН шину заводить авто?

Скажем связка GSM модуль + Ардуина + MCP2515.

Вероятно както надо будет обходить иммоб и охранку так, что бы машинка находилась на охране, но заводить и кондиционировать салон разрешала...

Если охранка такая, что её можно обойти Ардуинкой, то на помойку такую охранку. Да и зажигание и стартер по CAN не включаются. Автозапуск по другому делается.

elik745i 21.02.2018 00:32

Цитата:

Сообщение от randy (Сообщение 399461)
Если охранка такая, что её можно обойти Ардуинкой, то на помойку такую охранку. Да и зажигание и стартер по CAN не включаются. Автозапуск по другому делается.

Дуиной и не такое можно сделать, у меня вебсервер умного дома на ней висит дома ))) да хоть пентиумом, просто поинтересовался...
Родную обходят по кан шине, точнее дверь открывают, а далее прописывают ключ и увозят, думаю может как то автоматизировать и на базе техники этой не ключ прописать а отменить иммоб, типа отменить охранку при закрытых дверях, далее подать команду на автозавод, а при открытии родным ключем либо попытке открыть дверь без ключа (подачи команды на открытие), вернуть настройки обратно...либо заглушить, или разрешить поехать.....что то типа того... Думаю пока, чесно говоря на уровне идеи пока...

ПыСы не нравится мне идея с обходчиками, дорогие они, да и иногда нужно ключик родной прятать в торпедо, что не есть гуд

T_r_D 21.02.2018 01:33

Не у всех зажигание включается через силовые цепи. У современных машин или через КАН или через блок управления.

Но это не суть. Это обойти проще всего.
А вот что делать с иммобилайзером?

Код иммо считать можно выпаяв ПЗУ из мозгов, а код завода где брать? Там шифровка состоит из двух этих составляющих.

Если метку из ключа оставлять в машине, то это только на радость угоньщику.

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

Но это как раз обходится при помощи ардуины или стм свободно.

Так что нужно решить проблему только с иммо.

А про хватит ли ардуины, скорее да чем нет.
Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id теряет пакеты, но думаю справится.

randy 21.02.2018 14:18

Спорить не буду, схему ТЛК200 не знаю. Я так думаю, это надо посмотреть на форуме Тойоты - как там сигу с автозапуском подключают. А современные сиги по КАН в том числе и иммо обходят (На самом деле не обходят, а имитируют присутствие ключа).

Цитата:

Сообщение от T_r_D (Сообщение 399482)
Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id

Чегойто, Вы Ардуину прямо к КАН подключаете? Я подключал через Shield на MCP 2515, а она имеет аппаратные фильты.

elik745i 21.02.2018 21:40

Цитата:

Сообщение от randy (Сообщение 399495)
Спорить не буду, схему ТЛК200 не знаю. Я так думаю, это надо посмотреть на форуме Тойоты - как там сигу с автозапуском подключают. А современные сиги по КАН в том числе и иммо обходят (На самом деле не обходят, а имитируют присутствие ключа).

Чегойто, Вы Ардуину прямо к КАН подключаете? Я подключал через Shield на MCP 2515, а она имеет аппаратные фильты.

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

Да тут вообще вопрос не по тойоту, думаю сделать универсальный кан автозаводчик. Обход с иммитацией - идея!

elik745i 21.02.2018 21:46

Цитата:

Сообщение от T_r_D (Сообщение 399482)
Не у всех зажигание включается через силовые цепи. У современных машин или через КАН или через блок управления.

Но это не суть. Это обойти проще всего.
А вот что делать с иммобилайзером?

Код иммо считать можно выпаяв ПЗУ из мозгов, а код завода где брать? Там шифровка состоит из двух этих составляющих.

Если метку из ключа оставлять в машине, то это только на радость угоньщику.

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

Но это как раз обходится при помощи ардуины или стм свободно.

Так что нужно решить проблему только с иммо.

А про хватит ли ардуины, скорее да чем нет.
Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id теряет пакеты, но думаю справится.

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

T_r_D 21.02.2018 23:33

randy Отвечаю. :)
Понятно что ты через отдельный контроллер работаешь с кан в случае ардуины, но давай всётаки сравним.

Сколько у 2515 есть фильтров? По-моему 12 или 6 29 битных.
Много этого или мало, решать вам, а мне в своё время не хватило.
У СТМ 56 фильтров для 11 битных пакетов.

У 2515 два буфера, у СТМ 3.

В случае с 2515 это лишний внешний корпус который что-то да кушает.

Ну и самое главное цена/качество.
У СТМ больше и скорости и больше аппаратно интегрированно в него, а по цене дешевле ардуины уже.

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

Подведу некий итог.
У меня в машине, в данный момент живёт планшет на котором софтина самописная которая показывает данные за место штатного БК, вместо которого планшет встал, и интерфейс магнитолы. Плюс ловит нажатие кнопок. Питанием управляет вторая ардуина.
Все данные текут через кан, связка ардуино нано+мцп.
В принципе всё работает, но нажатие кнопок руля иногда пропускает.

Связка работает уже более двух лет и заглючила только один раз.

По поводу эмуляции иммобилайзера посредством отправки сообщений напрямую в КАН- писал выше!
нужно два кода:
Первый это ключь иммобилайзера, его можно выдернуть из микросхемы памяти блока управления.
Второй это код ЗАВОДА (manufacture code) который лежит в зашифрованном виде и ни один завод по доброй воле его не отдаст ибо будет скомпрометирована целая линейка моделей со схожим иммобилайзером.
Без этого нельзя отправлять ответы на запросы от блока управления.
Тоесть нельзя будет их дешифровывать чтоб осмысленно отвечать.

Знаете как достать коды завода к своей машине?
Нет проблем сделать обходчик!
А если нет, то только класть сам чип (RFID метку)

Обходчики работают пока одним только способом- родная метка в корпусе обходчика.
Есть продвижения у старлайна по без ключевой обходке, но только на те модели, для которых удалось выудить (а скорее украсть) у производителя код производителя.
Да, безусловно, можно взять коробку сваренную из стали тройки (или чего покруче), запихать туда метку обмотав проводом-антенной, поставить реле чтоб этот провод размыкала и туда же запихать контроллер, который будет включать это реле на время запуска.
Даже подскажу извратный вариант- заводить будем со штатного брелка!
Нажал на кнопку закрытия в течении 10 секунд, машина завелась, ну или на любую другую...
Тоесть контроллер поймал код штатной кнопки по сети кан, посчитал время её нажатия и включил реле которое сделало обход иммо.
Далее уже хоть реле, хоть командами по шине заводим машину.
Далее если в КАНЕ происходит какая-то гадость типа открытия двери, повышения оборотов, страгивания с места машины, или чего угодно, то реле выключается, а машина глушится.

По поводу кнопки и длительности. Про другие машины не скажу, а в Ситроенах ID с долгим нажатием кнопки ходит свободно по CANу.
Обычные, короткие нажатия, в шифрованном виде, а длинные в открытом.
Это сделано для исполнительных механизмов типа доводчиков стёкол и включение света с пульта.
Сами замки разблокируются только шифрованными пакетами.

randy 22.02.2018 11:51

Цитата:

Сообщение от elik745i (Сообщение 399508)
Обходчики, не требующие присуствия ключа в авто по ходу именно тек и работают...нет?

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

randy 22.02.2018 11:55

Цитата:

Сообщение от T_r_D (Сообщение 399512)
randy Отвечаю. :)
...У СТМ больше и скорости и больше аппаратно ...

Зря столько писал. Я знаю, что СТМ круче. Просто я начинал с полного 0-ля, и первое, что попалось на глаза для работы с КАН - Ардуина. Мне по моим хотелкам пока хватает.

randy 22.02.2018 12:17

Цитата:

Сообщение от T_r_D (Сообщение 399512)
По поводу эмуляции иммобилайзера посредством отправки сообщений напрямую в КАН- писал выше!
нужно два кода:
Первый это ключь иммобилайзера, его можно выдернуть из микросхемы памяти блока управления.
Второй это код ЗАВОДА (manufacture code) который лежит в зашифрованном виде и ни один завод по доброй воле его не отдаст ибо будет скомпрометирована целая линейка моделей со схожим иммобилайзером.
Без этого нельзя отправлять ответы на запросы от блока управления.
Тоесть нельзя будет их дешифровывать чтоб осмысленно отвечать.

Я таких не знаю, но спорить не буду.

Цитата:

Сообщение от T_r_D (Сообщение 399512)
Обходчики работают пока одним только способом- родная метка в корпусе обходчика.
Есть продвижения у старлайна по без ключевой обходке, но только на те модели, для которых удалось выудить (а скорее украсть) у производителя код производителя.

Нет, они вылавливают не код производителя, а код ключа (метки). При установке такого обходчика производится "обучение" родному ключу. И да, возможно только те модели, которые смогли перехватить-расшифровать (но их очень много).
Причем эту технологию они купили (украли) у Fortin. Который у меня и стоит.

randy 22.02.2018 12:24

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

T_r_D 22.02.2018 18:09

randy код метки есть в памяти ЭБУ.
Можете сами поискать по просторам сети эти данные, они есть для многих концернов и моделей(имею в виду положение этого кода в прошивке чтоб его найти).
Но это только часть кода. Короче там алгоритм манчестеровский. Кому интересно- посмотрите как это работает.
В принципе да, много чего уже сломано, но видимо не для коммерчиского использования как в ситуации со старлайном.
Но тогда опять же вопрос- как это узнать?

А по поводу что не знаете- почитать про иммо и станет всё ясно про пересылку и кодирование. Я и сам в тонкости не вникал, но поверхностно пролистал. А чтоб вникнуть в тонкости там надо быть с протоколами шифрования знакомым не по наслышке. Точно не мой вариант.

Запуск с метки ключа или карты- разницы нет. Смысл шифра там одинаков.

И я тоже начинал с полного 0 по микроконтроллерам, поскольку лет 15 электроники прошли для меня мимо, а последний момент, когда я ей до этого занимался был ознаменован выпуском 1533 серии русских микросхем в общий доступ. В общем времена спектрумов и АОНов на z80.

И начал я тоже с дуины, поэтому и написал что стоит и работает и какие баги есть.

А по итогу- пока нет второго куска кода сэмулировать в КАН не выйдет.
Прошить метку и замотать в антенну да- не вопрос, а вот аппаратного взлома нет к сожалению. Иначе всё было бы очень просто. Хотя у угонщиков эти прошивалки есть- значет возможно.

Если у кого есть какая доп инфа- делитесь :) Я тоже свой цинтромон хочу научить заводиться без метки иммо в антенне.

А про СТМ- проще уже с него начинать чем мучить умирающию атмелу. CUBEMX это очень упростил.

randy 23.02.2018 11:10

Цитата:

Сообщение от T_r_D (Сообщение 399553)
А по поводу что не знаете- почитать про иммо и станет всё ясно про пересылку и кодирование.

Да мне не надо.

Цитата:

Сообщение от T_r_D (Сообщение 399553)
А по итогу- пока нет второго куска кода сэмулировать в КАН не выйдет.
Прошить метку и замотать в антенну да- не вопрос, а вот аппаратного взлома нет к сожалению. Иначе всё было бы очень просто. Хотя у угонщиков эти прошивалки есть- значет возможно.

У Fortin же вышло! У меня стоит бесключевой (и безметочный) обходчик. Правда, он подключается к специальному проводу от иммобилайзера к ЭБУ. Т.е. если по КАН - там другой алгоритм?

Цитата:

Сообщение от T_r_D (Сообщение 399553)
CUBEMX это очень упростил.

Посмотрю на досуге

Paziy 19.03.2018 21:03

Ребят, дайте совет по железу. Планируется бортовик, к нему прикрутить шилды приемопередатчиков 433 MHz, для шлагбаумов ибо зоопарк брелков уже бесит, сюда же хочется управление частью оборудования и по кану и аналогом, и в дальнейшем прикрутить еще сенсорный дисплей какой-нибудь, видеорегистратор с распознаванием номеров и сделать навигацию, Wi-Fi и GSM. Что закупать, ардуину, стм или Малинкообразное что-то или комбинировать все это? Короче что взять? Я понимаю, что конкретики мало написал, но пока, что так. Вы если бы строили что-то подобное, расширяемое, или если бы просто о чем-то таком мечтали, чтобы взяли себе?

(vS) 20.03.2018 14:32

какой дисплей - 29" ?
аналоговое оборудовние, сколько? 100500 ?!
видеорегистратор с распознованием номеров, серьезно? как минимум - новая малина

Paziy 20.03.2018 20:52

Цитата:

Сообщение от (vS) (Сообщение 400452)
какой дисплей - 29" ?
аналоговое оборудовние, сколько? 100500 ?!
видеорегистратор с распознованием номеров, серьезно? как минимум - новая малина

Ну не 29" конечно где-нибудь около 7" вполне достаточно будет, да и 100500 аналогов многовато, это с прицепом ездать придется))) Если вы говорите как минимум малина, то что было бы в идеале так чтоб еще с хорошим запасом ресурса, надежности и большой кучей вариантов шилдов или каких-то других возможностей расширений для подлкючения? Raspberry Pi 3 Model B+, khadas vim2, BeagleBone Black, Odroid XU4, x86, x64 или дождаться старта продаж Odroid-N1 (правда до мая-июня далековато и к тому моменту уже хочется что-то иметь)? Мне бы понять только что взять за базу. Нужен кан, либо в штате либо подключаемый шилдом. Делаться это все будет на за один раз, а постепенно.
Сейчас первостепенно шилдами или в шате интересует наличие канбус, 433MHZ, управление парой-тройкой аналоговых кнопок, вайфай чтоб при подключении к дружественной (своей точке) сливать инфу о поездке и датчиках по вафле, потом когда-нибудь уже прицепить камеру (может даже 4K), сделать видеорегистратор с распознаванием, GPS, подцепить GSM шилд и сливать все на свой сервер в вебе, заморочиться с медиа.

sirota 20.03.2018 21:06

Цитата:

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



Цитата:

прицепить камеру (может даже 4K), сделать видеорегистратор с распознаванием, GPS, подцепить GSM шилд и сливать все на свой сервер в вебе, заморочиться с медиа.
Это все уже есть также на винде....Все оси, что озвучивали, некоторые вещи не по силам.

Paziy 20.03.2018 23:43

Цитата:

Сообщение от sirota (Сообщение 400470)
Ну насчет видео регистратора не знаю(наврятли), но на винде есть давно...тестил одну бесплатную прожку.





Это все уже есть также на винде....Все оси, что озвучивали, некоторые вещи не по силам.

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

Paziy 23.03.2018 20:09

Может быть у кого-нибудь еще мнения есть или кто может подсказать где еще можно почитать/спросить чтобы определится?

T_r_D 26.03.2018 18:30

Цитата:

Сообщение от Paziy (Сообщение 400602)
Может быть у кого-нибудь еще мнения есть или кто может подсказать где еще можно почитать/спросить чтобы определится?

Ты для себя сначала определись.
Ардуина или СТМ это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

Так что если есть нужда читать-писать в кан, дёргать какие нить релюшки и понимать нажатие кнопок на руле, то это микроконтроллер, а играть музыку, показывать карты и вообще быть с интерфейсом, так это планшет или компьютер.

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

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

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.

Paziy 27.03.2018 21:03

Цитата:

Сообщение от T_r_D (Сообщение 400742)
Ты для себя сначала определись.
Ардуина или СТМ это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

Так что если есть нужда читать-писать в кан, дёргать какие нить релюшки и понимать нажатие кнопок на руле, то это микроконтроллер, а играть музыку, показывать карты и вообще быть с интерфейсом, так это планшет или компьютер.

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

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

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.

Это был очень полезный и продуктивный совет которого я и ждал. Огромное спасибо! :read2: :good:

Misha2066 20.09.2018 16:29

Приветствую всех!
Автомобиль Nissan Murano Z51 в комплектации с двумя матричными монохромными дисплеями для климата и магнитолы. Климат и штатная магнитола общаются по can-шине со своими дисплеями, каждое устройство со своим.
Есть цель -- заменить это безобразие на Андроид-девайс и отображать на его экране показания климата и штатной магнитолы.
Последовательность действий видится следующей:
1. Считать пакеты в can-шине при нажатии и отображении на дисплеях соответствующих кнопок при помощи связки Ардуино+кан-шилд.
2. Сделать некое устройство (скорее всего на той же Ардуине), которое формировало видеосигнал при поступлении соответствующего пакета.
3. Ввести сформированный видео сигнал в Андроид-девайс.

Буду признателен за любую информацию в этом направлении.

T_r_D 21.09.2018 12:37

Первый пункт более или менее правильный, а остальные это слова человека который ни чего не понимает в данной теме.
На андроид устройстве должен быть самописный интерфейс который будет что-то отображать при поступлении каких либо команд от микроконтроллера. Да и вообще микроконтроллером можно ни чего не делать- пришёл пакет, переправили на андроид, а там дальше обрабатываем.

Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.

Да и для начала надо узнать что за CAN шина. HS, FT?

Misha2066 22.09.2018 18:58

Цитата:

Сообщение от T_r_D (Сообщение 405446)
Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.

И как это можно узнать? Документации никакой не нашел.

Цитата:

Сообщение от T_r_D (Сообщение 405446)
Да и для начала надо узнать что за CAN шина. HS, FT?

Если подключаться непосредственно на контакты CAN самого блока (климата или магнитолы), то скорее всего будет та шина которая нужна.

T_r_D 23.09.2018 20:48

А какая шина нужна? :)
В Ситроенах салонная шина FT, у шкоды HS.

А узнать что идёт в шине можно только после того, как туда залезешь, перед этим узнав какой тип шины и её скорость.
А от типа шины будет зависеть тип CAN трансивера.

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

Ну и третий способ, он доступен вообще избранным :)
Подключить анализатор логический и сразу узнать и тип шины и её скорость.

По поводу что куда и откуда идёт.
Сначала цепляемся к шине и пытаемся разобраться что там к чему.
Скорее всего будут найдены все кнопки, температуры и лампочки.
С пакетами сообщений может быть сложнее, но до этого ещё надо дойти...
Есть всякие гадские ID в которых есть вяло меняющиеся информация и всякие "фичи" в самих дисплеях.
Но до этого тоже надо дойти :)
По первой проще анализировать компом, а чтоб понимать что куда идёт нужно спаять на STM32 простой бридж с возможностью фильтрации и отображением всего этого на дисплей.
Я собирал такой бридж на STM32F105 и OLED дисплее мелком. С первого входа пришедшие ID забивались в лист и по этому листу можно было перемещаться двумя кнопочками, а третий блокировать прохождение данного ID с первого на второй вход, со второго на первый пакеты пролетали без каких либо обработок. Если требовалось отфильтровать пакет с другой стороны, то просто устройство переворачивалось.

Да и вообще- паять надо сразу на STM всё...
И не пугаться того что у той же 103 серии нельзя одновременно работать с CAN и USB. Это обходится переходником UART<>USB.
Ну чтоб к планшету цепляться.
Но зато получаешь нормальную скорость, ни каких шилдов, просто микросхему трансивера CAN дешёвую, а если у тебя FT шина, то микросхему на шилде ардуины всё равно перепаивать придётся.

ganson 23.09.2018 22:20

Здравствуйте. Прошу прощения за ламерские вопросы, Arduino nano неделя как в руках, в написании программ - 0. Хочу сделать управление не заводской магнитолой с руля ( CAN ). Скетч , человека который это делал , пытаюсь подправить под свою шину. Изначально написано для посылок - ID + data 1 байт. У меня посылки - ID + data 4-е байта. Как не правлю под четыре байта - либо ошибка, либо принимает только первый.
Вот кусок

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
switch(canMsg.can_id & 0x5FF) {

case 0x5c1: // кнопки
if(key != canMsg.data[0]) {
switch(canMsg.data[0]) {
case 00: // Unpress (All)
switch(key) {
case 6: // Unpress Vol Up
Serial.println("Unpress Vol Up");
digitalWrite(vol_up, LOW);
break;
case 7: // Unpress Vol Down
Serial.println("Unpress Vol Down");
digitalWrite(vol_down, LOW);
break;
case 2: // Unpress Next
Serial.println("Unpress Next");
digitalWrite(next, LOW);
break;
case 3: // Unpress Prev
Serial.println("Unpress Prev");
digitalWrite(prev, LOW);
break;
case 0x1a: // Unpress SRC
Serial.println("Unpress SRC");
digitalWrite(sourse, LOW);
break;
case 0x2b: // Unpress Mute
Serial.println("Unpress Mute");
digitalWrite(mute, LOW);
break;
}
break;
case 6: // Press Vol Up
Serial.println("Press Vol Up");
digitalWrite(vol_up, HIGH);
break;
case 7: // Press Vol Down
Serial.println("Press Vol Down");
digitalWrite(vol_down, HIGH);
break;
case 2: // Press Next
Serial.println("Press Next");
digitalWrite(next, HIGH);
break;
case 3: // Press Prev
Serial.println("Press Prev");
digitalWrite(prev, HIGH);
break;
case 0x1a: // Press SRC
Serial.println("Press SRC");
digitalWrite(sourse, HIGH);
break;
case 0x2b: // Press Mute
Serial.println("Press Mute");
digitalWrite(mute, HIGH);
break;
}
key = canMsg.data[0];
}
break;

break;
}
}
}

У меня ID - 32A, ничего не нажато - 02 00 00 00, + 02 10 00 00, - 02 20 00 00, > 02 40 00 00, < 02 80 00 00, up 02 01 00 00, dn 02 02 00 00.
Как написать , что бы arduino видела все четыре байта?

T_r_D 24.09.2018 12:38

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
If (canMsg.can_id = 0x32A) {
If (canMsg.data[1] = 0x10) {нажато +}
}

И так далее
Или через switch:
switch(canMsg.data[1]) {
case 0x20:
плюс
break;

}

ganson 24.09.2018 19:47

T_r_D, спасибо!!! (canMsg.data[1]), прописал вторые, меняющиеся байты и всё ок.
И вопросик так, для развития. А если бы менялись не один, а два байта?

T_r_D 24.09.2018 22:43

Ну сравнивать нужно было бы сразу два.
If (canMsg.data[1] = 0x10 && canMsg.data[0] = 0x02) {

Только не вторые, а первые :)
Яж тебе на это и указываю что счёт начинается не с 1, а с 0 :)


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

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