Archiwa tagu: megane

CarPI czyli Raspberry Pi w Renault Megane

CarPI 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.  Schemat urządzenia został przedstawiony poniżej.

carpi-schemat

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ł

Galeria zdjęć

Zdjęcia prezentują poszczególne fazy projektu od prototypu aż po gotowy układ zamontowany w samochodzie.

Filmy

Poniżej umieszczam kilka filmów prezentujących możliwości urządzenia oraz rozwój oprogramowania.

Interfejs CAN <-> USB i wyświetlacz Update List

Wykonałem i zaprojektowałem prosty interfejs CAN <-> USB, który następnie został wykorzystany do zdekodowania protokołu komunikacji radia Update List z wyświetlaczem.

Dokumentacja

schemat_can2usb

Schemat w PNG

Lakierowane zaciski w Megane II

Po całodziennej walce (pogoda przeszkadzała 2 razy deszczem delikatnym) zaciski polakierowane i koła zmienione na alufelgi. Teraz tylko wszystko ładnie schnie do jutra 🙂

Tempomat w Megane II

Renata dostała tempomat. Postępując wg. opisu który można znaleźć na forum megane.com.pl, wykonałem modyfikację w kierownicy oraz taśmie zwijacza kierownicy. Wymieniony został także plastik przy regulacji świateł, oraz dołożony wyłącznik tempomatu. Na koniec tempomat został aktywowany w zegarach przez użytkownika wyżej wymienionego forum interfejsem CAN-CLIP. Modyfikacja kierownicy i zwijacza została przedstawiona na zdjęciach:

Montaż CB w Megane II

Antena zamontowana na relingu na uchwycie. Kabel pociągnięty pod relingiem, ozdobną listwą (tą co jest pod relingami) i pod lampą tylną. Dodatkowo pociągnięta z pod mocowania relingu masa do uchwytu. CB Radio zamontowane w kieszeni w miejscu zmieniarki CD.

Komputer pokładowy do Renault Megane I

Komputer pokładowy, służy do monitorowania stanu pojazdu. Wykonana przeze mnie wersja posiada możliwość monitorowania: spalania (chwilowego oraz średniego), napięcia akumulatora, prędkości pojazdu, obrotów silnika oraz ilości paliwa w zbiorniku.

Całość została zamontowana w samochodzie Renault Megane z 96r, w miejscu wyświetlacza radia. Do przełączania funkcji służy oryginalny przełącznik znajdujący się w manetce wycieraczek.

Budowa

Sercem układu jest mikroprocesor Atmega16. Zasilany jest napięciem 5V, przez stabilizator liniowy 7805. Do procesora podłączony jest wyświetlacz alfanumeryczny 16×2, oparty o popularny sterownik HD44780. Na wyświetlaczu prezentowane są wszelkie zebrane informacje.

Do poprawnej pracy, procesor potrzebuje informacji o:

  • prędkości pojazdu
  • obrotach silnika
  • otwarciu wtryskiwacza
  • poziomie paliwa w zbiorniku

W moim samochodzie, czujnik prędkości działa w opraciu o efekt Halla, sygnał z czujnika podawany jest na wzmacniacz operacyjny, który pracuje jak komparator, a następnie na optotranzystor. Stała czujnika prędkości wynosi: 0.8 (8imp/s = 10km/h)

Informacje o obrotach pobierane są z wyjścia ECU, do którego połączony jest obrotomierz w zegarach. Układ wejściowy jest identyczny jak dla prędkościomierza. Stała obrotomierza wynosi: 30 (1imp/s = 30RPM)

W Renault Megane 1.4e, zastosowany został wtrysk jednopunktowy firmy BOSCH o numerze 0280150670. Po długich poszukiwaniach, udało się mi odnaleźć wydajnośc tego wtryskiwacza, która wynosi 567cc/min = 34.02l/h = 9.45 ml/s. Zasilanie wtryskiwacza, podłączone jest do układu dopasowującego do mikroprocesora.

Informacje o poziomie paliwa w zbiorniku oraz napięciu akumulatora pobierane są poprzez przetwornik analogowo cyfrowy atmegi. W dalszym ciągu staram się poprawić dokładność wskazań poziomu paliwa.

Efekt końcowy przedstawiony został na zdjęciach. Uprzedzając pytania, spalanie jest nieco zawyżone (jazda w cyklu miejskim, normalnie auto mieści się w 7l/100km), spalanie chwilowe w l/h na postoju jest wysokie ponieważ silnik był zimny.


Dokumentacja

komputer_schemat

Schemat w PNG