Sistema de seguimiento de vehículos DIY GPS GSM en Maduino

Sistema de seguimiento de vehículos DIY GPS GSM en Maduino

octubre 30, 2020

GPS-Vehículo-Rastreo-Sistema-con-Maduino
En este proyecto, aprenderemos cómo DIY GPS GSM Vehicle Tracking System en Arduino, utilizando la placa Maduino zero A9G.

1. Descripción general: Sistema de seguimiento de vehículos GPS Arduino

En este proyecto, aprenderemos cómo hacer un sistema de seguimiento de vehículos basado en GPS y GSM utilizando Arduino. La mayor parte del sistema de seguimiento de vehículos disponible en el mercado es demasiado costoso. Entonces, decidí hacer mi propio sistema de seguimiento. El sistema de seguimiento de vehículos le enviará la ubicación a su teléfono móvil junto con la coordenada del mapa de Google. Puede solicitar la ubicación en cualquier momento y ver la ubicación en Google Maps instalado en su teléfono móvil.
Esta es una solución más barata que un sistema de comunicación GPS bidireccional donde la comunicación se realiza en ambos sentidos con satélites GPS. Este proyecto utiliza solo un dispositivo GPS y la comunicación bidireccional se logra utilizando un módem GSM. El módem GSM con una tarjeta SIM 2G se utiliza para la comunicación entre el dispositivo y el teléfono móvil.
Para este proyecto, tengo que seleccionar un módulo GSM y GPS de baja potencia adecuado. Entonces, seleccioné el módulo A9G GSM / GPRS / GPS. El dispositivo es muy pequeño y puede caber en cualquier lugar y puede ser operado con una simple batería de iones de litio de 3.7V. La placa tiene un controlador ATSAMD21 de 32 bits de Atmel que se puede programar utilizando Arduino IDE. También puede hacer este proyecto utilizando el módulo GPS Neo-6M y el módulo SIM 800 / 900 GSM con placa Arduino UNO. Pero esto hará que el tamaño del dispositivo sea grande. Discutiremos en detalle sobre este sistema de seguimiento de vehículos basado en GPS y GSM de Arduino.

2. Maduino Zero A9G GPRS / GPS Board

Este es un módulo A9G GSM + GPS + GPRS de baja potencia integrado con el microcontrolador SAMD21 de Atmel de 32 bits. Su parte frontal y trasera se ven algo así.
Maduino-Zero-A9G-GPRS-GPS-Board

El desarrollador del A9G GSM GPS Module esAi-Pensador. El módulo puede serProgramadoVíaPuerto micro USBy se puede alimentar a través de una batería de iones de litio de 3.7V. Tiene un interruptor para encender y apagar. Los pines digitales de entrada-salida están ahí y se pueden usar para conectar cualquier otro módulo o sensor.
Arduino tiene un controlador de 8 bits pero tiene un Atmel de 32 bitsATSAMD21G18controlador, lo que hace que el dispositivo sea súper rápido. Tiene un CI regulador de voltaje para controlar el exceso de voltaje. Del mismo modo, hay dos antenas, una es la antena GSM y otra la antena GPS. El problema de la señal no se ve en este módulo debido a su mejor diseño. Puedes insertar una micro sim aquí. Recuerde que este es solo un módem 2G, por lo que solo se puede usar 2G Sim de acuerdo con la banda de frecuencia. También tiene un puerto Micro-SD. También puede utilizar una tarjeta SD para guardar los datos en formato de texto.
Maduino-Zero-A9G-GPS-GSM

La placa no necesita ningún conector de CC externo ni una fuente de alimentación superior. Se puede alimentar con una batería de iones de litio de 3.7V, 100mah. Hay dos puertos de batería en el módulo, un puerto es para la carga de la batería y el otro para la fuente de alimentación de la batería. Una vez que la batería esté conectada, puede deslizar el interruptor para encender el dispositivo. Hay dos LED que indican el estado de la alimentación.

