Honda Accord (7G) (Executive Type-S SE)

Операція подружити жабу з гадюкою, або штатний клімат з андроїдом, частина 1: POC, MVP та підготовка до реалізації

Я їжджу на Honda Accord (7G), Subaru Impreza (GE, GH)
Одеса, Україна

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

А почну з передісторії, власники 7 акорду знають, що виробник зробив дуже підло, скомпонувавши аудіо пристрій та кліматичну систему разом, що унеможливлює просто взяти і замінити магнітолу. Китайці давно придумали спосіб, зробвши свій власник клімат, але ми всі прекрасно розуміємо що воно не працює настільки добре як штатний, а окрім цього ще має ряд проблем (таких от як не відображення температури на приборці, відстутність дігностики кліматичної системи та в цілому не таку плавну роботу). Штатна магнітола то калькулятор, який без доп приблуд не має навіть ауксу, не кажучі про блютуз. Трошки краща ситуація із наві, там вже дісплей, навігація, але виглядає як випорожнення мамонта у 2к24 то році. Та і функціонал андроїда не зрівняний у порівнянні зі штатної магнтоли, а от же що треба зробити - правильно, встановити штатний клімат. Але не все ж так просто. У звичайній магнітолі одна велика плата, на якій знаходиться аудіо частина, клімат та інфо дісплей з обраними режимами та температурами. Взяти плату, разкурочити та вивести все на провідках можна, але мені погано від однієї лише думки, отже не наш варіант. Куди краще тут підходить наві, у якої клімат винесено на окрему плату. Здавалося би, так в чому складність якщо плата самостійна. А складність у тому, що ця плата вміє не все, так, можна включити авто режим, виставити температуру (але ніде не побачити яку), включити обдув лобового та підігрів заднього скла, але вибір режимів, швидкості вентиляторів та увімкнення кондиціонеру доступне лише з інтерфейсу наві. А отже стоять такі задачі:

  • Зрозуміти яким чином на плату клімату приходять команди від наві
  • Зрозуміти які команди та як їх відправляти
  • Зробити функціонал на андроїди для управління ручними налаштуваннями клімату

Почнемо із самого початку, а саме з намагання зрозуміти як саме клімат розуміє що натиснули на наві. Коли я починав цей проект, згадав що @ifynk робив подібне задовго для мене і що я брав у нього наві для дослідів, і знайшов в тодішній переписці що він юзав клімат як селф дєвайс і керував їм через напід-дуплексний юарт. Що таке юарт мені було відомо, а от що таке напів-дуплексний ні) Тож посав розбиратися. Оглянувши плату клімата побачив шлейф, який підключається до мейн юніта наві, а отже саме тут відбувається спілкування. 


ось такий роз'єм на платі клімату


Відповідний же роз'єм є на рамці дисплею наві, яка, як з'ясувалося, просто проксі до мейн плати. Але спочатку треба зрозуміти що шукати. Перевіривши тестером всі контакти я виділив декілька, які схожі на юарт (напруга, мікросхеми до яких вони йдуть) і зрозумів що далі мені потрібен осцилограф. На щастя він у мене був, але як ним користуватися я в душі не чаяв, тут на допомогу прийшов @Вовa , який записав мені доволі довгий відос з коротким екскурсом, за що йому велика подяка, і отримавши нові знання я пійшов вже рішуче шукати той юарт


вперше користуюся і одразу в точку


осцилограму, дуже схожу на спілкування по юарту я дуже швидко знайшов на 2 піні, на 3 ж пін був керуючий провід юарта, для переключення режимів читання/запис. Далі просто відстежую їх через проксі плату до основної і знажоджу


рамка дісплею, або, як я її називаю, проксі плата


сюди приходить юарт та керуючий сигнал, на піни I-B-F та I-B Data


Тепер найцікавіше, побачити команди та спробувати їх підробити. Але повністю зібраного наві у мене немає, щоб запустити його та клацати клімат, але є дуже чудове рішення від @YAM1966 яке вміє працювати майже з будь чим. Так само там був GA-NET. Що таке GA-NET мабудь не буду тут розписувати, навряд воно комусь цікаво, якщо коротко це протокол, яким спілкується вся мультимедійна система (ну і клімат, так як він частина цієї системи). Так от, за допомогою цього чарівного контроллера я відправляв потрібні команди і дивився що я отримую через серійний порт. Начебто і супер, але дані були схожі на якесь сміття. Колупався я десь пів дня, аж раптом @ifynk зміг знайти свій старий код, який дуже сильно мене бустанув та дав зрозуміти що я робив не так, і з цього моменту справи пішли дуже швидко, так як в його коді вже було реалізовано мже все необхідне і навіть більше.


Ось так я дебажив)


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

Застосунок що є на андроїді відправляє команди на, так званий, канбас, що в нашому випадку є ще і кліматом і чекає колбек щоб примінити ці зміни. Потрібно було лише навчитися генерувати колбеки по поточним параметрам, що виявилося не дуже складно а також опрацьовувати ці колбеки.


Щось таке шле андроїд через юарт


Далі логіка наступна, ловимо команду з андроїда, виясняємо що треба зробити, віддаємо команду на клімат, генеруємо колбек і відмальовуємо вибраний режим на андроїді. Доволі просто, накидав скетч, прошив ардуїно нано (так так, не думав що її вистачить) і почав теститиспочатку на столі, а потім і в авто.


Тести на столі


Все працює, чудово, але ще не ідеально. Бо це все треба номрально розмістити, а не на соплях з ардуїно. А отже що? Правильно! Проектуємо плату. Враховуємо усі модулі що нм потрібні і малюємо схему


Вийшло щось таке


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




Декілька слів про мій контролер та що саме він робить. Через піни RX TX через мультиплексор підключається до клімату в режимі напів дуплексом та постійно відстежує поточний стан клімату, звідти дістається чи включений клімат та виставлена температура. В той же час через софт серіал (так як на нано лише один апаратний юарт) читається андроїд на предмет посилання команд та відправляється колбек після команди. Так, ті хто в темі скажуть що софт серіал має певні обмеження та може заважати роботі основної програми через преривання, але в моєму випадку андроїд шле команди лише при натисканні кнопок, мені навіть вигідно що МК кидає все і обробляє команду. Також через i2c інтерфейс підключено годинник реального часу, щоб виводити його на сабдісплей. Він має відсік під батарейку або акумулятор та обв'язку для заряджання акумулятора, в моєму випадку LIR2032. Також присутній ІЧ сенсор з пультом, щоб можна було налаштовувати час не проливаючи контролер (актуально при переході на зимовий/літній час). Ну і останнє що підключено це власне саб дисплей, на якому відображається час та температура водія та пасажира на кліматі, а також довільний текст. Ну і декілька виводів ще вільні, можливо колись знадобляться)

Живлення для мого контролера буде братися від клімата через крос роз'єм, щоб не різати проводку.


Отака плата у мене вийшла, враховано все та навіть виведено декілька цифрових та аналогових пінів у вільні піни на конекторах на майбутнє, хто зна що ще прийде мені в голову.

АЛЕ, дочекатися плат це не все що необхідно зробити, є ще один величезний челендж. Зробити рамку для андроїд магнітоли. Моя ідея це взяти штатну рамку наві, яка вже має всі кнопки під клімат та ідеальні зазори (на відміну від китайської), бо це завод, та зростити її з рамкою для 10 дюймової магнітоли. Але про це вже в іншій частині. Наразі я виконав всі поставлені перед собою задачі на першу стадію, тепер робити рамку та чекати плати.


Тут ще раз відмічу та подякую людям, без яких цього проекту або не було би, або рухався би він дуже довго, бо насправді ця ідея у мене в голові вже майже 2 роки, і от тільки зараз я взявся це втілити. Отже:

@ifynk дякую за наві для дослідів, твою консультацію, допомогу та код, що бустанув мене на тижні вперед

@YAM1966 дякую за контролер, який дуже спростив мені життя, особливо з покупкою та збиранням повного комплекту наві

@Вовa дякую за швидкий екскурс по користуванню осцилографа, а також ідею зробити на платі місце під ардуїно та контролер в зборі на вибір.


Далі буде


P.S. хто тут жаба а хто гадюка кожен вирішить сам)


Ціна питання 2000 UAH,
Опубліковано: 19 вересня 18:38
28 0 1

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на Volkswagen ID.4
Найкращий та найтехнологічніший проект, що я бачив для Аккорда. Запустити б його років 10 назад, то інженери хонди пішли тихенько плакати у куточку )
3
23 вересня 10:19
ifynk
Найкращий та найтехнологічніший проект, що я бачив для Аккорда. Запустити б його років 10 назад, то інженери хонди пішли тихенько плакати у куточку )
ifynk, дякую) 10 років назад можливості були трохи менші. Тим не менш твій код реально супер допоміг, якби не він, можливо я би ще сидів чухав рєпу що ж воно там проходить)
23 вересня 10:27
Я їжджу на Audi A5 (1G)
Ух це цікава тема, особливо коли в цілому є відчуття що ну повинно ж вийти! Я робив на Arduino Nano контроллер додаткових ламп підсвічування повороту на Ford Mondeo IV, запаяв ардуінку та модулі на дірчастій платі, бо не зміг роздуплитися як мені створити правильну печатну плату для такого.
1
20 вересня 17:46
Я їжджу на Mitsubishi Lancer X
Що там розбиратися, хто квакає - той гадюка😁
1
19 вересня 21:23
veti-k
Що там розбиратися, хто квакає - той гадюка😁
veti-k, я доходжу до висновку що андроїд це гадюка, але китайський клімат це жаба. Штатний клімат по суті теж гадюка, але лише коли ним можна управляти з зовні) якось складно, так)
19 вересня 21:27
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, я доходжу до висновку що андроїд це гадюка, але китайський клімат це жаба. Штатний клімат по суті теж гадюка, але лише коли ним можна управляти з зовні) якось складно, так)
Uns8ted, ну в теорії нічого складного, як і в приказці - кохають один одного🙂
Я скільки разів пробував сидіти, ловити ті повідомлення в can, lin, uart, і зрозумів, що то геть не моє. Хоча і розумію, як воно там працює.
19 вересня 21:37
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, кан як на мене найпростіше із переліченого. Аби тільки знати ID пакетів та значення
Uns8ted, мабуть по ньому найбільше інформації можна знайти🤔
19 вересня 21:46
veti-k
Uns8ted, мабуть по ньому найбільше інформації можна знайти🤔
veti-k, да, зазвичай трансівер це самодостатній пристрій і читає весь пакет цілком, ну і плюс стандарт який ні який. Швидкість передачі різна буває, але стандарт. І ти одразу отримуєш ціле повідомлення, а не ще намагаєшся зрозуміти який вигляд має повідомлення, скільки байт, що вони значать і так далі
1
19 вересня 21:53
veti-k
Uns8ted, буду знати, хто на тому розуміється🙂
veti-k, так зібрати пристрій легко, буквально одна ардуїно нано та модуль кан mcp2515 і вже можна читати. Головне розуміти який пакет від чого. Я робив так, підключав кан до певного блоку, щоб отримувати лише його пакети, бо якщо вся машина буде срати в шину там можна не встигнути навіть роздуплятися)
20 вересня 15:11
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, так зібрати пристрій легко, буквально одна ардуїно нано та модуль кан mcp2515 і вже можна читати. Головне розуміти який пакет від чого. Я робив так, підключав кан до певного блоку, щоб отримувати лише його пакети, бо якщо вся машина буде срати в шину там можна не встигнути навіть роздуплятися)
Uns8ted, та я теж так робив, наблюдав за одним блоком. Якби все просто і цікаво. Але ж при наявності інших блоків на кан, все змінюється. А якщо треба керувати іншим блоком, то там взагалі пакетів доуя😁 У мене терпіння не вистачає.
20 вересня 15:16
veti-k
Uns8ted, та я теж так робив, наблюдав за одним блоком. Якби все просто і цікаво. Але ж при наявності інших блоків на кан, все змінюється. А якщо треба керувати іншим блоком, то там взагалі пакетів доуя😁 У мене терпіння не вистачає.
veti-k, да, є таке. Прочитати що говорить блок легко, а от що він приймає вже задачка. З одного боку круто що в шині взагалі все і можна в одному місці приєднатися, з іншого не зрозуміло який пакет потрібен конкретному блокові)
1
20 вересня 15:17
veti-k
Uns8ted, да, з кан можна легко отримати будь яку інформацію. Головне щоб не помітили чужака на лінії😁
veti-k, не помітять, а точніше це не важливо, немає реєстрації девайсів у шині (у мене прийнамні). Головне при пробуджені слати вейк ап пакет для коректної роботи (це у випадку коли пристрій на постійному + висить і переходить в режим сну)
20 вересня 15:23
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, не помітять, а точніше це не важливо, немає реєстрації девайсів у шині (у мене прийнамні). Головне при пробуджені слати вейк ап пакет для коректної роботи (це у випадку коли пристрій на постійному + висить і переходить в режим сну)
Uns8ted, у ланцері трохи заморочено, кан шина не одна, а декілька. Вони з'єднані між собою через шлюз. Салонна взагалі якась чутлива, у мене адаптер стоїть на магнітному і клімат, все чудово працює. Але все одно інколи в пам'яті з'являється фантомна помилка по магнітолі і клімату. Хоч розробник і змінював вже не раз прошивку свого девайсу, але я так і не зміг вияснити, при яких обставинах помилка з'являється.
20 вересня 15:30
veti-k
Uns8ted, закинув я те заняття, вже й позабував все🙂
veti-k, заняття доволі цікаве, особливо коли виходить)
1
20 вересня 15:46
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, заняття доволі цікаве, особливо коли виходить)
Uns8ted, та я хотів дещо з електроніки Оутлендера встановити, чого в ланцері немає. Цікаво було б наприклад систему моніторингу сліпих зон встановити. Там в теорії і не складно, два радари і два індикатори. Тим більш радари в Оутлендері з Кан шиною теж не напряму працюють, а через перехідник - can gateway.
20 вересня 15:50
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, важко коли немає аутлендеру щоб дані знімати)
Uns8ted, деталі не проблема, якщо знати, що запоацює. У мене etacs десь був з оутлендера, зібраний як стенд, сидів колись, пакети читав😁
Також з ланцера такий самий стенд є. Була навіть ціла проводка, я на ній блоки тестував.
1
20 вересня 15:55
veti-k
Uns8ted, та я теж так робив, наблюдав за одним блоком. Якби все просто і цікаво. Але ж при наявності інших блоків на кан, все змінюється. А якщо треба керувати іншим блоком, то там взагалі пакетів доуя😁 У мене терпіння не вистачає.
veti-k, я от на своєму фільтрі, який після реалізації цього проекту вже буде не потрібен і перетвориться у просто кан девайс зробив щоб замки зачинялися при наборі швидкості, щоб аварійна блимала коли електробарадник відкривається закривається, там же можна приколюхи робити щоб наприклад при зачинені авто світло ближнє горіло певний час, або загоралося при відкритті. Короче обмеження лише фантазія)
1
20 вересня 15:21
Я їжджу на Honda Civic 4D (8G)
Круть. 👍👍👍
1
19 вересня 20:42
alah
Круть. 👍👍👍
alah, дякую)
19 вересня 20:42
Я їжджу на Nissan X-Trail IV
Це є крута відповідь китайцям з їхніми недопиляними канбоксами для 7го акорду. Класно, коли руки з правильного місця, не те що я😀
1
19 вересня 20:38
yuzo
Це є крута відповідь китайцям з їхніми недопиляними канбоксами для 7го акорду. Класно, коли руки з правильного місця, не те що я😀
yuzo, нажаль тепер не буде показувати двері відкриті на екрані та деяку інфу, типу температури двигуна в меню авто. Але це я також згодом зроблю. Треба лише додати кан трансівер та вичитати пакети необхідні з авто та віддати їх зрозумілою мовою для андроїда.
Ну а ще в плані написання своєї апки для клімату потипу штатною та віддавати корисну інфу для малювання на сабдисплеї.
Про руки - мені насправді багато допомагали, якби не допомога не знаю на якій би стадії я зараз знаходився би і чи доробив би взагалі
2
19 вересня 20:41