Beschreibung:
Ziel dieses Projektes ist es eine "relativ" einfache und Preiswerte Handheld GPS
Navigationsplatform zu entwickeln die vollständig OpenSource ist.
Zukünftig soll jeder Nutzer sein Gerät selbst um Funktionen die er gerne hätte erweitern können.
Aktueller Stand:
Es gibt ein Platinenlayout das funktionsfähig ist, schön ist anders aber es funktioniert.
Das GPS Gerät verfügt über eine USB Schnittstelle und eine Ladeschaltung für einen LI-Ionen Akku.
Dank eines Bootloaders ist ein Update der Firmware nun ohne zusätzliches Programmiergerät über USB möglich.
Das Gerät startet, empfängt die Sattelitendaten, zeigt eigene Position, Geschwindigkeit, Kurs, Datum und Uhrzeit
und ermöglicht die Pfeilnavigation zu einprogrammierten, von SD-Karte ladbaren, und manuell eingegebenen Wegpunkten.
Darüber hinaus kann das Gerät als Tracklogger verwendet werden da es die GPS Daten in einer Komma getrennten
Datei auf der SD Karte abspeichert. Diese kann dann einfach in Excel / GoogleEarth (gpsbabel) etc. importiert werden.
Die GLCD Beleuchtung aktiviert sich automatisch bei Betätigung einer Taste und schaltet sich nach einer einstellbaren Zeit wieder aus.
Der USB Port wird von Windows als Serielle Schnittstelle erkannt und über diesen werden im normalbetrieb die
GPS Datensätze GPGGA & GPVTG ausgegeben. So kann der Empfänger auch als USB GPS Maus verwendet werden.
Über ein Konfigurationsmenü können folgende Systemparameter verändert werden:
- Backlight Timer (OFF/10-90sec/ON)
- Koordinaten Format (DD MM.MMM / DD MM.SS.S / DD.DDDD / UTM)
- Tracklog Format (OFF/CSV/KML)
- Timezone (UTM +-12)
- Debug Modus (ON/OFF)
Derzeit unterstützt das Gerät nur WGS84 im dd mm,mmm' Format für Koordinatenund nur CSV fü Tracks.
In Entwicklung sind weitere Features:
- UTM Format
- DD MM'SS" Format
- DD.DDDD Format
- KML Track Format
- Wegpunkte auf SD-Karte Abspeichern (als GPX)
- Wegpunkte von SD-Karte Laden (als GPX)
- Datentransfer zum PC via USB (Wegbunkte / Tracks)
- Wegpunkt Projektion
- Tempowarner für Autofahrer
Irgendwann bekommt das Ding vielleicht auch ein Gehäuse ;)
Historie in Bildern
- Tests-I
- Tests-II
- Tests-III
- Prototyp1
- Hardware ohne LI-Ion Lader
- Hardware mit LI-Ion Lader
Schaltplan:
Stand 03.08.2009
Schaltplan als PDF Datei
PlatinenLayout:
Stand 03.08.2009
Top Layout als PDF Datei
Bottom Layout als PDF Datei
Top Bestückung als PDF Datei
Bottom Bestückung als PDF Datei
Alles zusammen incl. Eagle Daten als ZipDatei
Bauteile Stückliste
Anzahl | Bauteil | Wert | Quelle / Best. Nr | Vervendung |
10 | SMD Tantal-Elko 0805 | 1uf | Reichelt SMD TAN 1,0/35 | C1-C9,C17 |
2 | SMD Kondensator 0805 | 22pf | Reichelt NPO-G0805 22P | C10,C11 |
1 | SMD Kondensator 1812 | 0,1uf | Reichelt SMD-1812 100N | C12 |
2 | SMD Kondensator 0805 | 0,1uf | Reichelt X7R-G805 | C13,C14 |
2 | SMD Tantal Elko 35V | 10uf | Conrad Best.-Nr. 481483 SMD TTK 10/20 | C15,C16 |
1 | SMD Widerstand 0805 | 4k7 | Reichelt SMD-805 4,70K | R1 |
3 | SMD Widerstand 0805 | 47 | Reichelt SMD-805 47 Ohm | R2-R4 |
1 | SMD Widerstand 0805 | 1k0 | Reichelt SMD-805 1,00K | R5 |
1 | SMD Widerstand 0805 | 10k0 | Reichelt SMD-805 10,00K | R6 |
1 | SMD Widerstand 0805 | 3k3 | Reichelt SMD-805 3,3K | R7 |
1 | SMD Widerstand 0805 | 330 | Reichelt SMD-805 330 Ohm | R8 |
1 | SMD Transistor | NPN | Reichelt FMMT 625 TA | T1 |
1 | SMD P-Kanal Mosfet | IRLML 6402 | www.paktek.de o. Ebay | T2 |
1 | SMD Induktivität | 0,68uH | Reichelt L-0805F 0,68 u | L1 |
1 | SMD Quarz | 11,0592Mhz | Reichelt 11,0592-HC49-SMD | Q1 |
1 | Microcontroller | Atmega 128 L Tqfp64 | Reichelt ATMEGA 128L8 TQ | IC1 |
1 | Usb Interface | FT 232RL SSOP28 | Reichelt FT 232 RL | IC2 |
1 | LowDrop Spannungsregler 3,3V | IRU 1206-33 CY SOT223 | Conrad Best.-Nr. 163310-U0 | IC3 |
1 | Litium Lade IC | LTC 4054-4.2 TSOT23 | Segor Best.-Nr. LTC 4054 ES5-4.2 | IC4 |
1 | GPS-Receiver | NAVILOCK-NL-501ETTL | www.sander-electronic.de | |
1 | Grafik Display | EA DOGM128W-6 | Reichelt EA DOGM128W-6 | LCD1 |
1 | Display HG-Beleuchtunf | EA LED55X46-A | Reichelt EA LED55X46-A | LED1 |
2 | LCD Buchsenleiste | SPL20 | Reichelt SPL 20 | Pin1+2 |
1 | Mini USB Buchse | Mini USB | Reichelt USB-BWM SMD | Usb1 |
1 | Micro SD Socket | Micro SD Socket | www.sparkfun.com/commerce | Sd1 |
1 | Stiftleiste gewinkelt | 2*10 | Reichelt SL 2X10W 2,54 | ISP |
1 | LiPo Akku 3,7V 1200mA | | | |
1 | Led | 3mm Rot | Reichelt LED 3MM RT | |
5 | Taster | TASTER 9308 | Reichelt TASTER 9308 | Tas1-5 |
5 | Schiebeschalter | 2Pol-UM | Reichelt T219 | S1 |
Bei einigen Bauteilen sind Alternativen möglich:
Display:
Aus den DOGM128 Displays können beliebige Farbzusammenstellungen gewählt werden,
anpassen müsst ihr nur die Hintergrundbeleuchtung.
Wollt ihr keine Hintergrundbeleuchtung dann entfällt das Beleuchtungsmodul, T1 , R2,R3,R4
Taster:
Hier könnt ihr nehmen wass ihr wollt wenn ihr sie richtig anschließt, nur schließer müssen es sein.
GPS Modul:
Es muss ein SIRF3 Modul sein das das SIRF Binary Protokoll + NMEA kann, es muss mit 3,3V laufen und
der Ausgang muss eine TTL kompatible Serielle Schnittstelle sein.
Quarze:
Q1 Muss so wie in der Stückliste steht genommen werden
Q2 ist derzeit noch nicht erforderlich ist für zukünftige Erweiterungen gedacht
Nachbau:
Hier einige wichtige Hinweise zum Nachbau des OpenGPS
1. Die Platine ist nicht einfach zu bestücken, einige Abstände sind sehr klein, die Bohrungen und Pads
sind ebenfalls mit vorsicht zu genießen, kontrolliert sie unbedingt auf Kurzschlüsse zuwischen den Leiterbahnen
2. Es befinden sich 22 Stellen auf der Platine die vor dem Bestücken durchkontaktiert werden müssen. Eine ist unter
der MCU, 3 unter dem Ftdi Chip und 3 unter dem SD Sockel vergesst sie nicht!
3. Bestückungsreihenfolge:
Bestückt unbedingt zuerst den SD Karten Sockel, der ist eine "Sau" was die Kontakte angeht. Prüft nach dem Löten unbedingt
ob die Kontakte auch wirklich kontakt zur Leiterbahn haben (Multimeter)
Danach bestückt ihr den ATMEGA128 (ACHTUNG: Durchkontaktierung nicht vergessen)
Nun den FT232RL bestücken.
Lötet als nächstes C1-C9 und R2-R4 ein, danach die Sockelleisten für das Display (Ja, ist fies eng, Sorry)
Nun könnt ihr alles weitere Bestücken
Anschluss Schema:
4. Programmierung:
AVR
ACHTUNG! PIN 1 des ISP Kabels zeigt zum GPS Modul hin!!!
Ihr benötigt (Für die Quellen) aufgrund der Codemenge die Vollversion von Bascom AVR in mindestes
der Version: 1.11.9.1 die älteren unterstützen die DOGM 128 Displays nicht.
Fusebits:
LOCKBITS (FF)
- Lockbit 54 - 11: No Restriction
- Lockbit 32 - 11: No Restriction
- Lockbit 11 - 11: No memory lock
FUSEBITS (EF)
- Fuse 7 - 1 Brown Out Detection Level at VCC=2.7V
- Fuse 6 - 1 Brown Out Detection disabled
- Fuse 98DCBA - 101111 Ext Chrytstal/Resonator High Frequency Startup Time 16k CK +4ms CKSEL=1111 SUT=10
FUSEBITS HIGH (D9)
- Fuse E - 1 Disable OCD
- Fuse F - 1 Disable JTAG
- Fuse G - 0 Enable Serial Downloading
- Fuse H - 1 osc 1
- Fuse I - 1 EEPROM is erased
- Fuse KL - 00 Bootsize 4096 words at $F000
- Fuse M - 1 Reset Vector os $0000
FUSEBITS Extended (FF)
- Fuse P - 1 ATMEGA128 Mode
- Fuse Q - 1 Watchdogtimer not Programmed
Nach dem erfolgreichen programmieren der Fuses kann das Programm in den Chip geladen werden.
FTDI Chip
Um die Ladefunktion über USB nutzen zu können muss der FTDI noch konfiguriert werden.
Ihr benötigt dazu das Tool MPROG und den FTDI 2DXX Treiber.
Diese Tools findet ihr auf der FTDI-Webseite
Das Vorgehen ist wie folgt:
- 1.den FTDI 2DXX-Treiber installieren, den VCP-Treiber vorher mit FT-Clean entfernen!
- 2.MProg-Programm installieren!
- 3.GPS an USB anschließen!
- 4.MProg starten! Vorher alle anderen USB-Geräte mit FTDI-Bausteinen vom System entfernen!
- 5.
A. Unter Tools, Read and Parse anklicken! Du bist im Edit-Mode
B. Device Type: FT232R
C. Den Rest wie im Bild einstellen!
Wichtig!! Den Haken bei "Pull down IO Pins to Suspend" nicht setzen und
Bei Max Bus Power 480 mA, nicht 500 einsetzen!
- 4.Wichtig! Hier "Speichern unter", sonst kommst du nicht in den Programmier-Mode!
- 5.Hier nun mit dem Button Programmieren!
- 6.Nach erfolgreichem Programmieren, den Button Cycle einmal klicken,damit wird der FT232 resettet und er wird vom USB-Anschluss getrennt und wieder verbunden.
5. Funktionen soweit:
Nach Anlegen der Betriebsspannung passiert folgendes:
1. Display Beleuchtung an
2. Logo Anzeigen
3. Anzeige "GPS Module Setup"
4. Anzeige "Selftest Results"
5. Wenn Selbsttest OK dann zeigt es den "Suche Satelliten" Screen an
Die Nummer in der Mitte zeigt die schon gefundenen an.
Wenn das GPS Modul einen gültigen FIX hat erscheint ein Übersichtsbildschirm mit
Informationen zur aktuellen Position/Geschwindigkeit/Kurs/Datum/Uhrzeit
Mit den Rechts/Links Tasten könnt ihr ein paar Screens durchschalten.
(Übersicht / Pfeilnavigation / Kurs / GPGGA Debug / GPVTG DEBUG )
Im Übersichtsscreen kommt ihr mit der "OK" Taste (Die in der Mitte) in ein Menü für weitere Funktionen
Im Pfeilnavigations Screen könnt ihr mit Rauf / Runter fest in der Firmware eingebaute Ziel Wegpunkte wählen
mit OK könnt ihr eine Zielkoordinate manuell eingeben.
Im Kurs Screen erreicht ihr mit OK wieder das Menü
Die Debug Screens dienen nur der Wertekontrolle und stellen die RAW Daten des GPS Moduls dar.
Im Menü könnt ihr derzeit:
- Ein Ziel manuell eingeben.
- Einen Wegpunkt aus der Datei WPT.TXT auf der SD Karte laden
- In das Konfig Menü wechseln
- Das Tracklog löschen
- Das Gerät neu booten
- Das Menü verlassen
In Zukunft wird hier die Konfiguration der Einheiten, Koordinatensysteme etc zu finden sein.
Die WPT.TXT
Ist eine Textdatei auf der SD-Karte die Wegpunkte enthalten kann, ihr format ist folgendes
Wegpunktname,Lat,Lon
z.B.
Bonn,50.732704,7.096311
Lat & Lon müssen in Dezimalgrad angegeben sein, der Wegpunktname sollte so Kurz wie möglich sein am
Ende der Datei muss ein Newline sein.
6. Nachwort:
Das ganze Projekt ist hochgradig BETA, die Schaltung soweit getestet funktioniert, und einfache
Navigation ist möglich. Ich gebe aber keine Gewähr dafür das das immer so ist und unter allen Umständen
auch funktioniert. Vertraut dem Ding also nicht euer Leben an ;)
Soft und Hardware werden noch weiterentwickelt, es folgen weitere Funktionen und Koordinatenformate.
Wer Lust hat dabei zu Helfen die ein oder Andere Coderoutine zu dem Projekt beizusteuern kann
sich gerne bei mir melden.
Eventuell wird es zukünftig eine neue Schaltung mit einem Siemens S65 Display in Farbe geben
Ich brauche eine Routine die einen Input STRING im UTM Format nach Dezimalgrad wandelt und eben eine
die Dezimalgrad in einen UTM String umwandelt.
Software:
Hier könnt ihr die Firmware herunterladen.
Probleme:
Es passiert gar nix:
- Spannungsversorgung?
- Fuse Bits
- Quarzbeschaltung
Kein GPS Fix
- Abwarten ggf. andere Postion mit freier Sicht zum Himmel suchen
- Keine Fehlfunktion der Schaltung
SD Karte wird nicht erkannt
- Vermutlich Lötstelle am Sockel nicht OK
Sollten Probleme oder Bugs auftauchen schreibt mir bitte eine E-Mail mit einer ausführlichen Fehlerbeschreibung!
FAQ:
F: Gibt es das Programm auch in C / Assembler etc?
A: Nein, kann ich leider nicht.
F: Welchen GPS Empfänger kann ich verwenden?
A: Siehe Text oben!
F: Ist die Datei Track.Log direkt Google Earth Kompatibel?
A: Nein, sie ist Komma getrennt. Sie kann ich Excel importiert werden und ggf. für GE Konvertiert werden.
F: Womit kann die datei für GE Konvertiert werden?
A: Das Tool heist "GPSBABEL"
F: Gibt es das Ding fertig / als Bausatz .........?
A: Nein!
F: Kannst du mir diese/jene Änderung am Programm machen?
A: Nein, für meine Zwecke genügt das. Versuch es selbst, man lernt viel dabei!
So nun aber viel Spaß beim Nachbau und ausprobieren!
|