Geht nicht gibt's nicht

.

Mittwoch, 25. Juli 2012

IGEL navigiert mit OpenCPN

Es ist Sommerzeit - Zeit mal wieder durch die Dänische Südsee zu schippern. Auf dem letzten Törn hatten wir keinen Kartenmplotter an Bord. Es folge ein ewiges Rumhantieren mit den NV-Karten. Ich fragte mich dabei, ob man nicht mit einfachen Mitteln eine integrierte Navigationslösung für eine 33 Fuss Fahrtenyacht lauffähig bekommt, die sich die GPS-Daten vom SeaTalk-Bus saugt. Bild-Quelle: http://www.bavaria-charter.com/media/charteryacht/pics/YR5Z4051.jpg

Diese Navigationslösung sollte folgende Funktionen aufweisen
  1. Kartenplotter für Vektor- und Rasterkarten
  2. Integrierte Darstellung von GRIB-Wetterdaten
  3. Einblendung von Google Earth Daten
  4. AIS Dekoder + AIS-Radarplotter
  5. Offline-Routenplanung
  6. Ausgabe Kurs/Entfernung zum nächsten Wegepunkt
  7. Anschluss an vorhandenen NMEA 0183 Bus
  8. Anschluss an SeaTalk Bus

Lösung

Die Lösung werde ich hier Stück fuer Stück entstehen lassen, deshalb ist der weitere Text erstmal "Work in Progress".

Erstes Kochrezept

Man nehme folgende Zutaten:
  • Einen Bord-PC
  • Ein abgestripptes Windows XP (installierter Footprint < 400MB) 
  • Eine Compact Flash als Plattenersatz
  • Die Windows Enhanced Write-Filter von XPembedded
  • OpenCPN als Navigationslösung
  • einen CM93 Vektorkartensatz
  • GPSsim als GPS Simulator
  • eine Eigenbau PC/SeaTalk/NMEA 0183 Bridge
  • ausreichend Freizeit

Hardwareplattform


Die Wahl des Bord-PC's fiel recht zügig auf einen IGEL 4210 LX Thin Client, der bereits seit mehr als einem halben Jahr bei mir treu seinen Dienst verrichtet. Über die Hintergründe, warum ich auf den IGEL kam, werde ich nochmal extra berichten müssen. Und warum kein Notebook oder Netbook? Geht natürlich auch, aber die wecken Begehrlichkeiten, wenn sie an Bord bleiben, oder das Display geht kaputt, wenn man mal richtigen Seegang hat. Mit dem IGEL, der in der Bucht bereits für 20-30Euro zu haben ist, geht man kein großes Risiko ein. Im Grunde genommen ist der IGEL 4210 LX ist ein kleiner robuster Mini-PC mit recht ordentlicher Ausstattung, der mit seiner Leistungsaufnahme von 7-20W bei einer Versorgungsspannung von 12V (!) in Behoerden und groesseren Firmennetzwerken mit zentralisierter IT-Infrastruktur hilft, Stromkosten zu sparen:
  • 1 GHz Low-Power VIA C7 CPU
    1 VIA CN700 GPU (max 1920 x 1440 16 bit-colour)
  • 1 Compact Flash Interface bis 8GB (nominal 1GB)
  • 1 IDE44 Interface (alternativ)
  • 1 PCI Slot (z.B. fuer WLAN)
  • 1GB DDR2 max
  • 1 RS232
  • 4 USB 2.0
  • 1 Printer Port
  • 1 VGA/DVI Ausgang
  • 12V Power Eingang
  •  lüfterlos
