Inhaltsverzeichnis:

Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M) - Gunook
Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M) - Gunook

Video: Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M) - Gunook

Video: Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M) - Gunook
Video: Location Tracking Project using GPS and Arduino 2024, Juni
Anonim
Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M)
Schnittstelle Arduino Mega mit GPS-Modul (Neo-6M)

In diesem Projekt habe ich gezeigt, wie man ein GPS-Modul (Neo-6M) mit Arduino Mega verbindet. Die TinyGPS-Bibliothek wird verwendet, um die Daten von Längen- und Breitengrad anzuzeigen, und TinyGPS++ wird verwendet, um Breitengrad, Längengrad, Höhe, Geschwindigkeit und Anzahl der Satelliten auf dem seriellen Monitor anzuzeigen.

Schritt 1: Benötigte Komponenten

Hardware

  • Arduino Mega ==> $ 30
  • Neo-6M GPS-Modul ==> $ 30

Software

Arduino-IDE

Die Gesamtkosten des Projekts betragen $60

Schritt 2: Informationen zu GPS

Was ist GPS

Das Global Positioning System (GPS) ist ein satellitengestütztes Navigationssystem, das aus mindestens 24 Satelliten besteht. GPS funktioniert bei jedem Wetter, überall auf der Welt, 24 Stunden am Tag, ohne Abonnementgebühren oder Einrichtungsgebühren.

So funktioniert GPS

GPS-Satelliten umkreisen die Erde zweimal täglich in einer präzisen Umlaufbahn. Jeder Satellit sendet ein einzigartiges Signal und Orbitalparameter, die es GPS-Geräten ermöglichen, den genauen Standort des Satelliten zu decodieren und zu berechnen. GPS-Empfänger verwenden diese Informationen und Trilateration, um den genauen Standort eines Benutzers zu berechnen. Im Wesentlichen misst der GPS-Empfänger die Entfernung zu jedem Satelliten anhand der Zeit, die benötigt wird, um ein gesendetes Signal zu empfangen. Mit Entfernungsmessungen von einigen weiteren Satelliten kann der Empfänger die Position eines Benutzers bestimmen und anzeigen.

Um Ihre 2D-Position (Breiten- und Längengrad) zu berechnen und die Bewegung zu verfolgen, muss ein GPS-Empfänger auf das Signal von mindestens 3 Satelliten eingerastet sein. Mit 4 oder mehr Satelliten im Sichtfeld kann der Empfänger Ihre 3D-Position (Breite, Länge und Höhe) bestimmen. Im Allgemeinen verfolgt ein GPS-Empfänger 8 oder mehr Satelliten, dies hängt jedoch von der Tageszeit und dem Standort ab, an dem Sie sich auf der Erde befinden. Sobald Ihre Position bestimmt wurde, kann das GPS-Gerät weitere Informationen berechnen, wie z

  • Geschwindigkeit
  • Lager
  • Spur
  • Fahrtstrecke
  • Entfernung zum Ziel

Was ist Signal?

GPS-Satelliten senden mindestens 2 Funksignale geringer Leistung. Die Signale werden per Sichtlinie übertragen, d. h. sie passieren Wolken, Glas und Plastik, aber nicht die meisten festen Objekte wie Gebäude und Berge. Moderne Empfänger sind jedoch empfindlicher und können in der Regel durch Häuser hindurch verfolgen. Ein GPS-Signal enthält 3 verschiedene Arten von Informationen

Pseudozufallscode

Es ist ein Ausweis Code, der identifiziert, welcher Satellit Informationen überträgt. Auf der Satellitenseite Ihres Geräts können Sie sehen, von welchen Satelliten Sie Signale empfangen.

Ephemeridendaten

Ephemeridendaten werden benötigt, um die Position eines Satelliten zu bestimmen und geben wichtige Informationen über den Zustand eines Satelliten, das aktuelle Datum und die aktuelle Uhrzeit.

