Mitsubishi Galant (9G) (Бегемотік)

CANbus на Galant 9 або хочу бачити відкриті двері на магнітолі + емулятор CD ченджера Rockford

Я їжджу на Mitsubishi Galant (9G)
Львів, Україна

Після установки Android голови дуже хотілось бачити відкриті двері і багажник на дисплеї так як показує Ralliart дисплей. Після збору даних з кан шини дійшов висновку що це доволі просто. 
І так по порядку: 

Серцем проекту в нас буде ESP32 C3, його функціоналу цілком достатньо для даних цілей.

 Щодо вибору Can трансіверу - будемо використовувати TJA1050 так як всіма хвалений SN65HVD230 валить шину в 0 після відключення живлення (а ми плануєм живити наш девайс тільки з увімкненим ACC або запалюванням)



Для використання шилда з MCP2515 його потрібно мінімально модифікувати, так як ESP32 в нас не толерантний з 5V логікою, а сам трансівер потребує 5V для стабільної роботи. Контроллер кан MCP2515 прекрасно працює з живленням 3.3V. Отже просто перерізаєм доріжку живлення TJA1050 на шилді. Потім заводим 5V окремо для трансівера. 


модифікація


Для апаратної реалізації пристрою для спілкування з Android головою зібрав простенький прототип:


прототип


Звичайно додав сюди дисплей для показу температури (з попередніх записів)
По програмній частині сильно допомогли напрацювання користувача smartgauges (github), його проект кастомного канбоксу https://github.com/smartgauges/canbox 

Тут якраз знайшов як формується повідомлення боксу Raise в Android голову для VW:



В цьому ж репозиторії знайшов як відбувається відправка повідомлення про натиснуті кнопки на рулі. Так і завів управління плеєром з руля) 
На цьому апаратна частина канбокса все, переходимо до реверсінженірингу) 

Дістаю свій Canable з прошивко для Pcan View і йду в сашину. 


CANABLE

Підключаю девайс, не включаючи запалювання (для мінімізації кількості блоків які надсилають дані, стан дверей гуляє в шині і при виключеному запаленні)
Прошу когось відкрити/закрити двері по черзі і спостерігаю за змінами... 
В цьому випадку просто зрозуміти - інформацію про стан дверей надсилає блок 0х423 в байті [0].



Тут суто двері, інформацію про багажник надсилає інший id, хто вже взявся за таке знайде за пару секунд у себе)
Ще раз прошу відкрити/закрити двері по черзі і записую значення байта [0] в hex вигляді. Йду писати скетч  ) 
Перший тест:



Успіх, голова розуміє що їй надсилає ESP32. До речі тут не обов`язково підєднувати в фішці канбоксу RX TX, так як чимось керувати з магнітоли я не збираюсь то під`єднав тільки TX з ESP32 до RX піна на голові. 

Переходимо до CD ченджера)

Тут все трохи складніше. Наша балайка комунікує з підключеними пристроями по протоколу Mitsubishi MELBUS. Так як сама Mitsubishi колись виготовляла мультимедіа для Volvo, можна знайти згадки таких емуляторів для цих машин. Але сама комунікація трохи відрізняється, трохи інший вигляд повідомлень, наша магнітола трохи новіша, по суті така ж в Eclipse була з іншою панеллю. Але сам опис протоколу і розуміння його роботи сильно спрощує розробку свого проекту, так як вже не потрібно з нуля ковирятись днями над протоколом з логічним аналізатором.
Суттєво допоміг проект емулятора visualapproach для Volvo. В нього реалізована емуляція CDC, супутникового радіо Sirius і реалізовано вивід всіх повідомлень MELBUS  в термінал. 
Посилання на github: Volvo melbus
Просто скачав, закоментував частину для відображення невідомих повідомлень і розкоментував рядок для відображення всіх повідомлень:



Заливаю в Arduino і переходжу до пайки прототипу. 
Для підключення в штатне місце рідної магнітоли потрібен специфічний 13-и піновий штекер. Його можна знайти на ali. 



Перша збірка схематично виглядала так:


Транзистор на вході живлення потрібен для вимкнення землі щоб уникнути фантомного живлення Arduino через MELBUS (тут постійно 5V, не залежно від статусу запалювання), в іншому випадку як мінімум може пошкодити ESD діоди на входах Arduino.


З цим просидів годинами біля магнітоли з спробами знайти відмінності в комунікації. 




