Intro mit Mikrocontroller GPS

6 Schritt:Schritt 1: Was ist GPS? Schritt 2: GPS-Module Schritt 3: Die Entzifferung NMEA Protokolle Schritt 4: Manuelles Parsing GPS Daten Schritt 5: GPS-Bibliotheken Schritt 6: DIY GPS-Anwendungen

Intro mit Mikrocontroller GPS

Sobald die Zuständigkeit strikt militärischen Operationen hat GPS zu einem festen Bestandteil des modernen Lebens und in relativ kurzer Zeit! Wer möchte nicht wissen wollen, wann und wo sie überall auf dem Planeten sind? Es ist ein Science-Fiction-Traum in die Realität gebracht, heute eine so in unser Leben gewebt scheint es fast trivial. Die Forderung nach präzisen Positionsdaten in die Flugzeuge, Schiffe, Autos gebaut, und jetzt fast jedes moderne Mobiltelefon bedeutet, ein paar Dinge für den durchschnittlichen Hobby: kleinere, höhere Qualität, geringere Kosten, einfacher zu bedienen und besser dokumentiert GPS-Empfänger zum Kauf zur Verfügung !
In diesem Instructable werden wir die Global Positioning System als Ganzes zu diskutieren und bauen eine einfache Schaltung für die Kommunikation mit einem Empfänger mit dem Intel Edison. Dieses Setup ermöglicht uns den Zugriff auf Positionsdaten, die die Möglichkeit für erweiterte Interpretation öffnen und ermöglichen realen Anwendungen wird.

Schritt 1: Was ist GPS?

  1. Intro mit Mikrocontroller GPS

    Kurze Geschichte
    Die Wurzeln des Global Positioning System zurück zum Höhepunkt des Kalten Krieges, als fortRaumFahrtTechnik war für die amerikanische Regierung eine hohe Priorität. Während zunächst zur Bereitstellung einer strategischen militärischen Vorteil für die US-Kriegsmaschine und (unter anderem) die Notwendigkeit, genau zu führen Interkontinentalraketen in Richtung ihrer weit entfernten Zielen konzipiert, wurde es schließlich bis zu den zivilen Gebrauch in den 90er Jahren zu einem absichtlich geöffnet (wenn auch abgebaute Präzision für nicht-militärische Empfänger). Schließlich wird die volle Genauigkeit von den Satelliten gewährt wurde im Frühjahr 2000 für die Öffentlichkeit geöffnet.
    Das System als wir heute verwenden, ist recht modern Netzwerk, mit echter globaler Abdeckung nur online Kommen in der Mitte des letzten Jahrzehnts. Es ist nicht der einzige Satellitensystem in der Lage, die Positionsdaten aber kam das russische GLONASS auch hier innerhalb des gleichen Zeitrahmens wie das GPS. Aufgrund der politischen und finanziellen Zwänge, hat Annahme GLONASS-Empfänger weniger weit verbreitet gewesen. Die EU, China, Japan und Indien entwickeln auch ähnliche Satellitennetze der regionalen Einsatz, wenn auch GLONASS ist das einzige vergleichbare Netzwerk globaler Abdeckung.
    Wie funktioniert das?
    Jeder Satellit hat eine stabile Atomuhr an Bord für die Übertragung genaue Zeitdaten. Jeder Satellit sendet kontinuierlich seine Zeit Positionsdaten, die dann durch einen Empfänger verarbeitet werden kann. Ein Empfänger muss mindestens vier Satelliten in Reichweite haben, um eine genaue "Schloss" auf seiner Lage haben (drei Punkte von Daten zur Lage, und eine für die Zeitreferenz). Die eigentliche Arbeit des Empfängers reduziert sich auf die Berechnung der Signallaufzeiten der Übertragungen und zum Umwandeln dieser in einfach zu bedienende Daten für den Benutzer. Dies ist natürlich eine beträchtliche Vereinfachung des Systems; die Realität der das Innenleben des GPS sind sehr komplex und sehr beeindruckend. Gott sei Dank, es ist ganz einfach und kostengünstig mit einem Grund Empfänger aus Sicht eines Endbenutzers zu verbinden.



Schritt 2: GPS-Module

  1. Intro mit Mikrocontroller GPS

    Intro mit Mikrocontroller GPS

    Wegen der starken Marktnachfrage, gibt es eine Vielzahl von GPS-Empfängern, die von vielen Herstellern häufig kommen als all-in-one abgeschirmten Paket neben einer Grundkeramikantenne. Welches Modul ist die richtige für Ihren elektronischen Projekt? Hier sind einige Dinge zu beachten bei der Auswahl, welche zu kaufen:
    Die Wahl der richtigen Receiver
    Power-Betrachtungen:
    Wie die meisten modernen elektronischen Komponenten, werden GPS-Empfänger-Module nach dem Standard der läuft immer niedrigeren Spannungen 3,3 V wird am häufigsten. Die meisten Projekte sind nur dann den Empfang von Daten, so dass 3,3 V und akzeptable Spannung für einen logischen High-Bit auf Ihre 3,3 oder 5 V-System. Viele Empfänger ermöglichen eine leichte Konfiguration je nachdem, wie Sie das Modul lieber seine Pakete zu übertragen, so dass sich bewusst sein, der Netzspannung. Eine einzelne 1K Widerstand auf 5V Prozessors Tx Leitung Rx Leitung des Moduls sollte ausreichend sein. Die meisten Empfänger sind auch sehr energieeffizient, in der Regel zeichnen deutlich unter 100 mAh und oft in der Unter 50 mAh Bereich während des stationären Empfang, so dass sie praktisch für die meisten batteriebetriebenen Designs.
    Antenne:
    Viele gemeinsame Module und Breakout-Boards oft mit einem eingebauten Keramik Patchantenne kommen. Diese winzigen beige-ish Blöcke mit einer leitfähigen blob in ihren Zentren reichen für die meisten GPS-Empfang Projekte, vor allem, wenn Sie wollen, kompakte Größe. Einige Module sind mit Pre-gelötet SMA oder wee U.FL-Steckverbinder an Bord für den Anschluss an eine externe Antenne, was besonders nützlich ist, wenn Sie den Receiver in einem Hartschalenkoffer montieren wollen.
    Aktualisierungsrate:
    Module mit einem 1 Hz-Aktualisierungsrate in der Regel finden Sie, eine ausreichend kontinuierlichen Datenstrom für die meisten langsam bewegende Projekte. Neuere Module bieten auch 5 Hz oder 10 Hz + Datenraten, aber das ist wirklich nur für sich schnell bewegende Projekte wie quadrotors zippen um einen natürlich nützlich. Eine Aktualisierungsrate von mehr als 1 Hz ist auch potentiell überwältigend für kleinere micros mit minimalen Mengen von RAM.
    Bonus Features:
    Einige Module enthalten einen eingebauten Hochleistungskondensator oder Batterie für Backup-Stromversorgung bei Strom Radfahren, so dass für eine schnellere Time-to-first-fix. Das Modul MTK3339 Ich verwende auch eine kleine Datenprotokollierungsfähigkeit, die interessant für eine kurze Aufzeichnung Experiment, aber weniger nützlich für die langfristige Datenerhebung und -speicherung ist.
    Einfache Verbindung Kreis:
    Ich werde diskutieren die aktuellen Daten wir von dem GPS-Modul empfängt auf den folgenden Schritten. Für meine eigene Testzwecke, werde ich mit Adafruit Ultimate GPS Breakout-Board und einen Intel Edison mit dem Arduino Breakout. Der Vorstand wird entweder 3,3 oder 5 Volt als Strom akzeptieren, und hat praktisch Standard 2,54 mm Anschlussbelegung zur Befestigung an einem Steckbrett oder weiblichen Drahtbrücken. Wie Sie oben von der einfachen Anschlussdiagramm sehen können, bin ich nur drei Stifte verbinden auf dem Modul: Macht bis 5 Volt, Boden zu Boden, und das Modul Tx-Leitung an den Rx des Edisons UART, und somit erhalten Stift gebrochen 0 auf dem Arduino Board. Es ist so einfach an! Es gibt andere Stifte für die Konfiguration des Moduls, die Überprüfung der Satellitenerfassung, Leistungskontrolle, und eine stetige Impulsausgang gebrochen, aber die einzigen Tx auf Rx-Verbindung ist alles, was Sie brauchen, Empfang von GPS-Daten zu beginnen.
    GPS Receiver Links:
    Hier ist die genaue Modul , dass ich mit von Adafruit. Sparkfun und Seeedstudio bieten auch eine Auswahl von verschiedenen Empfängern als auch.

Schritt 3: Die Entzifferung NMEA Protokolle

  1. Intro mit Mikrocontroller GPS

    Wie erhalten wir Daten?
    Die meisten Empfänger die Sie stoßen werden über eine einfache serielle Datenverbindung übertragen informell. Oft ist es in reine ASCII-Zeichen codiert, aber es gibt andere kompakten binären Formate von einigen Modulen für höhere Datenraten. Wir werden in einem regelmäßigen ASCII-Feed zu suchen, da es viel einfacher ist, interpret.The Daten, die wir von dem GPS-Modul empfangen wird gemäß NMEA 0183-Standard formatiert.
    Das NMEA-Protokoll
    Das National Marine Electronics Association hat einen Standard für die unterschiedlichsten Schiffsbordgeräte. Das NMEA 0183-Standard ist nützlich für GPS-Empfänger ausgegeben, da es eine klare und relativ langsam (in der Regel 4800 oder 9600 Baud) Protokoll, das schmackhaft für jedes moderne Mikrocontroller mit UART zu handhaben ist. Lassen Sie uns an einem Probenblock aus vier String Ausgabe durch die MTK3339 Modul. Ich habe aus den String oben angeordnet, um es klarer zu lesen, aber das Ausgangsstrom hat keine Leerzeichen nach Kommata und einen einzigen Satz von Wagenrücklauf und Zeilenvorschub Zeichen am Ende jeder Saite (Zeichenfolgen beginnen mit einem Zeichen "$" ).
    GPGSA
    Global Positioning Aktive Satellites - Die Saite wird uns sagen, die Anzahl der Satelliten, die derzeit in Bereich des Moduls, der Art der fix (2D oder 3D) und der Präzision des Signals.
    GPRMC
    Global Positioning Empfohlene minimale Koordinaten - Dies ist das Fleisch der Datenfolgen, die das Zeit fix, wenn der Empfänger ist in Ordnung, Breite, Länge, Geschwindigkeit (in Knoten), fix Typ.
    GPVTG
    Global Positioning Kurs über Grund (Track Good) - Dieser enthält mehr Daten in Bezug auf die Fahrgeschwindigkeit in Knoten und Kilometer pro Stunde.
    GPGGA
    Global Positioning System Fix Daten - volle Koordinatendaten alles in der RMC Zeichenfolge, die neben zusätzlichen Genauigkeit Daten sowie Höhe enthalten. Wir werden diese Zeichenfolge unten gründlicher auf den nächsten Schritt zu brechen.

Schritt 4: Manuelles Parsing GPS Daten

  1. Intro mit Mikrocontroller GPS

    Lassen Sie uns den Mut zu verschütten dieses GPGGA string:
    Satz ID: $ GPGGA (fix Daten)
    UTC T ime: als hhmmss.sss (Stunden, Minuten, Sekunden und Millisekunden) formatiert
    Latitude: formatiert DDMM.MMMM (Grad, Minuten)
    N / S-Anzeige: N = Nord, S = Süd
    Longitude: dddmm.mmmm
    E / W-Anzeige: E = East, W = West-
    Position Fix: 0 = ungültig, 1 = Gültige SPS, 2 = Gültige DGPS, 3 = Valid PPS
    Satelliten verwendet: Satelliten verwendet wird (0-12)
    HDOP:
    die horizontale Verwässerung der Präzision (niedrigere Werte sind besser;-Werte über 10 deuten darauf hin, schlechte Genauigkeit)
    Höhe: a titude in Metern nach WGS-84-Ellipsoid
    Altitude ist ein bisschen eine lustige Sache, wenn Sie nach unten, um die Angabe zu, was Sie die Höhe etwas Referenzierung zu bekommen. Die "wahre" Form der Erde ist ein Ellipsoid Form (wie ein leicht gequetscht Kugel) Ausbeulen am Äquator. Das Ellipsoid ist in verwendet Geodäsie an einer mathematischen Bezugspunkt für den mittleren Meeresspiegel auf der anderen Planeten. Die Dinge sind noch komplizierter, wenn Sie eine höhere Genauigkeit, die ist, wo das wollen Geoid ins Spiel kommt, die für die ungleichmäßige Gravitationswirkung der Erde hat auf seiner Oberfläche ausmacht.
    Höheneinheiten: M = Meter
    Geoid Seperation: (Geoid Trennung in Metern nach WGS-84-Ellipsoid)
    Seperation Einheiten: M = Meter
    DGPS Alter: Alter der DGPS-Daten in Sekunden
    DGPS Station Identifikation: Grundidentifikationsnummer
    Differential GPS wurde geschaffen, um die gezielt abgebaut zivile GPS-Signal, die öffentlich in den 1990er Jahren ausgestrahlt wurde verbessert. Der Boden basierten Netzwerk von Funksendern als sehr nützlich erwiesen bei der Unterstützung von Navigation für nicht militärische Nutzer auch nach dem rauschfreie Signal wurde der Öffentlichkeit im Jahr 2000 veröffentlicht, so dass die Genauigkeit bis auf <1 Meter.
    Checksumme: für geringe Fehlerbehandlung verwendet
    Lassen Sie uns darüber, wie wir leicht extrahieren alle diese Daten auf der folgenden Schritt zu sprechen.

Schritt 5: GPS-Bibliotheken

  1. Intro mit Mikrocontroller GPS

    Es gibt keine Notwendigkeit, über muddling etwa mit Streichern und zu versuchen, alle diese Daten in saubere einzelnen Variablen konvertieren ärgern! Die gute Open-Source-Bürger das Internet haben Bibliotheken für genau das zu tun ist. Hier sind zwei, die ich empfehle:
    AdaGPS
    Adafruit bietet eine wunderbare Bibliothek für das Spiel mit GPS-Daten. Standardmäßig setzt ihren Code auf AVR spezifische Register zum Aufruf einer Routine-Interrupt-Funktion für Daten aus dem GPS sammeln, wenn Sie also mit einem Edison Pension buchen, müssen Sie diese entfernen und es manuell abzufragen werde. Darüber hinaus ist es wichtig zu beachten, dass die UART auf dem Arduino Edison BoB ist Serial1 (Serial ist die direkte COM-Link zu Ihrem Computer).
    TinyGPS ++
    Eine wunderbar leichte Bibliothek, die einen seriellen Strom (bis zu einem GPS natürlich verbunden) als Aufgabe übernimmt, und dann wandelt sie in nette kleine Pakete. Wie Sie Ihre Breite ist so einfach wie fordern gps.location.rawLat (). ° oder Ihre Geschwindigkeit withgps.speed.mph (). Sie können die vollständige Feature-Liste über den Link oben auf.
    Bonus:
    Obwohl es nicht eine Bibliothek Besuche dieser Zusammenfassung die Haversine Formula (ein Mittel zur Berechnung der Entfernung zwischen zwei geodätischen Koordinaten!)

Schritt 6: DIY GPS-Anwendungen

  1. Intro mit Mikrocontroller GPS

    Ich hoffe, dass Sie dieses eine angenehme und praktische Einführung in die Welt der GPS gefunden. Hier sind einige GPS Projekte, um diese wundersamen Funkempfänger zum Einsatz!
    Entdecken Sie die Türen mit Ihrem eigenen DIY GPS-Handheld und entdecken Sie die Welt des Geocaching.
    Erstellen Sie eine inverse Schatztruhe, die entsperrt, wenn Sie ihn nach rechts zu bringen mit Ihrer eigenen Reverse Geocache-Koordinaten.
    Warum nicht ein GPS an einen rover hinzufügen und werfen Sie Ihren Hut in den Sparkfun autonomen Fahrzeug-Wettbewerb ?
    Sie könnten einen regelmäßigen RTC für Ihren nächsten Takt Projekt zu verwenden, aber warum nicht die Zeitdaten zu verwenden vom GPS in die lokale Zeit zu synchronisieren. Ihre Uhr wird praktisch zum hyperaccurate Atomuhr im Orbit des Planeten auf Tausende von Meilen pro Stunde gebunden zu sein, nicht, dass Ihr Projekt, gut, objektiv besser zu machen? Die Antwort ist ja.