Эмулятор can шины для магнитолы своими руками
Приветствую форумчане. Давно у меня появилась идея создать CANBUS decoder для Lada Vesta под ГУ на базе PX5. Суть в том, что таких устройств для этой машины нет (точнее недавно появилась под ГУ от какого-то производителя и есть еще один, который применяется только для динамических парковочных линий и по достаточно кусачей цене).
Прошу Вас помочь мне в этом деле. На данный момент хочу попробовать только для динамических линий, а далее как пойдет.
Как идет ход моих мыслей:
- на драйве нашел статью по снифферу для CAN.
Как я понял LS CAN мне в этой схеме пока что не нужен. А MS CAN я буду подключать к пинам 6 и 14 раъема OBD (в Весте одна CAN-шина, по факту у меня есть CAN-H и CAN-L, штатно выведенные к ГУ).
BT модуля по идее у меня не будет, вместо этого UART я подключу к ГУ?
Питание можно сделать, а можно по идее запитаться от USB ГУ?
И еще вопрос - возможно ли сделать прошивку микроконтроллера через ГУ, чтобы не выводить лишних проводов и каждый раз не разбирать? Апк написать возможно смогу, если это возможно.
Один форумчанин согласился предоставить мне несколько команд. Пока что я ограничусь углом поворота руля:
Открытый на данный момент вопрос - в каком виде нужно передать информацию по UART в ГУ или где можно запросить эту информацию.
Исходный код MTCCanbus по ссылке
Добавляю код из поста на драйве. Буду пытаться переписать под считывание только нужной информации (пока только угол поворота угла. Кто поможет переписать, буду благодарен. Код буду обновлять по мере правки.
// Instanciation of CAN interface
HardwareCAN canBus(CAN1_BASE);
CanMsg msg ;
CanMsg *r_msg;
CAN_STATUS Stat ;
void CANSetup(CAN_GPIO_MAP remap, CAN_SPEED speed)
<
// Initialize CAN module
canBus.map(remap); // This setting is already wired in the Olimexino-STM32 board
Stat = canBus.begin(speed, CAN_MODE_NORMAL);
canBus.filter(0, 0, 0);
canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages
// will be performed at ease in a task or in the loop. The software fifo is 16 cells long,
// allowing at least 15 ms before processing the fifo is needed at 125 kbps
Stat = canBus.status();
if (Stat != CAN_OK)
* Your own error processing here */ ; // Initialization failed
Serial1.print("Initialization failed");
>
// Send message
// Prepare and send a frame containing some value
void SendCANmessage(long byte dlength=8, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00)
<
// Initialize the message structure
// A CAN structure includes the following fields:
msg.IDE = CAN_ID_STD; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier
msg.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE)
msg.ID = id ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers
msg.DLC = dlength; // Number of data bytes to follow
void setup()
<
pinMode(PC13, OUTPUT); // LED
digitalWrite(PC13, PC13ON);
Serial1.begin(115200);
Serial1.println("Hello World!");
Serial1.println("Starting Astra-H sniffer v01 program");
Продублирую тут.Некоторое время назад занялся CAN шиной. Наконец созрела статья, как сделать простейший кан сниффер для Астры (легко адаптировать к любой другой марке, конечно).
Начнём сразу со схемы!
Все компоненты подписаны и легко находятся на Али. Могу потом добавить конкретные ссылки, где брал я.
Соответственно, понадобится плата с контроллером STM32F103C8T6, плата стабилизированного регулятора напряжения, плата CAN трансивера MCP2551. По желанию можно добавить блютус модуль — очень удобно для записи логов на смартфон.
Программируется и прошивается с помощью АрдуиноIDE. Для прошивки придется купить USB-TTL преобразователь (пригодится для отладки) или, что проще, ST-Link V2.
Предварительная подготовка платы — см. известный источник на гиктайме.
Сама библиотека для работы с кан-шиной появилась недавно, и в основном репозитории её нет, поэтому выкладываю архив Arduino IDE, гарантированно работающий (сохранял для себя).
Ну и, конечно, файл программы: cloud.mail />Работает следующим образом: после подачи питания сниффер пытается по очереди подключиться к MS CAN, в случае неудачи — к LS CAN, и далее по кругу. Как только подключение успешно, все пойманные пакеты печатаются в UART (или, проще говоря, в ком-порт).
В случае подключения к компу Вы ловите данные через терминал. А в случае с блютусом — через замечательную программу для андроида BlueTerm2.
Затем полученный файл дербаним любимым эксэлем.
На этом всё! Не очень литературно, но суть, надеюсь, изложил понятно.
П.С. Позже добавлю скриншот из блютерма, соберу тестовый образец в более менее приличном виде.
Добавлено:
По многочисленным вопросам.
Цели следующие.
ЛС кан:
оповещение о выключенных фарах во время движения,
отображение температуры мотора и напряжения на одометре или на стрелках приборов,
функция "спасибо" — моргнуть только задними аварийками,
отображение реальной скорости на одометре
отображение, какая дверь открыта (на одометре?)
другие плюшки – см "кан адаптер" и "мини кан адаптер"
МС кан:
включение и отключение компрессора одним нажатием (климат контроль)
ввод команд цифровыми кнопками магнитолы д команд цифровыми кнопками магнитолы
Добавлено: пример лога
Hello World!
Starting sniffer v0 program
Time (ms) ; ID ; Length ; B0 ; B1 ; B2 ; B3 ; B4 ; B5 ; B6 ; B7
8; 110; 5; 0; 48; 16; 4A; E; 0; 0; 0
29; 108; 8; 13; C; 34; 0; 0; 0; 0; 0
79; 625; 8; 0; 48; 50; 0; 0; 0; 0; 0
83; 108; 8; 13; C; 38; 0; 0; 0; 0; 0
108; 110; 5; 0; 48; 16; 4A; E; 0; 0; 0
112; 130; 7; 0; DB; 28; 0; 0; 0; 0; 0
129; 108; 8; 13; C; 38; 0; 0; 0; 0; 0
179; 625; 8; 0; 48; 50; 0; 0; 0; 0; 0
183; 108; 8; 13; C; 38; 0; 0; 0; 0; 0
208; 110; 5; 0; 48; 16; 4A; E; 0; 0; 0
И после импорта данных в эксель:
А уж там полная свобода анализа. Например, разобрать сообщение побитово и смотреть нули и единицы.
Добавлено. Важно!
С некоторыми преобразователями напряженияиногда наблюдается падение шины LS, уже при подключении устройства.
Эмулятор кан шины для подключения RCD 510, 310,330. RCN 210
Не секрет, что для правильного подключения этих магнитол необходимо подключение к кан шине для отображения парктроников, климата, работы блютус в связке с магнитолой. Но самое главное это проблема разрядки аккумулятора по причине постоянного опроса магнитолы. В итоге кан шина не засыпает и аккумулятор не протягивает больше двух суток .И если ваш авто со старым гейтвеем как Passat B6 до 08 года выпуска то эти проблемы вам гарантированы.
Однако у Пассатов, Гольфов и Джетт этих годов установлены блоки парктроников без отображения. громкая связь не нужна, камера не планируется, но хочется изменить интерьер и получить возможность улучшить аудиосистему с возможностью слушать USB носители иметь ченджер на 6 дисков и так далее.
В общем многие хотят установить магнитолу посовременнее, но проблема кан шины отталкивает от заветной мечты.
Решение очень простое подключить через переходник с эмулятором кан шины.
Возможности прибора
1) Запоминание кода и прочих настроек магнитолы
2) работа подсветки кнопок при включении габаритов
3) полная логика штатного включения и выключения магнитолы. Включается при включении зажигания и выключается соответственно при вытаскивании ключа из замка зажигания. Также принудительно можно включить кнопкой на магнитоле.
4) AUX вход в самом блоке
Для подсветки нужно подключиться к любому проводу подсветки. Например подсветке прикуривателя
Для штатного режима включения — выключения АСС+ плюсовому провод на котором питание появляется при включении зажигания или повороте ключа в замке зажигания в первое положение ACC
В стандартном заводском разъёме ISO все эти провода уже есть. Просто подключить и пользоваться.
Большой разъём квадлок вставляется в магнитолу . На другом конце переходника разъёмы ISO.
Стоимость переходника 1800 рублей
Подходит для
POLO седан
GOLF 5-6
Jetta 5-6
Passat B6
и т.д.
также существуют и другие разновидности кан эмуляторов
С допфункцией активации заднего хода в магнитоле
2400 руб
установка автозвука Киев, установка автомагнитолы Киев, шумоизоляция авто Киев
Практически все современные автомобили имеют электронику, в основе своей архитектуры имеющую CAN-шину. С точки зрения производителя автомобиля шина CAN это очень полезная вещь, позволяющая гибко изменять функционал автомобиля без серьезных переделок электрооборудования. Например, чтобы добавить складывающееся зеркало со встроенным поворотником на машину традиционной архитектуры (без КАН-шины) необходимо протянуть от главного блока предохранителей провода на выключатель складывания зеркал, затем протянуть провода от выключателя в каждую дверь (левую и правую) и плюс провода от поворотников. Имеем в итоге кучу лишней меди и невозможность изменить комплектацию быстро (на конвеере). В случае автомобиля с платформой на CAN-шине просто добавляем новое зеркало, подключаем к дверному блоку, программируем что зеркало есть и должно складываться и мигать поворотником. Выключатель зеркала подключаем к центральному блоку и программируем что он есть. Ну это если очень просто объяснить 🙂
Смысл в том что CAN-шина это хорошо, и абсолютно все автомобили в самом ближайшем будущем будут иметь такую архитектуру. На данный момент все лидирующие европейские производители производят автомобили с CAN, к ним подтягиваются корейцы и японцы ну и американцы конечно.
нет ни провода от замка зажигания, ни подсветки.
Подключая нештатную магнитолу на такую машину, вы скорее всего возьмете ISO-переходник и подключите оба питания (постоянное и от ключа) магнитолы на постоянное питание. Подсветку вообще подключать не будете, и с первого взгляда вроде бы как все ОК. Но на самом деле нет, есть несколько проблем.
При подключении магнитолы без КАН-адаптера будут следующие проблемы:
Универсальный CAN-BUS адаптер для магнитолы:
Этот простой кан адаптер подключается к большинству автомобилей с CAN-шиной и выдает сигнал ACC для подключения магнитолы. Его удобно использовать тогда когда вам просто нужно решить проблему разрядки аккумулятора из-за неправильно подключенной магнитолы.
Версия для использования на грузовых автомобилях с бортовой сетью с напряжением 24В называется Connects2 IGNI-GEN24V
Штатный CAN-BUS адаптер для магнитолы:
Штатный кан-адаптер предназначен для конкретной модели автомобиля, комплектуется с одной стороны штатным разъемом для подключения к проводке автомобиля, с другой стороны стандартным ISO-разъемом для подключения магнитолы. Бывает два варианта таких can-bus адаптеров для магнитолы, первый (серия Essentials) дешевле, выдает только сигнал ACC и в принципе по функционалу не отличается от IGNI-GEN12V.
Серия CAN-BUS адаптеров Professional может больше:
Помимо сигнала ACC для подключения магнитолы такой адаптер выдает сигналы (в зависимости от модели авто): Подсветка (+12В), Задний ход (+12В), Ручник (земля), Импульс скорости (отрицательный импульс, зависящий от скорости автомобиля)
Конечно же, с таким адаптером подключение будет еще более простым и надежным, однако он и стоит дороже.
Список штатных CAN-BUS адаптеров для магнитолы и поддерживаемых автомобилей:
Alfa Romeo:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-AR1 | ACC +12V | 159 (2006-2011), Brera (2007-2010), |
Giulietta (2010-2014), Mito (2008-2014)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-AU1 | ACC +12V | A2 (2004-2005), A3 (2003-2013), A4 (2005-2015) |
A6 (2004-2011), TT (2003-2013)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-BM1 | ACC +12V | 1-Series E87 (2004-2013), 3-Series E90 (2005-2012), |
5-Series E60 (2004-2010), 7-Series E65 (2002-2008),
Chevrolet:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CV1 | ACC +12V | Camaro (2009->), Cruze (2009-2015), Equinox (2009->), |
Chrysler:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CH1 | ACC +12V | 300C (2008->), Aspen (2008-2009), |
Grand Voyager (2008->), Sebring (2007-2010),
Citroen:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CT1 | ACC +12V | Berlingo (2008>), C2 (2006>),C3 (2006>), |
C3 Picasso (2009>), C4 (2006>),
C4 Picasso (2006>),
C5 (2005>), C6 (2004>),
C8 (2006>), DS3 (2009>),
Dodge:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-DG01 | ACC +12V | Avenger (2007>), Caliber (2009>), |
Charger (2008>),Charger (2008>),
Dakota (2008>), Durango (2008-2015),
Grand Caravan (2007-2015), Journey (2008>),
Magnum (2008>), Nitro (2008>), Ram (2008>)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-F1 | ACC +12V | Fiat 500L (2012>), Ducato (2014>) | |
CTHUP-FT01 | ACC +12V, ручник, подсветка, |
Ducato (2008-2014), Idea (2006>),
C-Max (2004-2011), Fiesta (2006-2008),
Focus (2005-2011), Fusion (2005>),
Galaxy (2006>),Mondeo (2004-2014),
S-Max (2005-2011), Transit (2005>),
Kuga (2008-2012),
Transit Connect (2004-2013)
Escape (2013>), Fiesta (2012>),
Focus (2011>), Kuga (2012>), Ranger (2012>),
Transit Connect (2013>),Transit Custom (2013>)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-JP1 | ACC +12V | Cherokee (2014>), |
Lancia:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUP-LA01 | ACC +12V, ручник, подсветка, |
Land Rover:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUP-LR01 | ACC +12V, ручник, подсветка, |
Mercedes:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-MC1 | ACC +12V | E-Class (2004-2009), SLK (2002>) | |
CTHUE-MC2 | ACC +12V | A-Class (2004>), B-Class (2004>) C-Class (2004>), CL (2008>) CLK (2004>), GL (2006-2012) ML (2004-2011), R-Class (2006>) Sprinter (2006>), Vito (2007>) | |
CTHUP-MC01 | ACC +12V, |
B-Class W245 (2004-2012),
C-Class W203 (2000-2007),
CLK W209 (2000>),
ML (2005-2011), R-Class W251 (2005>),
Sprinter (2006>), Viano (2004>),
C-Class W204 (2008>), CLA (2013>),
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-VX1 | ACC +12V | Agila (2008-2015), Antara (2006>), Astra (2004-2009), Combo (2004>), |
Corsa (2004-2014), GTC (2005>),
Meriva (2005-2010), Movano (2006>), Vectra (2004>),
Signum (2004>), Tigra (2005>), Vectra (2004>),
Peugeot:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-PE2 | ACC +12V | 207 (2004>) , 208 (2012>), 2007 (2008>), 2008 (2013>), 307 (2004-2007), 308 (2007>), 3008 (2004>), 407 (2004>), 508 (2011>), 5008 (2009>), 607 (2005>), 807 (2004>), Expert (2007>), iON (2010>), Partner (2008>), RCZ (2010>) | |
CTHUP-PE01 | ACC +12V, |
3008 (2009>), 308 (2007>), 407 (2005>),
5008 (2009-2013), 607 (2004>),
807 (2005>), Bipper (2007>), Boxer (2008>),
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-ST1 | ACC +12V | Alhambra (2006>), Altea (2005>), |
Cordoba (2005>), Exeo (2008>),
Ibiza (2008>), Leon (2005-2014),
Toledo (2005>)
Skoda:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-SK1 | ACC +12V | Fabia (2007-2010), Octavia (2004-2013), |
Roomster (2006>), Superb (2006-2013),
Данный проект предназначен для изготовления простого устройства для мониторинга шины CAN. Я выбрал микропроцессор NUC140LC1CN 32K Cortex-M0 по одной главной причине – он имеет периферийные блоки USB и CAN.
Характеристики проекта
- Простота разработки
- Совместимость с протоколом LAWICEL CANUSB
- Мониторинговое устройство отображается как USB FTDI устройство
- Поддержка 11-битных CAN 2.0A и 29-битных CAN 2.0B кадров
- Наличие внутреннего буфера сообщений FIFO CAN
- Питание от USB порта
- Загрузчик, хранимый в памяти USB запоминающего устройства, для обновлений микропрограммы
- Микропрограмма, которая доступна для загрузки
Схемное решение
Для разрешения периферийному блоку NUC140 CAN соединяться с шиной CAN необходимо наличие приемопередатчика CAN. Для этой цели наиболее пригодна микросхема TJA1051T от компании NXP. Блок NUC140 может работать от источника питания напряжением 5В. Поэтому нет необходимости для применения дополнительного стабилизатора напряжение на 3.3В. Это позволяет значительно упростить задачу реализации интерфейса шины CAN. В схеме предусмотрено три светодиодных индикатора состояния:
- D1 – индикатор состояния USB соединения с хостом
- D2 отображает активность шины CAN
- D3 отображает ошибки интерфейса CAN
NUC140 не имеет встроенного загрузчика и единственным способом его запрограммировать - использовать интерфейс ARM Serial Wire Debug (SWD) (J2 коннектор) и программатор Nuvoton ICP. Ну и естественно, если загрузчик уже заранее запрограммирован, то его можно активировать. Для этой цели необходимо использовать джампер JP1. Использование джампера JP1 перед подачей питания на интерфейс приведет к запуску загрузчика.
Загрузчик
Флэш-память NUC140LC1 разделена на две секции. Одна из них предназначена для выполнения кода пользовательской программы (APROM) размером 32K, а другая для загрузчика (LDROM). Размер LDROM только 4K, что делает проблематичным создание полностью функционального USB загрузчика. Я использовал загрузчик, размещенный на запоминающемся устройстве (MSD), предоставленный Nuvoton. Установка джампера JP1 запускает выполнение загрузчика. В результате съемный диск будет отображаться в файловой системе хоста размером 32 кБ. Просто скопируйте и вставьте или перетащите и опустите обновление микропрограммы CAN-USB на диск загрузчика. Отсоедините USB кабель, снимите джампер и подсоедините кабель снова. Теперь должна выполняться обновленная микропрограмма.
Программирование интерфейса CAN-USB и NuTiny-SDK-140
Для программирования процессора NUC140 потребуется программатор Nu-Link от Nuvoton и программное приложение Nuvoton ICP. Но вместо него я решил использовать демонстрационную плату NUC140 (NuTiny-SDK-140), доступную от Digi-Key. Она имеет две части, часть с микросхемой NUC140 и собственно программатор Nu-Link. Плата равномерно перфорирована, что позволяет отсоединить часть Nu-Link. На самом деле вы может изготовить данное устройство исключительно на демонстрационной плате NuTiny-SDK-140, добавив только дополнительную микросхему приемопередатчика CAN.
При подсоединении Nu-Link процесс программирования NUC140 становится несложным. Ключевым вопросом является выбор загрузки из LDROM вместо APROM (в Config настройках) для обеспечения функционирования USB загрузчика.
Программное обеспечение
Интерфейс CAN-USB совместим с протоколом LAWICEL CANUSB и будет работать с приложениями, предназначенными для данного протокола. Я протестировал два приложения с интерфейсом CAN-USB:
CANHacker V2.00.02
Это бесплатное приложение CANHacker. Я не смог найти руководство пользователя для этого приложения. Однако оно достаточно простое и интуитивное при использовании.
Читайте также: