Projekt jest odpowiedzią na potrzebę odtwarzania muzyki z dowolnego telefonu w samochodzie (Astra H 2005) za pomocą Bluetooth. Jednym z warunku było zapewnienie dobrej jakości dźwięku, co dyskwalifikowało transmitery FM. Na moje nieszczęście fabryczne radio nie posiada złącza JACK, przez co realizacja była utrudniona. Obok samego odtwarzania pojawiło się również marzenie sterowania odtwarzaczem w telefonie za pomocą wielofunkcyjnej kierownicy.
Rozwianiem moich oczekiwań związanych z odtwarzaniem mógł być zakup nowego radia. Niestety z fabrycznym odtwarzaczem zintegrowano przyciski pozwalające sterować ustawieniami komputera pokładowego. Wymiana radia oznaczyłaby utratę części funkcjonalności, dlatego zacząłem szukać rozwiania tego problemu. Po przekopaniu internetu okazało się, że informacje o naciśnięciu przycisków, powalających zmieniać ustawienia komputera pokładowego, przesyłane są za pośrednictwem magistrali CAN.
Zaopatrzyłem się moduły MCP2515, które wymagały pewnej modyfikacji pozwalającej pracować z napięciem 3V3. Modyfikacja sprowadza się do przecięcia jednej ścieżki oraz przylutowanie przewodu. Podłączyłem je do Raspberry Pi zero, zainstalowałem narzędzie can-utils i kilkukrotnie wybrałem się do samochodu w celu analizy tego, co dzieje się na magistralach CAN.
Pomocne informacje znalazłem tutaj: Link. Mój pojazd wyposażony jest w trzy takie szyny (LS, MS i HS). Każda z nich pracuje na innej prędkości i służy do przesyłania innych informacji. Radio komunikuje się z komputerem pokładowym za pośrednictwem szyny MS. Po kilku sesjach udało mi się ustalić jakie komunikaty informują o naciśnięciu przycisków znajdujących się na radiu. Tą samą szyną, z komputera pokładowego do radia, przesyłana jest informacja o przyciśnięciu przycisków na kierownicy wielofunkcyjnej.
W pierwszej fazie mój plan zakładał wymianę radia oraz emulowanie przycisków, które znajdowały się na odtwarzaczu, aby zachować pełną funkcjonalność. Moje urządzenie miało również przesyłać informacje (w postaci rezystancji) do radia niefabrycznego, aby móc nim sterować z kierownicy. Udało mi się przeprowadzić pozytywne testy z radiem sony.
Zakupiłem wyświetlacz/komputer pokładowy na allegro i przeprowadzałem testy. Z pomocą nagranych danych oraz internetu rozgryzłem, jak przesyłane są informacje o naciśnięciu przycisków dostępnych na kierownicy. Ponadto rozgryzłem również komunikaty tekstowe z radia, które następnie wyświetlane są na wyświetlaczu komputera pokładowego (Link).
Udało mi się nawet preparować dowolne komunikaty, przez co mogę wyświetlać dowolny tekst.
W trakcie pracy natknąłem się na informacje, że można zmodyfikować radio fabryczne i wyprowadzić złącze Jack audio. Kilka dni drążyłem temat i znalazłem jakąś instrukcję na zagranicznym forum Link. Potem na naszej rodzimej elektrodzie znalazłem schemat mojego radia oraz schemat podobnego wyposażonego w złącze JACK.
Chcąc wypróbować tę możliwość, odtworzyłem (prawie całkowicie) schemat dotyczący portu JACK i wprowadziłem stosowne modyfikacje w radiu fabrycznym. Nie mogłem rozdzielić nóżek AADR2_N i AADL2_N dlatego pozostawiam je połączone. Zabieg przebiegł pomyślnie a pacjent żyje
. Modyfikacji uległo wejście służące do przesyłania sygnału mono z telefonu samochodowego. Stało się ono pełnoprawnym złączem JACK (stereo). Wybór źródła dźwięku odbywa się przez przełącznik, jednak w kolejnej iteracji tę funkcję powierzę również Raspberry.
Skoro jest nadzieja na pozostawienie radia fabrycznego zacząłem szukać informacji na temat strumieniowania muzyki za pośrednictwem Bluetooth w Raspberry. Znalazłem kilka przykładów (Link) i zabrałem się do roboty. Już po kilku wieczorach mogłem strumieniować dźwięk a ponadto za pomocą profilu AVRCP sterować odtwarzaczem w telefonie (Link).
Wtedy miałem już całą układankę:
- fabryczne radio (z tego powodu finalnie nie korzystam z wyświetlacza),
- odtwarzanie przez bluetooth,
- sterowanie radiem oraz urządzeniem bluetooth przy pomocy kierownicy wielofunkcyjnej.
Szczęśliwie się złożyło, że moje radio występowało w wersji z dwoma odtwarzaczami płyt, dlatego w dolnej jego części miało sporo wolnego miejsca, które wykorzystałem.
Cały projekt trwał już około ośmiu miesięcy i to nie jest jeszcze jego finalna postać. Urządzenie zbudowana jest na płytce mojego projektu.
W finalnym projekcie wykorzystałem:
- Raspberry Pi A+ (3 gen.),
- 2 x Mcp2515 (zmodyfikowane) - pozwala podłączyć się do szyny canbus o dowolnej prędkości,
- kartę dźwiękową na USB,
- układ zasilający.
Oprogramowanie zostało napisane w języku C#. Uruchomione jest w środowisku Mono.
Pierwotnie do realizacji projektu został wybrany Python, jednak w miarę rozrostu aplikacji coraz trudniej było nad nim panować, z tego powodu wszystko zostało przepisane na C#
(jest to mój ulubiony język).
Całe urządzenie jest w samochodzie i działa. Przymierzam się do zamówienia kolejnej wersji płytki bazowej zawierające usprawnienia oraz dodatkowe funkcje
.
W planach mam:
- dodanie sygnalizacji dźwiękowej o barku zapalonych świateł,
- dodanie wyświetlacza (z tym że jeszcze nie wiem gdzie go umieścić),
- monitorowanie parametrów pracy silnika,
- zmianę sposobu przełączania źródła dźwięku.
W trakcie prac, z powodu nieuwagi, ucierpiały:
- 1 x Raspberry pi zero W,
- 1 x MCP2515.
Oczywiście nie opisałem tu wszystkich problemów, jakim musiałem stawić czoło, aby doprowadzić projekt do tego miejsca
.
Projekt powstał w celach naukowych. Nie ponoszę odpowiedzialności za ewentualne szkody spowodowane wykorzystaniem zamieszczonych tu informacji.
Rozwianiem moich oczekiwań związanych z odtwarzaniem mógł być zakup nowego radia. Niestety z fabrycznym odtwarzaczem zintegrowano przyciski pozwalające sterować ustawieniami komputera pokładowego. Wymiana radia oznaczyłaby utratę części funkcjonalności, dlatego zacząłem szukać rozwiania tego problemu. Po przekopaniu internetu okazało się, że informacje o naciśnięciu przycisków, powalających zmieniać ustawienia komputera pokładowego, przesyłane są za pośrednictwem magistrali CAN.
Zaopatrzyłem się moduły MCP2515, które wymagały pewnej modyfikacji pozwalającej pracować z napięciem 3V3. Modyfikacja sprowadza się do przecięcia jednej ścieżki oraz przylutowanie przewodu. Podłączyłem je do Raspberry Pi zero, zainstalowałem narzędzie can-utils i kilkukrotnie wybrałem się do samochodu w celu analizy tego, co dzieje się na magistralach CAN.
Pomocne informacje znalazłem tutaj: Link. Mój pojazd wyposażony jest w trzy takie szyny (LS, MS i HS). Każda z nich pracuje na innej prędkości i służy do przesyłania innych informacji. Radio komunikuje się z komputerem pokładowym za pośrednictwem szyny MS. Po kilku sesjach udało mi się ustalić jakie komunikaty informują o naciśnięciu przycisków znajdujących się na radiu. Tą samą szyną, z komputera pokładowego do radia, przesyłana jest informacja o przyciśnięciu przycisków na kierownicy wielofunkcyjnej.
W pierwszej fazie mój plan zakładał wymianę radia oraz emulowanie przycisków, które znajdowały się na odtwarzaczu, aby zachować pełną funkcjonalność. Moje urządzenie miało również przesyłać informacje (w postaci rezystancji) do radia niefabrycznego, aby móc nim sterować z kierownicy. Udało mi się przeprowadzić pozytywne testy z radiem sony.
Zakupiłem wyświetlacz/komputer pokładowy na allegro i przeprowadzałem testy. Z pomocą nagranych danych oraz internetu rozgryzłem, jak przesyłane są informacje o naciśnięciu przycisków dostępnych na kierownicy. Ponadto rozgryzłem również komunikaty tekstowe z radia, które następnie wyświetlane są na wyświetlaczu komputera pokładowego (Link).
(Zestaw wiadomości składających się w wyświetlany tekst - zrzut z autorskiego analizatora)
(Zestaw wiadomości składających się w wyświetlany tekst - zrzut z autorskiego analizatora)
Udało mi się nawet preparować dowolne komunikaty, przez co mogę wyświetlać dowolny tekst.
W trakcie pracy natknąłem się na informacje, że można zmodyfikować radio fabryczne i wyprowadzić złącze Jack audio. Kilka dni drążyłem temat i znalazłem jakąś instrukcję na zagranicznym forum Link. Potem na naszej rodzimej elektrodzie znalazłem schemat mojego radia oraz schemat podobnego wyposażonego w złącze JACK.
(Tak zmodyfikowałem swoje radio)
(Tą część odtworzyłem z radia wyposażonego w złącze JACK.)
Chcąc wypróbować tę możliwość, odtworzyłem (prawie całkowicie) schemat dotyczący portu JACK i wprowadziłem stosowne modyfikacje w radiu fabrycznym. Nie mogłem rozdzielić nóżek AADR2_N i AADL2_N dlatego pozostawiam je połączone. Zabieg przebiegł pomyślnie a pacjent żyje

