Так так, я знаю, що скоріше за все я тут вже всіх за***ав цими постами про жабу та гадюку, здавалося би, проект завершено, але аж ніяк, і ті круті штуки, що вдалося реалізувати (і можна буде реалізувати в подальшому) просто не дозволяють мені не написати про це.
Власне, для чого я взагалі поліз щось міняти. Відповідь проста, мені максимально не подобався застосунок управління кліматом.
Так, він виглядає красиво, але стільки функціоналу мені не потрібно, мені не треба температура, кнопки обігріву, мені треба лише кнопка А/С, Mode та швидкысть вентиляторів. І тут були великі мінуси. Перший - анімація режимів взагалі не відповідає дійсності, друге - 7 швидкостей вентиляторів, коли доступно лише 5.
Я хотів вирішити цю проблему написанням власного застосунку, де буде максимально схожий інтерфейс на штатну наві, +, по можиливості, додати час та можливо музику. Але я застряг на моменті, що доступ до серійного порту так просто не отримати.
Варіант 2, багато людей мені казало що є канбуси, які вміють працювати зі штатнім дисплеєм, наприклад від мазди, я виставив канбус для мазди але не побачив там панелі клімата (або побачив зовсім не те що мені треба). Вирішив подивитися, що ж пропонується для Хонд і пішов лазити по канбусу Raise - Honda, перебирав моделі, аж раптом натрапив на канбус для Сівіка 22 року. В ньому прям все що треба, гарна панель клімата, мінімалістична і максимально схожа на рідну, от порівняйте самі
Так, відмннсоті є, але головне, що є всі необхідні кнопки і нічого зайвого! А як виявлося згодом, магнітола ще віддає час та назву треку (шкода що лише зі штатного плеєру та блютузу). Ну і потім ще з'ясувалося що подібний канбус ще у 10 Хонд, а також що канбус DaoJun та HiWorld нічим не відрізняється, окрім інтерфейсу застосунку "Автомобіль". І тут мене чекав основний квест, розшифрувати повідомлення, а також збагнути що приходить в магнітолу від авто, щоб мати змогу керувати кліматом. Щож, довелося придбати кан декодер Raise HD01 за цілих 1600 гривень.
Підключивши його почав реверс інженеринг. З включеним режимом дебагу відловлював повідомлення, які надсилає магнітола на канбус при натисканні клавіш, а також що надсилає канбус в магнітолу.
Мабудь це було найскладнішим. Менш складним виявилося витягати назву треку та виконавця
Дуже швидко я збагнув що треба просто взяти таблицю символів та перевести ці байти, і так воно і є. Андроїд віддає назву треку, виконавця та альбом. Я заюзав лише виконавця та назву.
Годиник виявилося витягти взагалі просто, прилітає пакет, в якому є години, хвилини та секунди, треба просто перевести в int.
Також є ще купа можливостей які можна зробити, але для цього потрібно читати кан шину авто. Теоретично можна навіть додати динамічні лінії для камер. Займуся пізніше.
Склавши все до купи переробив свій код, зробив більш оптимальний метод для читання повідомлень, бо нарешті збагнув що це не просто набір байтів, а має певну структуру, а саме:
Перший байт завжди 0x2E - це стартовий байт
Другий байт - тип пакету
Третій байт - довжина повідомлення
Потім іде N кількість байтів, що дорівнює довжині повідомлення
І останній байт це контрольна сума, розрахована методом XOR.
Зробив збирання повідомлення для клімату з наявних байтів, які змінюються при натисканні на кнопки клімату, додав збереження осттанніх ручних налаштувань в EEPROM, щоб відновлювати їх після повторного включення, зробив відображення назви та виконавця пісні на екрані, так звана, карусель або біжуча строка. Налаштування мануального клімату зкидаються до дефолтним при вимкнені клімату, наче як на штатній магнітолі. При обробці команд клімату софт серіал призупиняє роботу, щоб вивільнити ресурси, після відправки знову вмикається. Коротше вижав все що міг із Arduino Nano.
І яке ж прекрасне рішення було зробити можливість вставляти ардуїно. Як би не це, я би зараз не просто зняв би ардуїнку і прошив, а знімав би всю магнітолу, відкоучував би плату, шив програматором, знову збирав би, і так кілька разів, поки рішення не буде стабільним.
Новий код залив в той самий репозиторій в окрему гілку, під назвою raisecanbus.
Таким чином, тепер зі схеми можна випилювати модуль годинника реального часу та ІЧ приймач, бо і ньому більше немає ніякого сенсу.
Ну і відосик з демонстрацією результату
UPD 02.11.2024: додав відображення відкритих дверей, багажника та капота через кан шину, трохи перемалював плату, виправив незначні косяки. Оновив код у репизотирії та актуальну версію плати
Як на мене треба ще саму шкурку замінити щоб кнопки були більші на весь екран)