Tutorial: Utilizando o GPS Shield como dispositivo de anti-evasão

 

Olá Garagistas! No tutorial de hoje mostraremos como utilizar o GPS Shield. Faremos uma demonstração de como você pode montar um dispositivo de anti-evasão com ele, determinando uma área, e que se o GPS ultrapassar o limite desta área, o Arduino pode fazer um acionamento ou tocar uma sirene.

 

Material Utilizado:

Adquira estes componentes na Loja do Lab de Garagem

1x GPS Shield

1x Arduino

1x Alto-Falante

1x Capacitor 100uF

1x Protoboard

1x Suporte para 4 pilhas

4x Pilhas AA

Alguns Jumpers

1. GPS Shield

 Imagem 1 - Arduino com GPS Shield

Todos os passos para a montagem do seu GPS Shield, podem ser encontrado neste link.

A biblioteca utilizada neste tutorial foi a TinyGPS, a versão utilizada desta biblioteca foi a versão 13, e essa versão pode ser encontrada neste link. Lembre-se que é necessário retirar a versão no nome da pasta do TinyGPS, quando você fizer o download da versão 13 por exemplo o arquivo virá com o nome TinyGPS-13, retire o -13 do nome da pasta e a cole-a dentro da pasta libraries. Essa biblioteca trata os dados recebidos pelo módulo GPS e lhe devolve informações como, longitude, latitude, hora, data, altitude e etc.

Também utilizamos neste tutorial a biblioteca SoftwareSerial (já nativa do Arduino,  você não precisará baixar) para se comunicar através dos pinos D2 - RX e D3 - TX com o módulo GPS. Para a visualização dos dados recebidos utilizamos a serial (Hardware, pinos D0 - RX e D1 - TX) para através do Serial Monitor lermos os valores recebidos pelo GPS.

Sketch Exemplo: O sketch exemplo para teste de recebimento de dados do seu GPS Shield pode ser encontrado, neste link

Para informações mais detalhadas sobre o GPS Shield, clique aqui.

2. Demonstração

Na demonstração deste tutorial, determinamos uma área (Q.G .do Lab), conforme a figura baixo:

 

 

Caso o módulo ultrapasse um desses limites, o alto-falante no circuito começará a apitar. Esse tipo de aplicação é semelhante as tornozeleiras de infratores em prisão domiciliar.

Os dados da área para essa demonstração são:

 

Latitude Máxima = -23.59500;


Latitude Mínima = -23.59530;

 

Longitude Máxima = -46.63585;


Longitude Mínima = -46.63615;

 

 

3. Circuito/Montagem

 

Figura 1 - Circuito da demonstração

 

Imagem 2 - Montagem do circuito da demonstração

4. Sketch

#include <SoftwareSerial.h>
#include <TinyGPS.h>

TinyGPS gps;
SoftwareSerial serialgps(2,3);

int ano;
byte mes, dia, meshora, minuto, segundos, milesimos;

unsigned long chars;
unsigned short sentences, failed_checksum;

void setup()
{
Serial.begin(4800);
serialgps.begin(4800);
Serial.println("");
Serial.println(" Laboratorio de Garagem");
Serial.println(" ...Procurando Satelites... ");
Serial.println("");
}

void loop()
{
while(serialgps.available())
{
int c = serialgps.read();
if(gps.encode(c))
{
delay(1000);
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
Serial.print("Lat/Long: ");
Serial.print(latitude,5);
Serial.print(", ");
Serial.println(longitude,5);
gps.crack_datetime(&ano,&mes,&dia,&meshora,&minuto,&segundos,&milesimos);
Serial.print("Data: ");
Serial.print(mes, DEC);
Serial.print("/");
Serial.print(dia, DEC);
Serial.print("/");
Serial.print(ano);
Serial.print(" Hora: ");
Serial.print(meshora, DEC);
Serial.print(":");
Serial.print(minuto, DEC);
Serial.print(":");
Serial.print(segundos, DEC);
Serial.print(".");
Serial.println(milesimos, DEC);
Serial.print("Altitude (metros): ");
Serial.println(gps.f_altitude());
Serial.print("Direcao (grau): ");
Serial.println(gps.f_course());
Serial.print("Velocidade(km/h): ");
Serial.println(gps.f_speed_kmph());
Serial.print("Satelites: ");
Serial.println(gps.satellites());
Serial.println();
gps.stats(&chars, &sentences, &failed_checksum);
}
}
}

 

 

