CarPi - Raspberry Pi mit VW RNS2 DVD (MFD2)
Leider trat die Meldung nach Durchführung aller Maßnahmen immer noch auf.
Daraufhin teilte mir die VW-Werkstatt meines Vertrauens mit, dass jetzt nur
noch das Amaturenbrett (die gesamten Anzeigen hinter dem Lenkrad) getauscht werden könne.
Das würde ca. € 1000,- Kosten, es wäre kein Tauschteil so
dass ich die Kosten auf jeden Fall tragen müsste und ob der Fehler damit beseitigt
würde, wäre nicht sicher.
Ungefähr zu dieser Zeit entstand die Idee, mit einem Raspberry Pi am CAN-Bus zu
lauschen, was denn so passiert.
Zum besseren Verständnis erläutere ich das Projekt in mehreren Etappen:
Das MFD2 als Bildschirm für den Raspberry Pi
Schwieriger war es da schon den Raspberry Pi dazu zu bewegen das passende VGA-Signal zu
erzeugen. Meine erste kostenoptimierte Idee war der Gert VGA 666 adapter.
(https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=94424)
Es hat eine ganze Weile gebraucht, bis ich zu der Erkenntnis kam, daß der Gert VGA
666 adapter eine LCD-Schnittstelle nutzt und diese grundsätzlich nur Progressiv kann
während das MFD2 grundsätzlich nur Interlaced kann. So konnte es nichts werden!
Der zweite Ansatz war mit einem HDMI-VGA-Adapter von manhattan.
(http://manhattan-products.com/hdmi-to-vga-converter3)
Den habe ich günstig bei K&M COMPUTER gekauft. Er hat keinen Audio Ausgang und wird vollständig von der HDMI Buchse des
Raspberry Pi gespeist. Damit war ich in der Lage grundsätzlich ein interlaced VGA-Signal
zu erzeugen. Ein erstes Timing habe ich hier gefunden:
(http://www.mp3car.com/forum/general/show-off-your-project/158651-oem-mfd2-vw-and-a-pc-my-next-ivi-to-replace-my-nexus-7-custom-hu)
Jetzt begann aber der harte Teil. Welches Timing und Pixel verträgt das MFD2?
Nun ich fasse mich kurz und präsentiere nur das Ergebnis. Das Display hat 400x230 Pixel
muss aber mit dem Timing für 800x460 angesteuert werden. Zusätzlich müssen
die Ränder aber so gewählt werden, daß die Pixel auf dem Display gut aussehen.
Wie geht das denn?
Als erstes wird die Information des Adapters ignoriert. Der kennt nämlich nur bestimmte
Modi, die aber nicht passen. Auch das heraus zu finden hat etwas Zeit beansprucht.
Weiterhin ist der Spezialmodus zu wählen und entsprechend einzustellen.
In dieses Timing spreizt nun das Raspberry Pi die angegebene Pixel und Zeilen Zahl.
sudo nano /boot/config.txt# MFD2 at HDMI-VGA adapter
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=87
hdmi_timings 800 0 51 44 121 460 0 10 9 14 0 0 0 32 1 16000000 3
framebuffer_width=400
framebuffer_height=230
disable_overscan=1
... und schon sieht es gut aus!
Da der Raspberry Pi über die Pfostensteckerleiste mit 5V versorgt wird, habe ich die
Warnungen abgeschaltet.
sudo nano /boot/config.txtavoid_warnings=1
Da der Raspberry Pi hinter dem Amaturenbrett eingebaut wird habe ich alle LEDs abgeschaltet.
sudo nano /boot/config.txtdtparam=act_led_trigger=none
dtparam=act_led_activelow=off
dtparam=pwr_led_trigger=none
dtparam=pwr_led_activelow=off
Jetzt sollte das Display aber dauerhaft eingeschaltet sein. Dazu mussten ein paar
Einstellungen angepasst werden.
Als erstes musste der Screensaver an diversen Stellen deaktiviert werden.
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart#@xscreensaver -no-splash
Dann sollte der Maus Cursor unsichtbar werden.
sudo apt install unclutter
sudo nano /etc/xdg/lxsession/LXDE/autostart#@xscreensaver -no-splash
@unclutter -idle 0.1 -root
Weiterhin durfte das Power Management den Bildschirm nicht abschalten.
nano ~/.config/lxsession/LXDE-pi/autostart#@xscreensaver -no-splash
@xset s noblank
@xset s off
@xset -dpms
Nun sollte der VSWITCH am MFD2 vom Raspberry Pi per infrarot Fernbedienung geschaltet werden.
Dazu habe ich ganz normal den lircd installiert und den Empfänger
konfiguriert. Das beschreibe ich mal an anderer Stelle.
An dieser Stelle sind die zusätzlichen Konfigurationen interessant, um den Ausgang zu
schalten. Als erstes müssen die GPIO Pins konfiguriert werden. Das mache ich nach dem
Startup mit diesem Desktop Kommando:
nano ~/.config/autostart/poweron.desktop[Desktop Entry]
Name=PowerOn
Comment=Set GPIO
Exec=sh -c "sudo /home/pi/poweron.py"
Icon=/usr/share/pixmaps/python.xpm
Terminal=false
Type=Application
Categories=Application;
StartupNotify=true
Im Python Script werden die GPIOs konfiguriert:
nano ~/poweron.py#!/usr/bin/python
# RPi.GPIO Official Documentation
# http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/
import RPi.GPIO as GPIO # import RPi.GPIO module
# Define Pins
AUX_ON_PIN=16
LIGHT_IN_PIN=20
MOTOR_IN_PIN=21
# choose BOARD or BCM
GPIO.setmode(GPIO.BCM) # BOARD for P1 pin numbering
# Set up In- and Outputs
GPIO.setup(AUX_ON_PIN, GPIO.OUT) # output
GPIO.setup(LIGHT_IN_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # input with pull-up
GPIO.setup(MOTOR_IN_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # input with pull-up
chmod +x ~/poweron.py
Die Reaktion auf dem KEY_POWER erfolgt in lircrc :
sudo nano /etc/lirc/lircrcbegin
button = KEY_POWER
prog = irexec
config = toggle_gpio 27
end
Das Programm toggle_gpio schaltet entsprechend den Ausgang:
sudo nano /usr/bin/toggle_gpio#!/bin/bash
if [ `gpio read $1` == 0 ]
then gpio write $1 1
else gpio write $1 0
fi
sudo chmod +x /usr/bin/toggle_gpio
Damit ist der Raspberry Pi vollständig konfiguriert und kann eingebaut werden.
Verbindung zum Fahrzeug
Dann wollte ich den Videoeingang auch während der Fahrt nutzen. In einem amerikanischen
Thread fand ich die Info zu den Schalteingängen des MFD2.
(http://forums.vwvortex.com/showthread.php?2601216)
Der VSWITCH-Eingang sollte über 5k6 an die 12V Bordspannung gelegt werden, um den
Videoeingang zu aktivieren.
Der Einbau
Die Seitenklappe ist mit Clips fest gemacht und kann einfach zur Seite abgehebelt werden.
Dieses ist auch der Zugang zum Raspberry Pi wenn alles in Betrieb ist.
Beim Einsetzen ist unbedingt darauf zu achten, daß die Nase (im Bild rechts oben) als
erstes in die vorgesehene Öffnung eingefädelt wird. Sonst passen die Clips nicht
oder es hängt runter!
Achtung: Aufgrund der oberen zwei Führungsnasen sind die oberen Klammern
unbedingt Richtung Fahrer zu lösen!
Bei mir ist immer irgend eine Klammer am Amaturenbrett hängen geblieben.
Zum Abspreitzen für das Gewindeschneiden sind noch ein paar Schrauben zu entfernen.
Davon habe ich aber kein Foto gemacht.
Das aus zwei Teilen bestehende Steckergehäuse habe ich ebenfalls bei VW gekauft. Ich
glaube, daß es günstigere Wege gibt.
Von links nach rechts sind die Signale:
- Rot
- Grün
- Blau
- <leer>
- CSYNC
- <leer>
- Audio Rechts
- Audio Links
- <leer>
Mit dem Ein/Aus Schalter einer Fernbedienung (KEY_POWER) aktiviere / deaktiviere ich den
VSWITCH Eingang des MFD2. Das hat zwei Vorteile:
- Auch wenn das Fahrzeug fährt erscheint das Bild vom Raspberry Pi im Display
- Die Audio Quelle bleibt aktiv. Ich kann also weiter Radio oder AUX-In hören
Soweit der erste Teil meines Berichtes.
Die Auswertung der CAN-Busse folgt noch ...
Die Auswertung der CAN-Busse folgt noch ...




