Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

TMank 03 Jan 2018 23:01 16863 24
  • MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Cześć,

    chciałbym Wam pokazać ostatnio wykonany projekt. Posiadam Renault Megane II ph. II z 2006 roku z fabrycznym radiem Renault UpdateList. W dzisiejszych czasach standardem jest, że muzyki w samochodzie słuchamy nie tylko z radia FM czy z płyt CD, ale także z telefonu. Radio w wersji UpdateList wyposażone jest w wejście liniowe AUX, dlatego dotychczas korzystałem z różnego rodzaju chińskich dongli bluetooth do słuchania muzyki. Brakowało mi natomiast możliwości sterowania odtwarzaczem w telefonie (np. Spotify) z panelu radia czy kierownicy wielofunkcyjnej, jak ma to miejsce w nowszych autach. Dlatego powstał MeganeBT. Na powyższym zdjęciu można zobaczyć wykonany przeze mnie moduł wraz z podłączoną przelotową wiązką radia, poniżej film na YT przedstawiający działanie urządzenia:

    Film:





    Opis:

    Urządzenie wykorzystuje interfejs zmieniarki (CDC) w radiu UpdateList, dzięki czemu można sterować telefonem/tabletem bezpośrednio z przycisków na panelu przednim radia i z pilota przy kierownicy. Generalnie interfejs CDC to UART z poziomami logicznymi 0V i 12V, o polaryzacji odwrotnej niż standardowa. Wykorzystany moduł BT to RN52, moduł ten ma możliwość odczytania z urządzenia źródłowego informacji o utworze. Urządzenie podpięte jest do szyny CAN pomiędzy radiem a wyświetlaczem i w miarę możliwości podmienia tekst na tytuł oraz wykonawcę utworu. Implementacja CAN pomiędzy radiem a wyświetlaczem jest w miarę standardowa, prędkość 500 kbps. Audio przesyłane jest interfejsem S/PDIF. Konieczne było rozpracowanie zarówno protokołu CDC, jak i protokołu pomiędzy radiem i wyświetlaczem. Musiałem wykonać sniffery do obu protokołów i przeanalizować komunikację pomiędzy radiem a wyświetlaczem, a także między radiem a zmieniarką. W Internecie jest trochę informacji na temat protokołu CDC Renault, natomiast CAN wyświetlacza jest prawie w ogóle nieopisany. Trochę wieczorów to zajęło, ale działa. Całość kontroluje mikrokontroler STM32F042K6T6.

    Schematy i program uC:

    Schemat układu:
    https://www.github.com/Tomasz-Mankowski/MeganeBT/blob/master/PCBSch/MeganeBT_PCBSch.pdf Same schematy zawierają parę dodatkowych elementów, których ostatecznie nie przylutowałem. Np. wzmacniacz audio, który dołożyłem w razie problemów z S/PDIF i konieczności powrotu do pomysłu z wejściem liniowym. Czy wejście mikrofonu - to jest kwestia otwarta, można dołożyć funkcjonalność zestawu głośnomówiącego, ale to może na kiedy indziej. :)

    Źródła programu i dodatkowe informacje zamieściłem na git-hubie:
    https://www.github.com/Tomasz-Mankowski/MeganeBT

    Schemat podłączenia MeganeBT:
    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Fotorelacja

    Zaczęło się oczywiście od dużo mniej skomplikowanego projektu: audio miało być z AUX miał być najprostszy chiński moduł BT, w ramach rozrywki napis "AUX" miał zostać podmieniony na "Bluetooth". Ponieważ pilot przy kierownicy podpięty jest do CAN wyświetlacza chciałem przechwytywać wciskanie przycisków i tak sterować modułem BT. Na stole skompletowałem kopię instalacji radia:
    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Zaprojektowałem pierwszą wersję opartą o chiński moduł BT XS3868, który dodatkowo wyposażony był w moduł transceivera CAN. Uruchomienie poszło gładko, natomiast były gigantyczne problemy z samymi modułami BT. Najmniejsze wyładowanie elektrostatyczne (dotknięcie palcem czegokolwiek) powodowało natychmiastowo uszkodzenie modułu BT. Spaliłem tak chyba 4 sztuki.

    EDIT: Błąd nie wynikał prawdopodobnie z elektrostatyki, ale ze niepoprawnego obciążenia wyjścia audio, słaba dokumentacja modułu wyprowadziła mnie na błędne tory. Więcej informacji w postach użytkownika -rafal- poniżej.

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Dlatego zdecydowałem się wykorzystać inny moduł BT, wyższej jakości. Wybór padł na RN52, w tym miejscu projekt się skomplikował. RN52 oferuje wyjście S/PDIF oraz możliwość odczytywania z telefonu informacji o utworze. Dlatego zdecydowałem po pierwsze, że zamiast wejścia liniowego w radiu wykorzystam cyfrowe wejście S/PDIF, a do tego konieczna była emulacja zmieniarki. Dodatkowa przewaga nad wcześniejszym rozwiązaniem to możliwość przechwytywania akcji przycisków nie tylko z pilota, ale także panelu przedniego radia. Po drugie podmiana nazwy źródła na wyświetlaczu rozrosła się do wyświetlania informacji o utworze. Powstała druga wersja modułu.

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Bardzo pomocna okazała się strona dot. emulacji CDC, głównie program w pythonie: tlcdcemu.sourceforge.net/ Niestety program był chyba przygotowany dla TunerList, dlatego do stanowiska testowego dołączyła oryginalna zmieniarka za 35zł. Teraz miałem możliwość podsłuchania i rozpracowania protokołu CDC. Dodatkowo konieczne było podpięcie głośnika, w przypadku AUX wystarczyły słuchawki do sprawdzania muzyki, teraz musiałem korzystać z dekodera S/PDIF w radiu.

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Od tego miejsca poszło już w miarę gładko. Na dzień dzisiejszy moduł trafił na testy do samochodu. Oczywiście nie obyło się bez problemów. Okazało się, że protokół CDC w radiu, które mam w aucie minimalnie różnił się od tego na biurku, MeganeBT musiał wrócić jeszcze na 2h na stół. Nadal jest trochę bugów w oprogramowaniu, głownie w temacie wyświetlania informacji o utworze. Czasami ta część programu się wykrzacza i muszę to jeszcze dopracować. Poza tym samo odtwarzanie i kontrola odtwarzania działa całkiem sprawnie. Po podpięciu do radia wygląda to następująco:

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)

    Jeżeli macie jakieś pytania lub uwagi, śmiało.
    Tomek

    Cool? Ranking DIY
    About Author
    TMank
    Level 8  
    Offline 
    TMank wrote 12 posts with rating 45. Live in city Poznań. Been with us since 2018 year.
  • #2
    ostry_18
    Level 24  
    Cześć, czy w razie "wykrzaczenia" musisz zrobić reset systemu /zaplon/? Czy wystarczy restart radia?
  • #4
    RaTaJ_87
    Level 13  
    Jaki koszt wyniósł cały projekt i ile roboczogodzin pochłonęło ?
  • #5
    TMank
    Level 8  
    RaTaJ_87 wrote:
    Jaki koszt wyniósł cały projekt i ile roboczogodzin pochłonęło ?


    Ciężko powiedzieć, nie zliczałem tego na bieżąco, a cały projekt rozciągnął się na prawie rok, gdzie większość czasu przeleżał na biurku bez dotykania.
    - Przygotowanie stanowiska do testów (radio, wyświetlacz, pilot, wiązka, zmieniarka) ~250 zł
    - Pierwsza wersja elektroniki (płytki w Satlandzie, moduły z chin, elementy) ~200 zł
    - Moduł RN52 ~60zł
    - Druga wersja elektroniki (płytki z AllPCB.com - promocja 5$ - POLECAM, tutaj większość elementów miałem podwójnych z poprzedniej płytki) ~100zł
    - Ogólnie pojęte pozostałe koszta (złączki miniISO, itp.) ~100zł

    Czyli razem jakieś 700zł w górę :). Zrobienie pojedynczej sztuki, nie wliczając błędów, prób, stanowiska testowego byłoby dużo tańsze. Koszt może wydawać się duży, ale wiadomo, nie o to w tym chodzi :).

    Jeżeli chodzi o roboczogodziny to jeszcze trudniej policzyć, strzelałbym w jakieś 150 roboczogodzin, wliczając wszystko, rozrzuconych oczywiście na pracę po parę godzin od czasu do czasu.
  • #6
    -rafal-
    Level 15  
    TMank wrote:
    - Moduł RN52 ~60zł


    Powiedz mi gdzie kupiłeś RN52 za ~60zl, chętnie kupię :)

    I jak to jest z tymi CANami są dwa? Mozesz to rozwinąć?

    Rafał

    PS. Tak z ciekawości co z tymi XS3868 jakaś wadliwa seria? Sam mam z 8szt. popełniłem kilka podobnych zmieniarek z nimi i nie było żadnych problemów tego typu. Jedno co że ma wyjście różnicowe i trzeba wzmacniacz.
  • #7
    TMank
    Level 8  
    -rafal- wrote:

    Powiedz mi gdzie kupiłeś RN52 za ~60zl, chętnie kupię :)


    Na TME, widzę że teraz jest dużo droższe, kupowałem ponad pół roku temu. 60zł to pewnie cena netto była :).

    -rafal- wrote:

    I jak to jest z tymi CANami są dwa? Mozesz to rozwinąć?

    Rafał


    Jest jeden, podpięty jako kolejne urządzenie do linii CAN. Gdybym przerwał linię musiałbym zajmować się przekazywaniem całej komunikacji pomiędzy wyświetlaczem, a radiem. Ramki synchronizujące, od pilota itp. Rozważałem takie rozwiązanie ale uC z dwoma CAN to są zawsze modele z "wysokiej półki" przez co drogie i przewymiarowane na to rozwiązane. W konfiguracji z jednym CAN wyszukuję konkretnej ramki w której idzie napis "CD 1 TR 01" (taki napis pojawia się w czasie emulacji zmieniarki), czekam na ramkę synchronizującą wyświetlacz i zaraz za nią wysyłam ramkę z moim napisem. Potem nasłuchuję już tylko ramek synchronizujących i po nich wysyłam update moich napisów. Dopóki radio nie musi zmienić napisu na wyświetlaczu nie wysyła ramek z updatem treści wyświetlacza. Jeżeli odbiorę od radia ramkę nakazującą wyświetlaczowi zmienię napisu na inny niż "CD 1 TR 01" znaczy że wyświetlacz trzeba oddać pod kontrolę radia. "CD 1 TR 01" ponownie oznacza że wracamy do wysyłania nazwy utworu.

    -rafal- wrote:

    PS. Tak z ciekawości co z tymi XS3868 jakaś wadliwa seria? Sam mam z 8szt. popełniłem kilka podobnych zmieniarek z nimi i nie było żadnych problemów tego typu. Jedno co że ma wyjście różnicowe i trzeba wzmacniacz.


    Możliwe, zamówione na AliExpress, a wiadomo jak to z chińczykami bywa. Zrezygnowałem kiedy w płytce bazowej zaczęły odpadać pady. Moje XS3868 nie miały wyjścia różnicowego, wyraźnie AGND, ARIGHT i ALEFT. W RN52 jest wyjście różnicowe, w projekcie jest wzmacniacz "na wszelki wypadek", gdyby S/PDIF nie wypaliło.
  • #8
    Mad Bekon
    Level 23  
    Pięknie!
    Tylko jedno pytanie mnie nachodzi, czy przy odpalaniu auta, radio sie nie resetuje?
    A jeśli tak, to ile trwa parowanie z BT? Sam mam w samochodzie audio po Bluetooth, ale póki co podpięte pod zapłon i parowanie bywa dość upierdoliwe, do tego stopnie, że myśle o tym żeby czasówke na moduł bluetooth założyć.
  • #9
    TMank
    Level 8  
    Mad Bekon wrote:
    Pięknie!
    Tylko jedno pytanie mnie nachodzi, czy przy odpalaniu auta, radio sie nie resetuje?
    A jeśli tak, to ile trwa parowanie z BT? Sam mam w samochodzie audio po Bluetooth, ale póki co podpięte pod zapłon i parowanie bywa dość upierdoliwe, do tego stopnie, że myśle o tym żeby czasówke na moduł bluetooth założyć.


    Próbuję sobie przypomnieć jak ty wygląda. Moja Meganka ma odpalanie z "karty". Przy normalnym zapłonie radio włącza się dopiero po odpaleniu auta i nie wyłącza się aż do otwarcia drzwi po zgaszeniu auta. W mojej Renówce jest tak że jeżeli radio jest włączone przed zapłonem to nie wyłącza się nawet na czas zapłonu, więc generalnie problemu który opisujesz nie ma.

    Moduł RN52 ustawiłem na automatyczne łączenie z ostatnio połączonym urządzeniem. Czas połączenia jest różny, nie wiem od czego to zależy. Czasami 5 sekund, czasami 20 sekund.
  • #10
    -rafal-
    Level 15  
    Dzięki za wytłumaczenie!

    Mad Bekon wrote:
    Możliwe, zamówione na AliExpress, a wiadomo jak to z chińczykami bywa. Zrezygnowałem kiedy w płytce bazowej zaczęły odpadać pady. Moje XS3868 nie miały wyjścia różnicowego, wyraźnie AGND, ARIGHT i ALEFT. W RN52 jest wyjście różnicowe, w projekcie jest wzmacniacz "na wszelki wypadek", gdyby S/PDIF nie wypaliło.


    Co do tego czy XS3868 ma wyjście różnicowe to - napewno ma :) AGND jest utrzymywane na poziomie ok 1V i tak musi pozostać bo inaczej są problemy i uszkodzenia :) tak samo napięcie zasilania 3.3V to za mało bo nakłada się ton 800Hz. Ja u siebie rozwiązałem to tak ale to już bardziej dla potomnych :)

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)
  • #11
    TMank
    Level 8  
    -rafal- wrote:
    Dzięki za wytłumaczenie!

    Mad Bekon wrote:
    Możliwe, zamówione na AliExpress, a wiadomo jak to z chińczykami bywa. Zrezygnowałem kiedy w płytce bazowej zaczęły odpadać pady. Moje XS3868 nie miały wyjścia różnicowego, wyraźnie AGND, ARIGHT i ALEFT. W RN52 jest wyjście różnicowe, w projekcie jest wzmacniacz "na wszelki wypadek", gdyby S/PDIF nie wypaliło.


    Co do tego czy XS3868 ma wyjście różnicowe to - napewno ma :) AGND jest utrzymywane na poziomie ok 1V i tak musi pozostać bo inaczej są problemy i uszkodzenia :) tak samo napięcie zasilania 3.3V to za mało bo nakłada się ton 800Hz. Ja u siebie rozwiązałem to tak ale to już bardziej dla potomnych :)

    MeganeBT - BT audio z emulacją zmieniarki i obsługą wyświetlacza (CAN, CDC)


    Hmmm, najwyraźniej masz rację. Musiałem trafić na niezbyt precyzyjny opis tego modułu. Ale dzięki temu błędowi MeganeBT ma więcej funkcji ;). Dzieki za schemat, na pewno się komuś przyda.
  • #12
    -rafal-
    Level 15  
    No ogólnie z tymi XS to o dobry opis naprawde ciężko co do komend to najlepiej pdf do OVC3860 chociaż i tu jest ciekawie tzn podstawowe do przeiwjania itp działają ale już np. do zmiany nazwy nie i chcąc zmienić nazwe trzeba sobie EEPROM reprogramować...

    Troche mnie cena tego RN odstrasza w porównaniu do XS ale tak jak mówisz coś za coś. Najpierw może spróbóję ogarnąć tego CANa w moim samochodzie (A4B6) i jak uda mi się podmieniać napisy to może się i ja skuszę :)
  • #13
    electro
    Level 18  
    TMank wrote:
    Rozważałem takie rozwiązanie ale uC z dwoma CAN to są zawsze modele z "wysokiej półki" przez co drogie i przewymiarowane na to rozwiązane. W konfiguracji z jednym CAN wyszukuję konkretnej ramki


    Można tez użyć dodatkowy kontroler np. MCP2515, przepuszczając cały ruch masz nad nim pełną kontrolę. Podziwiam cię ze włożyłeś w to trochę pracy i udostępniasz wyniki publicznie. To materiał na fajny produkt :)
  • #14
    TMank
    Level 8  
    electro wrote:
    To materiał na fajny produkt :)


    Niby tak, ale może 6 lat temu. Teraz Megane II zaczyna nas już powoli opuszczać ;). Na forum megane.com.pl zainteresowanie moim postem dot. MeganeBT jest znikome, o ile nie żadne.

    Od początku zakładałem, że nie będę chciał tego sprzedawać i wszystko udostępnię. Na pewno nie gotowe urządzenia, za dużo zachodu. Natomiast jeżeli ktoś ma ochotę i wystarczająco samozaparcia i narzędzi, mogę odsprzedać gołe PCB, których mam w nadmiarze :).
  • #16
    TMank
    Level 8  
    Jogesh wrote:
    Zainteresował mnie wyświetlacz. Czy kolega mógłby napisać coś więcej o zastosowanym wyświetlaczu LCD? Potrzebuję podobny do swojego projektu.



    To jest dedykowany wyświetlacz do radia UpdateList. Generalnie są dwie wersje AFFA3 (taki jak powyżej) oraz AFFA2 - segmentowe LCD. Oba można stosować zamiennie. Były jeszcze wersje z navi i kolorowy z navi, ale nie interesowałem się nimi. Generalnie nie ma dostępu do wyświetlacza per pixel. Można jedynie korzystać z góry zaprogramowanych trybów tekstowych. Jest tryb standardowy, jaki widać na filmie powyżej, tryb menu radia oraz tryb mp3 - tutaj kolega milyges zrobił parę fotek, na których wszystko widać: https://megane.com.pl/topic/47797-wy%C5%9Bwietlacz-radia-update-list-protok%C3%B3%C5%82/

    Komunikacja po szynie CAN, 500 kbps. Radio co chwilę monitoruje obecność wyświetlacza wysyłając ramkę kontrolną, na którą wyświetlacz odpowiada. Do każdego trybu jest inaczej wyglądająca ramka, to tak w skrócie. Dodatkowo do wyświetlacza podpięty jest pilot sterowania radiem przy kierownicy. Wciskając coś na pilocie wyświetlacz wysyła ramkę do radia po CAN.
  • #17
    rumpelek
    Level 11  
    Jezzzuu... Ty mi z nieba spadłeś człowieku... :) to byłby najlepszy prezent na urodzinki dla mojej żony do jej Scenica II PH I ... no właśnie... przed liftem radio było Tuner List i nie miało wejścia AUX .. Ale miało także możliwość podłączenia zmieniarki po CAN itp... więc chyba jest szansa by to uruchomić ? :)
  • #18
    TMank
    Level 8  
    rumpelek wrote:
    Jezzzuu... Ty mi z nieba spadłeś człowieku... :) to byłby najlepszy prezent na urodzinki dla mojej żony do jej Scenica II PH I ... no właśnie... przed liftem radio było Tuner List i nie miało wejścia AUX .. Ale miało także możliwość podłączenia zmieniarki po CAN itp... więc chyba jest szansa by to uruchomić ? :)


    Jest, ale z tego co wiem Tuner List ma trochę inny protokół komunikacji CDC (ze zmieniarką). CDC to nie CAN, tylko UART. Po CAN komunikuje się radio z wyświetlaczem. Projekt komunikacji z Tuner List jest opisany na tej stronie: http://tlcdcemu.sourceforge.net/ . Generalnie płytka, którą zrobiłem powinna pasować bez zmian, konieczne będzie jednak zmodyfikowanie kodu. Dodatkowo Scenic ma inny wyświetlacz, nie wiem czy radio do Scenica mają ten sam protokół komunikacji po CAN, ale raczej tak.

    Dodano po 1 [godziny] 9 [minuty]:

    Jako szybki prezent pewnie lepsza by był taki gotowy emulator. Dostępne na allegro pod hasłem: "emulator zmieniarki renault".
  • #19
    jaku_z_jelcza
    Level 12  
    Można u ciebie takie cacko zamówić? :-) auto laguna ii po lifcie, wyświetlacz taki jak u ciebie, czyta mp3
  • #21
    -rafal-
    Level 15  
    TMank wrote:
    CDC to nie CAN, tylko UART
    Nie prawda. CDC to SPI...
  • #22
    TMank
    Level 8  
    -rafal- wrote:
    TMank wrote:
    CDC to nie CAN, tylko UART
    Nie prawda. CDC to SPI...


    Spoko luz...natomiast ja tu linii zegarowej nie widzę. Widzę natomiast Rx i Tx, w sumie to zrobiłem zrobiłem obsługę CDC, tak jak opisałem powyżej...i zdecydowanie jest to UART. Ale może w innym markach jest to SPI...
  • #23
    -rafal-
    Level 15  
    Jeśli mówimy od CDC (CD-Changer) to jest to standard Panasonica i na pewno jest to SPI.
  • #24
    TMank
    Level 8  
    -rafal- wrote:
    Jeśli mówimy od CDC (CD-Changer) to jest to standard Panasonica i na pewno jest to SPI.


    Dobrze, tak oto sprawiedliwości stało się zadość ;). Co nie zmienia faktu że w UpdateList i TunerList od Renault zmieniarka komunikuje się z radiem po UART :), a to chyba kolegę powyżej interesowało w pierwszej kolejności.
  • #25
    Lenar_R
    Level 10  
    Myślę że kolega popełnił marketingowy błąd w nazwie. RenaultBT cieszyło bysię napewno wiekrzym zainteresowaniem;D.
    Chętnie bym wykonał projekt ale jedyne co potrafie to kopiuj wklej do adruino.