Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Hoe Arduino Mega te interfacen met NEO-6M GPS-module

Componenten en benodigdheden

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

Apps en online services

Arduino IDE

Over dit project

Wat ik ontdekte, is dat er geen tutorial is voor de interface van Arduino Mega met de NEO-6M GPS-module, dus besloot ik er een te maken. Hoop dat je het leuk vindt!

Benodigde componenten

Hardware

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

Software

  • Arduino IDE

De totale kosten van het project bedragen $60.

Informatie over GPS

Wat is GPS?

Het Global Positioning System (GPS) is een op satellieten gebaseerd navigatiesysteem dat bestaat uit ten minste 24 satellieten. GPS werkt onder alle weersomstandigheden, waar ook ter wereld, 24 uur per dag, zonder abonnementskosten of instelkosten.

Hoe GPS werkt

GPS-satellieten cirkelen twee keer per dag in een precieze baan om de aarde. Elke satelliet zendt een uniek signaal en baanparameters uit waarmee GPS-apparaten de exacte locatie van de satelliet kunnen decoderen en berekenen. GPS-ontvangers gebruiken deze informatie en trilateratie om de exacte locatie van een gebruiker te berekenen. In wezen meet de GPS-ontvanger de afstand tot elke satelliet met de hoeveelheid tijd die nodig is om een ​​verzonden signaal te ontvangen. Met afstandsmetingen van nog een paar satellieten kan de ontvanger de positie van een gebruiker bepalen en weergeven.

Om uw 2D-positie (breedte- en lengtegraad) en trackbeweging te berekenen, moet een GPS-ontvanger op het signaal van minimaal 3 satellieten zijn vergrendeld. Met 4 of meer satellieten kan de ontvanger uw 3D-positie bepalen (breedtegraad, lengtegraad en hoogte). Over het algemeen volgt een GPS-ontvanger 8 of meer satellieten, maar dat hangt af van het tijdstip van de dag en waar u zich op aarde bevindt. Zodra uw positie is bepaald, kan de GPS-eenheid andere informatie berekenen, zoals

  • Snelheid
  • Lager
  • Track
  • Reisafst
  • Afstand tot bestemming

Wat is signaal

GPS-satellieten zenden minimaal 2 radiosignalen met een laag vermogen uit. De signalen reizen per gezichtslijn, wat betekent dat ze door wolken, glas en plastic gaan, maar niet door de meeste vaste objecten, zoals gebouwen en bergen. Moderne ontvangers zijn echter gevoeliger en kunnen meestal door huizen volgen. Een GPS-signaal bevat 3 verschillende soorten informatie

  • Pseudo-willekeurige code

Het is een ID. code die identificeert welke satelliet informatie uitzendt. Je kunt zien van welke satellieten je signalen ontvangt op de satellietpagina van je apparaat.

  • Ephemeris-gegevens

Ephemeris-gegevens zijn nodig om de positie van een satelliet te bepalen en geven belangrijke informatie over de gezondheid van een satelliet, de huidige datum en tijd.

  • Almanakgegevens

Almanakgegevens vertellen de GPS-ontvanger waar elke GPS-satelliet zich op elk moment van de dag moet bevinden en tonen de orbitale informatie voor die satelliet en elke andere satelliet in het systeem.

Neo-6M GPS-module

De NEO-6M GPS-module wordt weergegeven in de onderstaande afbeelding. Het wordt geleverd met een externe antenne en wordt niet geleverd met header-pinnen. Je zult het dus moeten solderen.

Overzicht van NEO-6M GPS-module

  • NEO-6M GPS-chip

Het hart van de module is een NEO-6M GPS-chip van u-blox. Het kan tot 22 satellieten op 50 kanalen volgen en bereikt het hoogste niveau van gevoeligheid in de branche, namelijk -161 dB tracking, terwijl het slechts 45 mA voedingsstroom verbruikt. De u-blox 6 positioneringsengine heeft ook een Time-To-First-Fix (TTFF) van minder dan 1 seconde. Een van de beste eigenschappen van de chip is de Power Save Mode (PSM). Het zorgt voor een vermindering van het stroomverbruik van het systeem door selectief delen van de ontvanger AAN en UIT te schakelen. Dit vermindert het stroomverbruik van de module drastisch tot slechts 11 mA, waardoor deze geschikt is voor stroomgevoelige toepassingen zoals een GPS-polshorloge. De benodigde datapinnen van de NEO-6M GPS-chip zijn uitgesplitst naar een "0.1" pitchheader. Dit omvat pinnen die nodig zijn voor communicatie met een microcontroller via UART.

Opmerking :- De module ondersteunt een baudrate van 4800bps tot 230400bps met een standaardbaud van 9600.

Positie fix LED-indicator

Er is een LED op de NEO-6M GPS-module die de status van Position Fix aangeeft. Het knippert met verschillende snelheden, afhankelijk van de staat waarin het zich bevindt

  • Knippert niet ==> betekent dat het naar satellieten zoekt
  • Knipper elke seconde – betekent dat Position Fix is ​​gevonden
  • 3.3V LDO-regelaar

De bedrijfsspanning van de NEO-6M-chip is van 2,7 tot 3,6V. Maar de module wordt geleverd met MIC5205 ultra-low drop-out 3V3-regelaar van MICREL. De logische pinnen zijn ook 5-volt tolerant, dus we kunnen het gemakkelijk aansluiten op een Arduino of een 5V logische microcontroller zonder een logische niveau-omzetter te gebruiken.

Batterij &EEPROM

De module is uitgerust met een HK24C32 tweedraads seriële EEPROM. Hij is 4KB groot en via I2C verbonden met de NEO-6M-chip. De module bevat ook een oplaadbare knoopbatterij die als supercondensator fungeert.

Een EEPROM samen met een batterij helpt het door een batterij ondersteunde RAM (BBR) vast te houden. De BBR bevat klokgegevens, laatste positiegegevens (GNSS of bitgegevens) en moduleconfiguratie. Maar het is niet bedoeld voor permanente gegevensopslag.

Omdat de batterij de klok en de laatste positie behoudt, wordt de tijd tot eerste fix (TTFF) aanzienlijk teruggebracht tot 1s. Dit maakt veel snellere positievergrendelingen mogelijk.

Zonder de batterij start de GPS altijd koud, dus de initiële GPS-vergrendeling duurt langer. De batterij wordt automatisch opgeladen wanneer de stroom wordt ingeschakeld en behoudt gegevens tot twee weken zonder stroom.

Pinout

  • GND is de aardingspin en moet worden aangesloten op de GND-pin op de Arduino.
  • TxD (zender) pin wordt gebruikt voor seriële communicatie.
  • RxD (ontvanger) pin wordt gebruikt voor seriële communicatie.
  • VCC levert stroom voor de module. Je kunt hem rechtstreeks aansluiten op de 5V-pin op de Arduino.

Arduino Mega

Arduino is een open-source elektronicaplatform gebaseerd op gebruiksvriendelijke hardware en software. Arduino-boards kunnen inputs lezen - licht op een sensor, een vinger op een knop of een Twitter-bericht - en dit omzetten in een output - een motor activeren, een LED aanzetten, iets online publiceren. U kunt uw bord vertellen wat het moet doen door een reeks instructies naar de microcontroller op het bord te sturen. Hiervoor gebruik je de Arduino programmeertaal (gebaseerd op Wiring), en de Arduino Software (IDE), gebaseerd op Processing.

Arduino Mega 2560 is een Microcontroller-bord gebaseerd op Atmega2560.

  • Er zijn 54 digitale I/O-pinnen en 16 analoge pinnen in het bord verwerkt die dit apparaat uniek maken en zich onderscheiden van anderen. Van de 54 digitale I/O's worden er 15 gebruikt voor PWM (pulsbreedtemodulatie).
  • Een kristaloscillator met een frequentie van 16 MHz.
  • Het bord wordt geleverd met een USB-kabelpoort die wordt gebruikt om de code aan te sluiten en over te dragen van de computer naar het bord.
  • DC-voedingsaansluiting is gekoppeld aan het bord dat wordt gebruikt om het bord van stroom te voorzien.
  • Het bord wordt geleverd met twee spanningsregelaars, namelijk 5V en 3,3V, die de flexibiliteit bieden om de spanning volgens de vereisten te regelen.
  • Er is een resetknop en 4 hardware seriële poorten genaamd USART die een maximale snelheid produceren voor het opzetten van communicatie.
  • Er zijn drie manieren om het bord van stroom te voorzien. Je kunt ofwel een USB-kabel gebruiken om het bord van stroom te voorzien en de code naar het bord over te dragen of je kunt het opstarten met Vin van het bord of via de Power-aansluiting of beslag.

Specificaties

Pinout

Pin Beschrijving

  • 5V &3,3V ==>Deze pin wordt gebruikt om een ​​uitgangsspanning van ongeveer 5V te leveren. Deze gereguleerde voeding voedt de controller en andere componenten op het bord. Het kan worden verkregen via Vin of the board of USB-kabel of een andere gereguleerde 5V-spanningsvoorziening. Terwijl een andere spanningsregeling wordt geleverd door een 3.3V-pin. Het maximale vermogen dat het kan trekken is 50mA.
  • GND ==>Er zijn 5 grondpennen beschikbaar op het bord, wat het handig maakt wanneer er meer dan één grondpen nodig is voor het project.
  • Reset ==> Deze pin wordt gebruikt om het bord te resetten. Door deze pin op LOW te zetten, wordt het bord gereset.
  • Vin ==> Het is de ingangsspanning die aan het bord wordt geleverd, die varieert van 7V tot 20V. De spanning die door de stroomaansluiting wordt geleverd, is toegankelijk via deze pin. De uitgangsspanning via deze pin naar het bord wordt echter automatisch ingesteld op 5V.
  • Seriële communicatie ==> RXD en TXD zijn de seriële pinnen die worden gebruikt voor het verzenden en ontvangen van seriële gegevens, d.w.z. Rx vertegenwoordigt de verzending van gegevens terwijl Tx werd gebruikt om gegevens te ontvangen. Er zijn vier combinaties van deze seriële pinnen die worden gebruikt waarbij Serail 0 RX(0) en TX(1) bevat, Serial 1 TX(18) en RX(19), Serial 2 TX(16) en RX(17) bevat, en Serie 3 bevat TX(14) en RX(15).
  • Externe onderbrekingen ==> Zes pinnen worden gebruikt voor het maken van externe interrupts, d.w.z. interrupt 0(0), interrupt 1(3), interrupt 2(21), interrupt 3(20), interrupt 4(19), interrupt 5(18). Deze pinnen produceren onderbrekingen op een aantal manieren, d.w.z. het verstrekken van een LAGE waarde, stijgende of dalende flank of veranderende waarde aan de onderbrekingspinnen.
  • LED ==> Dit bord wordt geleverd met een ingebouwde LED die is aangesloten op digitale pin 13. Een HOGE waarde op deze pin zal de LED inschakelen en een LAGE waarde zal deze uitschakelen.
  • AREF ==> AREF staat voor Analog Reference Voltage, wat een referentiespanning is voor analoge ingangen.
  • Analoge pinnen ==> Er zijn 16 analoge pinnen op het bord gelabeld als A0 tot A15. Het is belangrijk op te merken dat al deze analoge pinnen kunnen worden gebruikt als digitale I/O-pinnen. Elke analoge pin wordt geleverd met een resolutie van 10 bits. Deze pinnen kunnen meten van aarde tot 5V. De bovenste waarde kan echter worden gewijzigd met de functie AREF en analogReference().
  • I2C ==>Twee pinnen 20 en 21 ondersteunen I2C-communicatie waarbij 20 staat voor SDA (seriële datalijn die voornamelijk wordt gebruikt voor het bewaren van de gegevens) en 21 voor SCL (seriële kloklijn die voornamelijk wordt gebruikt voor gegevenssynchronisatie tussen de apparaten)
  • SPI-communicatie ==> SPI staat voor Serial Peripheral Interface die wordt gebruikt voor de overdracht van gegevens tussen de controller en andere randapparatuur. Vier pinnen, namelijk 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS), worden gebruikt voor SPI-communicatie.

Arduino IDE

