SIM808 fallo al iniciar gps

Hola, estoy trabando con una placa sim808 con la librería DFRobot_sim808.h
inicia satisfactoriamente el modulo, pero cuando llega a iniciar el GPS no lo hace, este el código que estoy utilizando.

Les agradezco si pudieran apoyarme.

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

#define MESSAGE_LENGTH 160
char message[MESSAGE_LENGTH];
int messageIndex = 0;
char MESSAGE[300];
char lat[12];
char lon[12];
char wspeed[12];
char gprsBuffer[64];
char phone[16];
char datetime[24];

#define PIN_TX    10
#define PIN_RX    11

SoftwareSerial mySerial(PIN_TX,PIN_RX);
DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,

void sendSMS();
void getGPS();
void readSMS();

void setup()
{
  mySerial.begin(9600);
  Serial.begin(9600);
  pinMode(9,OUTPUT);
  digitalWrite(9,HIGH);
  delay(1000);
  
  //******** Initialize sim808 module *************
  while(!sim808.init())
  {
      Serial.print("Sim808: fallo en la inicializacion\r\n");
      delay(1000);
  }
  delay(3000);
      
  Serial.println("SIM: modulo funcionando correctamente!");
}



void loop()
{
  
  
  //*********** Detecting unread SMS ************************
   messageIndex = sim808.isSMSunread();

   //*********** At least, there is one UNREAD SMS ***********
   if (messageIndex > 0)
   {
     getGPS();
      sendSMS();
      sim808_clean_buffer(gprsBuffer,64);
   }
}

void readSMS()
{
      Serial.print("messageIndex: ");
      delay(100);
      Serial.println(messageIndex);
      
      sim808.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime);
                 
      //***********In order not to full SIM Memory, is better to delete it**********
      sim808.deleteSMS(messageIndex);
}

void getGPS()
{
  
  while(!sim808.attachGPS())
  {
    Serial.println("Fallo al iniciar GPS");
  }
  Serial.println("GPS encendido!");
  delay(200);

  while(!sim808_check_with_cmd("AT+CGPSSTATUS?\r\n", "+CGPSSTATUS: Location 2D Fix", CMD) && !sim808_check_with_cmd("AT+CGPSSTATUS?\r\n", "+CGPSSTATUS: Location 3D Fix", CMD))
  {
    Serial.println("Adquiriendo datos del GPS");
  }

  mySerial.println("AT+CGPSOUT=32");

  while(!sim808.getGPS());
  mySerial.println("AT+CGPSOUT=0");
      
      Serial.print("latitud :");
      Serial.println(sim808.GPSdata.lat);
      Serial.print("longitud :");
      Serial.println(sim808.GPSdata.lon);
      Serial.print("Velocidad del viento :");
      Serial.println(sim808.GPSdata.speed_kph);
      Serial.println();

      float la = sim808.GPSdata.lat;
      float lo = sim808.GPSdata.lon;
      float ws = sim808.GPSdata.speed_kph;

      dtostrf(la, 6, 2, lat); //put float value of la into char array of lat. 6 = number of digits before decimal sign. 2 = number of digits after the decimal sign.
      dtostrf(lo, 6, 2, lon); //put float value of lo into char array of lon
      dtostrf(ws, 6, 2, wspeed);  //put float value of ws into char array of wspeed

  sprintf(MESSAGE, "Latitud : %s\nLongitud : %s kph\nhttp://maps.google.com/maps?q=%s,%s\n", lat, lon, lat, lon);
      
}

void sendSMS()
{
  Serial.println("Enviando mensaje...");
  Serial.println(MESSAGE);
  Serial.println(phone);
  sim808.sendSMS(phone,MESSAGE);
}

error

¿Puedes explicar un poco más claramente?
¿Qué no hace?

No inicia el modulo GPS

while(!sim808.attachGPS()) { Serial.println("Fallo al iniciar GPS"); }

se queda en esta linea no sale del while

¿Has mirado si hay conexiones sueltas? ¿Puedes publicar una fotografía de tu hardware?

Si, estoy haciendo pruebas en la protoboard con una arduino nano

¿Ese módulo te permite conectar dos antenas al mismo tiempo? ¿Has mirado la hoja de datos?

Si, este modulo permite conectar dos antenas al mismo tiempo
con el código lo que se quiere lograr es obtener la ubicación de gps y enviarla a través de un mensaje de texto.
SIM808

he intentado probar la antena gsm y si esta enviando y recibiendo mensajes de texto, el problema es con la antena del gps

1 Like

Debe intentar usar el GPS solo para comprobar si se trata de un problema de hardware o de software. ¿Puedes probar eso? Elimine el GSM del código y solo use GPS.

Y prueba este tutorial:

Está en inglés, el traductor de Google es tu amigo.

1 Like

Muchas gracias por su apoyo.
Creo que mas bien es un problema de hardware con el modulo, ya probé el código del tutorial y sigue enviando el mismo error

¡Es una vergüenza! ¡Avísanos si lo solucionaste!

No tiene que ver con tu problema pero considera no hacer proyectos con módulos SIM800 o 900. Las redes solo permiten comunicacones GPRS en 2G hasta EDGE o sea todo lo que este por debajo de 3G.
Asi que te limita a envio de SMS y en este caso el uso GPS pero por lo demas puedes experimentar problemas.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.