Inhoudsopgave:

Interface Arduino Mega met GPS-module (Neo-6M) - Ajarnpa
Interface Arduino Mega met GPS-module (Neo-6M) - Ajarnpa

Video: Interface Arduino Mega met GPS-module (Neo-6M) - Ajarnpa

Video: Interface Arduino Mega met GPS-module (Neo-6M) - Ajarnpa
Video: Часы на GPS Модуле 2024, Juni-
Anonim
Interface Arduino Mega met GPS-module (Neo-6M)
Interface Arduino Mega met GPS-module (Neo-6M)

In dit project heb ik laten zien hoe een GPS-module (Neo-6M) met Arduino Mega kan worden gekoppeld. TinyGPS-bibliotheek wordt gebruikt om de gegevens van lengte- en breedtegraad weer te geven en TinyGPS++ wordt gebruikt om breedtegraad, lengtegraad, hoogte, snelheid en het aantal satellieten op de seriële monitor weer te geven.

Stap 1: Benodigde onderdelen

Hardware

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

Software

Arduino IDE

De totale kosten van het project zijn $ 60

Stap 2: 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 aan de hand van 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 in zicht 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
  • Handelswijze
  • Spoor
  • Reisafstand
  • 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 aangeeft welke satelliet informatie uitzendt. Op de satellietpagina van uw apparaat kunt u zien van welke satellieten u signalen ontvangt.

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.

Almanak gegevens

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.

Stap 3: 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 uitgebroken in headers met een pitch van 0,1″. 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

  1. Niet knipperen ==> betekent dat er naar satellieten wordt gezocht
  2. Knipper elke 1s - 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 logisch niveau-converter 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) te behouden. De BBR bevat klokgegevens, laatste positiegegevens (GNSS-baangegevens) 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 grondpin 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 direct aansluiten op de 5V-pin op de Arduino

Stap 4: 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

Arduino Mega 2560 is een Microcontroller-bord op basis van 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).
  • Op het bord is een kristaloscillator met een frequentie van 16 MHz toegevoegd.
  • Het bord wordt geleverd met een USB-kabelpoort die wordt gebruikt om de code van de computer naar het bord te verbinden en over te dragen.
  • De 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 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 aardingspennen beschikbaar op het bord, wat het handig maakt wanneer er meer dan één aardingspen 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 en 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 onderbrekingen, d.w.z. onderbreking 0(0), onderbreking 1(3), onderbreking 2(21), onderbreking 3(20), onderbreking 4(19), onderbreking 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 aanzetten 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 Communication ==> SPI staat voor Serial Peripheral Interface en 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.

Stap 5: Arduino IDE

Hier ga ik ervan uit 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 en 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 board 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.

7. Zodra de code is geüpload, opent u de seriële terminal om de uitvoer te zien.

Stap 6: Aansluitingen

Arduino MEGA ==> NEO-6M GPS

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

U kunt ook Serial2 of Serial3 gebruiken in plaats van Serial1

Aanbevolen: