Меню

andipanda.dev

Саморобна магнітола для VW T4 на Raspberry Pi

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