Wie man anhand der Ausstattung erahnt, bootet der IGEL völlig leise ohne ein Lüftergeräusch direkt von der Compact Flash - und nicht von einer Hard Disk. Das spart Strom und macht den IGEL unempfindlicher gegen mechanischen Stress. Es sieht übrigens nicht nur so aus: Der IGEL ist tatsächlich nur so groß wie ein mittlerer Sat-Receiver und lässt sich dadurch bequem in der Nähe des Kartentisches unterbringen. Das Gehäuse aus stabilem Stahlblech macht einen äußerst robusten EIndruck. Riecht nach Made-in-Germany und ist rundum ein putziges Teil. Leider habe ich mich mit der Vergabe meines breises für das beste IT-Produkt bereits auf die Fritz!Box festgelegt, der IGEL gehört aber auf jeden Fall in die Gruppe der Top 5.

Betriebssystem


Vielleicht werden diese ThinClients auch deshalb sowenig beachtet, weil sie meistens mit einem LINUX-System daherkommen. Dank PC-Architektur kein Problem. So erhielt der IGEL kurzum ein mit nLite stark abgespecktes Windows XP SP3 verpasst, welches eigentlich nur noch das rudimentäre Betriebssystem umfasste. Damit wird das IGEL-LINUX komplett ersetzt. Nicht, dass ich etwas gegen LINUX hätte. Aber der Vergleich der Bootzeiten gab letztlich den Ausschlag. Natürlich nicht für ein XP von der Stange, das wäre wirklich viel zu langsam.  Nein, ein XP ohne.NET, ohne JAVA, ohne Internet Explorer, ohne Media-Player, ohne die unerschöpfliche Treiberbibliothek und natürlich ohne Auslagerungsdatei. Dafuer werden die Enhanced Write-Filter von Windows XPembedded installiert, die übermäßige Schreibzugriffe auf die Compact Flash abfangen und in einen reservierten RAM-Bereich umleiten, wodurch man quasi ein Compact-Flash-gerechtes XPembedded erhält, das darüberhinaus extrem stabil läuft. Browser und Media-Player werden in Open-Source ausgeführt, wobei sich Opera als der resourcenschonendere Browser herausgestellt hat. Für den Zugriff auf die GRIB-Wetterdaten im Hafen ist ein PCI-WLAN-Adapter verbaut. An der Integration eines O2-UMTS-Sticks arbeite ich noch. Damit kann man dann die Wetterdaten auch während des Törns ziehen, solange man in Mobilfunkreichweite zur Küste fährt. Zur Not geht es auch über Tethering mit dem Smartphone.

Portable Applikationsumgebung

Dann habe ich dem Minimal-XP noch eine neue Autostartfunktion verpasst, die sowohl das C-Laufwerk als auch eventuell angeschlossene USB Medien in vordefinierten Ordnern auf Starteinträge untersucht. Werden derartige Einträge gefunden, wird die entsprechende Applikation unter Berücksichtigung der im Link übergebenen Parameter gestartet. Das kann dann auch noch abhängig gemacht von einem Netzwerkzugrif, sei es LAN oder WLAN oder UMTS. So können gezielt Netzwerkabhängige Applikationen wie z.B. ein Internetradio gestartet werden. Wird ein derart startfähiges USB-Medium entdeckt, wird auch der Dokument-Root auf dieses Medium umgebogen. Durch diese Maßnahmen erhält man eine äußerst flexible USB-basierte Applikationsumgebung mit eigenem Dokumenten-Root (My Documents bzw Eigene Dokumente).

Wird beispielsweise ein USB-Stick mit einem Streamplayer eingestöpselt, so kann dieser gleich mit dem richtigen Lieblingsradiosender starten, sowie Netzwerkzugriff besteht. Stöpselt man stattdessen den Navi-Stick ein, werden der digitale Kartenplotter und der GRIB-Wetterdatenempfänger gestertet.