Referências:

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-gps-shield-com-arduino

http://www.procriativo.com.br/

Exibições: 19221

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de pedro em 2 fevereiro 2015 às 19:30

Boa Noite,
gostaria de saber como posso programar um programa para um GPS Shield com Arduino, para de dar a latitude e a longitude, mas só os pontos que eu quiser como por exemplo, ponto 1, ponto 2, num ponto 1 clico e dá-me as coordenadas daquele ponto que eu cliquei, depois clico noutro ponto 2 e dá-me as coordenadas desse ponto que eu cliquei e por aí a diante.....
espero que tenham percebido o meu pedido de ajuda.
Obrigados pela ajuda,

Comentário de CLENILSON NOVAES GONCALVES DOS S em 10 novembro 2014 às 14:44
Olá Diogo desculpa a minha falta de atenção, muito obrigado pelo esclarecimento.
Comentário de Diogo Henrique Corrêa em 9 novembro 2014 às 21:55

Clenilson,

Leia o título novamente: Usando o GPS Shield como dispositivo anti-evasão.

É anti-evasão: saída e não anti-invasão: entrada.

Comentário de CLENILSON NOVAES GONCALVES DOS S em 9 novembro 2014 às 20:25

Não entendi a aplicação deste projeto, na minha opinião ele funciona para evitar que o produto sai da área delimitada pelas latitudes e longitudes máximas e mínimas respectivas, diferente do que explica o tutorial que o produto é para proteger de invasão a área delimitada, Favor esclarecer melhor.

Comentário de juan paulo gama rodrigues em 8 agosto 2014 às 23:33

olá amigo, vc pode me ajudar estou com o seguinte Sketch

#include <SoftwareSerial.h> //Biblioteca para utilização dos pinos D2 e D3 como RX e TX
#include <TinyGPS.h> //Biblioteca que faz a leitura e tratamento dos dados recebidos pelo GPS Shield

TinyGPS gps; //Cria a instância gps para ser utilizada pelo programa

SoftwareSerial serialgps(2,3); //Configura os pinos 2 e 3 para serem utilizados pela SoftwareSerial

int sats; //Variáveis para armazenamento de ano e quantidade de satélites
float latitude, longitude; //Variáveis para o armazenamento de latitude e longitude
float latmax = -4.51780; //Variável para a latitude máxima
float latmin = -4.51520; //Variável para a latitude mínima
float longmax = -44.46190; //Variável para a longitude máxima
float longmin = -44.46110; //Variável para a longitude mínima

void setup()
{

serialgps.begin(9600); //Inicializa a serial(software) com baud rate de 4800 para a comunicação com o GPS

}

void loop()
{

GPS(); //Executa a função para a leitura dos dados do GPS

//Se o GPS ultrapassar os limites determinados
if(sats > 3)
{
if( (latitude < latmin) || (latitude > latmax) || (longitude < longmin) || (longitude > longmax) )
{
tone(8, 450, 500); //Toca sirene
}
}

else
{
tone(8, 0, 500); //Não toca a sirene
}

}

void GPS() //Função para a leitura dos dados do GPS
{

while(serialgps.available())
{
int c = serialgps.read();
if(gps.encode(c))
{
gps.f_get_position(&latitude, &longitude); //Leitura da latitude e longitude
sats = gps.satellites(); //Armazena na variável sats a quantidade de satélites
}
}

}

tudo funciona legal..mas meu fone nao para de tocar o alarme , estou com dentro do limite das coordenadas. 

fico em latutude mini = -4.51696

             latitude maxi=-4.51715

             longtude mini=-44.46139

             longtude maxi=-44.46150

eu fico dentro das coordenadas ,era pra meu fone parar de dar o alarme ,porem ele continua tocando . vc pode me ajudar ??

Comentário de Diogo Henrique Corrêa em 11 setembro 2013 às 2:44

Muito bacana, parabéns pelo excelente tutorial. Ficou muito didático. 

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço