CaRadio в її нинішньому вигляді з'явилася далеко не одразу. Більше того, коли я вперше вирішив зробити власну автомобільну магнітолу, про CarPlay я взагалі не думав.
Історія почалася наприкінці 2021 — на початку 2022 року з мого Volkswagen T4, старих китайських магнітол і бажання встановити в автомобіль нормальний великий екран.
З чого все почалося
Одного разу сусід попросив допомогти замінити встановлену в нього стару 2DIN-магнітолу Orion AVM-56277BTG на нову. Старий Orion у результаті дістався мені.
На той час у мене був Volkswagen T4. Практично одразу з'явилася думка встановити цю магнітолу в T4. Проблема полягала в тому, що штатного місця для повноцінного 2DIN-пристрою в моїй панелі не було. Початковий план здавався досить простим: прибрати частину полички над блоком керування обігрівачем і встановити магнітолу туди.
На практиці все виявилося складніше. За поличкою знаходився елемент жорсткості кузова. Різати його заради магнітоли мені зовсім не хотілося.
Тоді з'явилася друга ідея: зменшити глибину самого Orion. CD/DVD-привід мені все одно був не потрібен, тому здавалося логічним просто видалити його й укоротити корпус магнітоли.
Але після розбирання з'ясувалося, що все не так просто: значна частина електроніки Orion була пов'язана з електронікою дисковода. Тому ця ідея теж відійшла вбік.
Саме в цей момент замість питання «як встановити готову 2DIN-магнітолу?» з'явилося значно цікавіше питання:
А чому б узагалі не зібрати свою?
Mystery як донор
У мене була стара Mystery MMTD-9122S з висувним 7-дюймовим екраном. Колись вона цілком влаштовувала мене як звичайна китайська магнітола, пізніше до неї була підключена камера заднього виду. Але з часом механізм висувного екрана перестав нормально працювати.
При цьому більша частина електроніки самої магнітоли залишалася справною.
Я розібрав Mystery і почав вивчати її схемотехніку. Усередині виявився аудіопроцесор PT2348, для якого була доступна документація, і FM-тюнер TEF6621. Обома вузлами можна було керувати незалежно від штатної логіки магнітоли.
Першим експериментом стала навіть не Raspberry Pi. Я відключив штатний STM8 і підключив необхідні вузли до Arduino. Знайшлися відповідні бібліотеки, і невдовзі вдалося отримати перший звук без участі рідного контролера Mystery.
Це був важливий момент: стало зрозуміло, що справну аналогову частину магнітоли зовсім не обов'язково викидати. Нею можна керувати зі свого контролера.
Raspberry Pi замість штатних «мізків»
На той час у мене вже був досвід програмування на C++/Qt під Raspberry Pi, та й сама Raspberry Pi була під рукою. Тому наступний крок був досить очевидним: використати її як центральний комп'ютер майбутньої магнітоли.
Від Mystery я вирішив залишити тільки те, що справді було потрібне: аудіотракт, підсилювач, FM-тюнер та екран.
Рідна 7-дюймова LCD-матриця мала TTL-інтерфейс. Для підключення її до Raspberry Pi був придбаний scaler на RTD2660. Таким чином, екран, який раніше був частиною Mystery, фактично перетворився на звичайний дисплей для Raspberry Pi.
З тачскрином я вчинив схожим чином. Його контролер я переніс на окрему плату з мінімально необхідними компонентами та підключив до Raspberry Pi.
У результаті від початкової магнітоли поступово залишилися лише окремі корисні апаратні блоки, а вся логіка пристрою перейшла під моє керування.
Власний інтерфейс
Одночасно почав з'являтися власний інтерфейс магнітоли, написаний на Qt/C++.
Завдання полягало не в тому, щоб просто вивести робочий стіл Linux на екран автомобіля. Інтерфейс від самого початку проектувався саме для використання в машині: великі кнопки, мінімум дрібних елементів та окремі екрани для основних функцій.
Однією з перших функцій, яка повноцінно запрацювала, стало FM-радіо. Raspberry Pi безпосередньо керувала апаратним FM-тюнером, а на екрані вже був мій власний інтерфейс із відображенням частоти, пошуком станцій та їх збереженням.
Поступово з'явилося головне меню з радіо, музикою, Bluetooth, камерою та налаштуваннями.
Зараз цей інтерфейс, звісно, виглядає досить просто. Але для мене тоді значно важливішим було інше: це вже не була Raspberry Pi, просто підключена до автомобільного екрана. Основні функції магнітоли справді керувалися моєю програмою.
Bluetooth з другої магнітоли
Тут став у нагоді той самий Orion, з якого фактично почалася вся історія.
З нього я витягнув готовий автомобільний Bluetooth-модуль, документацію на який знайти не вдалося. Тому довелося підключити логічний аналізатор і розібратися в протоколі обміну між модулем і рідною електронікою Orion.
Сам Bluetooth-модуль уже підтримував необхідні автомобільні функції, включно з Bluetooth Audio та Hands-Free. Керування ним здійснювалося через UART.
Після реверсу протоколу я підключив модуль до своєї системи. Bluetooth Audio точно було реалізовано, і ця функція працювала. Також в автомобілі був встановлений мікрофон. Повноцінний інтерфейс телефонних розмов я, наскільки зараз пам'ятаю, програмно закінчити вже не встиг.
Це взагалі стало характерним підходом першої версії проекту: замість того щоб намагатися реалізувати все з нуля, я використовував уже наявні апаратні вузли, розбирався, як ними керувала рідна електроніка, і підключав їх до власної системи.
З прототипу — в автомобіль
Електроніка поступово почала працювати, але залишалася початкова проблема: усе це ще потрібно було нормально встановити в T4.
Спочатку я думав надрукувати нову панель на 3D-принтері. Але на той час у мене з'явилася можливість виготовити значно акуратнішу металеву панель, яка б замінювала частину штатної центральної консолі T4. Заготовку вирізали з листового металу завтовшки 1 мм на лазерному верстаті, потім зігнули борти, після чого панель отримала чорне матове порошкове фарбування.
У неї встановлювався екран, а знизу залишалися штатні ручки керування обігрівачем.
Як корпус для всієї електроніки знову став у пригоді корпус старої Mystery. Усередині розмістилися Raspberry Pi 4, перетворювач живлення, решта електроніки магнітоли та scaler. Для вентиляції в нижній частині корпусу додатково були зроблені отвори.
Вийшла досить дивна суміш обладнання від двох китайських магнітол, Raspberry Pi, власної електроніки та програми на Qt.
Але найголовніше — вона працювала.
Камера заднього виду
Окремим завданням була камера.
Scaler на RTD2660 мав не тільки вхід для зображення від Raspberry Pi, а й композитний відеовхід. Тому до нього можна було безпосередньо підключити звичайну автомобільну камеру заднього виду.
Raspberry Pi керувала перемиканням джерела відеосигналу, завдяки чому зображення з камери можна було вивести безпосередньо на той самий екран.
У тому варіанті, яким я користувався, камеру можна було активувати через інтерфейс програми. До повноцінної автоматизації за сигналом задньої передачі проект тоді так і не дійшов.
У планах залишалося підключити сигнал від ліхтарів заднього ходу та додати контроль напруги бортової мережі, щоб захистити акумулятор від глибокого розряду.
Що вийшло — і чого не вийшло
Ця магнітола не була завершеним комерційним пристроєм і ніколи таким не задумувалася.
FM-радіо працювало. Bluetooth Audio працювало. Був власний touchscreen-інтерфейс. Працювала камера. Уся система була фізично встановлена в автомобіль і деякий час використовувалася.
Але до нормального автомобільного power management я тоді не дійшов. Магнітола вмикалася і вимикалася звичайним фізичним вимикачем. Не було нормальної логіки роботи від ACC, коректного автоматичного вимкнення, standby та контролю стану автомобіля.
Не була завершена й частина програмних функцій.
По суті, це був цілком робочий прототип, на якому я встиг перевірити головну ідею:
звичайний одноплатний комп'ютер справді може стати центральним пристроєм власної автомобільної мультимедійної системи.
А далі проект зупинився з причин, зовсім із ним не пов'язаних.
Один із тестів завантаження CaRadio на столі перед встановленням в автомобіль.
Переїзд і довга пауза
Наприкінці 2022 року я виїхав з України до Польщі.
T4 і перша магнітола залишилися частиною попереднього етапу життя, а займатися подальшою розробкою тоді було зовсім не до того.
На цьому історія проекту цілком могла закінчитися.
Але через деякий час уже в Польщі в мене з'явився Nissan Primera P12 зі штатним бортовим комп'ютером та екраном, який відображав досить мало корисної інформації. І разом із ним знову виникла думка щось із цим зробити.
На той час змінилося багато: інше залізо, інший автомобіль, інший програмний стек — і з'явилася технологія, про яку під час розробки магнітоли для T4 я взагалі не думав.
Apple CarPlay.
Саме з цього моменту починається наступний етап проекту.
Продовження
→ CaRadio: як я повернувся до саморобної магнітоли й дійшов до CarPlay