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);
}