Este tablero es ensamblado y fabricado por Makerfabs, una de las mejores empresas emergentes en China. Puedes adquirir directamente esta placa desde el siguiente enlace://makerfabs.com/maduino-zero-a9g.html
Si desea aprender la interfaz básica y cómo usar los comandos AT con el módulo A9G, puede seguir los siguientes proyectos anteriores a continuación. Aparte de eso, también puede aprender sobre el proyecto de rastreo GPS junto con el proyecto SMS y la conectividad IoT celular.
1. Módulo básico A9G GPRS / GSM Tutorial de Arduino:Consulta aquí
2. Rastreador GPS usando Arduino y A9G:Consulta aquí
3. IoT celular usando Arduino y A9G:Consulta aquí

Ahora avancemos hacia nuestro proyecto principal, es decir, el sistema de seguimiento de vehículos basado en GPS + GSM utilizando Arduino.

3. Sistema de seguimiento de vehículos basado en GPS + GSM usando Arduino

No necesita ninguna parte de hardware externa, excepto conectar la batería. Toda la parte de documentación se explica anteriormente. Ahora vamos a configurar directamente a la parte de configuración del IDE de Arduino.
El IDE de Arduino no tiene ningún soporte preinstalado para la placa SAMD. Por lo tanto, primero debe agregar la placa al IDE de Arduino. Entonces, vaya al gerente de la junta y busque Arduino Zero.
Arduino-Cero
Así que aquí está la placa ARM Cortex de 32 bits. Puede instalar esta placa.
En la parte de hardware, conecte el cable micro USB a la placa Maduino Zero. Y también conecte el otro extremo al puerto USB de la computadora.
Ahora vaya a las herramientas, aquí encontrará la placa SAMD de Arduino. Entonces, de la lista, seleccione el puerto USB nativo de Arduino Zero. También de la lista seleccione el puerto com.
Maduino-Zero-A9G-3V3

4. Código fuente/Programa

Entonces, puedes ver el programa aquí. Es un poco diferente en comparación con otros módulos GPS GSM y placas Arduino. El comando AT AT+GPS=1 encenderá el GPS de la placa. Del mismo modo, AT + LOCATION = 2 recuperará la ubicación GPS como código de latitud y longitud.
Copie el código completo y cárguelo en la placa Arduino Zero.
#include
 
#define DEBUG true
 
int PWR_KEY = 9;
int RST_KEY = 6;
int LOW_PWR_KEY = 5;
 
