Po pierwszych eksperymentach z CaRadio projekt stopniowo doszedł do etapu, w którym nie jest już tylko prototypem na stole, ale radiem samochodowym, z którego naprawdę korzystam w samochodzie.
Podstawą nadal jest Raspberry Pi z systemem Linux. Do tego doszedł dotykowy wyświetlacz HDMI Waveshare oraz Carlinkit, przez który działa Apple CarPlay.
W codziennym użytkowaniu wszystko wygląda dość prosto: wsiadasz do samochodu, telefon łączy się automatycznie, na ekranie pojawia się CarPlay, uruchamiasz Google Maps, włączasz YouTube Music i jedziesz.
Ale za tym znajomym interfejsem nadal kryje się całkowicie własnoręcznie zbudowany system.
Raspberry Pi i Linux
Raspberry Pi było podstawą CaRadio praktycznie od samego początku.
Do takiego projektu jest to wygodna platforma: ma wszystko, czego potrzeba do podłączenia ekranu, urządzeń zewnętrznych i elektroniki samochodu, a Linux pozwala zachować pełną kontrolę nad działaniem systemu.
To jeden z powodów, dla których nie zdecydowałem się na gotowe radio z Androidem. Chciałem sam decydować, jak system będzie się uruchamiał, jak będzie wyglądał interfejs i jakie funkcje pojawią się w przyszłości.
Sama aplikacja CaRadio jest napisana w C++ z wykorzystaniem SDL3 i działa bezpośrednio pod Linuksem.
Z czasem stało się jednak jasne, że samodzielne tworzenie nawigacji, interfejsu do muzyki i pełnej integracji ze smartfonem nie ma większego sensu. Wszystko to jest już dostępne w CarPlay.
Ekran Waveshare
W nowej wersji CaRadio wykorzystałem 7-calowy dotykowy wyświetlacz HDMI Waveshare o rozdzielczości 1024×600.
Jest wystarczająco kompaktowy, aby zamontować go w samochodzie, a jednocześnie oferuje odpowiednio dużo miejsca dla interfejsu radia i CarPlay.
Właśnie z tym ekranem CaRadio przejechało już kilka tysięcy kilometrów i przepracowało wiele godzin bez przerwy.
Eksploatacja oczywiście pokazała również jego wady. Największą z nich jest jasność. W bezpośrednim słońcu przydałoby się jej więcej. Być może z czasem ekran zostanie wymieniony, ale na razie całkiem dobrze spełnia swoje zadanie.
Carlinkit i CarPlay
Kolejnym elementem systemu został Carlinkit.
To niewielki dongle USB, do którego podłącza się iPhone. Sam Carlinkit jest połączony z Raspberry Pi i w praktyce staje się mostem między telefonem a moim radiem.
Większość prac nad CaRadio prowadziłem właśnie z połączeniem przewodowym. Na stole zupełnie to nie przeszkadzało: podłączasz telefon kablem i można pracować.
Jednak przed zamontowaniem radia w samochodzie zacząłem się zastanawiać, czy ciągłe podłączanie telefonu kablem będzie wygodne.
Chciałem, żeby działało to inaczej: uruchamiam samochód, telefon łączy się automatycznie, CarPlay pojawia się na ekranie — i można jechać.
Po zmianie iPhone'a pojawił się jeszcze jeden powód, żeby coś zmienić. Stary Carlinkit nadal uruchamiał CarPlay, ale z nowym telefonem przestał przesyłać dźwięk.
Trzeba było znaleźć inne rozwiązanie.
U2W
W ten sposób pojawił się u mnie U2W.
Kiedy go kupowałem, zakładałem, że po prostu zastąpi stary Carlinkit i pozwoli korzystać z bezprzewodowego CarPlay.
Po podłączeniu okazało się jednak, że działa zupełnie inaczej.
U2W nie zastępuje Carlinkit. Podłącza się go tam, gdzie wcześniej był podłączony iPhone, i z punktu widzenia Carlinkit zachowuje się jak telefon podłączony przewodem. Prawdziwy iPhone łączy się natomiast bezprzewodowo z U2W.
W rezultacie zamiast jednego urządzenia powstał zestaw dwóch:
Raspberry Pi → Carlinkit → U2W → iPhone
Na pierwszy rzut oka taka konstrukcja może wydawać się trochę dziwna, ale rozwiązała oba problemy jednocześnie: dźwięk znów działał, a podłączanie telefonu kablem nie było już potrzebne.
Właśnie w takiej konfiguracji CaRadio ostatecznie trafiło do samochodu.
Teraz wystarczy uruchomić samochód i chwilę poczekać. Telefon łączy się automatycznie, na ekranie pojawia się CarPlay, a potem można otworzyć nawigację albo włączyć muzykę.
Telefon może przy tym cały czas pozostać w kieszeni.
I właśnie taki efekt chciałem osiągnąć.
Od prototypu do działającego radia
Na tym etapie CaRadio w końcu przestało sprawiać wrażenie eksperymentu istniejącego głównie dla samego procesu tworzenia.
Zaczęło być czymś, z czego wygodnie korzysta się na co dzień.
Oczywiście projekt na tym się nie skończył. Nadal pozostają kwestie związane z ekranem, integracją z elektroniką samochodu, kamerą cofania i wiele innych rzeczy do zrobienia.
Pojawiła się jednak działająca podstawa, wokół której można już rozwijać cały system.
A U2W niespodziewanie otworzył jeszcze jeden kierunek.
Kupiłem go wyłącznie po to, żeby pozbyć się kabla. Kiedy jednak okazało się, że urządzenie w praktyce udaje podłączonego iPhone'a, zaciekawiło mnie, jak właściwie to robi.
Co dzieje się po podłączeniu?
Jak Carlinkit komunikuje się z programem?
Jakie dane są przesyłane między urządzeniami?
I czy da się samodzielnie odtworzyć sposób jego działania?
Od tego momentu zwykła integracja CarPlay zaczęła stopniowo zmieniać się w zupełnie inne badanie.
Ale to już kolejna część tej historii.