Думаю всі знають що на 7 аккорді клімат контроль це частина штатної магнітолу, тож при заміні на китайську магнітолу на панелі приладів зазвичай пропадає температура і з'являються прочерки у вигляді ---°С. Воно наче не критично, але ну от хотілося мені щоб температура там була, тож ще 2 роки тому я почав ресьорчити це питання. Спочатку справи йшли не дуже, тому що я просто не розумів що до чого, думав що можливо просто треба прокирути якийсь дріт, але після вивчення схем та спілкуванням з більш прохаваними людьми проблему було локалізовано. Температура в штаті працює за таким принципом: магнітола отримує аналоговий сигнал з датчику температури, обробляє його та відправляє у кан шину в одному пакеті зі станом увімкнення обігріву заднього скла у вигляді пакета з 2 байтами, перший байт це значення ввімкнення обігріву, 0 - вимкнуто, 80 увімкнуто, а другий байт це власне температура, значення від 20 до 254, всі інші значення - це прочерки. Чому так зробили хз, і чому китайці реалізували ввікнення обігріву та не реалізували температуру теж хз, китайці у 2 байті просто відправляють 255, що за межами допустимого діапазону.
Перші успіхи я мав десь пів року тому, коли зібрав на ардуінці пристрій, який може відправляти повідомлення у кан шину. Складався він із Arduino Nano та модуля кан шини на MCP2515 та TJA1050. З його допомогою я міг відправляти необхідну температуру, але при цьому на китайській магнітолі переставали працювати все, що працює по кан шині, а саме відображення налаштувань клімату, відкриті двері, ввімкнення обігріву скла (чому читайте вище) та ще кілька дрібниць. По факту можна було лишити і так, але мене не влаштовувало те, що я описав в реченні вище, а отже нам потрібно не просто відправляти повідомлення у шину, а підміняти неправильний пакет з магнітоли, про цьому всі інші пакети слати в тому вигляді як вони є. Для цього нам необхідно зробити CAN фільтр, його логіка така, що він ставиться у розрив кан проводу магнітоли і повідомлення від машини до магнітоли просто пересилає, а повідомлення від магнітоли до машини пропускає через фільтр, при пересиланні необхідного пакету з температурою виконується функція, яка підміняє саме другий байт з температурою на коректний (звідки бралося значення температури буде описано нижче). Ця маніпуляція зберігає функціонал увімкнення обігріву скла та фіксить температуру, до чого я йшов майже 2 роки)
Тепер про те, звідки береться значення температури. Я намагався зчитати аналогове значення зі штатного датчика температури, але і тут китайці зробили погано, в штатній магнітолі на датчик подається 5 вольт, датчик це терморезистор, який змінює супротив залежно від температури і на виході ми мали б отримати значення від 0 до 5 вольт, але китайці вирішили подавати на цей датчик 12 вольт, які через ардуїно зчитати вже проблематично. Є метод використовування дільника напруги, але тоді ломається логіка клімату, тому що він запрограмований на значення до 12в + показники, які повертаються не лінійні, зробити формулу для конвертації у значення в діапазоні дозволеного не виходило, тож я забив і вирішив просто використати виносний датчик виміру температури для ардуїно. Тут теж виникла проблема, датчик повертає вже цифрове значення температури, а машина очікує свій формат, тож довелося дебажити, надсилати кожне значення від 0 до 255 машині та дивитися що відмальовує панель приладів, це було складно, але я вже знав що результат буде позитивний і це варто зробити, витратив на цей дебаг приблизно 3 години) Тож знаючи значення температури, яке очікує машина я зробив просту структуру даних та функцію, яка по цифровій температурі повертала значення, яке розуміє авто та надалі просто підміняв необхідний пакет цими даними.
По витратам вийшло приблизно 2 тисячі гривень на різні компоненти для побудови цього кан фільтру, найдорожчі компоненти це мікросхеми, ардуїно та датчик температури, купа нервів на паяння дрібних компонентів та дуже багато часу. Прткряпляґ фото та відео на якому видно що температура відображається на приборці і стоїть магнітола з Китаю, а також фото самого фільтра, на якому видно наскільки дрібні деталі
Посилання на коротке відео
АПДЕЙТ 06.08.2024: Пройшов день і мені вдалося подружити фільтр зі штатнім датчиком температури, рішення стає більш plag&play, тепер замовити фішки з аліку та можна зробити підключення по красивому. Я просто передивився схеми і зрозумів що сигнал я брав не з того дрота. Після вірного підключення датчик став видавати від 0 до 5В, що функцією analogRead інтерпретувалося у вигляді числа від 0 до 1024, це 5в із шагом 1 == 0.0049В. Подивившись на значення які читалися с датчика я зрозумів що для конвертації у зрозумілий формат для панелі приладів необхідно просто розділити на 4
Який canbus профіль використовуеш ?
тілько он поставив собі CC3 і шукав як це вирішити теж
Хоч спробую
https://www.driveaccord.net/threads/accord-android-head-unit.548027
Тому я залишив свою Наві і не поставив китайщину)
Але те, що розібрався - 👍🏻👍🏻👍🏻