Hier neem ik aan dat je Arduino IDE al hebt geïnstalleerd.

1. Download de vereiste bibliotheek hieronder

TinyGPS-bibliotheek

2. Na het downloaden. Pak het uit en verplaats het naar de map C:\Users\...\Documents\Arduino\libraries zorg ervoor dat er geen (-) is.

3. Open de Arduino IDE en kopieer de code uit het programmagedeelte.

4. Selecteer vervolgens het bord daarvoor ga naar Tools ==> Boards ==> selecteer het bord hier gebruiken we Arduino Mega 2560.

5. Nadat je de kaart hebt geselecteerd, ga je daarvoor naar Extra ==> Poorten.

6. Klik na het selecteren van bord en poort op uploaden.

Verbindingen

Arduino MEGA ==> NEO-6M GPS

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

U kunt ook Serial2 of Serial3 gebruiken in plaats van Serial1

Serieel2 pinnen

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

Serieel3 pinnen

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

Resultaat

Code

  • Arduinomega_GPS
Arduinomega_GPSArduino
//Verbind met pin 18 en 19#include //long lat,lon; // maak een variabele voor de lengte- en breedtegraad objectfloat lat,lon; TinyGPS gps; // maak gps objectvoid setup () {Serial.begin (57600); // connect serialSerial.println ("Het GPS-ontvangen signaal:");Serial1.begin (9600); // sluit gps-sensor aan} void loop () { while (Serial1.available ()) { // controleer op gps-gegevens if (gps.encode (Serial1.read ())) // codeer gps-gegevens {gps.f_get_position(&lat ,&lon); // krijg breedte- en lengtegraad Serial.print ("Positie:"); //Latitude Serial.print("Latitude:"); Serial.print(lat,6); Serieel.print(","); //Lengtegraad Serial.print ("Lengtegraad:"); Serial.println(lon,6); } }} /*//Verbind met pin 16 en 17#include //long lat,lon; // maak een variabele voor de lengte- en breedtegraad objectfloat lat,lon; TinyGPS gps; // maak gps objectvoid setup () {Serial.begin (57600); // connect serialSerial.println ("Het GPS-ontvangen signaal:");Serial2.begin (9600); // sluit gps-sensor aan} void loop () { while (Serial2.available ()) { // controleer op gps-gegevens if (gps.encode (Serial2.read ())) // codeer gps-gegevens {gps.f_get_position (&lat ,&lon); // krijg breedte- en lengtegraad Serial.print ("Positie:"); //Latitude Serial.print("Latitude:"); Serial.print(lat,6); Serieel.print(","); //Lengtegraad Serial.print ("Lengtegraad:"); Serial.println(lon,6); } }}*//*//Verbind met pin 14 en 15#include //long lat,lon; // maak een variabele voor de lengte- en breedtegraad objectfloat lat,lon; TinyGPS gps; // maak gps objectvoid setup () {Serial.begin (57600); // connect serialSerial.println ("Het GPS-ontvangen signaal:");Serial3.begin (9600); // sluit gps-sensor aan} void loop () { while (Serial3.available ()) { // controleer op gps-gegevens if (gps.encode (Serial3.read ())) // codeer gps-gegevens {gps.f_get_position (&lat ,&lon); // krijg breedte- en lengtegraad Serial.print ("Positie:"); //Latitude Serial.print("Latitude:"); Serial.print(lat,6); Serieel.print(","); //Lengtegraad Serial.print ("Lengtegraad:"); Serial.println(lon,6); } }}*/

Schema's


Productieproces

  1. De waterdruppels vastleggen met Arduino
  2. Spelen met Nextion Display
  3. u-blox LEA-6H 02 GPS-module met Arduino en Python
  4. De temperatuur en vochtigheid op Blynk aflezen met DHT11
  5. Muziek maken met een Arduino
  6. Hoe NMEA-0183 te gebruiken met Arduino
  7. GPS-locatieweergave met GPS- en TFT-schermschilden
  8. Modbus gebruiken met Arduino
  9. Log GPS-informatie op MicorSD-kaart met Visuino
  10. Arduino + GPS-module - Destination Notifier
  11. SIM800L GPRS-module met Arduino AT-opdrachten