Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.

Zaaaaap 17 Lut 2019 18:25 8958 34
  • Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    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.

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (Tak wygląda moje radio)
    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).

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (Zestaw wiadomości składających się w wyświetlany tekst - zrzut z autorskiego analizatora)


    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (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.

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (Tak zmodyfikowałem swoje radio)


    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (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 :). 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.

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.
    (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# :D (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.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Zaaaaap
    Poziom 8  
    Offline 
    Zaaaaap napisał 81 postów o ocenie 45, pomógł 1 razy. Jest z nami od 2014 roku.
  • Relpol przekaźniki
  • Relpol przekaźniki
  • #3
    krisRaba
    Poziom 28  
    Świetna robota. W którym miejscu wpinałeś się w CAN w celu nasłuchu? Czy wszystkie 3 są też dostępne w złączu OBD? Wydaje mi się, że powinny, ale kto ich tam wie ;)
    Czy możesz się podzielić logami z odczytu przycisków? No i w kwestii wyświetlacza, czy przy załączonych różnych funkcjach, to kwestia upartego wpisywania swojej treści nim coś ją nadpisze? Przykładowo komputer/radio wypisuje AUX, a ty chcesz podać nazwę utworu.. boksujecie się o czas na wyświetlaczu, czy jest tam jakaś zasada priorytetu komunikatów?
  • #4
    Zaaaaap
    Poziom 8  
    rs6000 napisał:
    Szacun za konsekwencję i determinację ;)

    Dziękuję ;).

    krisRaba napisał:
    Świetna robota. W którym miejscu wpinałeś się w CAN w celu nasłuchu? Czy wszystkie 3 są też dostępne w złączu OBD?


    Tak wszystkie trzy są dostępne. Podczas testów korzystałem ze złącza OBD. Finalnie podpiąłem się do szyny Can (MS) podłączonej do radia.

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.


    Źródło
    Kod: text
    Zaloguj się, aby zobaczyć kod


    krisRaba napisał:
    Czy możesz się podzielić logami z odczytu przycisków?


    Poniżej fragment notatek dotyczący przycisków.
    # Radio
    - 201#01ff[00] - SETTINGS
    - 201#0101[00] - BC
    - 201#016c[00] - UP
    - 201#016d[00] - DOWN
    - 201#016e[00] - LEFT
    - 201#016f[00] - RIGHT

    # Kierownica
    ## Lewa strona
    - 206#0184[00] - BC (Rolka)
    - 206#0883ff - Góra (Rolka)
    - 206#088301 - Dół (Rolka)
    - 206#0181[00] - Górny przycisk
    - 206#0182[00] - Dolny przycisk

    ## Prawa strona
    - 206#0191[00] - Góra
    - 206#0192[00] - Dół
    - 206#089301 - Głośniej (Rolka)
    - 206#0893ff - Ciszej (Rolka)

    [00] - Rośnie od 00 do FF. W momencie puszczenia pierwszy bajt staje się 00.

    Poniżej wycinek logów zawierający dwa przyciski:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Pewnie gdzieś mam więcej tylko nie wiem, w którym pliku ;).

    krisRaba napisał:
    No i w kwestii wyświetlacza, czy przy załączonych różnych funkcjach, to kwestia upartego wpisywania swojej treści nim coś ją nadpisze? Przykładowo komputer/radio wypisuje AUX, a ty chcesz podać nazwę utworu.. boksujecie się o czas na wyświetlaczu, czy jest tam jakaś zasada priorytetu komunikatów?



    Jeżeli jest możliwość przekazania priorytetu, to byłoby to całkiem eleganckie rozwiązanie. W aktualnej postaci podejrzewam, że nastąpiłaby walka o wyświetlacz. Temat pozostaje do zbadania.
  • #5
    krisRaba
    Poziom 28  
    Zaaaaap napisał:
    Tak wszystkie trzy są dostępne. Podczas testów korzystałem ze złącza OBD. Finalnie podpiąłem się do szyny Can (MS) podłączonej do radia.

    Super, trochę to ułatwia życie, bo nie trzeba grzebać za radiem na starcie tylko po to, by coś sprawdzić ;)

    Zaaaaap napisał:
    [00] - Rośnie od 00 do FF. W momencie puszczenia pierwszy bajt staje się 00.

    Jeśli dobrze rozumiem, to przytrzymanie przycisku generuje kolejno, np.
    - 206#0181[00] - Górny przycisk wciśnięty i przytrzymany
    <odstęp czasowy>
    - 206#0181[01]
    <odstęp czasowy>
    - 206#0181[02]
    <odstęp czasowy>
    - 206#0181[03] - Górny przycisk puszczony
    <odstęp czasowy>
    - 206#0181[00] - Górny przycisk wciśnięty (kod od nowa)

    Z tego wynikałoby, że odstęp czasowy to 100ms?
    Zaaaaap napisał:

    (1535037012.511833) can0 206#018400
    (1535037012.611813) can0 206#018401
    (1535037012.711817) can0 206#018402


    Mam w szufladzie moduł BT Audio, mam AUXa, tylko w tej koncepcji AVRCP mi zawsze brakowało. Dołożyć jakieś maleństwo, które z CANa wyciągnie potrzebne info i będzie piękny moduł do wpięcia w OBD i AUX :D Zmobilizowałeś mnie tym odkryciem. Myślałem, że będę musiał się wpinać w sygnał z przycisków kierownicy podpięty z tyłu do radia, pewnie działający jako dzielnik rezystancyjny, a tu taki prezent :D
  • #7
    Zaaaaap
    Poziom 8  
    krisRaba napisał:

    Zaaaaap napisał:
    [00] - Rośnie od 00 do FF. W momencie puszczenia pierwszy bajt staje się 00.

    Jeśli dobrze rozumiem, to przytrzymanie przycisku generuje kolejno, np.
    - 206#0181[00] - Górny przycisk wciśnięty i przytrzymany
    <odstęp czasowy>
    - 206#0181[01]
    <odstęp czasowy>
    - 206#0181[02]
    <odstęp czasowy>
    - 206#0181[03] - Górny przycisk puszczony
    <odstęp czasowy>
    - 206#0181[00] - Górny przycisk wciśnięty (kod od nowa)

    Z tego wynikałoby, że odstęp czasowy to 100ms?
    Zaaaaap napisał:

    (1535037012.511833) can0 206#018400
    (1535037012.611813) can0 206#018401
    (1535037012.711817) can0 206#018402



    Tak w przypadku sprycików jest to 100ms. Natomiast w przypadku rolki jest to sygnał co jakieś 300ms Jeżeli chodzi o puszczenie przycisku to wygląda to tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W przypadku rolki nie ma licznik przytrzymania ani wiadomości mówiącej o puszczeniu przycisku.
  • #9
    Zaaaaap
    Poziom 8  
    bsw napisał:
    Trochę zamotany ten opis - zatem moje pytanie:
    Do czego służy to Raspberry Pi w finalnym projekcie ?


    Odpowiada za:
    - nasłuchiwanie tego, co dzieje się na magistrali,
    - łączy się za pomocą BT z telefonem,
    - odtwarza, przez kartę dźwiękowej, strumieniowaną muzykę z telefonu,
    - steruje odtwarzaczem w telefonie zgodnie z naciskanymi przyciskami na kierownicy.
  • #10
    krisRaba
    Poziom 28  
    Zaaaaap napisał:

    Tak w przypadku sprycików jest to 100ms. Natomiast w przypadku rolki jest to sygnał co jakieś 300ms Jeżeli chodzi o puszczenie przycisku to wygląda to tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W przypadku rolki nie ma licznik przytrzymania ani wiadomości mówiącej o puszczeniu przycisku.

    Dzięki! Teraz wszystko jasne, wcześniej nie zrozumiałem z tym pierwszym bajtem wracającym na 00. Czyli nie dość, że zlicza czas przytrzymania inkrementując, to dla przycisków określa stan 00/01.

    To może jeszcze odczarowałbyś trochę wysyłanie na wyświetlacz ;-) Bo tam widzę jakąś podzieloną Bartosiewicz ;-) ale jest sporo innych znaczków/danych. Masz to rozpisane co dokładnie do czego? Czy komenda jest dla całego wyświetlacza, czy osobno zegar, osobno tekst na środku itp?

    Muszę sprawdzić, czy w tym module audio będę miał nazwy utworów, bo jak nie, to nie ma co wyświetlać ;-)
  • #11
    .:KoSik:.
    Poziom 18  
    krisRaba napisał:
    boksujecie się o czas na wyświetlaczu, czy jest tam jakaś zasada priorytetu komunikatów?


    Myślę że rozwiązaniem byłoby ocięcie radia od CAN bus w aucie i podłączenie bezpośrednio do RPi. Wtedy można by zablokować niektóre komunikaty a resztę przekazać.
  • #12
    krisRaba
    Poziom 28  
    Muszę zobaczyć jak to jest teraz. Bo przykładowo pomimo załączenia AUX czy RDS z radia, to komunikaty typu niski poziom płynu spryskiwaczy, czy zatankuj utrzymują się na topie ;) Może komputer cyklicznie wysyła ten komunikat na wyświetlacz do momentu potwierdzenia przyciskiem...
    Generalnie ja mam w planie łączyć się w złączu OBD, a nie przy radiu ;)
    No i sprawdzałem, moduł w ramach AVRCP obsługuje informacje o odtwarzanych utworach itp., więc będzie co wyświetlać :D

    Tym bardziej ponawiam prośbę o szersze info na temat wysyłania danych na wyświetlacz :)
  • #13
    indianka
    Poziom 13  
    Kosmos! Wielki szacunek dla Autora. Zawsze podziwiam takie projekty gdzie najważniejsza jest analiza i wpasowanie się do istniejącego systemu. Gratulacje. Moje pytanie czy zmiany nie wprowadzają słyszalnych zakłóceń?
  • #14
    LWPM
    Poziom 2  
    proponuję rozwinąć pomysł o pełne graficzne menu na GID/CID. Wtedy to naprawdę będzie coś konkretnego :)

    ja ciągle nie mam na to czasu ( a raczej ogranicza mnie nieznajomość tematów związanych z BT/Audio ) by to pociągnąć dalej...

    Ile to potrzebuje prądu, gdy jest nieużywane? Tzn auto wyłączone?
  • #15
    Zaaaaap
    Poziom 8  
    krisRaba napisał:
    To może jeszcze odczarowałbyś trochę wysyłanie na wyświetlacz ;-) Bo tam widzę jakąś podzieloną Bartosiewicz ;-) ale jest sporo innych znaczków/danych. Masz to rozpisane co dokładnie do czego? Czy komenda jest dla całego wyświetlacza, czy osobno zegar, osobno tekst na środku itp?


    Tekst do wyświetlenia podzielony jest na kilka wiadomości. Pierwsza z nich zaczyna się od 0x10. Druga zaczyna się od 0x21 a kolejne to 0x22, 0x23 i tak dalej. Po przekroczeniu 0x2F zaczyna od 0x20 (0x21, 0x22, ...). Ilość wiadomości zależy od długości tekstu, jaki ma zostać wyświetlony.

    Zestaw kolejnych wiadomości
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Należy interpretować jako całą i kompletną wiadomość, mówiąca co ma zostać wyświetlone:
    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.


    Sekwencje zaczynające się od '[' to jakies znaki formatujące. Przydatne informacje można znaleźć tu. Zegar jest sterowany przez komputer pokładowy (wyświetlacz). Natomiast radio przesyła informacje o aktualnym czasie. Na tej podstawie komputer pokładowy koryguje godzinę. Temperatura przesyłana jest komunikatem o innym adresie i raczej nie pochodzi z radia. Radio steruje znacznikami AS REG TP ... ale nie pamiętam jak wyglądają te komunikaty.

    Analiza komunikatów do wyświetlaczy CID i GID może dostarczyć więcej informacji. Zakładam, że komunikaty w tych modelach są bardziej różnorodne, ale o podobnej strukturze.

    .:KoSik:. napisał:
    krisRaba napisał:
    boksujecie się o czas na wyświetlaczu, czy jest tam jakaś zasada priorytetu komunikatów?


    Myślę że rozwiązaniem byłoby ocięcie radia od CAN bus w aucie i podłączenie bezpośrednio do RPi. Wtedy można by zablokować niektóre komunikaty a resztę przekazać.


    Też o tym myślałem, jest to jakieś rozwiązanie. Mam dwa moduły do dyspozycji. Jeden z nich można podłączyć do radia a drugi podpiąć w miejsce radia i w ten sposób filtrować wiadomości.

    krisRaba napisał:
    Muszę zobaczyć jak to jest teraz. Bo przykładowo pomimo załączenia AUX czy RDS z radia, to komunikaty typu niski poziom płynu spryskiwaczy, czy zatankuj utrzymują się na topie ;) Może komputer cyklicznie wysyła ten komunikat na wyświetlacz do momentu potwierdzenia przyciskiem...


    Moim zdaniem komputer pokładowy zintegrowany jest z wyświetlaczem i wyświetlacz/komputer pokładowy decyduje, że chce poinformować o niskim poziomie płynów do spryskiwaczy kosztem ignorowania tego, co chce wyświetlać radio. Taka sama sytuacja jest z wejściem do menu komputera pokładowego. Nie wykluczone też, że mogę się mylić :).

    indianka napisał:
    Moje pytanie czy zmiany nie wprowadzają słyszalnych zakłóceń?


    Po modyfikacji opisanej tu miałem trzaski przy przełączaniu w tryb telefonu i zmianie poziomu głośności. Natomiast po dodaniu układu JACK, wzorowanego na podobnym egzemplarzu radia, problemy zniknęły. Nie słychać zakłóceń.

    LWPM napisał:
    Ile to potrzebuje prądu, gdy jest nieużywane? Tzn auto wyłączone?


    Całość podłączona jest do lampki w schowku. Zasilanie do lampki odcinane jest po ~20 min od zamknięcia samochodu. System plików z uwagi na brutalne odłączanie zasilania jest ustawiony w trybie RO.
  • #16
    krisRaba
    Poziom 28  
    Rewelacja, dzięki za wszystkie wrzucone informacje. Czas kupić trochę zabawek ;)

    Dodano po 1 [godziny] 54 [minuty]:

    Hmm, teraz patrzę jeszcze na sygnały w OBDII pod podanym linkiem i tam jest 12V z aku, natomiast chyba nie ma zasilania po kluczyku.
    Trzeba będzie zatem pokombinować z usypianiem we własnym zakresie...
  • #17
    travispl
    Poziom 9  
    Rozbierz plastiki pod kierownica i dostań się do stacyjki. Masz każdą pozycje stacyjki ładnie na kostce :) jest Chyba 5pinowa lub 6pinowa. Stale 12V, 12V po przekreceniu kluczyka w pozycje pierwsza a znikajace podczas rozruchu, 12V po włączeniu zapłonu i zostające podczas rozruchu, rozruch i prawdopodobnie przewód od immobilisera. W każdym razie nie radzę podłączać dużego obciążenia, w tym wypadku raspberry. Auto potrafi głupieć, albo po przekręceniu kluczyka będzie brak reakcji, albo po odpaleniu auta można będzie wyciągnąć kluczyk że stacyjki a silnik będzie pracować przez jakiś czas :D najlepsze rozwiązanie to wstawić przekaźnik. Ja u siebie w corsie d mam nieoryginalne radio i mam tak zrobiony sygnał +12V po stacyjce od kilku lat i działa to bez zarzutu


    Moderowany przez T5:

    W tym aucie "kostka stacyjki" jest zintegrowana z modułem CIM.
    Regulamin 3.1.11

  • #18
    .:KoSik:.
    Poziom 18  
    travispl napisał:
    Rozbierz plastiki pod kierownica i dostań się do stacyjki. Masz każdą pozycje stacyjki ładnie na kostce


    Nie każdy ma stacyjkę ;)

    Koledze krisRaba raczej chodziło o to aby wykorzystać wyłącznie złącze OBDII bez ingerencji w instalację auta.
  • #19
    krisRaba
    Poziom 28  
    .:KoSik:. napisał:
    Koledze krisRaba raczej chodziło o to aby wykorzystać wyłącznie złącze OBDII bez ingerencji w instalację auta.

    Dokładnie, tak by było idealnie. Ciekawi mnie co to za "PWM"? Może mają jakieś inne rozwinięcie niż Pulse Width Modulation ;) Bo jakiego PWMa można by się tu spodziewać? ;) Może to jakiś "Power W.. Module"? ;)
    Domyślam się, że po CANie poleci informacja o wyłączeniu zapłonu, by niektóre urządzenia się uśpiły, co łatwo można też wykorzystać.. natomiast jak go obudzić? Hmm :) Ciekawe czy bez zapłonu jest jakiś ruch na magistrali.. bo jak nie, to może komparator i heja, gdy pojawi się sygnał ;)
  • #20
    .:KoSik:.
    Poziom 18  
    krisRaba napisał:
    Ciekawi mnie co to za "PWM"?


    Nic z tego. To nazwa protokołu: http://www.obdtester.com/obd2_protocols

    Wydaje mi się, że jeszcze przez pewien czas po wyłączeniu zapłonu linia jest używana ale po kilku minutach ruch się uspokaja (na pewno jest to zależne od modelu pojazdu). Myślę, że spokojnie wystarczy uśpić procesor i wybudzać przerwaniem wyzwalanym zmianą stanu na linii CAN bus. Wtedy wystarczy odczytać czy zapłon jest włączony - jeśli nie, znów uśpić.
  • #21
    sobieh
    Poziom 11  
    Niestety jeśli protokół to SAE J1850 PWM to zostaje albo dekodowanie softem albo użycie innego układu (np. OKI M6636) ponieważ z tego co się orientuję MCP2515 wspiera wyłącznie CAN-BUSa.
    Napotkałem ten problem grzebiąc w swojej Almerze N16 i przykładowo radio, ekran komputera i klawisze gadają po J1850 PWM ale już OBD2, ECU i Zegary po CAN-BUS. Dziwaczna konstrukcja :/
  • #22
    LWPM
    Poziom 2  
    krisRaba napisał:
    Domyślam się, że po CANie poleci informacja o wyłączeniu zapłonu, by niektóre urządzenia się uśpiły, co łatwo można też wykorzystać.. natomiast jak go obudzić? Hmm Ciekawe czy bez zapłonu jest jakiś ruch na magistrali.. bo jak nie, to może komparator i heja, gdy pojawi się sygnał
    oczywiście, że leci na CAN informacja o zapłonie, ale generalnie można to zrobić prościej. Wystarczy poczekać, aż przez kilkanaście sekund nie będzie żadnego ruchu na CAN - wtedy wiemy, że wszystkie moduły zostały uśpione.
    Wybudzenie jest również proste - coś się zacznie pojawiać na CAN, ale w zasadzie powinno być to zrobione tak jak jest opisane tutaj: http://canbushack.com/network-management-part-1-gmlan/
    Czyli wybudzamy się po otrzymaniu napięcia +12V (Vbatt) na LSCAN
  • #23
    krisRaba
    Poziom 28  
    LWPM napisał:
    Wybudzenie jest również proste - coś się zacznie pojawiać na CAN, ale w zasadzie powinno być to zrobione tak jak jest opisane tutaj: http://canbushack.com/network-management-part-1-gmlan/
    Czyli wybudzamy się po otrzymaniu napięcia +12V (Vbatt) na LSCAN

    No i rewelacja! Tej wiedzy potrzebowałem! :-D Bardzo Ci dziękuję za wskazanie źródła.

    Teraz tylko się zastanawiam, czy muszę odizolować moduł BT, żeby nie powstała jakaś paskudna pętla masy z dźwiękiem po AUX...
    Początkowo planowałem zrobić izolowany CAN na jakimś ISO1050 czy ISO1042, tylko że izolowane przetwornice zawsze biorą swoje mA nawet bez obciążenia, więc co z tego, że wszystko uśpię za przetwornicą, jak ona będzie bezczynnie siorbać ;-) Więc lepiej mieć zarządzanie energią przed barierą i przy usypianiu ciąć całą przetwornicę i wszystko co za nią. Stąd CAN może być bez izolacji tak jak zarzadzający MCU, a ewentualnie mogę izolować moduł BT.. Trochę to bez sensu, bo masa po drugiej stronie byłaby ta sama (sygnałowa z AUX), ale sytuacja bardziej by przypominała podłączenie urządzenia zasilanego bateryjnie...
    No chyba że mają to tak zmyślnie zrobione, że nie będzie problemu z pętlą ;-)

    Dodano po 2 [minuty]:

    Teraz zerknąłem na schemat w pierwszym poście i tam jest AUX+ i AUX-, ja w module też mam wyjście +/- więc może niepotrzebnie się martwię ;-)
  • #24
    vogelek1
    Poziom 16  
    I za to twórcy Elektroda forum powinni dostać Nobla:-) a tobie szacun za profesjonalne wykonanie i podzielenie się z projektem na forum.
  • #25
    Dawid90u
    Poziom 23  
    Cześć,
    Posiadam kierownicę z przyciskami i radio "CD30 MP3" a muzyki słucham przez transmiter FM bluetooth. Rozumiem że każde wciśnięcie przycisku powoduje sygnalizacja stanu przycisku na szynie CAN a te informacje można wyciągnąć ze złącza OBD. Gdybym w obudowę wsadził złącze OBD, moduł bluetooth i odpowiedni soft" Sparował z telefonem to mógłbym przyciskami z kierownicy sterować wyborem muzyki tak?
    A czy jest też możliwość zmiany funkcji przycisków na kierownicy? Posiadam komputer pokładowy i przyciski na kierownicy które przy braku komputera służą do zmiany stacji/utworu na CD, tutaj służą do podglądu przejechanych km, spalonego paliwa itp. I trochę by irytowało gdybym zmieniał muzykę przez dodatkowy moduł i jednocześnie pojawiały się informacje na ekranie.
  • #26
    krisRaba
    Poziom 28  
    Chyba nie da się tego zrobić tak jak myślisz. W CAN obowiązuje coś w rodzaju odwrotnej logiki, czyli dany komponent rozgłasza swój komunikat do wszystkich i to odbiorcy decydują, czy ten komunikat ich interesuje czy nie. Więc do póki nie odfiltrujesz danych komunikatów z magistrali, np. wpinając się pomiędzy magistralę i komputer, retransmitując odfiltrowany ruch, to nie masz wpływu na to co komputer zrobi z odebraną informacją. Chyba że zmienisz soft w komputerze ;) Albo przekonasz moduł przycisków, by wysyłał komunikaty z innym ID, którego komputer nie oczekuje...

    Dodano po 1 [minuty]:

    Inna rzecz, że do komputera są przyciski po lewej, a do radia po prawej? Czy u Ciebie jest inaczej?
  • #27
    electro
    Poziom 17  
    Do sterowania zasilaniem urządzeniami na CAN warto użyć dedykowanego transceivera, np TJA1043, ma fajne wyjście INH gdzie pojawia się UBAT po wykryciu ruchu na CAN. Wyjście można wykorzystać do sterowania układem zasilania urządzenia. A przy braku komunikacji możemy przestawić TJA w tryb standby, co spowoduje zdjęcie UBAT z wyjścia INH i wyłączenie zasilania urządzenia.

    Modyfikacja radia oraz integracja Raspberry Pi z szyną CAN-BUS w samochodzie.

    krisRaba napisał:
    Domyślam się, że po CANie poleci informacja o wyłączeniu zapłonu, by niektóre urządzenia się uśpiły, co łatwo można też wykorzystać.. natomiast jak go obudzić? Hmm Ciekawe czy bez zapłonu jest jakiś ruch na magistrali.. bo jak nie, to może komparator i heja, gdy pojawi się sygnał
  • #28
    krisRaba
    Poziom 28  
    electro napisał:
    Do sterowania zasilaniem urządzeniami na CAN warto użyć dedykowanego transceivera, np TJA1043, ma fajne wyjście INH gdzie pojawia się UBAT po wykryciu ruchu na CAN.

    Super, odpada wtedy komparator do detekcji UBAT na CAN, a tak czy siak jakiś transceiver do CAN trzeba dołożyć :) Dzięki za podpowiedź.

    Zaaaaap napisał:
    Pin 3 - MS-CAN (+) (95kB)
    Zaaaaap napisał:
    - 2 x Mcp2515 (zmodyfikowane) - pozwala podłączyć się do szyny canbus o dowolnej prędkości,
    Zaaaaap napisał:
    Radio komunikuje się z komputerem pokładowym za pośrednictwem szyny MS.

    Czy możesz potwierdzić, że na MS jest baudrate 19kbps? Wygląda że MCP2515 ma autodetekcję, więc nie wiem, czy Cię to interesowało ;)
  • #29
    Zaaaaap
    Poziom 8  
    krisRaba napisał:
    Zaaaaap napisał:
    Pin 3 - MS-CAN (+) (95kB)
    Zaaaaap napisał:
    - 2 x Mcp2515 (zmodyfikowane) - pozwala podłączyć się do szyny canbus o dowolnej prędkości,
    Zaaaaap napisał:
    Radio komunikuje się z komputerem pokładowym za pośrednictwem szyny MS.

    Czy możesz potwierdzić, że na MS jest baudrate 19kbps? Wygląda że MCP2515 ma autodetekcję, więc nie wiem, czy Cię to interesowało ;)


    Tam powinno być kbps, czyli MS cen to 95 000 bps.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #30
    krisRaba
    Poziom 28  
    Ok, dzięki :-)
    Ja dzisiaj zrobiłem rozpoznanie, czy przy zamkniętej pokrywie cokolwiek może być podłączone do OBD i przy montażu kątowym powinno się zmieścić.
    Miałbym dawce ładnej obudowy OBD na wprost, ale wystawałaby ponad linię zaślepki, więc odpada.
    Kupię złącze, a obudowę może wydrukuję ;-)