Almanach-Daten

Almanachdaten teilen dem GPS-Empfänger mit, wo sich jeder GPS-Satellit zu jeder Tageszeit befinden sollte, und zeigen die Orbitalinformationen für diesen Satelliten und jeden anderen Satelliten im System an.

Schritt 3: Neo-6M GPS-Modul

Das NEO-6M GPS-Modul ist in der folgenden Abbildung dargestellt. Es kommt mit einer externen Antenne und kommt ohne Header-Pins. Sie müssen es also löten.

Übersicht über das NEO-6M GPS-Modul

NEO-6M GPS-Chip

Herzstück des Moduls ist ein NEO-6M GPS-Chip von u-blox. Es kann bis zu 22 Satelliten auf 50 Kanälen verfolgen und erreicht die höchste Empfindlichkeit der Branche, d. h. -161 dB Tracking, bei einem Verbrauch von nur 45 mA Versorgungsstrom. Die Positionierungs-Engine von u-blox 6 verfügt außerdem über eine Time-To-First-Fix (TTFF) von unter 1 Sekunde. Eine der besten Funktionen des Chips ist der Energiesparmodus (PSM). Es ermöglicht eine Reduzierung des Systemstromverbrauchs durch selektives Ein- und Ausschalten von Teilen des Empfängers. Dadurch wird der Stromverbrauch des Moduls drastisch auf nur 11 mA reduziert, wodurch es für stromempfindliche Anwendungen wie GPS-Armbanduhren geeignet ist. Die notwendigen Datenpins des NEO-6M GPS-Chips sind auf 0,1″ Pitch-Header ausgebrochen. Dazu gehören Pins, die für die Kommunikation mit einem Mikrocontroller über UART erforderlich sind.

Hinweis:- Das Modul unterstützt Baudraten von 4800 bps bis 230400 bps mit einer Standardbaud von 9600.

Positionsfix-LED-Anzeige

Auf dem NEO-6M GPS-Modul befindet sich eine LED, die den Status der Positionsbestimmung anzeigt. Es blinkt mit unterschiedlichen Geschwindigkeiten, je nachdem, in welchem Zustand es sich befindet

  1. Kein Blinken ==> bedeutet, dass es nach Satelliten sucht
  2. Blinkt alle 1s – bedeutet, dass Position Fix gefunden wurde

3.3V LDO-Regler

Die Betriebsspannung des NEO-6M-Chips beträgt 2,7 bis 3,6 V. Das Modul wird jedoch mit dem MIC5205-Ultra-Low-Dropout-3V3-Regler von MICREL geliefert. Die Logikpins sind auch 5-Volt-tolerant, sodass wir sie problemlos an einen Arduino oder einen beliebigen 5V-Logikmikrocontroller anschließen können, ohne einen Logikpegelwandler zu verwenden.

Batterie & EEPROM

Das Modul ist mit einem HK24C32 seriellen Zweidraht-EEPROM ausgestattet. Es ist 4 KB groß und über I2C mit dem NEO-6M-Chip verbunden. Das Modul enthält außerdem eine wiederaufladbare Knopfbatterie, die als Superkondensator fungiert.

Ein EEPROM zusammen mit einer Batterie hilft, das batteriegepufferte RAM (BBR) zu erhalten. Der BBR enthält Taktdaten, neueste Positionsdaten (GNSS-Orbitdaten) und die Modulkonfiguration. Aber es ist nicht für die dauerhafte Datenspeicherung gedacht.

Da die Batterie die Uhr und die letzte Position beibehält, verkürzt sich die Zeit bis zur ersten Fixierung (TTFF) erheblich auf 1 s. Dies ermöglicht viel schnellere Positionssperren.

Ohne die Batterie startet das GPS immer kalt, sodass die anfängliche GPS-Sperre länger dauert. Der Akku wird beim Anlegen automatisch geladen und speichert die Daten bis zu zwei Wochen ohne Strom.

