Honda Accord (7G) (Black Demon)

Операція подружити жабу з гадюкою, або штатний клімат з андроїдом, частина 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,
Опубліковано: вчора о 18:38
10 0 1

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на Mitsubishi Lancer X
Що там розбиратися, хто квакає - той гадюка😁
1
вчора о 21:23
veti-k
Що там розбиратися, хто квакає - той гадюка😁
veti-k, я доходжу до висновку що андроїд це гадюка, але китайський клімат це жаба. Штатний клімат по суті теж гадюка, але лише коли ним можна управляти з зовні) якось складно, так)
вчора о 21:27
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, я доходжу до висновку що андроїд це гадюка, але китайський клімат це жаба. Штатний клімат по суті теж гадюка, але лише коли ним можна управляти з зовні) якось складно, так)
Uns8ted, ну в теорії нічого складного, як і в приказці - кохають один одного🙂
Я скільки разів пробував сидіти, ловити ті повідомлення в can, lin, uart, і зрозумів, що то геть не моє. Хоча і розумію, як воно там працює.
вчора о 21:37
Я їжджу на Mitsubishi Lancer X
Uns8ted
veti-k, кан як на мене найпростіше із переліченого. Аби тільки знати ID пакетів та значення
Uns8ted, мабуть по ньому найбільше інформації можна знайти🤔
вчора о 21:46
veti-k
Uns8ted, мабуть по ньому найбільше інформації можна знайти🤔
veti-k, да, зазвичай трансівер це самодостатній пристрій і читає весь пакет цілком, ну і плюс стандарт який ні який. Швидкість передачі різна буває, але стандарт. І ти одразу отримуєш ціле повідомлення, а не ще намагаєшся зрозуміти який вигляд має повідомлення, скільки байт, що вони значать і так далі
вчора о 21:53
Я їжджу на Honda Civic 4D (8G)
Круть. 👍👍👍
1
вчора о 20:42
alah
Круть. 👍👍👍
alah, дякую)
вчора о 20:42
Я їжджу на Nissan X-Trail IV
Це є крута відповідь китайцям з їхніми недопиляними канбоксами для 7го акорду. Класно, коли руки з правильного місця, не те що я😀
1
вчора о 20:38
yuzo
Це є крута відповідь китайцям з їхніми недопиляними канбоксами для 7го акорду. Класно, коли руки з правильного місця, не те що я😀
yuzo, нажаль тепер не буде показувати двері відкриті на екрані та деяку інфу, типу температури двигуна в меню авто. Але це я також згодом зроблю. Треба лише додати кан трансівер та вичитати пакети необхідні з авто та віддати їх зрозумілою мовою для андроїда.
Ну а ще в плані написання своєї апки для клімату потипу штатною та віддавати корисну інфу для малювання на сабдисплеї.
Про руки - мені насправді багато допомагали, якби не допомога не знаю на якій би стадії я зараз знаходився би і чи доробив би взагалі
1
вчора о 20:41