Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Wie man Arduino Mega mit dem NEO-6M GPS-Modul verbindet

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
u-blox NEO-6M GPS-Modul
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Was ich gefunden habe, ist, dass es kein Tutorial für die Schnittstelle von Arduino Mega mit dem NEO-6M-GPS-Modul gibt, also habe ich mich entschieden, eines zu machen. Hoffe du magst es!

Benötigte Komponenten

Hardware

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

Software

  • Arduino-IDE

Die Gesamtkosten des Projekts betragen 60 $.

Informationen über 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.

Funktionsweise von 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 dekodieren 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 es dauert, ein gesendetes Signal zu empfangen. Mit Entfernungsmessungen von einigen weiteren Satelliten kann der Receiver die Position eines Benutzers bestimmen und anzeigen.

Um Ihre 2D-Position (Breiten- und Längengrad) zu berechnen und Bewegungen zu verfolgen, muss ein GPS-Empfänger auf das Signal von mindestens 3 Satelliten eingekoppelt werden. Bei 4 oder mehr Satelliten 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 zum Beispiel

  • Geschwindigkeit
  • Lager
  • Track
  • Fahrtstrecke
  • Entfernung zum Ziel

Was ist ein 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

  • Pseudorandom-Code

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.

  • Almanachdaten

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.

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. Er kann bis zu 22 Satelliten auf 50 Kanälen verfolgen und erreicht die höchste Empfindlichkeit der Branche, d. h. -161 dB Tracking, während er nur 45 mA Versorgungsstrom verbraucht. 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 zu einem "0.1″-Pitch-Header aufgebrochen. Dies beinhaltet Pins, die für die Kommunikation mit einem Mikrocontroller über UART erforderlich sind.

Hinweis :- Das Modul unterstützt Baudraten von 4800bps bis 230400bps 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

  • Kein Blinken ==> bedeutet, dass es nach Satelliten sucht
  • Blinken Sie alle 1s – bedeutet, dass Position Fix gefunden wurde
  • 3,3-V-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 ohne Verwendung eines Logikpegelwandlers problemlos an einen Arduino oder einen beliebigen 5-V-Logikmikrocontroller anschließen können.

Batterie und 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 dabei, das batteriegepufferte RAM (BBR) zu erhalten. Der BBR enthält Taktdaten, neueste Positionsdaten (GNSS- oder Bitdaten) 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 Masse-Pin und muss mit dem GND-Pin des Arduino verbunden werden.
  • Der TxD-Pin (Sender) wird für die serielle Kommunikation verwendet.
  • RxD (Empfänger)-Pin 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.

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 Arduino-Programmiersprache (basierend auf Wiring) und die Arduino-Software (IDE), basierend auf Processing.

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

  • Es sind 54 digitale I/O-Pins und 16 analoge Pins auf der Platine integriert, die dieses Gerät einzigartig machen und sich von anderen abheben. Von den 54 digitalen I/Os werden 15 für PWM (Pulsweitenmodulation) verwendet.
  • Ein Quarzoszillator mit einer Frequenz von 16 MHz.
  • 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 verbunden, 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 zum Einrichten 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

  • 5 V und 3,3 V ==> Dieser Pin wird verwendet, um eine geregelte Ausgangsspannung von etwa 5 V 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.
  • Zurücksetzen ==> Dieser Pin wird verwendet, um die Platine zurückzusetzen. Wenn Sie diesen Pin auf LOW setzen, wird die Platine zurückgesetzt.
  • Vin ==> Es 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 Unterbrechungen ==> 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 mit dem digitalen Pin 13 verbunden ist. Der HIGH-Wert an diesem Pin schaltet die LED ein und der 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 hat eine Auflösung von 10 Bit. 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-Kommunikation ==> SPI steht für Serial Peripheral Interface zur Datenübertragung zwischen der Steuerung und anderen Peripheriekomponenten. Vier Pins, d. h. 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) werden für die SPI-Kommunikation verwendet.

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. Nachdem Sie den Port für die Platine ausgewählt haben, gehen Sie zu Tools ==> Ports.

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