String msg = String("");
int SmsContentFlag = 0;
String mob;
Cadena loct;
void setup()
{
  pinMode(PWR_KEY, SALIDA);
  pinMode(RST_KEY, SALIDA);
  pinMode(LOW_PWR_KEY, SALIDA);
  digitalWrite(RST_KEY, LOW);
  digitalWrite(LOW_PWR_KEY, ALTA);
  digitalWrite(PWR_KEY, ALTA);
 
      String msg = String("");
  int SmsContentFlag = 0;
 
SerialUSB.begin(115200);
  Serial1.begin(115200);
  modulePowerOn();
  retraso (2000);
  SerialUSB.println("Módulo de comprobación...");
  int i = 1;
  String res;
  mientras que (i) {
    Serial1.println("AT");
    while (Serial1.available() > 0) {
      if (Serial1.find("OK"))
        i = 0;
    }
    retraso(500);
  }
  SerialUSB.println("Módulo conectado");
  GprsTextModeSMS();
  SerialUSB.print("Modo de texto: ");
  i = 1;
  mientras que (i) {
    Serial1.println("AT+CMGF=1\r");
    while (Serial1.available() > 0) {
      if (Serial1.find("OK"))
        i = 0;
    }
    retraso(500);
  }
  SerialUSB.println("ON");
  Serial1.println("AT+GPS=1");
  SerialUSB.println("GPS Intializing...");
  retraso (5000);
  SerialUSB.println("GPS inicializado");
  SerialUSB.flush();
  i = 1;
  String str;
  mientras que (i) {
    Serial1.println("AT+LOCATION=2");
    retraso(100);
    while (Serial1.available() = 0 ) 
  {
    SerialUSB.println( "*** GPRS Shield registrado en la red móvil ***" );
    GprsTextModeSMS();
  }
 
ES: mensaje no solicitado recibido al recibir un mensaje SMS
  if ( msg.indexOf( "+CIEV" ) >= 0 )
  {
    SerialUSB.println( "*** SMS recibidos ***" );
  }
 
EN: almacén de SMS leído a través de UART (resultado de la solicitud GprsReadSmsStore)
  if ( msg.indexOf( "+CMT:" ) >= 0 )
  {
    EN: El siguiente mensaje contendrá el CUERPO de SMS
    SmsContentFlag = 1;
    ES: ¡Las siguientes líneas son esenciales para no limpiar la bandera!
    ClearGprsMsg();
    devolución;
  }
 
EN: +CMGR mensaje justo antes indican que el siguiente mensaje GRPS Shield
  (este mensaje) contendrá el cuerpo del SMS
  if ( SmsContentFlag == 1 )
  {
    SerialUSB.println( "*** CONTENIDO DEL MENSAJE SMS ***" );
    SerialUSB.println( msg );
    SerialUSB.println( "*** FIN DEL MENSAJE SMS ***" );
    ProcessSms( msg );
  }
 
/*ClearGprsMsg();
    ES: Borrar siempre la bandera
    SmsContentFlag = 0; */
}

5. Funcionamiento del Arduino GPS + GSM Seguimiento de vehículos

Después de cargar el código, abra el monitor serie. El monitor serie mostrará el mensaje de inicialización. Si la ubicación es fija, el monitor serie mostrará la latitud y la longitud. Si la ubicación aún no se recupera, el monitor serie seguirá mostrando el módulo de comprobación.
GPS-GSM-Based-Vehicle-Tracking-System-with-Arduino

Ahora puedes enviar elSMSpara obtener la ubicación. Entonces, en su teléfono móvil, abra la aplicación de mensajería y luego ingrese el número de teléfono de la SIM utilizada en la placa Arduino Zero. Después de eso, escriba la palabra"Ubicación", y luego simplemente envíelo.
Monitor de serie

Dentro de un tiempo, el monitor serie mostrará el estado del mensaje recibido y también informará sobre la fecha y hora y el número de teléfono móvil. Del mismo modo, recibirá un SMS en su teléfono móvil con la coordenada Latitude Longitude. Junto con la coordenada, recibirá un enlace a google maps. Puede hacer clic en el enlace y abrirlo usando Google Maps o usando un navegador Chrome.
Rastreador GPS.jpg

Entonces, pueden ver que apunta a la misma ubicación donde estoy ahora. Este es realmente un gran proyecto y se puede implementar en sus vehículos para unProyecto de seguimiento de vehículos. Se puede utilizar para controlar el robo del vehículo. O se puede usar para encontrar la ubicación de alguien que está usando su vehículo.

6. Proyecto de rastreador GPS basado en Arduino usando SIM800 / 900 y módulo GPS NEO-6M

El mismo proyecto se puede hacer utilizando la placa Arduino UNO, el módulo GSM SIM900 o SIM800, y también el módulo de rastreo GPS NEO-6M. También se agrega una pantalla LCD adicional al circuito para mostrar el estado.
GSM-GPS-Based-Vehicle-Tracking-System-Arduino

7. Código fuente/Programa

Aquí está la fuente para el circuito anterior que se basa en el módulo SIM800 / 900 GSM y el módulo GPS NEO-6M. Este código es un poco más pequeño y requiere una pequeña modificación, como reemplazar un número de teléfono móvil. Por lo tanto, el sistema de seguimiento de vehículos basado en GPS que utiliza Arduino se puede probar fácilmente.
#include 
#include 
#include
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
 
static const int RXPin = 4, TXPin = 3;
const estática uint32_t GPSBaud = 9600;
El objeto TinyGPS++
TinyGPSPlus gps;
int temp=0,i;
La conexión serie al dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
String stringVal = "";
void setup(){
  Serial.begin(9600);
  ss.begin(GPSBaud);
  lcd.begin(16,2);
  pinMode(13,SALIDA);
  digitalWrite(13,LOW);
  lcd.print("Seguimiento de vehículos");
  lcd.setCursor(0,1);
  lcd.print(" Sistema ");
  retraso (2000);
  gsm_init();
  lcd.clear();  
  Serial.println("AT+CNMI=2,2,0,0,0");
  lcd.print("Inicialización GPS");
  lcd.setCursor(0,1);
  lcd.print(" Sin alcance GPS ");
  retraso (2000);
  lcd.clear();
  lcd.print("Alcance GPS encontrado");
  lcd.setCursor(0,1);
  lcd.print("GPS está listo");
  retraso (2000);
  lcd.clear();
  lcd.print("Listo para el sistema");
  temp=0;
}
 
void loop()
{
serialEvent();
 
while(temp)
      {
        while (ss.available() > 0)
        {
          gps.encode(ss.read());
                if (gps.location.isUpdated())
                {
                 temp=0;
                 digitalWrite(13,ALTO);
                 seguimiento();
                }
          if(!temp)
          quebrar;  
        }
      }
      digitalWrite(13,LOW);
}
void serialEvent()
{
  while(Serial.available()>0)
  {
    if(Serial.find("Rastrear vehículo"))
    {
      temp=1;
      quebrar;
    }
    más
    {
    temp=0;
    }
  }
}
void gsm_init()
{
  lcd.clear();
  lcd.print("Módulo de búsqueda..");
  booleano at_flag=1;
  mientras(at_flag)
  {
    Serial.println("AT");
    retraso(1);
    while(Serial.available()>0)
    {
      if(Serial.find("Aceptar"))
      at_flag=0;
    }
    
retraso(1000);
  }
  lcd.clear();
  lcd.print("Módulo conectado..");
  retraso(1000);
  lcd.clear();
  lcd.print("Desactivación de ECHO");
  booleano echo_flag=1;
  mientras(echo_flag)
  {
    Serial.println("ATE0");
    while(Serial.available()>0)
    {
      if(Serial.find("Aceptar"))
      echo_flag=0;
    }
    retraso(1000);
  }
  lcd.clear();
  lcd.print("Echo OFF");
  retraso(1000);
  lcd.clear();
  lcd.print("Finding Network..");
  booleano net_flag=1;
  mientras(net_flag)
  {
    Serial.println("AT+CPIN?");
    while(Serial.available()>0)
    {
      if(Serial.find("+CPIN: READY"))
      net_flag=0;
    }
    retraso(1000);
  }
  lcd.clear();
  lcd.print("Red encontrada..");
  
retraso(1000);
  lcd.clear();
}
void init_sms()
{
  Serial.println("AT+CMGF=1");
  retraso(400);
  Serial.println("AT+CMGS=\"850xxxxxxx\"");   Use su número de celda de 10 dígitos aquí
  retraso(400);
}
void send_data(mensaje de cadena)
{
  Serial.print(mensaje);
retraso(200);
}
void send_sms()
{
  Serial.write(26);
}
void lcd_status()
{
  lcd.clear();
  lcd.print("Mensaje enviado");
  retraso (2000);
  lcd.clear();
  lcd.print("Listo para el sistema");
  devolución;
}
Seguimiento de vacíos()
{
    init_sms();
    send_data("Alerta de seguimiento de vehículos");
    Serial.println(" ");
    send_data("La ubicación actual de su vehículo es:");
    Serial.println(" ");
    Serial.print("Latitud: ");
    Serial.print(gps.location.lat(), 6);
    Serial.print("\n Longitud: ");
    Serial.println(gps.location.lng(), 6);
 
//www.google.com/maps/@8.2630696,77.3022699,14z
   Serial.print("//www.google.com/maps/@");
   Serial.print(gps.location.lat(), 6);
   Serial.print(',');
   Serial.print(gps.location.lng(), 6);
   Serial.print(",14z");
    send_sms();
    retraso (2000);
    lcd_status();
}++.h>

8. Video Tutorial y Guía


Este artículo está publicado originalmente enHow2electronics. Si tiene más preguntas o necesita algunas personalizaciones de PCBA basadas en esas placas Maduino IoT, no dude en ponerse en contacto conservice@makerfabs.com.guiño

Contáctenos