Neste tutorial, vamos aprender a obter as coordenadas GPS (longitude, latitude, altitude), a velocidade GPS (km/h) e a data e hora a partir do módulo GPS NEO-6M. Também vamos aprender a calcular a distância da posição GPS atual até uma coordenada GPS predefinida (ex.: as coordenadas de Londres)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o módulo GPS NEO-6M
Pinagem
O módulo GPS NEO-6M tem 4 pinos:
Pino VCC: precisa ser conectado ao VCC (5V)
Pino GND: precisa ser conectado ao GND (0V)
Pino TX: é usado para comunicação serial, precisa ser conectado ao pino RX da Serial (ou SoftwareSerial) do Arduino.
Pino RX: é usado para comunicação serial, precisa ser conectado ao pino TX da Serial (ou SoftwareSerial) do Arduino.
Diagrama de Ligação
This image is created using Fritzing. Click to enlarge image
Por favor, saiba que, embora o diagrama de ligação acima possa funcionar, ele não é recomendado. O pino TX do Arduino trabalha com 5V, mas o pino RX do módulo GPS só aceita 3.3V. Para garantir a segurança, é recomendado usar um divisor de tensão entre o pino TX do Arduino e o pino RX do módulo GPS, como mostrado no diagrama abaixo.
This image is created using Fritzing. Click to enlarge image
Código Arduino
Lendo as coordenadas GPS, a velocidade (km/h) e a data e hora
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-gps*/#include <TinyGPS++.h>#include <SoftwareSerial.h>#define RX_PIN 4 // Arduino Pin connected to the TX of the GPS module#define TX_PIN 3 // Arduino Pin connected to the RX of the GPS moduleTinyGPSPlus gps; // the TinyGPS++ objectSoftwareSerial gpsSerial(RX_PIN, TX_PIN); // the serial interface to the GPS modulevoidsetup() {Serial.begin(9600); gpsSerial.begin(9600); // Default baud of NEO-6M GPS module is 9600Serial.println(F("Arduino - GPS module"));}voidloop() {if (gpsSerial.available() > 0) {if (gps.encode(gpsSerial.read())) {if (gps.location.isValid()) {Serial.print(F("- latitude: "));Serial.println(gps.location.lat());Serial.print(F("- longitude: "));Serial.println(gps.location.lng());Serial.print(F("- altitude: "));if (gps.altitude.isValid())Serial.println(gps.altitude.meters());elseSerial.println(F("INVALID")); } else {Serial.println(F("- location: INVALID")); }Serial.print(F("- speed: "));if (gps.speed.isValid()) {Serial.print(gps.speed.kmph());Serial.println(F(" km/h")); } else {Serial.println(F("INVALID")); }Serial.print(F("- GPS date&time: "));if (gps.date.isValid() && gps.time.isValid()) {Serial.print(gps.date.year());Serial.print(F("-"));Serial.print(gps.date.month());Serial.print(F("-"));Serial.print(gps.date.day());Serial.print(F(" "));Serial.print(gps.time.hour());Serial.print(F(":"));Serial.print(gps.time.minute());Serial.print(F(":"));Serial.println(gps.time.second()); } else {Serial.println(F("INVALID")); }Serial.println(); } }if (millis() > 5000 && gps.charsProcessed() < 10)Serial.println(F("No GPS data received: check wiring"));}
Passos Rápidos
Abra o Arduino IDE
Vá até o ícone Libraries na barra esquerda do Arduino IDE.
Pesquise “TinyGPSPlus” e encontre a biblioteca TinyGPSPlus de Mikal Hart
Clique no botão Install para instalar a biblioteca TinyGPSPlus.
Copie o código acima e abra-o no Arduino IDE
Clique no botão Upload no Arduino IDE para carregar o código no Arduino
Veja o resultado no Serial Monitor:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Arduino Uno on COM15
2
Calculando a distância da localização atual até uma localização predefinida
O código abaixo calcula a distância entre a localização atual e Londres (lat:51.508131 , long: -0.128002)
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-gps*/#include <TinyGPS++.h>#include <SoftwareSerial.h>#define RX_PIN 4 // Arduino Pin connected to the TX of the GPS module#define TX_PIN 3 // Arduino Pin connected to the RX of the GPS moduleTinyGPSPlus gps; // the TinyGPS++ objectSoftwareSerial gpsSerial(RX_PIN, TX_PIN); // the serial interface to the GPS moduleconstdouble LONDON_LAT = 51.508131;constdouble LONDON_LON = -0.128002;voidsetup() {Serial.begin(9600); gpsSerial.begin(9600); // Default baud of NEO-6M GPS module is 9600Serial.println(F("Arduino - GPS module"));}voidloop() {if (gpsSerial.available() > 0) {if (gps.encode(gpsSerial.read())) {if (gps.location.isValid()) {double latitude = gps.location.lat();double longitude = gps.location.lng();unsignedlong distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000;Serial.print(F("- latitude: "));Serial.println(latitude);Serial.print(F("- longitude: "));Serial.println(longitude);Serial.print(F("- distance to London: "));Serial.println(distanceKm); } else {Serial.println(F("- location: INVALID")); }Serial.println(); } }if (millis() > 5000 && gps.charsProcessed() < 10)Serial.println(F("No GPS data received: check wiring"));}
Passos Rápidos
Copie o código acima e abra-o no Arduino IDE
Clique no botão Upload no Arduino IDE para carregar o código no Arduino
Veja o resultado no Serial Monitor:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Arduino Uno on COM15
2
Vídeo
WARNING
Observe que este tutorial está incompleto. Vamos avisar na nossa página do Facebook quando o tutorial estiver completo. Curta a página para ficar atualizado.
Tutoriais Relacionados
※ NOSSAS MENSAGENS
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!