CaRadio w swojej obecnej formie nie powstało od razu. Co więcej, kiedy po raz pierwszy postanowiłem zbudować własne radio samochodowe, w ogóle nie myślałem o CarPlay.
Historia zaczęła się pod koniec 2021 — na początku 2022 roku od mojego Volkswagena T4, starych chińskich radioodtwarzaczy i chęci zamontowania w samochodzie porządnego, dużego ekranu.
Od czego wszystko się zaczęło
Pewnego razu sąsiad poprosił mnie o pomoc przy wymianie starego radia 2DIN Orion AVM-56277BTG na nowe. Stary Orion ostatecznie trafił do mnie.
W tamtym czasie miałem Volkswagena T4. Praktycznie od razu pojawił się pomysł, żeby zamontować to radio w T4. Problem polegał na tym, że w mojej desce rozdzielczej nie było fabrycznego miejsca na pełnowymiarowe urządzenie 2DIN. Początkowy plan wydawał się dość prosty: usunąć część półki nad panelem sterowania ogrzewaniem i zamontować tam radio.
W praktyce wszystko okazało się bardziej skomplikowane. Za półką znajdował się element usztywniający nadwozie. Nie chciałem go ciąć tylko po to, żeby zamontować radio.
Wtedy pojawił się drugi pomysł: zmniejszyć głębokość samego Oriona. Napęd CD/DVD i tak nie był mi potrzebny, więc logicznym rozwiązaniem wydawało się po prostu jego usunięcie i skrócenie obudowy radia.
Po rozebraniu okazało się jednak, że nie jest to takie proste: znaczna część elektroniki Oriona była powiązana z elektroniką napędu. Dlatego ten pomysł również odszedł na bok.
Właśnie wtedy zamiast pytania „jak zamontować gotowe radio 2DIN?” pojawiło się znacznie ciekawsze:
A dlaczego właściwie nie zbudować własnego?
Mystery jako dawca
Miałem stare radio Mystery MMTD-9122S z wysuwanym 7-calowym ekranem. Kiedyś całkiem dobrze sprawdzało się jako zwykłe chińskie radio samochodowe, a później podłączyłem do niego kamerę cofania. Z czasem jednak mechanizm wysuwanego ekranu przestał działać prawidłowo.
Większość elektroniki samego radia nadal była jednak sprawna.
Rozebrałem Mystery i zacząłem analizować jego elektronikę. W środku znalazłem procesor audio PT2348, do którego dostępna była dokumentacja, oraz tuner FM TEF6621. Oboma układami można było sterować niezależnie od fabrycznej logiki radia.
Pierwszym eksperymentem nie było nawet Raspberry Pi. Odłączyłem fabryczny STM8 i podłączyłem potrzebne układy do Arduino. Znalazły się odpowiednie biblioteki i wkrótce udało się uzyskać pierwszy dźwięk bez udziału oryginalnego kontrolera Mystery.
To był ważny moment: stało się jasne, że sprawnej analogowej części radia wcale nie trzeba wyrzucać. Można nią sterować za pomocą własnego kontrolera.
Raspberry Pi zamiast fabrycznych „mózgów”
W tamtym czasie miałem już doświadczenie w programowaniu w C++/Qt na Raspberry Pi, a samo Raspberry Pi również miałem pod ręką. Następny krok był więc dość oczywisty: wykorzystać je jako centralny komputer przyszłego radia.
Z Mystery postanowiłem zostawić tylko to, co rzeczywiście było potrzebne: tor audio, wzmacniacz, tuner FM oraz ekran.
Oryginalna 7-calowa matryca LCD miała interfejs TTL. Do podłączenia jej do Raspberry Pi kupiłem scaler oparty na RTD2660. W ten sposób ekran, który wcześniej był częścią Mystery, praktycznie stał się zwykłym wyświetlaczem dla Raspberry Pi.
Z ekranem dotykowym postąpiłem podobnie. Jego kontroler przeniosłem na osobną płytkę z minimalną liczbą potrzebnych elementów i podłączyłem do Raspberry Pi.
W rezultacie z pierwotnego radia stopniowo pozostały tylko poszczególne przydatne bloki sprzętowe, a cała logika urządzenia znalazła się pod moją kontrolą.
Własny interfejs
Równocześnie zaczął powstawać własny interfejs radia napisany w Qt/C++.
Nie chodziło o to, żeby po prostu wyświetlić pulpit Linuksa na ekranie w samochodzie. Interfejs od początku był projektowany właśnie do użytku w aucie: duże przyciski, minimum drobnych elementów i osobne ekrany dla podstawowych funkcji.
Jedną z pierwszych funkcji, która zaczęła działać w pełni, było radio FM. Raspberry Pi bezpośrednio sterowało sprzętowym tunerem FM, a na ekranie działał już mój własny interfejs z wyświetlaniem częstotliwości, wyszukiwaniem stacji i możliwością ich zapisywania.
Stopniowo pojawiło się główne menu z radiem, muzyką, Bluetooth, kamerą i ustawieniami.
Dzisiaj ten interfejs wygląda oczywiście dość prosto. Dla mnie znacznie ważniejsze było jednak coś innego: nie było to już po prostu Raspberry Pi podłączone do samochodowego ekranu. Podstawowymi funkcjami radia rzeczywiście sterował mój program.
Bluetooth z drugiego radia
Tutaj przydał się ten sam Orion, od którego właściwie zaczęła się cała historia.
Wyjąłem z niego gotowy samochodowy moduł Bluetooth, do którego nie udało mi się znaleźć dokumentacji. Musiałem więc podłączyć analizator logiczny i rozpracować protokół komunikacji pomiędzy modułem a oryginalną elektroniką Oriona.
Sam moduł Bluetooth obsługiwał już potrzebne funkcje samochodowe, w tym Bluetooth Audio oraz Hands-Free. Sterowanie odbywało się przez UART.
Po rozpracowaniu protokołu podłączyłem moduł do własnego systemu. Bluetooth Audio na pewno zostało zaimplementowane i działało. W samochodzie był również zamontowany mikrofon. Pełnego interfejsu do rozmów telefonicznych, o ile dobrze teraz pamiętam, nie zdążyłem już dokończyć od strony programowej.
Stało się to zresztą charakterystycznym podejściem w pierwszej wersji projektu: zamiast próbować tworzyć wszystko od zera, wykorzystywałem istniejące bloki sprzętowe, sprawdzałem, w jaki sposób sterowała nimi oryginalna elektronika, a następnie podłączałem je do własnego systemu.
Od prototypu do samochodu
Elektronika stopniowo zaczynała działać, ale pozostawał początkowy problem: wszystko to trzeba było jeszcze normalnie zamontować w T4.
Początkowo myślałem o wydrukowaniu nowego panelu na drukarce 3D. W tamtym czasie pojawiła się jednak możliwość wykonania znacznie bardziej estetycznego metalowego panelu, który zastępowałby część fabrycznej konsoli środkowej T4. Element wycięto laserowo z blachy o grubości 1 mm, następnie zagięto krawędzie, a na końcu panel otrzymał czarne matowe malowanie proszkowe.
W panelu montowany był ekran, a poniżej pozostawały fabryczne pokrętła sterowania ogrzewaniem.
Jako obudowa dla całej elektroniki ponownie przydała się obudowa starego Mystery. W środku znalazły się Raspberry Pi 4, przetwornica zasilania, pozostała elektronika radia oraz scaler. W dolnej części obudowy wykonano dodatkowo otwory wentylacyjne.
Powstała dość dziwna mieszanka sprzętu z dwóch chińskich radioodtwarzaczy, Raspberry Pi, własnej elektroniki oraz programu napisanego w Qt.
Ale najważniejsze było to, że działała.
Kamera cofania
Osobnym zadaniem była kamera.
Scaler na RTD2660 miał nie tylko wejście obrazu z Raspberry Pi, ale również kompozytowe wejście wideo. Dzięki temu można było bezpośrednio podłączyć do niego zwykłą samochodową kamerę cofania.
Raspberry Pi sterowało przełączaniem źródła sygnału wideo, dzięki czemu obraz z kamery można było wyświetlić bezpośrednio na tym samym ekranie.
W wersji, z której korzystałem, kamerę można było aktywować z poziomu interfejsu programu. Projekt nie doszedł wtedy do pełnej automatyzacji przełączania obrazu po włączeniu biegu wstecznego.
W planach pozostawało podłączenie sygnału ze świateł cofania oraz dodanie kontroli napięcia instalacji samochodu, aby zabezpieczyć akumulator przed głębokim rozładowaniem.
Co się udało — a czego nie udało się zrobić
To radio nie było gotowym urządzeniem komercyjnym i nigdy nie miało nim być.
Radio FM działało. Bluetooth Audio działało. Był własny interfejs dotykowy. Działała kamera. Cały system został fizycznie zamontowany w samochodzie i przez pewien czas był używany.
Nie udało mi się jednak wtedy dopracować normalnego systemu zarządzania zasilaniem w samochodzie. Radio było włączane i wyłączane zwykłym fizycznym przełącznikiem. Nie było prawidłowej logiki działania z ACC, poprawnego automatycznego wyłączania, trybu standby ani monitorowania stanu samochodu.
Nie udało się również dokończyć części funkcji programowych.
W praktyce był to całkiem działający prototyp, na którym zdążyłem sprawdzić najważniejszą ideę:
zwykły komputer jednopłytkowy rzeczywiście może stać się centralnym urządzeniem własnego samochodowego systemu multimedialnego.
Później projekt zatrzymał się z powodów zupełnie z nim niezwiązanych.
Jeden z testów uruchamiania CaRadio na stole przed montażem w samochodzie.
Przeprowadzka i długa przerwa
Pod koniec 2022 roku wyjechałem z Ukrainy do Polski.
T4 i pierwsze radio pozostały częścią poprzedniego etapu życia, a dalszy rozwój projektu nie był wtedy czymś, czym mogłem się zajmować.
Na tym historia projektu mogła się właściwie zakończyć.
Jednak po pewnym czasie, już w Polsce, pojawił się u mnie Nissan Primera P12 z fabrycznym komputerem pokładowym i ekranem, który wyświetlał dość mało przydatnych informacji. Wraz z nim ponownie pojawiła się myśl, żeby coś z tym zrobić.
Do tego czasu wiele się zmieniło: inny sprzęt, inny samochód, inny stos programistyczny — i pojawiła się technologia, o której podczas budowy radia do T4 w ogóle nie myślałem.
Apple CarPlay.
I właśnie od tego momentu zaczyna się kolejny etap projektu.
Ciąg dalszy
→ CaRadio: jak wróciłem do budowy własnego radia samochodowego i doszedłem do CarPlay