Verbindungen

Arduino MEGA ==> NEO-6M GPS

  • 3,3 V ==> VCC
  • GND ==> GND
  • Tx1 (18) ==> Rx
  • Rx1 (19) ==> Tx

Sie können statt Serial1 auch Serial2 oder Serial3 verwenden

Seriell2 Pins

  • Tx2 (16) ==> Rx
  • Rx2 (17) ==> Tx

Seriell3 Pins

  • Tx3 (14) ==> Rx
  • Rx3 (15) ==> Tx

Ergebnis

Code

  • Arduinomega_GPS
Arduinomega_GPSArduino
//Mit Pin 18 und 19 verbinden#include //long lat,lon; // Variable für Breiten- und Längengrad erstellen objectfloat lat,lon;TinyGPS gps; // gps-Objekt erstellenvoid setup () {Serial.begin (57600); // verbinde serialSerial.println("Das GPS-Empfangssignal:");Serial1.begin(9600); // GPS-Sensor verbinden} Void Schleife () { Während (Serial1.available ()) { // Auf GPS-Daten prüfen if (gps.encode (Serial1.read ())) // GPS-Daten codieren { gps.f_get_position (&lat ,&lon); // Breiten- und Längengrad erhalten Serial.print ("Position:"); // Breitengrad Serial.print ( "Breitengrad:"); Serial.print (lat, 6); Serial.print (","); // Längengrad Serial.print ( "Längengrad:"); Serial.println (lon, 6); } }} /*//Verbinde mit Pin 16 und 17#include //long lat,lon; // Variable für Breiten- und Längengrad erstellen objectfloat lat,lon;TinyGPS gps; // gps-Objekt erstellenvoid setup () {Serial.begin (57600); // verbinde serialSerial.println("Das GPS-Empfangssignal:");Serial2.begin(9600); // GPS-Sensor verbinden} Void Schleife () { Während (Serial2.available ()) { // Auf GPS-Daten prüfen if (gps.encode (Serial2.read ())) // GPS-Daten codieren { gps.f_get_position (&lat ,&lon); // Breiten- und Längengrad erhalten Serial.print ("Position:"); // Breitengrad Serial.print ( "Breitengrad:"); Serial.print (lat, 6); Serial.print (","); // Längengrad Serial.print ( "Längengrad:"); Serial.println (lon, 6); } }}*//*//Verbinde mit Pin 14 und 15#include //long lat,lon; // Variable für Breiten- und Längengrad erstellen objectfloat lat,lon;TinyGPS gps; // gps-Objekt erstellenvoid setup () {Serial.begin (57600); // verbinde serialSerial.println("Das GPS-Empfangssignal:");Serial3.begin(9600); // GPS-Sensor verbinden} Void Schleife () { Während (Serial3.available ()) { // Auf GPS-Daten prüfen if (gps.encode (Serial3.read ())) // GPS-Daten codieren { gps.f_get_position (&lat ,&lon); // Breiten- und Längengrad erhalten Serial.print ("Position:"); // Breitengrad Serial.print ( "Breitengrad:"); Serial.print (lat, 6); Serial.print (","); // Längengrad Serial.print ( "Längengrad:"); Serial.println (lon, 6); } }}*/

Schaltpläne


Herstellungsprozess

  1. Einfangen der Wassertropfen mit Arduino
  2. Mit Nextion Display spielen
  3. u-blox LEA-6H 02 GPS-Modul mit Arduino und Python
  4. So liest man Temperatur und Luftfeuchtigkeit auf Blynk mit DHT11
  5. Wie man mit einem Arduino Musik macht
  6. So verwenden Sie NMEA-0183 mit Arduino
  7. GPS-Standortanzeige mit GPS- und TFT-Display-Schilden
  8. So verwenden Sie Modbus mit Arduino
  9. Aufzeichnen von GPS-Informationen auf der MicorSD-Karte mit Visuino
  10. Arduino + GPS-Modul - Zielbenachrichtigung