Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi

kmmepl 27 Sep 2015 23:10 17778 14
  • OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi W tym artykule zostanie opisany sposób na wyświetlanie oraz rejestrowanie informacji diagnostycznych samochodu, przy pomocy Raspberry Pi.


    Krok 1: Wymagane materiały

    Do wykonania tego projektu będą potrzebne:
    • Raspberry Pi Model B lub B+
    • Radioodtwarzacz samochodowy (musi posiadać gniazdo AUX)
    • Adapter Bluetooth
    • Ładowarka samochodowa
    • Adapter USB lub Bluetooth oparty na ELM327.
    • Kabel RCA
    • Klawiatura (opcjonalnie)

    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    Krok 2: OBD II

    OBD (On-Board Diagnostics) jest to system będący standardem w samochodach sprzedawanych po 1 stycznia 2002r (w Polsce). Daje on możliwość dostępu do danych dotyczących stanu poszczególnych układów pojazdu (silnika, skrzyni biegów, ABSu itd.). Pojazdy zgodne ze standardem OBD-II powinny posiadać gniazdo w odległości około 0.6 metra od kierownicy. Sam konektor posiada 16 pinów i wygląda tak, jak na zdjęciu podanym poniżej.

    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    Krok 3: PyOBD

    PyOBD (również znane jako pyOBD-II lub pyOBD 2) jest oprogramowaniem typu open source zaprojektowanym do współpracy z chipem ELM327. Przykładowo pozwala ono na wyświetlanie informacji ze sterownika wtrysku (ECU) lub na ujawnianie kodów usterek (fault codes). Również możliwe są przeróżne testy oraz odczyty mnogich statusów. Ilość dostępnych informacji zależy od samego auta.

    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    Krok 4: Instalacja softu

    Programowanie odbywa się tutaj za pośrednictwem systemu Raspian z umożliwionym dostępem do sieci. Komunikacja z komputerem przeprowadzana jest przy pomocy konwertera USB <-> TTL, dozwolone jest jednak używanie innych sposobów wymiany danych.

    Przed instalacją powinno się wpisać poniższe komendy:



    To polecenie ściąga najnowszą listę pakietów:
    Code:
    sudo apt-get update

    Tutaj przeprowadza się ich aktualizację:
    Code:
    sudo apt-get upgrade

    Teraz usuwamy pakiety nieużywane przez żadne aplikacje:
    Code:
    sudo apt-get autoremove

    Na końcu restartujemy system:
    Code:
    sudo reboot


    Kontynuujemy instalując programy niezbędne do poprawnej pracy urządzenia.

    Code:
     sudo apt-get install python-serial
    
     sudo apt-get install bluetooth bluez-utils blueman
     sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n libwxgtk2.8-dev
     sudo apt-get install git-core#  sudo reboot


    Następnie pobieramy OBD-PI z tego linku lub za pomocą komend:
    Code:
      cd ~
    
      git clone https://github.com/Pbartek/pyobd-pi.git


    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    Krok 5: Podłączanie sprzętu

    1. Na początku wkładamy adapter Bluetooth na USB do Raspberry Pi razem z kartą SD.
    2. Podłączamy adapter OBD-II do odpowiadającego gniazda w samochodzie.
    3. Łączymy Raspberry Pi z radioodbiornikiem samochodowym za pomocą kabla RCA.
    4. Zasilamy malinkę przy użyciu ładowarki samochodowej.
    5. Logujemy się do Rpi i wpisujemy komendę:
    Code:
     startx

    6. Uruchamiamy BlueZ (usługa Bluetooth), a następnie parujemy ELM327.
    7. Komunikujemy się z SPP - powinniśmy zobaczyć to powiadomienie: „Serial port connected to dev/rfcomm0”
    8. Otwieramy terminal i wpisujemy poniższe polecenia:
    Code:
      cd pyobd-pi
    
      sudo su
      python obd_gui.py


    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    Krok 6:Rejestracja danych

    Sam odczyt danych w czasie rzeczywistym może być niekiedy kłopotliwy. Jest więc możliwe zbieranie i zapisywanie przeróżnych informacji oraz późniejszy ich odczyt. Aby rozpocząć pobieranie danych, wpisujemy:
    Code:
      cd pyobd-pi
    
      python obd_recorder.py


    Zapisane dane będą dostępne pod ścieżką:
    /home/username/pyobd-pi/log/

    OBD-Pi czyli samodiagnostyka pojazdów oparta na Raspberry Pi


    źródło: http://www.instructables.com/id/OBD-Pi/?ALLSTEPS

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    kmmepl
    Level 13  
    Offline 
    kmmepl wrote 73 posts with rating 315, helped 7 times. Been with us since 2013 year.
  • #2
    gbd.reg
    Level 21  
    Jako ciekawostkę dodam: w wielu nowszych samochodach część lub wszystkie sygnały ze złącza OBD są również dostępne w kostce od fabrycznego radia, można więc adapter ukryć w całości za radiem i nie zajmować tym samym złącza diagnostycznego.
  • #3
    jaca_76
    Level 12  
    W jakim celu jest podłączony kabel RCA ?
  • #4
    Freddy
    Level 43  
    jaca_76 wrote:
    W jakim celu jest podłączony kabel RCA ?
    Transmisja RPi do monitora.
  • #5
    nici
    Moderator Chiptuning
    gbd.reg wrote:
    Jako ciekawostkę dodam: w wielu nowszych samochodach część lub wszystkie sygnały ze złącza OBD są również dostępne w kostce od fabrycznego radia, można więc adapter ukryć w całości za radiem i nie zajmować tym samym złącza diagnostycznego.


    Racja, CAN mamy nie tylko w Radiu.
    Słuszna uwaga. Wiele pochowanych modułow posiada komunikację wystarczającą linie do diagnostyki.
  • #6
    deus.ex.machina
    Level 32  
    Szkoda ze nie ma żadnego projektu który nie wymagałby pośrednika w stylu ELM327 czy STN11xx. Zwłaszcza ELM327 znany jest ze swojej niskiej prędkości ale i STN11xx potrafi być za wolny.
    Najlepszym wyjściem byłoby zaimplementowanie funkcjonalności natywnie na RPi (potrzebny byłby translator CAN na np SPI np popularny MCP2515).
  • #7
    hubiwit
    Level 25  
    Quote:
    Racja, CAN mamy nie tylko w Radiu.
    W Słuszna uwaga. Wiele pochowanych modułow posiada komunikację wystarczającą linie do diagnostyki.


    Tylko diagnostyka CAN wychodzi z modułu gateway, a magistral CAN w aucie jest kilka, ta od radia nie obejmuje silnika itp. Między magistralami przesyłane są tylko niezbędne dane - właśnie przez moduł gateway.
  • #8
    tatanka
    Level 20  
    hubiwit wrote:
    Quote:
    Racja, CAN mamy nie tylko w Radiu.
    W Słuszna uwaga. Wiele pochowanych modułow posiada komunikację wystarczającą linie do diagnostyki.


    Tylko diagnostyka CAN wychodzi z modułu gateway, a magistral CAN w aucie jest kilka, ta od radia nie obejmuje silnika itp. Między magistralami przesyłane są tylko niezbędne dane - właśnie przez moduł gateway.


    To nie jest do końca prawdą.
    Nie wszystkie samochody posiadają gateway.
    Nie wszystkie samochody mają kilka różnych magistrali CAN.
    Nie każde radio ma doprowadzony CAN lub inna możliwość diagnozy.
  • #10
    Rinho
    Level 19  
    deus.ex.machina wrote:
    Szkoda ze nie ma żadnego projektu który nie wymagałby pośrednika w stylu ELM327 czy STN11xx. Zwłaszcza ELM327 znany jest ze swojej niskiej prędkości ale i STN11xx potrafi być za wolny.
    Najlepszym wyjściem byłoby zaimplementowanie funkcjonalności natywnie na RPi (potrzebny byłby translator CAN na np SPI np popularny MCP2515).


    To jaką ty prędkość chcesz osiągnąć, STN jest wystarczający do tego aby odświeżać dane z prędkością ~10fps. Oczywiście jak chcesz wyświetlić xx wartości to ta prędkość zacznie w końcu spadać, wina nie leży po stronie interfejsu a PCM'a, on też ma ograniczenia. Tak samo dzieje się gdy używasz interfejsu producenta (przynajmniej miałem takie same odczucia przy VCM do fordów i diagboxie). Sprawa inaczej się ma gdy sterownik obsługuje już UDS'a :)
  • #11
    nici
    Moderator Chiptuning
    Odnośnie nawet szybkiego CANa i interfejsu VCDS przy ECU EDC16 odczyt parametrów w trycie TURBO też się wywala... za wolny przesył z komputera..
    Odczytywałem 4 wartości na kanale EGR. po 10 minutach wywalało.
  • #12
    deus.ex.machina
    Level 32  
    Dlatego pisze ze najlepiej byłoby zrobić to natywnie na RPi a jeszcze lepiej na jakimś ARM który w standardzie ma obsługę CAN (dodać tylko obsługę SAE J1850 i pozostałych jeśli potrzeba).
  • #13
    nici
    Moderator Chiptuning
    Praktyczniejszym urządzeniem byłoby wpinane w gniazdo obd bądź zamontowane na stałe z jedną fcją. - CLEAR ALL DTC.

    Dla przeciętnego użytkownika posiadanie takiej samodiagnostyki jest zbędne.
  • #14
    e_ster
    Level 11  
    Ładnie się to prezentuje na tak dużym i czytelnym wyświetlaczu
  • #15
    bsw
    Level 18  
    No fajnie ale... w zasadzie do czego to służy? Bo autor tego nie napisał.

    Po co komu te nieprzejrzyste cyferki na ekranie? Poza tym że rozpraszają i można spowodować wypadek...