Через пару днів місію було виконано) Скетч вичищено від MDC i SAT частини, прибрано показ батареї і відправка тексту, так як наш годинник такого не вміє, або я не зрозумів як це працює)
Прийшов час першого тесту... два натискання на кнопку CD і магнітола підхоплює емулятор) звук йде з входу на 13и піновому роз`ємі, але не все так ідеально... ловить дикі наводки по живленню... Знайшов схему магнітоли і аналізую чому по AUX шумів нема а тут таке... 


Як видно з схеми AUX йде на операційний підсилювач на базі NJM4560... Можна додати сюди такий аудіо ізолятор але ціна на компоненти New Japan Radio і час очікування відштовхують від такої ідеї,  найпростіше рішення додати Ground Loop ізолятор на трансформаторах. Був куплений якийсь дешевий з аліка для тесту:



І очікувано шлак, сильно ріже низькі хоч і проблему з фоновим шумом повністю вирішує. 
Тут якось випадково натрапив на BA3121



По даташіту ніби хороший варіант. Замовив найпростішу збірку в Китаї, звичайно такі варіанти треба допрацьовувати, як мінімум додати діод по живленню)
Доопрацьована схема:


Живлення BA3121 виставив на 8V, так само як і живлення NJM4560 у рідній магнітолі. Можливо, це було зроблено даремно, тож, якщо що, поправте в коментарях.

Тут вже по звуку ніяких нюансів. Авто стартує з CD ченджера, нема необхідності кожен раз перемикатись на AUX. 
Для роботи кнопок керма (тільки попередній і наступний трек | гучність рідною магнітолою керується)  і кнопок на панелі магнітоли  реалізував в прошивці ченджера відправки кодів кнопок по UART, ESP32 прослуховує  послідовний порт і якщо отримує певний код відпраляє в магнітолу повідомлення в Android магнітолу про натискання певної кнопки.  Логічні рівні Arduino і ESP32 узгоджено через дільник. 

З UART трохи колхоз, в ESP32 С3 заявлено 2 апаратних UART але UART0 який на USB перепризначити чомусь не вийшло, тому UART1 для відправки даних як канбокс в магнітолу так і для отримання кодів з Arduino ) Такі нюанси але на функціонал не впливають)
Таке рішення поки тимчасове, так як не можна вільно перепризначати кнопки які керуються канбоксом, точніше можна але не великий вибір функціоналу.



В майбутньому як знайду час -  реалізую емулятор резистивних кнопок на тій ж ардуіно що і CDC, підключатись буде до KEY1 китай магнітоли, тоді вже буде можливість використовувати клавіші 1-6 на панелі для різних функцій в режимі CDC.
ESP32 буде суто для дисплейчика і надавати статус дверей.
Ну і на фініш - тест споживання прототипу:




Опубліковано: 04 січня 19:57
16 0 4

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на KIA Sportage (3G)
ого як суперово. ВаУ 👍
05 січня 01:44
Наступний етап - намалювати красиву плату і розмістити всі компоненти на ній)))
Доречі, формат повідомлень для райзе збігається не тільки для VW, а впринципі до всієї лінійки райзе. Правда в тому реаозиторії дуже багато чого немає.
Споживання наче не погане, але чи важливо це для девайса, який працює при запалені? У мене висить розроблений мною блок кан на постійну, в режимі сну споживання 180 мікроампер, більшість з яких хаває кан трансівер.
І маю питання, у мене наче такий самий осцилограф, прийнамні на вигляд, підкажи, у тебе він теж розряджається сам по собі, навіть коли вимкнений?
04 січня 20:25
Я їжджу на Mitsubishi Galant (9G)
Uns8ted
Наступний етап - намалювати красиву плату і розмістити всі компоненти на ній)))Доречі, формат повідомлень для райзе збігається не тільки для VW, а впринципі до всієї лінійки райзе. Правда в тому реаозиторії дуже багато чого немає.Споживання наче не погане, але чи важливо це для девайса, який працює при запалені? У мене висить розроблений мною блок кан на постійну, в режимі сну споживання 180 мікроампер, більшість з яких хаває кан трансівер.І маю питання, у мене наче такий самий осцилограф, прийнамні на вигляд, підкажи, у тебе він теж розряджається сам по собі, навіть коли вимкнений?
Uns8ted, в raise коди кнопок, дверей відрізняються між різними моделями) формат повідомлення однаковий) таке споживання не впливає абсолютно) просто бачив концепти які постійно висять на акумуляторі, стало цікаво перевірити. Осцилограф дуже повільно сам по собі розряджається, практично не помічаю
04 січня 20:30
-Stas-
Uns8ted, в raise коди кнопок, дверей відрізняються між різними моделями) формат повідомлення однаковий) таке споживання не впливає абсолютно) просто бачив концепти які постійно висять на акумуляторі, стало цікаво перевірити. Осцилограф дуже повільно сам по собі розряджається, практично не помічаю
-Stas-, пощастило тобі, у мене 2-3 дні і повністю заряджений не вмикається, поки не постоїть на зарядці хвилин 30.
Коди кнопок і дверей - що ти маєш на увазі? Я мав на увазі те, що відправляє канбокс на андроїд. Те, як інфа заходить по кану на кан бокс різні звісно
04 січня 20:34
-Stas-
Uns8ted, наприклад порівняємо як бокс надсилає дані про двері в межах VW з того ж репозиторію
-Stas-, а, тут так. Я юзаю саме mqb, бо перший метод не спрацював, згодом я перебирав різні канбуси і на всіх працював що клімат, що двері, не важливо, обирав я honda, vw, volvo тощо.
Ще цікаво що в цьому репозиторії згадується HiWorld канбус
04 січня 20:47
Я їжджу на Mitsubishi Galant (9G)
Uns8ted
-Stas-, а, тут так. Я юзаю саме mqb, бо перший метод не спрацював, згодом я перебирав різні канбуси і на всіх працював що клімат, що двері, не важливо, обирав я honda, vw, volvo тощо.Ще цікаво що в цьому репозиторії згадується HiWorld канбус
Uns8ted, можливо вийшло реалізувати навігацію по меню магнітоли? Під VW профілем в мене хіба кнопки телефону, звук, src, mute відкликаються… Якось сидів над тим і нічого не придумав кращого як емулювати резистивні кнопки…
04 січня 22:34
-Stas-
Uns8ted, можливо вийшло реалізувати навігацію по меню магнітоли? Під VW профілем в мене хіба кнопки телефону, звук, src, mute відкликаються… Якось сидів над тим і нічого не придумав кращого як емулювати резистивні кнопки…
-Stas-, через цей інтерфейс ні. Але можна використати стм або esp, та навіть деякі ардуїно як USB HID девайси і віддавати медіа або навігаційні команди. Але мінус в тому, що клавіатура сенсорна не відкривається сама, бо думає що підєднана фізична.
Твій спосіб теж ок, теж розглядав, просто в моєму проекті це стало не важливо. Я пробував юзати цифровий потенциометр і потім через навчання клавіш
1
04 січня 22:47
Я їжджу на Mitsubishi Galant (9G)
Uns8ted
-Stas-, через цей інтерфейс ні. Але можна використати стм або esp, та навіть деякі ардуїно як USB HID девайси і віддавати медіа або навігаційні команди. Але мінус в тому, що клавіатура сенсорна не відкривається сама, бо думає що підєднана фізична. Твій спосіб теж ок, теж розглядав, просто в моєму проекті це стало не важливо. Я пробував юзати цифровий потенциометр і потім через навчання клавіш
Uns8ted, зрозуміло) теж розглядав варіант з цифровим потенціометром) але в мому випадку тільки 6 клавіш які треба перепризначити) prev/next можна залишити на канбоксі, vol+- наприклад так само + перепризначити як esc/home ) варіант usb hid не зайшов - чомусь крашиться zlink (апка для carplay)
04 січня 22:53
-Stas-
Uns8ted, концепт вже давно намалював але як завжди нема часу поковирятись)
-Stas-, розумію) у самого багато чого в довгому ящику лежить. Зараз все ніяк блок багажника не домучаю
04 січня 23:31
Я їжджу на Nissan X-Trail IV
Вогонь! Дякую за пізнавальний контент. Сам ото маю всі детальки щоби влізти в каншину з цією ж метою, але ніяк до того не дійду. Потягнув в закладки.
2
04 січня 20:16
Я їжджу на Nissan X-Trail IV
Uns8ted
yuzo, ти просто не сильно хочеш, або не сильно треба, вже би вліз давно)
Uns8ted, мені не вистачає годин в добі. Магнітоли, їх переробка і 3D принтер, ну і звісно, робота 8+ годин по будням 😀
04 січня 21:19
yuzo
Uns8ted, мені не вистачає годин в добі. Магнітоли, їх переробка і 3D принтер, ну і звісно, робота 8+ годин по будням 😀
yuzo, 100% розуміння, 0% засудження)))
Я маю на увазі що якщо б воно тобі прям критично було би ти би зробив. Я по собі дивлюся, якщо просто зробити аби було я можу і півроку не братися, але якщо це прям реально треба, то весь світ почекає
1
04 січня 21:23