Schaltet man den Rechner aus, gehen alle Änderungen auf dem C-Laufwerk inklusive der Registryänderungen defaultmäßig verloren - man kann aber auch nach Software-Updates die Daten aus dem RAM auf die Compact Flash zurückschreiben lassen. Ich habe nie geglaubt, wie wichtig dieses Feature für mich werden würde. Jeder Neustart mit einer jungfräulichen Registry! Da kann man auf .ru surfen, ohne dass einem die Trojaner untergeschoben werden. Und Power-Dips oder Stromausfälle führen lediglich dazu, dass der IGEL wieder neu bootet, sowie wieder ausreichend Spannung anliegt. Und das tut er verdammt schnell. Von Reset bis WLAN-connected in weniger als 30s. Zum Glück kann man die meisten Applikationen portabel nutzen, d.h. sie schreiben irgendwelche Zwischendaten in lokale Files und benötigen die Registry nicht. So z.B. auch Google Earth Portable. Ist mir schleierhaft, warum Gates&Co sowas nicht anbieten. Lässt sich doch so einfach umsetzen.

Eine der Grundideen war übrigens, dass die USB-Speichermedien immer billiger und kleiner werden. Tatsächlich bekommt man sie regelrecht nachgeworfen, wenn man im Büromarkt oder Discounter ist, 50 Ct pro GB ist der aktuelle Satz. Da passen die gesamte Navigationssoftware inklusive weltweitem Vektorkartensatz, der wesentliche Teil der MP3-Sammlung und bestimmt noch 10 runtergerechnete Videos auf einen 8GB Stick für 4Euro. Und wenn der eine Stick nicht reicht nimmt man eben noch einen, oder besser zwei oder drei. Wie gesagt, man hat die gesamte erforderliche Applikationsumgebung inklusive des Dokument-Roots auf dem Stick. In Hafen verschwindet der Stick einfach in der Hosentasche, und die eingegebene Route ist damit sicher vor Technikfreaks, die gerne mal die Settings am kartenplotter zerspielen. Hat man einen portablen CD/DVD-Brenner dabei, versieht er klaglos am USB-Port seinen Dienst, genauso wie die 500GB USB-Platte.


Bis hierhin läuft bereits alles auf meinem IGEL. OpenCPN mit CM93 Kartensatz und simulierten GPS-Daten über einen virtuellen COM-Port sowie Empfang der GRIB Wetterdaten. Selbst die Einblendung der Google Earth Daten z.B. fuer Hafenansichten klappt prima - für den Betrieb auf See sollte man allerdings die Google Erath Ziele einmal ansteuern, bevor man in See sticht, damit sie in den Cache wandern. Das kostet zwar nochmal 1GB für die Daten, aber man hat's ja. Und es läuft natuerlich das volle MP3-Musikprogramm während der Hafenliegezeit. Ach so, ich habe natürlich zuerst mal sämtliche NV-Karten aus dem Browser-Cache gefummelt, nachdem ich sie mir auf dem NVpedia-Portal angesehen hatte. Dann mit SeaClear2 eingerichtet und Rasterkarten daraus gemacht. Lief auf meinem Haupt-PC ganz ordentlich, aber die hohe Auflösung forderte zuviel Speicherbandbreite, und das war für den IGEL dann doch etwas viel. Navigation ist Sicherheitssache, und da darf der Bordrechner nicht an der Kante gefahren werden. Mit Vektorkarten läuft alles prima, wenn man den Detailgrad vernünftig einstellt. Von den frei verfügbaren OpenSeamap-Karten bin ich allerdings noch nicht wirklich überzeugt. Sind zwar auch Vektorkarten, aber die Seezeichen sind nicht vollständig und, was viel schlimmer ist: die Flachwassertiefen fehlen. Eine Fahrt durch den Alsen-Sund wird da zum Lotteriespiel. Die Papierkarten hat der verantwortungsvolle Skipper auf jeden Fall  fuer die Notfallnavigation an Bord, falls der IGEL mal ertrinken sollte oder die Batterie leer ist.

Monitor


Einen robusten Flachbildschirm brauchen wir natürlich auch noch. Hier habe ich mich bisher noch nicht schlau gemacht, mir schwebt ein 12V VGA- oder DVI-Monitor von ca. 12 Zoll vor. Sollte es aus dem Car-PC-Umfeld geben. Hier lasse ich mich mal per Feedback inspirieren. Eine Tastatur kann man recht gut durch ein virtuelles Keyboard ersetzen. Ansonsten kann man bei Bedarf ein PS2- oder USB-Keyboard anschließen


PC-NMEA/SeaTalk Bridge

 Was nun fehlt, ist der Anschluss an die bordeigenen NMEA und Seatalk Busse. Darüber erhält der kartenplotter die wichtigen Daten wie GPS, Windgeschwindigkeit und -richtung, Wassertiefe, Wassertemperatur, Kompasskurs usw. Hier bin ich derzeit am sinnieren.


Das Grundkonzept ist ebenfalls schnell zusammengestellt:
  • ein zentraler Mikroprozessor, der vom 12V Bordnetz gespeist und jede Menge Software-UARTs zur Verfügung stellen kann (LPC11xx, LPC13xx oder LPC17xx von NXP)
  • galvanisch getrennte diskrete Pegelumsetzer vom uP-Logikpegel auf NMEA (RS422 oder RS232) und Seatalk
  • ein FTDI-Chip zur Umsetzung des uP UARTs auf USB
  • ein Spannungsregler von 12V auf z.B. 3.3V.
Damit sollte man verbinden koennen
  • 1 SeaTalk Bus bidirektional
  • 2 NMEA 0183 Inputs
  • 1 NMEA 0182 Output
  • 1 USB bidirektional
Die Software auf dem uP stellt im Grunde genommen sicher, das alle Empfänger (SeaTalk, NMEA 0183, PC) zusätzlich zu ihrer eigenen Information noch die fehlenden Informationen aller anderen Quellen erhalten. Das erfordert eine Ansammlung von Daten-FIFOs. Und natürlich muss die redundante Information herausgefiltert werden und alles auf die Minimal-Datensaetze verdichtet werden, damit man nicht zuviel Traffic auf dem Bus hat. Da hier mit 4800 Baud gearbeitet wird, wird der uP nichtmal warm dabei.

So, an der Stelle stehe ich jetzt. Die Pegelwandler sind mit LTspice simuliert, ebenso der Powerzweig. Als nächstes muss das Controllerboard erstellt werden. Hierfür verwende ich das Target-System eines LPCXpresso-Boards. Das LPCXpresso-Board kann man an einer Sollbruchstelle trennen, damit erhält man zum einen das Target-System und zum anderen den JTAG-ISP-Programmierteil, der nur noch an USB angestöpselt werden muss. Eine umfassende Elipse-programmierumgebung lässt kaum Wünsche offen.

AIS Receiver


Hier habe ich noch überhaupt keine Idee, wie sich das sinnvoll realisieren lässt. Im Prinzip benötige ich einen per Software steuerbaren VHF-Receiver, der zwischen den zwei VHF-Kanälen mit den AIS Daten hin und her springt. Da hier mit Schmalband-FM gearbeitet wird, kann man keinen Feld-, Wald- und Wiesen-TDA7000 nehmen. Da muss schon was anderes her. Vielleicht ein Doppelmischer mit einer ersten ZF und Zero-ZF in der zweiten Strufe. Dann bestimmt der Tiefpass am Ausgang die Bandbreite. Aber man braucht auch noch ausreichend Speigelunterdrückung. Die Dekodierung der AIS Daten läuft dann wieder in Software auf dem Igel mit Ausgabe ueber einen virtuellen COM-Port.

Mal sehen, was hier für Ideen auflaufen.


So, das wars erstmal und Tschüss.

 

Hier die Erfahrungen eines anderen IGEL-Fans:



Hier wird der Einbau einer WLAN-PCI-Karte gezeigt: 
 

0 Kommentare:

Kommentar veröffentlichen