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.

CarPI czyli Raspberry Pi w Renault Megane

milyges 12 Cze 2014 22:52 111345 54
  • CarPI czyli Raspberry Pi w Renault Megane

    Witam.
    Chciałbym przedstawić projekt, który jakiś czas temu zakończyłem i użytkuję codziennie. Jest to zamiennik standardowego wyświetlacza radia Update List występującego w samochodach marki Renault, rozszerzający funkcjonalność całego zestawu o funkcje takie jak:
    - nawigacja GPS,
    - zestaw głośnomówiący bluetooth,
    - możliwość odtwarzania muzyki z dysku USB lub przez bluetooth,
    - dodatkowe informacje odczytywane z OBD II.
    Dodatkowym założeniem było wykorzystanie oryginalnego radia oraz instalacji, umożliwiające w każdej chwili powrót do oryginalnego wyświetlacza.

    Budowa
    Układ oparty został o minikomputer Raspberry Pi, króry podłączany jest do głównej płyty urządzenia przez złącze GPIO oraz USB. Aby zminimalizować pobierany na postoju prąd, RPi nie jest cały czas włączone. Jego zasilaniem steruje mikroprocesor AVR, który w momencie wykrycia włączenia radia lub zapłonu włącza główne zasilanie 5V w układzie. Poza tym jego zadaniem jest:
    - obsługa klawiatury matrycowej pilota przy kierownicy,
    - odczyt stanów zapłonu, radia,
    - sterowanie zasilaniem wyświetlacza.
    RPi oraz AVR komunikują się za pomocą magistrali I2C. Po wyłączeniu zapłonu, AVR przesyła o tym informację do aplikacji działającej na RPi, która po godzinie na wyłączonym zapłonie zamyka system i wysyła do AVRa polecenie wyłączenia zasilania i przejścia w stan uśpienia.

    Komunikacja z radiem
    Komunikacja z radiem samochodowym odbywa się trzema torami:
    1. Szyna CAN - po tej szynie radio wysyła informację co ma pojawić się na wyświetlaczu a oryginalny wyświetlacz wysyła informacje o naciśniętych klawiszach na pilocie pod kierownicą. Niestety protokół komunikacji nie był nigdzie opisany, ale przy pomocy zbudowanego analizatora CAN oraz dużej ilości cierpliwości udało mi się go rozpracować, na tyle że moja aplikacja emuluje w pełni wszystkie funkcje które obsługiwane są przez standardowy wyświetlacz. Po więcej informacji zapraszam do kodu źródłowego:
    https://github.com/milyges/CarPI/blob/master/src/rpi-app/displayemulator.h
    https://github.com/milyges/CarPI/blob/master/src/rpi-app/displayemulator.cpp
    2. UART - służy do emulacji zmieniarki płyt CD, którą moja aplikacja udaje. Dzięki temu przetwarzaniem cyfrowo-analogowym muzyki odtwarzanej z dysku USB zajmuje się radio (zmieniarka wysyła do radia sygnał audio za pomocą S/PDIF) a nie Raspberry PI, co wpływa na poprawę jakości dźwięku w stosunku do karty dźwiękowej zintegrowanej w RPi. Kod emulatora zmieniarki bazuje na dokumentacji dostępnej w internecie i znajduje się:
    https://github.com/milyges/CarPI/blob/master/src/rpi-app/changeremulator.h
    https://github.com/milyges/CarPI/blob/master/src/rpi-app/changeremulator.cpp
    3. AUX - do analogowego wejścia radia podpięte zostało wyjście audio modułu bluetooth.

    Oprogramowanie
    Raspberry Pi pracuje pod kontrolą systemu operacyjnego Raspian (bazującego na Debianie). Zainstalowany jest serwer X.Org, manager okien OpenBox i kilka innych, niezbędnych do prawidłowego działania programów. Główna aplikacja, sterująca wszystkich napisana została w języku C++, przy wykorzystaniu biblioteki Qt. Cały kod opublikowany został na GitHubie (link niżej).

    Nawigacja GPS
    Do nawigacji GPS został wykorzystany program Navit. Jego kod źródłowy został delikatnie zmodyfikowany aby usunąć część funkcjonalności (np. podświetlanie możliwych znaków do wpisania w nazwie miejscowości), które nie działały zbyt dobrze. Zmodyfikowany został również plik konfiguracyjny, usunięte zostały wszystkie niepotrzebne warstwy oraz punkty POI aby mapy były jak najbardziej czytelne.

    Obługa OBDII
    Główna aplikacja na RPi, komunikuje się po USB z adapterem OBD II, opartym o popularny układ ELM327. W chwili obecnej służy to do pokazania dodatkowych wskaźników:
    - temperatury powietrza zasysanego
    - ciśnienia doładowania
    - ciśnienia paliwa w listwie Common Rail
    - temperatury cieczy chłodzącej
    - obliczonego obciążenia silnika
    - napięcia w instalacji elektrycznej
    Jest to tak na prawdę taki bajer, który nie był projektowany od początku a pojawił się pod wpływem chwilowego impulsu ;)

    Obudowa wyświetlacza, tzw. daszek
    Wykonany został na bazie oryginalnego: wycięty został większy otwór, przygotowana ramka na nowy wyświetlacz. Następnie ramka została wklejona w otwór a wolna przestrzeń wypełniona matą oraz żywicą. Dalej wszystko zostało zaszpachlowane do równa, wyczyszczone papierem wodnym i pomalowane podkładem i farbą. Pierwszy raz robiłem coś takiego, było bardzo dużo poprawek, ale wydaje mi się że wyszło przyzwoicie.

    Obsługa
    Całość dodatkowych funkcji obsługuje się wykorzystując pilot pod kierownicą, co pozwala na obsługę w trakcie jazdy bez odrywania rąk od kierownicy. Przycisk na dole pilota, służący normalnie do zmiany płyty w zmieniarce, wykorzystany został do wejścia w tryb menu. W tym trybie możemy albo zmienić ekran, albo wejść w menu nawigacji.
    Po menu nawigacji poruszamy się wykorzystując przyciski: Vol+/Vol- jako góra dół, SRC+/SRC- jako prawo/lewo, przycisk Mute jako enter a przycisk Load (ten na dole) jako Escape. Na początku wprowadzanie nazw miejscowości i ulic wydaje się toporne, ale po kilku razach już wpisuje się w miarę szybko i sprawnie.

    Kosztorys i czas trwania
    Projekt od analizy komunikatów CAN z radia do finalnej wersji powstawał około roku (głównie wieczorami po pracy). Dużą część elektroniki miałem, więc ciężko mi wycenić:
    - Raspberry Pi: około 130zł
    - Wyświetlacz: 100zł
    - Moduł bluetooth: 80zł
    - Moduł GPS: 50zł
    - Pozostała elektronika: myślę że do 50zł
    Razem około: 410zł

    Zdjęcia
    CarPI czyli Raspberry Pi w Renault Megane CarPI czyli Raspberry Pi w Renault Megane CarPI czyli Raspberry Pi w Renault Megane CarPI czyli Raspberry Pi w Renault Megane CarPI czyli Raspberry Pi w Renault Megane
    Co do ostatniego zdjęcia, wiem że w środku jest plątanina przewodów. Tak się dzieje jak projekt zmienia się bo okazuje się że coś jednak trzeba zrobić inaczej, jak to w prototypach bywa.

    Filmy
    Na wstępie chciałem przeprosić że na youtube, jednak nie mam żadnych kopii poza tymi na yt. Liczę na wyrozumiałość ze strony administracji.

    Link

    Link

    Link


    Źródła, schemat, itp
    Wszystko zostało opublikowane w repozytorium na stronie github.com pod adresem https://github.com/milyges/CarPI
    Dodatkowo wrzucam schemat w formie obrazka:
    CarPI czyli Raspberry Pi w Renault Megane

    Mam nadzieję że komuś się to na coś przyda. Na wszelkie pytania postaram się odpowiedzieć.
    Pozdrawiam

    //EDIT: Dorzuciłem archiwa z kodem na procesor AVR, z kodem aplikacji na Rpi oraz schematem płyty głównej (w formacie eagle).

    //EDIT 2: Dorzuciłem schemat w formie obrazka.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    milyges
    Poziom 12  
    Offline 
    Specjalizuje się w: administrator linux/unix
    milyges napisał 28 postów o ocenie 275, pomógł 0 razy. Mieszka w mieście Kobylanka/Kraków. Jest z nami od 2004 roku.
  • Relpol przekaźniki
  • #2
    slawek55
    Poziom 23  
    Świetna sprawa, szacunek za wiedzę.

    Pisałeś o analizatorze CAN. Możesz jakoś rozwinąć temat. interesuje nie coś sprawdzonego. Chciałbym podejrzeć ramki sterownika i szukam analizatora CAN.
  • #3
    actin
    Poziom 33  
    Szacunek.
    Mam pytanie odnośnie pamięci- ile potrzebujesz na mapy+soft "silnikowy"?
    Na czym to realizujesz?
  • Relpol przekaźniki
  • #4
    krzysiek71
    Poziom 13  
    Witam.
    Projekcik ciekawy jednakże mam pytanko.Czy oryginalny wyświetlacz to był Carminat 8000?Jest montowany w renówkach, jest to kolorowy wyświetlacz który też może wyświetlać te same "bajery" co u ciebie.Jeśli miałeś taki wyświetlacz to czy nie lepiej byłoby "wstawić" twój projekt pomiędzy wyświetlacz a radio itd?Są gotowe urządzenia jednakich cena jest naprawdę zaporowa.
    Pozdrawiam.
  • #6
    elektronik999
    Poziom 26  
    Możesz dodać jeszcze kamerkę cofania do tego ;)
  • #7
    zbyrek
    Poziom 23  
    Świetny projekt, gratulacje za rozszyfrowanie magistrali CAN, bo faktycznie ciężko znaleźć jakiekolwiek informacje o tym. Jaki jest pobór prądu całości, w trybie uśpienia?
  • #8
    milyges
    Poziom 12  
    slawek55 napisał:
    Pisałeś o analizatorze CAN. Możesz jakoś rozwinąć temat. interesuje nie coś sprawdzonego. Chciałbym podejrzeć ramki sterownika i szukam analizatora CAN.

    Autorski, bardzo prosty z minimalną funkcjonalnością:
    CarPI czyli Raspberry Pi w Renault Megane
    Soft niestety się nie ostał w wersji ogólnej (modyfikowałem go na bierząco pod moje potrzeby). Samo zrzucanie danych przez PuTTY z włączonym zapisem danych do pliku tekstowego:
    CarPI czyli Raspberry Pi w Renault Megane

    actin napisał:
    Mam pytanie odnośnie pamięci- ile potrzebujesz na mapy+soft "silnikowy"?
    Na czym to realizujesz?

    Na RPi zajęte jest jakieś 60MB ramu przy włączonej aplikacji. Wszystko poza nawigacją realizowane jest w autorskiej aplikacji, kod na GitHubie. Na karcie SD mapy zajmują około 700MB.

    krzysiek71 napisał:
    Projekcik ciekawy jednakże mam pytanko.Czy oryginalny wyświetlacz to był Carminat 8000?Jest montowany w renówkach, jest to kolorowy wyświetlacz który też może wyświetlać te same "bajery" co u ciebie.Jeśli miałeś taki wyświetlacz to czy nie lepiej byłoby "wstawić" twój projekt pomiędzy wyświetlacz a radio itd

    U mnie nie było Carminat'a. Było gołe radyjko Update List z MP3 i wyświetlaczem tesktowym. Wyświetlacz nie jest oryginalny.

    Sh44dow napisał:
    Co to za wyświetlacz? Jaki model? Gdzie można taki kupić?

    Wyświetlacz 4.3" do kamer cofania, 16:9, 480x272px z znanego portalu aukcyjnego. Można też zamówić z chin na ebayu

    elektronik999 napisał:
    Możesz dodać jeszcze kamerkę cofania do tego

    Myślałem o tym, jest dodatkowe wejście w ekranie, ale na razie czujniki parkowania wystarczają :)

    zbyrek napisał:
    Jaki jest pobór prądu całości, w trybie uśpienia?

    Nie mierzyłem, ale myślę że są to uA. W trybie uśpienia zasilana jest tylko uśpiona Atmega przez 7805.
  • #9
    slawek55
    Poziom 23  
    A masz może zamiar puścić na forum taki analizator CAN?
    Z chęcią bym coś takiego złożył.
  • #10
    gbd.reg
    Poziom 21  
    Nie myślałeś o dodaniu przycisków wokół wyświetlacza, które dawałyby szybszy dostęp do pewnych funkcji urządzania? A może nawet (odłączaną) pełną klawiaturę qwerty? Na postoju bardzo ułatwiłoby to obsługę urządzenia, bo raczej nie należy do prostych obsługa tak rozbudowanego urządzenia 6cioma przyciskami. A zawsze soft możesz rozbudować ;)
  • #11
    milyges
    Poziom 12  
    Początkowo do sterowania miał służyć dodatkowy pilot, coś w stylu:
    CarPI czyli Raspberry Pi w Renault Megane
    Jednak cena okazała się zabójcza. Pomysł z dodatkowymi przyciskami jest niezły, na pewno nie w koło wyświetlacza, prędzej na tunelu środkowy przed podłokietnikiem. Tylko trzeba by jakieś ładnie wyglądające przyciski znaleźć ;)
  • #12
    hmpawel
    Poziom 10  
    Jak się sprawowała całość podczas ostatnich upałów?
    Nie zaobserwowałeś jakichś objawów przegrzewania po parkowaniu na słońcu?
  • #13
    milyges
    Poziom 12  
    Działało wszystko poza modułem GPS, który zawieszał się, wysyłając same krzaki na port szeregowy (być może jest to spowodowane tym że już kilka razy był wylutowywany z innych prototypów). Czekam już na inny moduł na podmiankę. Poza tym czyli: pilot pod kierownicą, OBD II, odtwarzanie mp3, bluetooth działa bez zarzutu, a pod pracą parkuje na odsłoniętym parkingu.
  • #14
    Rinho
    Poziom 19  
    milyges napisał:
    Działało wszystko poza modułem GPS, który zawieszał się, wysyłając same krzaki na port szeregowy (być może jest to spowodowane tym że już kilka razy był wylutowywany z innych prototypów). Czekam już na inny moduł na podmiankę. Poza tym czyli: pilot pod kierownicą, OBD II, odtwarzanie mp3, bluetooth działa bez zarzutu, a pod pracą parkuje na odsłoniętym parkingu.


    Jeśli na nowym module dalej będzie problem, przyjrzyj się układowi ładowania w aucie. Sam natchnąłem się na podobny problem przy swoim dataloggerze gdzie u mnie w aucie moduł GPS działał bez problemu, w Accordzie również a problematyczny był Focus I gdzie na postoju wszystko śmigało a podczas jazdy to jak mu się podobało ;)

    A może by tak jeszcze dołożyć akcelerometr?
  • #15
    Zuliczek
    Poziom 17  
    Zamiast tych paru przycisków nie lepszy byłby touchpad z jakiegoś laptopa, np Dell D600. Na znanym portalu aukcyjnym stoją po ok. 6-10zł/szt., i są "czyste" (bez żadnych pól gdzie jest rolka itp.).
    Potem na niego folia z wydrukiem i są przyciski ;)
  • #16
    elektronik999
    Poziom 26  
    Przyciski są pewniejsze w aucie, można je nacisnąć bez odrywania wzroku od drogi.
  • #17
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #18
    gbd.reg
    Poziom 21  
    Rozgrzany touchpad często nie reaguje wcale na dotyk albo reaguje za mocno, a o rozgrzanie takiego w aucie stojącym na słońcu trudno nie jest. Dlatego m.in. producenci aut nie stosują tego typu rozwiązań.
  • #20
    milyges
    Poziom 12  
    Podczas włączonego odtwarzania mp3 oraz nawigacji użycie procesora wynosi 80-90%. Sam navit zużywa 40-50%.
    Z dodatkowych funkcjonalności, żałuję tylko że moduł bluetooth nie pozwala wysyłać do telefonu poleceń AT (pobranie książki adresowej, identyfikacja kto dzwoni, itp.).

    Postaram się dziś zgrać z auta aktualną wersję kodu i wrzucić + wrzucić pliki konfiguracyjne navit, openboxa i reszty aplikacji.
  • #21
    Vein
    Poziom 22  
    Odtwarzanie mp3 zżera 40% procesora? Może czas pomyśleć o jakieś bardziej "lekkiej" bibliotece lub aplikacji?
  • #23
    djkomprez
    Poziom 21  
    Szacunek za projekt i wykonanie ;)

    A czy nie łatwiej byłoby wrzucić Android-a na Rapsberry ? Miałbyś obsługę wszystkiego + jeszcze aplikacji od groma ...
  • #24
    gbd.reg
    Poziom 21  
    koziol660 napisał:
    Fajny projekt, ale myślę że raspbery pi dało by się bardziej wykorzystać.
    zobacz np. to https://www.youtube.com/watch?v=FoWQycTXXOs


    To jest gotowe radio z GPS (prawdopodobnie pod konkretny model samochodu) do którego sobie gościu dopiął Raspberry Pi porzez wejście AUX.
  • #25
    koziol660
    Poziom 11  
    Faktycznie moje niedopatrzenie, ale taki android? nie miał by większych możliwości?
  • #27
    Freddy
    Poziom 43  
    Milek79 napisał:
    Ale na Raspberry nie można wrzucić androida. Znaczy da się, ale bez akceleracji sprzętowej (której obecnie w razdroidzie nie ma) to się nie nadaje do użytkowania.

    Jak go napiszesz, to można.
  • #29
    milyges
    Poziom 12  
    Vein, obecnie wykorzystywany jest Phonon z VLC (było najprościej), ale chyba rzeczywiście trzeba będzie rozejrzeć się za czymś innym.

    Milek79, czas uruchamiania to około 30 sekund, tutaj filmik z pierwszych testów w samochodzie:

    Link

    Jeżeli chodzi o samą nawigację to doprowadzi zawsze do celu, jednak czasami nie najlepszą drogą, ocena w skali 0-5 to jakieś 4. W wolnej chwili chcę sprawdzić czy przy delikatnej modyfikacji kodu dało by się podpiąć zewnętrzny moduł do planowania tras.

    koziol660, wziąłem to na czym się znałem (czyli czysty Linux), poza tym od poczatku celem była emulacja wyświetlacza do oryginalnego radia a nie uruchamianie gier.
  • #30
    lukashb
    Poziom 39  
    djkomprez napisał:
    Oczywiście że jest z akceleracją :

    http://www.intorobotics.com/raspberry-pi-android-guides-resources/
    Code:
    Android 4.0.3. (built by Broadcom) – it can boot very fast and has integrated hardware accelerator;
    
    Read more at http://www.intorobotics.com/raspberry-pi-android-guides-resources/#7ILCfHRr8vE44mJI.99
    Oczywiście, że jest. Ale z tego co wiem to Broadcom nie chce go wypuścić tylko się plecie plotki typu, że już nie długo jeszcze chwilę itp. i sprawa wisi gdzieś już od dwóch lat, może od roku. Tak więc co z tego. Chyba, że Broadcom postanowił lekko zmienić politykę w kierunku posiadaczy Malinki. Wątpię.