Skoro jest nadzieja na pozostawienie radia fabrycznego zacząłem szukać informacji na temat strumieniowania muzyki za pośrednictwem Bluetooth w Raspberry. Znalazłem kilka przykładów (Link) i zabrałem się do roboty. Już po kilku wieczorach mogłem strumieniować dźwięk a ponadto za pomocą profilu AVRCP sterować odtwarzaczem w telefonie (Link).
Wtedy miałem już całą układankę:
- fabryczne radio (z tego powodu finalnie nie korzystam z wyświetlacza),
- odtwarzanie przez bluetooth,
- sterowanie radiem oraz urządzeniem bluetooth przy pomocy kierownicy wielofunkcyjnej.
Szczęśliwie się złożyło, że moje radio występowało w wersji z dwoma odtwarzaczami płyt, dlatego w dolnej jego części miało sporo wolnego miejsca, które wykorzystałem.
(Zmontowane urządzenie)
Cały projekt trwał już około ośmiu miesięcy i to nie jest jeszcze jego finalna postać. Urządzenie zbudowana jest na płytce mojego projektu.
W finalnym projekcie wykorzystałem:
- Raspberry Pi A+ (3 gen.),
- 2 x Mcp2515 (zmodyfikowane) - pozwala podłączyć się do szyny canbus o dowolnej prędkości,
- kartę dźwiękową na USB,
- układ zasilający.
Oprogramowanie zostało napisane w języku C#. Uruchomione jest w środowisku Mono.
Pierwotnie do realizacji projektu został wybrany Python, jednak w miarę rozrostu aplikacji coraz trudniej było nad nim panować, z tego powodu wszystko zostało przepisane na C#

Całe urządzenie jest w samochodzie i działa. Przymierzam się do zamówienia kolejnej wersji płytki bazowej zawierające usprawnienia oraz dodatkowe funkcje

W planach mam:
- dodanie sygnalizacji dźwiękowej o barku zapalonych świateł,
- dodanie wyświetlacza (z tym że jeszcze nie wiem gdzie go umieścić),
- monitorowanie parametrów pracy silnika,
- zmianę sposobu przełączania źródła dźwięku.
W trakcie prac, z powodu nieuwagi, ucierpiały:
- 1 x Raspberry pi zero W,
- 1 x MCP2515.
Oczywiście nie opisałem tu wszystkich problemów, jakim musiałem stawić czoło, aby doprowadzić projekt do tego miejsca

Projekt powstał w celach naukowych. Nie ponoszę odpowiedzialności za ewentualne szkody spowodowane wykorzystaniem zamieszczonych tu informacji.
Cool? Ranking DIY