Can адаптер для магнитолы своими руками

Обновлено: 04.07.2024


Сегодня настало время рассказать, как сделать CANBUS с блек джеком и плюшками, своими руками.


Полный размер

Сразу предупреждаю уровень сложности ¬– уметь держать паяльник.
Итак вариант номер 1 с использованием Arduino nano
Вам понадобится
Arduino nano (Arduino mini) ali.onl/1HOI
CAN MCP2515 ali.onl/1HOK
DC-DC преобразователь ali.onl/1HOM
Резистор на 1кОм
Гребенка контактов с шагом 2 мм
Немного текстолита(в лучшем случае)

Если вы поменяли магнитолу и у вас есть Can Bus то скорее всего разъем к нему подходящий он имеет такую распиновку, по крайней мере у меня было так(вид со стороны монтажной части)


Полный размер

Соответственно ответный разъем должен иметь похожую распиновку. С учетом, что
CAR_TX -> RX и CAR_RX -> TX .
Схема особо комментариев не имеет.


Полный размер

Второй вариант схемы с использованием STM32F103 blue pill
Уровень сложности паяльник + USB.
Нам понадобится
STM32F103 Blue pill ali.onl/1HOO
Программатор ST-LINK ali.onl/1HOP
DC-DC преобразователь ali.onl/1HOM
CAN Трансивер ali.onl/1HOR
Резистор на 470 Ом
Гребенка контактов с шагом 2 мм
Немного текстолита(в лучшем случае)
Схема представлена на рисунке ниже.


Полный размер

Сам такую схему я не собирал расскажу далее почему.
По цене разницы особо нет, тут чуть дороже из-за необходимости купить программатор, но он штука полезная.
Как прошить STM32F103 через Arduino ide можно найти в интернете, единственную собранную Arduino ide со всем необходимым я приложу в архиве где-нибудь рядом. Программатор обязательно, есть способы прошить и без него, но USB и CANиспользуют одну шину памяти и не очень комфортно работают вместе.
Если посмотреть на схему то тут резистор уже 470 Ом, прошивка уже подправлена под это все.
Преимущества STM32F103 по сравнению с Arduino nano можно найти в интернете, повторятся особо не буду. По мимо высокой производительности которая в этом проекте особо не нужна, тут аппаратная поддержка CAN, 12bit АЦП что позволяет более точно отлавливать нажатие кнопок руля. В общем с заделом на будущее.
Прошивку так же выложу в архиве, с исходниками. Будет несколько версий. Работает выполняя все основные функция та которая в hex, но там есть лишние элементы, которые в принципе не мешают.
Так же в архиве будут Readme, по мере возможности буду добавлять версии, буду описывать что и как.

Последняя версия CAN BUS самая компактная.
Но и уровень сложности максимальный. Вам потребуется заказать плату, заказать компоненты, все это припаять, и запрограммировать, этакий конструктор.


Полный размер

На плате предусмотрен выход для цифрового потенциометра, для тех кто хочет подключить нечто экзотическое нежели китайский андроид, (в коде ничего этого не реализовано, мне самому не к чему). Во всем остальном эта схема повторяет вариант номер 2 (точнее наоборот вариант номер 2 родился из этой схемы) Прошивка соответственно та же самая. Единственно вместо первого стабилизатора на 5 вольт я бы установил DC-DC преобразователь из предыдущих схем, для этого предусмотрены контакты +5, GND, +12.


Полный размер

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


Не редкость, что на автомобилях выходят из строя штатные мультимедийные системы,
особенно если в них используются многодисковые CD-чейнджеры. Стоимость ремонта или замены такого неисправного устройства может составлять большую сумму.
Иногда целесообразнее приобрести переходную рамку и установить современную мультимедийную систему(далее МС), недорогую и гораздо более функциональную.

Останется только задействовать кнопки управления на руле для управления ею.
Как правило, многие МС (made in CHINA) могут легко адаптироваться к штатным резистивным кнопкам руля.
Но вот по штатной автомобильной системе CAN их мало.
Имеем автомобиль Volvo S60 2006 года (аналогично и у XC70, XC90).
Родная МС пережевала и накрошила CD — диски, при включении впадала в конвульсии,
и в конце концов была выкинута на мороз.
В данном автомобиле, блоки кнопок на руле (каждый на микроконтроллере),
передают информацию по LIN – шине о их состоянии в центральный электронный блок автомобиля — CEM.
А дальше по низко скоростной CAN шине, в МС и другие заинтересованные в звуке блоки.
В качестве новой МС владелец выбрал магнитолу Pioneer, имеющий специальный вход для
подключения дистанционного управления:


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

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


