Elektroda.pl
Elektroda.pl
X

Search our partners

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

CarPI czyli Raspberry Pi w Renault Megane

milyges 12 Jun 2014 22:52 119817 54
IGE-XAO
  • 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.


    Ź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.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    milyges
    Level 12  
    Offline 
    Has specialization in: administrator linux/unix
    milyges wrote 28 posts with rating 279, helped 0 times. Live in city Kobylanka/Kraków. Been with us since 2004 year.
  • IGE-XAO
  • #2
    slawek55
    Level 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
    Level 34  
    Szacunek.
    Mam pytanie odnośnie pamięci- ile potrzebujesz na mapy+soft "silnikowy"?
    Na czym to realizujesz?
  • #4
    krzysiek71
    Level 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
    Level 26  
    Możesz dodać jeszcze kamerkę cofania do tego ;)
  • IGE-XAO
  • #7
    User removed account
    Level 1  
  • #8
    milyges
    Level 12  
    slawek55 wrote:
    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 wrote:
    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 wrote:
    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 wrote:
    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 wrote:
    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 wrote:
    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
    Level 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
    Level 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
    Level 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
    Level 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
    Level 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
    Level 19  
    milyges wrote:
    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
    Level 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
    Level 26  
    Przyciski są pewniejsze w aucie, można je nacisnąć bez odrywania wzroku od drogi.
  • #17
    User removed account
    User removed account  
  • #18
    gbd.reg
    Level 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
    Level 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
    Level 22  
    Odtwarzanie mp3 zżera 40% procesora? Może czas pomyśleć o jakieś bardziej "lekkiej" bibliotece lub aplikacji?
  • #23
    djkomprez
    Level 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
    Level 21  
    koziol660 wrote:
    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
    Level 11  
    Faktycznie moje niedopatrzenie, ale taki android? nie miał by większych możliwości?
  • #27
    Freddy
    Level 43  
    Milek79 wrote:
    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
    Level 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:

    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
    Level 39  
    djkomprez wrote:
    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ę.