Після перших експериментів із CaRadio проект поступово дійшов до стану, коли це вже не просто прототип на столі, а магнітола, якою я справді користуюся в автомобілі.
Основою залишився Raspberry Pi під Linux. До нього додалися сенсорний HDMI-дисплей Waveshare і Carlinkit, через який працює Apple CarPlay.
У повсякденному використанні все досить просто: сідаєш в автомобіль, телефон підключається автоматично, на екрані з'являється CarPlay, запускаєш Google Maps, вмикаєш YouTube Music і їдеш.
Але за цим звичним інтерфейсом, як і раніше, знаходиться повністю саморобна система.
Raspberry Pi та Linux
Raspberry Pi був основою CaRadio практично від самого початку.
Для такого проекту це зручна платформа: є все необхідне для підключення екрана, зовнішніх пристроїв та автомобільної електроніки, а Linux дозволяє повністю контролювати роботу системи.
Це одна з причин, чому я не став використовувати готову Android-магнітолу. Мені хотілося самому визначати, як запускатиметься система, як виглядатиме інтерфейс і які функції з'являться далі.
Сам застосунок CaRadio написаний на C++ з використанням SDL3 і працює безпосередньо під Linux.
Але з часом стало зрозуміло, що самостійно робити навігацію, музичний інтерфейс і повноцінну інтеграцію зі смартфоном особливого сенсу немає. Усе це вже є в CarPlay.
Екран Waveshare
Для нової версії CaRadio я використав 7-дюймовий сенсорний HDMI-дисплей Waveshare з роздільною здатністю 1024×600.
Він досить компактний для встановлення в автомобіль і водночас дає нормальну площу для інтерфейсу магнітоли та CarPlay.
Саме з цим екраном CaRadio вже проїхала кілька тисяч кілометрів і пропрацювала багато годин безперервно.
Експлуатація, звісно, показала й недоліки. Головний із них — яскравість. Під прямим сонцем її хотілося б більше. Можливо, з часом екран буде замінений, але поки що він цілком справляється зі своїм завданням.
Carlinkit і CarPlay
Наступною частиною системи став Carlinkit.
Це невеликий USB-донгл, до якого підключається iPhone. Сам Carlinkit з'єднаний із Raspberry Pi і фактично стає мостом між телефоном та моєю магнітолою.
Основна розробка CaRadio велася саме з дротовим підключенням. На столі це зовсім не заважало: підключив телефон кабелем — і можна працювати.
Але перед встановленням магнітоли в автомобіль я задумався про те, що постійно підключати телефон кабелем буде не дуже зручно.
Хотілося іншої поведінки: завів автомобіль, телефон підключився автоматично, CarPlay з'явився на екрані — і можна їхати.
Після зміни iPhone з'явилася ще одна причина щось змінювати. Старий Carlinkit, як і раніше, запускав CarPlay, але з новим телефоном перестав передавати звук.
Потрібно було шукати інше рішення.
U2W
Так у мене з'явився U2W.
Коли я його купував, то припускав, що він просто замінить старий Carlinkit і дозволить використовувати бездротовий CarPlay.
Але після підключення з'ясувалося, що працює він зовсім інакше.
U2W не замінює Carlinkit. Він підключається туди, куди раніше підключався iPhone, і для Carlinkit фактично зображає підключений кабелем телефон. Справжній iPhone при цьому з'єднується вже з U2W без дроту.
У результаті замість одного пристрою вийшла зв'язка з двох:
Raspberry Pi → Carlinkit → U2W → iPhone
На перший погляд конструкція вийшла дещо дивною, але вона вирішила одразу обидві проблеми: звук знову запрацював, а підключати телефон кабелем більше не було потрібно.
Саме в такому вигляді CaRadio врешті-решт відправилася в автомобіль.
Тепер достатньо завести машину й трохи зачекати. Телефон підключається автоматично, на екрані з'являється CarPlay, після чого можна відкрити навігацію або ввімкнути музику.
Телефон при цьому може весь час залишатися в кишені.
Це і був той результат, якого мені хотілося досягти.
Від прототипу до робочої магнітоли
На цьому етапі CaRadio нарешті перестала сприйматися як експеримент, що існує переважно заради самої розробки.
Нею стало зручно користуватися щодня.
Звісно, проект на цьому не закінчився. Залишилися питання до екрана, попереду інтеграція з електронікою автомобіля, камерою заднього виду та ще багато роботи.
Але з'явилася робоча основа, навколо якої все це вже можна будувати.
А U2W несподівано відкрив ще один напрямок.
Я купував його виключно для того, щоб позбутися кабелю. Але коли з'ясувалося, що пристрій фактично прикидається підключеним iPhone, стало цікаво зрозуміти, як саме він це робить.
Що відбувається після підключення?
Як Carlinkit спілкується з програмою?
Що передається між пристроями?
І чи можна відтворити цю роботу самостійно?
З цього моменту звичайна інтеграція CarPlay поступово перетворилася на зовсім інше дослідження.
Але це вже наступна частина історії.