С помощью планшета, программы CANHACKER, своего переходника CAN-USB, подключенного к CAN шине на разъеме МС,
был определен пакет данных, содержащий информацию о состоянии кнопок управления МС.
Нужные провода CAN — белый и зеленый:


Ищем и записываем:


Я для своей работы разработал и использую универсальные платы-конструкторы, на базе STM32,
с помощью которых можно быстро реализовывать разнообразные устройства
(если CAN модуль Starline не подходит для этого :) ).
Вот схема одной из плат:


Теперь осталось только запрограммировать следующий алгоритм:
Настраиваем плату только слушать CAN шину по указанному адресу. Из принятых данных анализируем выбранный байт. И в зависимости от его содержимого, активируем определенные транзисторы для выдачи правильного сопротивления резисторной матрицы на плате в шину дистанционного управления МС Pioneer. Я знаю что есть электронные сопротивления и прочее прочее. Мне так было дешевле и удобней.
Весь проект выкладывать не буду, там много еще другого реализовано. А кусочки кода для Volvo приложу.
Настройка CAN фильтра:

Процедура, вызываемая при приеме пакета:

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



В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

CAN сниффер из Arduino Uno

Чтобы послушать, что отправляет VCDS в CAN шину я собрал сниффер на макетке из Arduino и модуля MCP2515 TJA1050 Niren.

Схема подключения следующая:

CanHackerV2 позволяет смотреть пролетающий трафик, записывать и проигрывать команды с заданным интервалом, что очень сильно помогает в анализе данных.


Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)

Программно-аппаратный сканер VCDS предназначен для диагностики электронных систем управления, устанавливаемых на автомобилях группы VAG. Доступ ко всем системам: двигатель, ACP, АБС, климат-контроль, кузовая электроника и т.п., считывание и стирание кодов неисправностей, вывод текущих параметров, активация, базовые установки, адаптация, кодирование и т.п.


Подключив сниффер к линиям CAN_L и CAN_H в диагностическом шнурке я смог увидеть какие запросы делает VCDS и что отвечает авто.



Особенность авто группы VAG в том, что OBD2 разъем подключен к CAN шине через шлюз и шлюз не пропускает весь гуляющий по сети трафик, т.е. подключившись в OBD2 разъем сниффером вы ничего не увидите. Чтобы получить данные в OBD2 разъёме нужно отправлять шлюзу специальные запросы. Эти запросы и ответы видно при прослушивании трафика от VCDS. Например вот так можно получить пробег.

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

  • температура масла
  • какая именно дверь открыта

Разработка панели приборов на основе Raspberry Pi и 7″ дисплея

В качестве аппаратной части я выбрал Raspberry Pi. Была идея использовать Android планшет, но показалось, что на Raspberry Pi будет проще и быстрее. В итоге докупил официальный 7″ дисплей, и сделал CAN шилд из модуля TJA1050 Niren.


OBD2 штекер использовал от старого ELM327 адаптера.


Используются контакты: CAN_L, CAN_H, +12, GND.


Тесты в машине прошли успешно и теперь нужно было все собрать. Плату дисплея, Raspberry Pi и блок питания разместил на куске черного пластика, очень удачно подобрал пластмассовые втулки, с ними ничего не болтается и надежно закреплено.


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


Напильником довел лист черного пластика до размера крышки бардачка, к нему прикрепил бутерброд и дисплей. Для прототипа сойдет, а 3D модель с крышкой для дисплея и всеми нужными крепежами уже в разработке.


Софт панели приборов на Python и Kivy (UI framework)

Параллельно со сборкой самой панели приборов я вел разработку приложения для отображения информации с датчиков. В самом начале я не планировал какой либо дизайн.



Первая версия панели приборов

По мере разработки решил визуализировать данные более наглядно. Хотел гоночный дизайн, а получилось, что-то в стиле 80-х.



Вторая версия панели приборов

Продолжив поиски более современного дизайна я обратил внимание какие цифровые приборки делают автопроизводители и постарался сделать что-то похожее.



Третья версия панели приборов

Ранее, я никогда не разрабатывал графические приложения под Linux поэтому не знал с чего начать. Вариант на вебе простой в разработке, но слишком много лишних компонентов: иксы, браузер, nodejs, хотелось быстрой загрузки. Попробовав Qt PySide2 я понял, что это займет у меня много времени, т.к. мало опыта. Остановился на Kivy — графический фреймворк для Python, простой в понимании с полной библиотекой графических элементов и дающий возможность быстро создать мобильный интерфейс.

Kivy позволяет запускать приложение без Иксов, прямо из консоли, в качестве рендера используется OpenGL. Благодаря этому полная загрузка системы может происходить за 10 секунд.

Полный код панели в одном python файле

Алгоритм работы следующий, используется 3 потока:

  1. В главном потоке работаем с графическими элементы (спидометр, тахометр, часы, температуры и др) на экране
  2. Во втором потоке каждые 5 мс делаем опрос следующего датчика
  3. В третьем потоке слушаем CAN шину, получив ответ парсим его и обновляем соответствующий графический элемент

Проект цифровой панель приборов открытый. Рад буду предложениям и комментариям!

USB-CAN интерфейс, или просто CAN хакер своими руками


В последнее время, как в автомобилях так и в промышленной автоматике, очень часто стал применяться так называемая CAN (Controller Area Network) шина. Высокая скорость передачи данных, отличная помехоустойчивость и возможность объединения множества устройств в одну сеть, делают ее практически вне конкуренции с другими шинами. Для передачи данных по КАН шине достаточно двух проводов, или иными словами одна витая пара. Подробности работы CAN шины описаны неоднократно, кому интересно тот найдет и почитает. Нас больше интересует как же подключится с помощью компьютера, ноутбука или планшета к шине КАН. Для данной задачи я изготовил

адаптер шины USB to CAN

который позволяет подключится с помощью ПК к любой CAN шине, смотреть пакеты которые по ней идут, записывать их, а также есть полноценная возможность слать свои данные в CAN шину!
Адаптер USB to CAN будет полезен авто электрикам, он отлично подходит для отслеживания пакетов людям которые изготавливают CAN подмотки одометров, а так же инженерам которые работают с автоматикой, которая использует КАН шину.


Устройство выполнено с применением микроконтроллера фирмы microchip PIC18F1XK50. как контроллере с SPI интерфейсом MCP2515, и высокоскоростного КАН трансивера mcp2551. ВАЖНО. микросхемы КАН контроллера MCP2515 бывают в разных корпусах, и у них не совпадают выводы, плата разведена под MCP2515IST. если будете пихать с другими буквами придется брать даташит, сверять ноги и разводить под ваш экземпляр. Нумерация выводов в плате и схеме не совпадает, так как на схеме MCP2515 нарисована в другом корпусе!
И так вот схема адаптера USB to CAN.

USB-CAN интерфейс, или просто CAN хакер своими руками


В принципе ничего особо сложного, если сравнивать с теми схемами которые гуляют по сети. Схема 100% работает, я по мимо того что сделал прототип я его еще и испытывал, если не поленюсь то запишу видео, как работает с CAN подмоткой спидометра, а может и на работе к автоматике подключу для наглядности. Собственно под сей девайс я развел печатную плату, по размерам получилось 55 х 45мм. все компоненты SMD кроме нескольких перемычек. Вот собственно и плата.

USB-CAN интерфейс, или просто CAN хакер своими руками


Ну я думаю все понятно где что, на плате предусмотрена перемычка бутлоудера для программирования контроллера, так же перемычка терминатора, и собственно контакты шины CAN. плату делал пленочным фоторезистом, ничего сложного в ней нет, разьем стоит MINIUSB не микро!
Для работы с КАН адаптером можно использовать разные программы, но я рекомендую программу CANHacker, про нее будет отдельная статья с вылеченной от жадности разработчиков рабочей прогой, она достаточно функциональна, имеет функцию фильтрации пакетов, что часто бывает просто незаменимо, также запись данных как с шины, так и в шину, в том числе и записанных ранее (эмуляция работы некого устройства).
Теперь самое интересное, прошивка) а там все интересно, я уже не помню но по моему шил все через USB без программатора, ну короче вам повезет если с завода у вас прошит бутлоадер в контроллере, если нет то в архиве с прошивкой есть описание как прошится. В архиве самая последняя версия прошивки, бутлоадер на всякий случай, драйвера под виндовс и линукс, в общем разберетесь. При прошивке не забываем установить перемычку BOOT.
=====================================
В папке Bootloader есть хекс файл его нужно прошить в контроллер, программатором! потом поставить перемычку бутлодера, и подключить к компу по юсб. далее утилитой Mphidflash заливаем черею юсб прошивку, команда mphidflash -Write USBtin_firmware_v1.7.hex, после обновления отключаем кабель, снимаем перемычку, и устройство готово!, ставим драйвера и пользуемся. Ну по крайней мере по памяти было все как-то так)
=====================================
Правильно прошитое и работающее устройство должно определится как ком порт.

USB-CAN интерфейс, или просто CAN хакер своими руками

Так же коротенькое видео работы КАН интерфейса с перехватом пакетов от промышленного оборудования.

Читайте также: