Menu

andipanda.dev

CaRadio: jak wróciłem do budowy własnego radia samochodowego i doszedłem do CarPlay

Po zbudowaniu pierwszego radia samochodowego na Raspberry Pi przez dość długi czas nie wracałem do tego pomysłu. Projekt działał i spełniał swoje zadanie, a później zmienił się zarówno samochód, jak i moje wymagania dotyczące tego, co właściwie powinno potrafić współczesne radio samochodowe.

Moim kolejnym samochodem został Nissan. Miał już fabryczny komputer pokładowy z ekranem i kamerą cofania. Kamera była już daleka od idealnego stanu, ale działała i wyświetlała obraz na fabrycznym ekranie. Jednocześnie nie wyświetlało się na nim zbyt wiele przydatnych informacji, a muzyki z telefonu słuchałem przez transmiter FM z Bluetooth. Rozwiązanie działało, ale było dalekie od ideału. W zatłoczonym paśmie FM od czasu do czasu pojawiały się zakłócenia, trzeba było szukać wolnej częstotliwości, a czasami cała ta konstrukcja po prostu zaczynała działać nieprawidłowo.

Znowu Raspberry Pi i 7-calowy ekran

W tamtym czasie dobrze znałem już 7-calowy wyświetlacz HDMI Waveshare, którego używałem w poprzednich projektach. Dlatego kiedy na Allegro trafiłem na niedrogi klon takiego ekranu, kupiłem go praktycznie bez zastanowienia.

Ekran już był. Raspberry Pi również dobrze znałem. Pozostawało tylko wymyślić, co właściwie z tego zbudować.

Nie chciałem po prostu powtarzać poprzedniego radia. Pod koniec 2023 roku urządzenie, które potrafi jedynie odtwarzać muzykę, obsługiwać kamerę i zapewniać łączność z telefonem, nie wydawało mi się już wystarczające.

Jednym z głównych pytań była nawigacja. Tworzenie własnego systemu nawigacyjnego, utrzymywanie map i próba odtworzenia tego, co już dobrze działa na smartfonie, nie miały większego sensu.

Potrzebne było więc inne rozwiązanie.

A gdyby uruchomić CarPlay na Raspberry Pi?

Szukając rozwiązania, w pewnym momencie natrafiłem w internecie na informację, że na Raspberry Pi można uruchomić Apple CarPlay.

I to całkowicie zmieniło koncepcję projektu.

Zamiast samodzielnie implementować nawigację, muzykę, rozmowy telefoniczne i pozostałe funkcje można było wykorzystać interfejs telefonu, a Raspberry Pi zamienić w pełnoprawne radio samochodowe.

Na Allegro znalazłem adapter Carlinkit w całkiem rozsądnej cenie i postanowiłem spróbować.

Pierwsze eksperymenty nie były jednak zbyt udane.

Gotowe rozwiązania programowe napisane w Pythonie, które udało mi się znaleźć, działały wolno. Interfejs się zacinał, od czasu do czasu wszystko się zawieszało i w takim stanie nie chciałem używać tego systemu w samochodzie.

Wtedy pojawił się pomysł, żeby przenieść wszystko na C++.

Podjąłem kilka prób, ale żadna z nich nie doprowadziła do naprawdę działającego rozwiązania. Dzisiaj nie pamiętam już nawet, co dokładnie było ostatecznym powodem przerwania prac, ale projekt ponownie trafił na półkę.

I przeleżał tam dość długo.

Nowy samochód — nowa próba

W międzyczasie ponownie zmienił się samochód. Nissana zastąpił Volkswagen Golf z fabrycznym radiem RCD510.

Samo RCD510 było całkiem dobrym radiem jak na swoje czasy, więc początkowo nie było potrzeby, żeby pilnie je wymieniać.

Co więcej, przez pewien czas zainteresowało mnie coś zupełnie innego — chciałem sprawdzić, jak dokładnie można poznać i zrozumieć działanie samego RCD510. Ale to już osobna historia, która zasługuje na własny artykuł.

Tymczasem pomysł zbudowania własnego radia samochodowego nigdzie nie zniknął.

Wiosną 2026 roku ponownie wróciłem do CarPlay na Raspberry Pi. Tym razem sytuacja okazała się znacznie ciekawsza: udało mi się znaleźć FastCarPlay — istniejący już projekt napisany w C++.

Był to dokładnie ten kierunek, do którego kilka lat wcześniej próbowałem dojść samodzielnie.

Ponownie wyciągnąłem Raspberry Pi, Carlinkit i ten sam 7-calowy ekran.

Tym razem CarPlay rzeczywiście zadziałał.

I właśnie od tego momentu zaczyna się historia CaRadio w jego obecnej formie.

Ciąg dalszy: CaRadio: CarPlay na Raspberry Pi i Linux