die Prelude und CarPC Story – Part 1

die Prelude und CarPC Story – Part 1

Beim Stöbern in diversen „sortieren“- und „Neuer Ordner“-Ordnern habe ich noch einige Bilder meines Prelude Projekts gefunden. Ich versuche einfach mal anhand der Bilder einen Teil dieser Story wiederzugeben.

Als Kind war ich natürlich begeistert von der Fernsehserie Knight Rider. Hier hat mich weniger David Hasselhoff als vielmehr das Auto KITT begeistert. Es war die perfekte Symbiose der damaligen (und zum Großteil auch noch heutigen) Interessengebiete: Autos und Elektronik 😉 So etwas musste ich natürlich auch haben!

Einige Jahre später kaufte ich dann einen Honda Prelude BA4 12V. Auffällig ist schon eine gewisse Ähnlichkeit zu KITT.

OLYMPUS DIGITAL CAMERA

Nach Autos mit 40 und 45PS endlich eins mit über 100 PS (109). Damals war das noch was, da hatten die meisten einen Golf 2 mit rund 50PS. Außerdem hatte das Auto bereits alles Mögliche an elektrischen Extras, die von einem E-Techniker nur noch „vernünftig“ angesteuert werden wollten.

OLYMPUS DIGITAL CAMERA

Zum damaligen Zeitpunkt waren (für mich) kleine TFT Monitore mit entsprechender Auflösung und Schnittstellen noch unerschwinglich. Also wurde es erst mal nur ein 7“ Monitor mit Composite-Video Eingang.

OLYMPUS DIGITAL CAMERA

Nur ein Monitor macht natürlich noch keinen KITT, selbst wenn das Fahrzeug ein Honda Prelude ist, also musste natürlich auch ein Rechner in das Auto. Die Idee war einfach einen Windows PC zu verbauen, der mit einigen Anpassungen dann im Auto gut zu bedienen sein sollte. Um das Ganze irgendwie im Auto zu fixieren habe ich eine Holzplatte passend ausschneiden lassen (Danke Christoph!). Die Platte passte genau in den Kofferraum und rutschte somit nicht umher.

QF2-2200

Anschließend kam der Teppich aus dem Kofferraum über die Platte und es wurden zwei Schienen angebracht.

QF2-2200

In die angebrachten Schienen wurde nun eine weitere Platte geschoben, auf der der Computer zusammen mit Netzteilen und Audio Endstufen montiert war. Durch in die untere Platte eingelassene Gewinde konnte die oberen Platte mit einer großen Flügelschraube am rausrutschen gehindert werden. (Wir sprechen hier schließlich von einem Auto mit ÜBER 100PS!!!)

QF2-2200

Wie auf dem Foto zu sehen wurde das Ganze sehr unwirtschaftlich mit einem 12V zu 230V Wandler betrieben in dem wiederum ein normales ATX Netzteil steckte. Vorne im Auto gab es einen Taster, der ein Relais betätigt hat, dass den 230V Wandler eingeschaltet hat. Das sich daraufhin einschaltende ATX Netzteil hat dann dieses Relais weiter gehalten. Dies sollte dafür sorgen, dass Windows 95 in Ruhe herunterfahren kann, dann das ATX Netzteil abschaltet und somit sich alles komplett stromlos schaltet. Die Realität war eher die ein oder andere leere Batterie 🙂

Bevor das Projekt so richtig in Fahrt kommen konnte wurde der Prelude durch einen unachtsamen älteren Herren aus dem Leben gerissen.

OLYMPUS DIGITAL CAMERA

Glücklicherweise zahlte seine Versicherung relativ gut, so dass ich kurz darauf einen neuen/alten Prelude kaufen konnte. Es stand natürlich außer Frage, dass es wieder ein Prelude BA4 werden sollte. Diesmal sollte es allerdings das seltenere Modell mit dem 16V Motor werden und knapp über 140PS. Es ist dann einer in Madison Blue Pearl geworden.

QF2-2200

Diesmal sollte es aber keine halbgare Lösung werden. Hier sollte nun mal ein vernünftiges Projekt entstehen. Es galt diesmal wirklich sämtliche elektrische Komfortelektrik anzusteuern. Das Ganze sollte nicht nur von einem zentralen Display aus bedienbar werden, sondern auch einige intelligente Funktionen mitbringen. Da ich gerade mit der Programmierung von Mikrocontrollern begonnen hatte, war das natürlich ein ideales Projekt.

Es war schnell klar, dass es nicht ein Controller werden kann, der zusammen mit dem Computer alle Komponenten steuert. Damit das Ganze überhaupt realisierbar bleibt muss es mehrere Module mit spezialisierten Funktionen geben. Zudem habe ich aus der Erfahrung mit dem Windows 95 PC gelernt, dass man sich auf den PC nicht verlassen kann. Dieser soll im neuen Auto nur noch die Aufgabe eines Bedienpanels übernehmen. Alle Steuerungsaufgaben sollen von autarken Mikrocontrollern übernommen werden.

Nun stellte sich die Frage, wie diese einzelnen Module vernetzt werden sollten. Nach kurzer Überlegung schied I²C aus. Das EMV Klima im Auto ist nicht gerade freundlich. Es musst also was Robustes her, was trotzdem Multimasterbetrieb erlaubt. Es standen RS485 und CAN zur Auswahl. Die Entscheidung viel letztendlich auf CAN. Bei RS485 ist die Kollisionserkennung schwierig, wenn es keinen Master gibt. Für CAN gibt es von Microchip nette CAN Controller mit SPI Schnittstelle. Leider gab es diese Controller damals noch nicht bei Reichelt, aber die Firma Microchip war so freundlich einem armen Studenten einige Samples zu schicken.

Nach wochenlangem warten waren die CAN Controller dann endlich da. Es begann mit einem kleinen Testaufbau auf dem Breadboard. Zwei ATmega8 mit CAN Controllern und CAN Transceivern. Das Ganze wollte nicht auf Anhieb, aber nach ein paar Nächten lief es dann wie gewünscht.

Besonders fasziniert hat mich an CAN die Idee hinter dem Bus. Es werden keine Punkt zu Punkt Verbindungen aufgebaut und Daten ausgetauscht, sondern es gibt eigentlich nur Events. Jede CAN Nachricht hat eine Message ID. Sollten zwei Nachrichten gleichzeitig auf den Bus gegeben werden, so „gewinnt“ die mit der kleineren ID. Dadurch ist es auch komplett deterministisch, wenn ich ein Paket mit der ID 0 sende.

Ich sende in meinem Auto also nicht vom Modul, dass die Fensterheber Taster hat „Fenster fahre runter“, sondern ich sende „Taster zum Fensterrunterfahren wurde gedrückt“. Das Fenstersteuermodul empfängt diese Nachricht und setzt sie entsprechend um. Ich könnte also ohne etwas am Tastermodul zu ändern, morgen mit dem Taster den PC starten oder so etwas.

Somit stand schon mal das Bussystem. Jetzt musste eine vernünftige PC Installation her. Das Kabel für den Monitor durchs ganze Auto zu verlegen wie im alten Prelude gefiel mir nicht. Dafür waren die analogen Videosignale zu empfindlich. Außerdem musste diesmal ein vernünftiger Monitor her. Einer mit Touchscreen um die Bedienung bei der Fahrt zu ermöglichen.

Also habe ich in den sauren Apfel gebissen und habe einen 7“ TFT mit VGA Anschluß und Touchpanel gekauft. Dieser Riss ein ziemliches Loch in meine Kasse, aber es musste sein. Um den das System als Fahrer vernünftig per Touch bedienen zu können, konnte der Monitor auch nicht wieder auf das Armaturenbrett, außerdem sah das nicht gut aus. Ich fand den Ort in der Mitte über der Schaltung perfekt. Damit hier ausreichend Platz ist musste allerdings nicht nur das Radio weichen, sondern auch sämtliche Bedienelemente der Heizung. Naja egal, sollte ja eh übers Display gesteuert werden.

Ich rupfte also alles aus der Mittelkonsole. Dann schnitt ich eine Aluplatte passend zurecht und bog diese entsprechend in Form. Nachdem ich ein Loch für den TFT hineingeschnitten hatte, habe ich sie noch mit so einer Carbonfolie beklebt.

QF2-2200

Hinter dem TFT war nun noch einiges an Platz. Hier sollte diesmal der Computer verbaut werden. Zudem gab es langsam einige Aktivitäten im Bereich carpc, so dass mittlerweile auch komplette ATX Netzteile zu erschwinglichen Preisen für die Versorgung aus dem Bordnetz erhältlich waren.

QF2-2200

Der neue Carpc bekam ein selbstgebautes Alu-Gehäuse, dass genau auf den alten Radioschacht angepasst war. Im Gehäuse war genügend Platz für das Netzteil (unten links), daneben das kleine ATX Board mit einem VIA EPIA Chipsatz. Darüber dann die Festplatte und eine Lochrasterplatine mit einem Mega8, RS232 Pegelwandler, CAN-Controller und CAN-Transceiver. Sowie einigen IOs zum Steuern  und Überwachen des PC.

QF2-2200

Der PC wurde dabei vom Mega8 durch das simulierte „drücken“ der Power-Taste gestartet und meine Software auf dem PC sendete einen Heartbeat an den Controller, der über RS232 mit dem PC verbunden war. Nach einem Timeout, dass lang genug war um sicher zu booten, wurde der PC vom Bordnetz getrennt. Zudem hat der Mega8 die Bordspannung gemessen und den PC erst gar nicht gestartet, wenn die Batteriespannung kritisch war.

Die Platine mit dem Mega8 diente gleichzeitig als CAN Interface für den PC. Damit auf dem PC auch richtiges busfeeling aufkommt, sollte hier auch nicht nur eine Software exklusiven Zugriff auf das CAN Interface bekommen.

Weil man als junger Student ja eh alles besser weiß baut man natürlich auch kein einfach zu parsendes ASCII Protokoll für die Kommunikation mit dem Interface, sondern muss ja die Bandbreite der Schnittstelle möglichst ausreizen können (was natürlich NIE erforderlich war) und schlägt sich so einige Nächte mit einem binären Protokoll, Escape Sequenzen usw um die Ohren.

Zurück zum Busfeeling: Es sollte nun also jede Software die Möglichkeit haben sich in den CAN Verkehr einzuklingen ohne die anderen zu stören. Dafür habe ich einen CAN Server in C geschrieben. Dieser baut die serielle Verbindung zum CAN Interface auf, kümmert sich um das bescheuerte binär Protokoll und macht darüberhinaus einen TCP Port auf, auf dem sich beliebig viele Clients verbinden können. Trifft nun eine Nachricht vom CAN Interface ein, erhalten alle verbundenen Clients diese Nachricht als TCP Paket. Sendet einer der Clients eine CAN Nachricht in Form eines TCP Pakets, so wird diese Nachricht zu allen Clients kopiert und über das Interface auf dem Bus ausgegeben. Damit können nun verschiedene Programme gleichzeitig mit dem CAN Bus verbunden sein und auch untereinander kommunizieren.

can2

So wie z.B. mein CAN Monitor (leider existiert hiervon nur noch dieses hässliche GIF). Ein weiterer Vorteil dieses Konzeptes ist, dass man so den CAN Bus per WLAN aus dem Auto raus verlängern konnte. Somit musste ich nicht auf dem kleinen 7″ Monitor den Bus debuggen, sondern konnte es bequem auf dem Notebook per Adhoc WLAN machen.

Ein weiterer Vorteil dieser WLAN CAN Brücke war noch, dass man im Winter im geheizten Zimmer sitzen konnte während man die neusten MP3s per WLAN ins Auto lädt und dabei den Batteriezustand im Auge behalten konnte.

Fortsetzung folgt…

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s