Rastreador com sim800l GPS e esp8266 (arduino)

rastreador com sim800 e gps

Nesse pequeno projeto criei um mini rastreador com sim800, esp8266 e módulo de GPS NEO-6m-0-001

 

Funcionamento: O GPS pega os dados de através do SIMCard (internet) envia esses dados para algum local de sua escolha (no meu caso para um banco de dados) é possível obter latitude, longitude e velocidade.

Download do projeto completo  clique aqui

 

IMPORTANTE:

  • O sim card que utilizei foi da Operadora TIM (o da VIVO não funcionou…)
  • O esquema de montagem foi feito no Fritzing e exportado tambem para PDF (download acima)
  • O SIM800l foi ligado da seguinte forma no ESP8266: TX ligado na porta D2 e RX ligado na D3
  • o GPS foi ligado da seguinte forma no ESP8266: Tx ligado no D1
  • Tenha certeza que seu Chip (Simcard) tenha crédito e esteja navegando normalmente
  • Não esqueça de ligar a antena do seu SIM800L mesmo na hora de testes
  • Esteja em um local que pegue sinal de GPS (o sistema não funciona sem sinal de GPS)
  • A variável que armazena a velocidade pode ser do tipo INT ao invés de String
  • Não esqueça de configurar seu Baund rate* para ouvir em 19200
  • A versão da biblioteca TinyGPS++ é a 13.0.0
*número de vezes que um sinal em um canal de comunicação muda seu estado, ou varia.

rastreador com sim800 e gps

 


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

String la;
String lo;
String ve;

// ligar o SIM800:  TX no D2 | RX no D3
SoftwareSerial gprsSerial(4, 0);

//ligar TX do GPS na porta D1 (5)
static const int RXPin = 5;
static const uint32_t GPSBaud = 9600;

TinyGPSPlus gps;
SoftwareSerial ss(RXPin);

void setup(){

Serial.println(“Iniciando GPS…”);
Serial.begin(9600);
ss.begin(GPSBaud);

gprsSerial.begin(19200);
Serial.begin(19200);
Serial.println(“Inicializando…”);
delay(1000);
Serial.println(“Prontinho…”);
gprsSerial.flush();
Serial.flush();

//inicializar o serviço GPRS
gprsSerial.println(“AT+CGATT?”);
delay(1000);
toSerial();

// Configurações da Portadora
gprsSerial.println(“AT+SAPBR=3,1,\”CONTYPE\”,\”GPRS\””);
delay(1000);
toSerial();

// Configurações da Portadora
gprsSerial.println(“AT+SAPBR=3,1,\”APN\”,\”timbrasil.br\””);
delay(1000);
toSerial();

// Configurações da Portadora
gprsSerial.println(“AT+SAPBR=0,1”);
delay(1000);
gprsSerial.println(“AT+SAPBR=1,1”);
delay(1000);
toSerial();

}

void loop(){

//////////////////////////////////////////////////////// GPS ///////////////////////////////////////////////////////////

/////// Aqui o GPS pega os dados
while (ss.available() > 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
ve = “”;
la = “”;
lo = “”;

ve = String(gps.speed.kmph());
la = String(gps.location.lat() ,6);
lo = String(gps.location.lng() ,6);

Serial.println(“——— GPS ———“);
Serial.print(“Latitude: “);
Serial.println(la);
Serial.print(“Longitude: “);
Serial.println(lo);
Serial.print(“Velocidade: “);
Serial.println(ve);
Serial.println(“—— END GPS ——–“);
delay(3000);

//////////////////////////////////////////////////////// GPRS ///////////////////////////////////////////////////////////
// Inicializando o serviço HTTP – GPRS
gprsSerial.println(“AT+HTTPINIT”);
delay(1000);
toSerial();

gprsSerial.println(“”);
String url = “AT+HTTPPARA=\”URL\”,\”http://www.seusite.com.br/index.php”;
url.concat(“?latitude=”);
url.concat(la);
url.concat(“&longitude=”);
url.concat(lo);
url.concat(“&velocidade=”);
url.concat(ve);
url.concat(“&veiculo=”);
url.concat(“FUSCA AMARELO”);
url.concat(“\””);
gprsSerial.print(url);
gprsSerial.println(“”);

delay(5000);
toSerial();

// Tipo requisição: 0=GET, 1=POST, 2=HEAD
gprsSerial.println(“AT+HTTPACTION=0”);
delay(5000);
toSerial();

// Lendo a resposta do servidor
gprsSerial.println(“AT+HTTPREAD”);
delay(5000);
toSerial();

gprsSerial.println(“”);
gprsSerial.println(“AT+HTTPTERM”);
toSerial();
delay(300);

Serial.println(“Aguardando 1 minuto…”);
//Aguardando 1 minuto
delay(60000);

}
}
}

 

void toSerial(){
while(gprsSerial.available()!=0){
Serial.write(gprsSerial.read());
}
}

Deixe um comentário