Pinbelegung

GND ist der Massepin und muss mit dem GND-Pin des Arduino verbunden werden

Der TxD-Pin (Sender) wird für die serielle Kommunikation verwendet

Der RxD-Pin (Empfänger) wird für die serielle Kommunikation verwendet

VCC versorgt das Modul mit Strom. Sie können es direkt an den 5V-Pin des Arduino anschließen

Schritt 4: Arduino Mega

Arduino ist eine Open-Source-Elektronikplattform, die auf benutzerfreundlicher Hardware und Software basiert. Arduino-Boards sind in der Lage, Eingaben zu lesen – Licht auf einem Sensor, einen Finger auf einer Taste oder eine Twitter-Nachricht – und sie in einen Ausgang umzuwandeln – einen Motor zu aktivieren, eine LED einzuschalten, etwas online zu veröffentlichen. Sie können Ihrem Board sagen, was es tun soll, indem Sie eine Reihe von Anweisungen an den Mikrocontroller auf dem Board senden. Dazu verwenden Sie die Programmiersprache Arduino (basierend auf Wiring) und die Arduino Software (IDE), basierend auf Processing.

Arduino Mega

Arduino Mega 2560 ist ein Mikrocontroller-Board basierend auf Atmega2560.

  • Auf der Platine sind 54 digitale I/O-Pins und 16 analoge Pins integriert, die dieses Gerät einzigartig machen und sich von anderen abheben. Von 54 digitalen I/Os werden 15 für PWM (Pulsweitenmodulation) verwendet.
  • Ein Quarzoszillator mit einer Frequenz von 16 MHz ist auf der Platine hinzugefügt.
  • Das Board wird mit einem USB-Kabelanschluss geliefert, der zum Anschließen und Übertragen von Code vom Computer auf das Board verwendet wird.
  • Die DC-Strombuchse ist mit der Platine gekoppelt, die zur Stromversorgung der Platine verwendet wird.
  • Das Board wird mit zwei Spannungsreglern geliefert, d. h. 5 V und 3,3 V, die die Flexibilität bieten, die Spannung nach Bedarf zu regulieren.
  • Es gibt eine Reset-Taste und 4 serielle Hardware-Ports namens USART, die eine maximale Geschwindigkeit für die Einrichtung der Kommunikation erzeugen.
  • Es gibt drei Möglichkeiten, das Board mit Strom zu versorgen. Sie können entweder ein USB-Kabel verwenden, um das Board mit Strom zu versorgen und den Code auf das Board zu übertragen, oder Sie können es mit Vin des Boards oder über die Strombuchse oder den Akku einschalten.

Spezifikationen

Pinbelegung

Pin-Beschreibung

  • 5V & 3,3V ==>Dieser Pin wird verwendet, um eine geregelte Ausgangsspannung um 5V bereitzustellen. Dieses geregelte Netzteil versorgt den Controller und andere Komponenten auf der Platine mit Strom. Es kann über Vin des Boards oder USB-Kabel oder einer anderen geregelten 5V-Spannungsversorgung bezogen werden. Während eine andere Spannungsregelung durch den 3,3-V-Pin bereitgestellt wird. Die maximale Stromaufnahme beträgt 50 mA.
  • GND ==>Auf der Platine stehen 5 Erdungsstifte zur Verfügung, was es nützlich macht, wenn mehr als ein Erdungsstift für das Projekt benötigt wird.
  • Reset ==> Dieser Pin wird verwendet, um das Board zurückzusetzen. Wenn Sie diesen Pin auf LOW setzen, wird die Platine zurückgesetzt.
  • Vin ==> Dies ist die der Platine zugeführte Eingangsspannung, die von 7V bis 20V reicht. Über diesen Pin kann auf die von der Strombuchse bereitgestellte Spannung zugegriffen werden. Die Ausgangsspannung über diesen Pin zur Platine wird jedoch automatisch auf 5 V eingestellt.
  • Serielle Kommunikation ==> RXD und TXD sind die seriellen Pins, die zum Senden und Empfangen von seriellen Daten verwendet werden, dh Rx repräsentiert die Übertragung von Daten, während Tx zum Empfangen von Daten verwendet wird. Es werden vier Kombinationen dieser seriellen Pins verwendet, wobei Serail 0 RX(0) und TX(1) enthält, Serial 1 TX(18) und RX(19) enthält, Serial 2 TX(16) und RX(17) enthält. und Seriell 3 enthält TX(14) und RX(15).
  • Externe Interrupts ==> Sechs Pins werden zum Erstellen externer Interrupts verwendet, dh Interrupt 0(0), Interrupt 1(3), Interrupt 2(21), Interrupt 3(20), Interrupt 4(19), Interrupt 5(18). Diese Pins erzeugen Interrupts auf verschiedene Weise, d. h. indem sie einen LOW-Wert, eine steigende oder fallende Flanke oder einen sich ändernden Wert an die Interrupt-Pins liefern.
  • LED ==> Diese Platine wird mit einer eingebauten LED geliefert, die an den digitalen Pin 13 angeschlossen ist. HIGH-Wert an diesem Pin schaltet die LED ein und LOW-Wert schaltet sie aus.
  • AREF ==> AREF steht für Analog Reference Voltage, die eine Referenzspannung für analoge Eingänge ist.
  • Analoge Pins ==> Auf der Platine sind 16 analoge Pins mit der Bezeichnung A0 bis A15 integriert. Es ist wichtig zu beachten, dass alle diese analogen Pins als digitale I/O-Pins verwendet werden können. Jeder analoge Pin verfügt über eine 10-Bit-Auflösung. Diese Pins können von Masse bis 5V messen. Der obere Wert kann jedoch mit AREF und der Funktion analogReference() geändert werden.
  • I2C ==> Zwei Pins 20 und 21 unterstützen die I2C-Kommunikation, wobei 20 für SDA (serielle Datenleitung, die hauptsächlich zum Halten der Daten verwendet wird) und 21 für SCL (serielle Taktleitung, die hauptsächlich für die Datensynchronisation zwischen den Geräten verwendet wird) steht.
  • SPI Communication ==> SPI steht für Serial Peripheral Interface, das für die Übertragung von Daten zwischen der Steuerung und anderen Peripheriekomponenten verwendet wird. Vier Pins, d. h. 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) werden für die SPI-Kommunikation verwendet.

Schritt 5: Arduino-IDE

Hier gehe ich davon aus, dass Sie bereits die Arduino IDE installiert haben.

1. Laden Sie die unten angegebene erforderliche Bibliothek herunter

TinyGPS-Bibliothek

2. Nach dem Herunterladen. Entpacken Sie es und verschieben Sie es in den Ordner C:\Users\…\Documents\Arduino\libraries. Stellen Sie sicher, dass kein (-) vorhanden ist.

3. Öffnen Sie die Arduino IDE und kopieren Sie den Code aus dem Programmabschnitt.

4. Wählen Sie dann das Board dafür aus, gehen Sie zu Tools ==> Boards ==> Select Board hier verwenden wir Arduino Mega 2560

5. Nach der Auswahl des Board-Select-Ports gehen Sie zu Tools ==> Ports

6. Nachdem Sie Board und Port ausgewählt haben, klicken Sie auf Upload.

7. Sobald der Code hochgeladen wurde, öffnen Sie das serielle Terminal, um die Ausgabe anzuzeigen.

Schritt 6: Verbindungen

Arduino MEGA ==> NEO-6M GPS

  • 3.3V ==> VCC
  • GND ==> GND
  • Tx1 (18) ==> Rx
  • Rx (19) ==> Tx

Sie können anstelle von Serial1 auch Serial2 oder Serial3 verwenden

Empfohlen: