Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek 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 107751 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.
  • Sklep HeluKabel
  • #2 13 Cze 2014 08:14
    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 13 Cze 2014 08:30
    actin
    Poziom 33  

    Szacunek.
    Mam pytanie odnośnie pamięci- ile potrzebujesz na mapy+soft "silnikowy"?
    Na czym to realizujesz?

  • #4 13 Cze 2014 08:40
    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.

  • Sklep HeluKabel
  • #6 13 Cze 2014 11:54
    elektronik999
    Poziom 26  

    Możesz dodać jeszcze kamerkę cofania do tego ;)

  • #7 13 Cze 2014 12:58
    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 13 Cze 2014 13:43
    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 13 Cze 2014 13:46
    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 13 Cze 2014 15:17
    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 13 Cze 2014 19:15
    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 13 Cze 2014 20:41
    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 13 Cze 2014 20:48
    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 14 Cze 2014 07:53
    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?

  • #16 14 Cze 2014 17:45
    elektronik999
    Poziom 26  

    Przyciski są pewniejsze w aucie, można je nacisnąć bez odrywania wzroku od drogi.

  • #17 15 Cze 2014 09:54
    2424810
    Użytkownik usunął konto  
  • #18 15 Cze 2014 09:55
    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 15 Cze 2014 14: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 15 Cze 2014 14:51
    Vein
    Poziom 22  

    Odtwarzanie mp3 zżera 40% procesora? Może czas pomyśleć o jakieś bardziej "lekkiej" bibliotece lub aplikacji?

  • #23 15 Cze 2014 22:50
    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 15 Cze 2014 22:57
    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 16 Cze 2014 01:48
    koziol660
    Poziom 11  

    Faktycznie moje niedopatrzenie, ale taki android? nie miał by większych możliwości?

  • #27 16 Cze 2014 17:58
    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 16 Cze 2014 21:30
    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 16 Cze 2014 21:36
    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ę.