Hola, estoy trabajando en un Arduino UNO y un Modulo SIM808, ya he subido los datos de Latitud y Longitud, ahora quiero subir la fecha y hora pero no tengo idea de como hacerlo este es el código que estoy usando
#include "SIM808.h"
#include <SoftwareSerial.h>
#include "gps.h"
#include <String.h>
#define DEBUG true
#define GPSGSM gps;
SoftwareSerial mySerial(11,10); // Rx, Tx
char numero_cell[]="+573007798405"; //Configuración del número Celular
//Declaración e Inicialización de Variables
char frame[160];
char lon[11];
char lat[11];
char alt[11];
char tim[20];
char vel[11];
char velo[11];
char date[24];
char latitud[]="5.767373";
char longitud[]="-72.940041";
char datetime[]="2021";
String latitu ="";
String longitu="";
String velocida="";
String datetim="";
int tamlat;
int tamlon;
int tamdat;
int tamvel;
int cont=0;
void setup()
{
mySerial.begin(2400);
Serial.begin(19200); //Inicializar el puerto a 19200baudios
delay(500);//Tiempo para conectarse a la red móvil
}
void loop() {
delay(1000);
GetSignalQuality();
delay (1000);
GPS();
}
void GetSignalQuality()
{
mySerial.println("AT+CSQ");
delay(100);
int k=0;
while(mySerial.available()!=0)
{
mySerial.read();
k+=1; }
}
//Cremos una función que nos permita calcular los datos de longitud y latitud
//respectivamente
void GPS(){
mySerial.println("AT+CGNSPWR=1"); //comando AT para establecer el módulo
//en modo texto
ShowSerialData();
delay(2000);
mySerial.println("AT+CGNSSEQ=RMC");
ShowSerialData();
delay(3000);
while(1){
mySerial.println("AT+CGNSINF");
ShowSerialData();
String response="";
long int time=millis();
int leer=0;
while((time+1000)>millis()){
while(mySerial.available()){
char c= mySerial.read();
response+=c;
if(leer>45 && leer<55){
latitu+=c;}
if(leer>55 && leer<66){
longitu+=c;}
if(leer>73 && leer<78){
velocida+=c;}
leer++;
}
}
response;
if(velocida[3]==','){
velocida[3]=' ';}
obtenerLatitud();
obtenerLongitud();
obtenerDatetime();
latitu="";
longitu="";
datetim="";
velocida="";
cont++;
if(cont>3){
SubmitHttpRequest();}
else{
delay(15000);}
}
}
//Obtenemos los datos de Latitud
void obtenerLatitud(){
latitu.toCharArray(latitud,10);
latitud;
}
//Obtenemos los datos de Longitud
void obtenerLongitud(){
longitu.toCharArray(longitud,11);
longitud;
}
void obtenerDatetime(){
datetim.toCharArray(datetime,24);
Serial.println(datetime);
}
//Creamos una función que nos permita ñla conexión y a la ves enviar los datos hasta
//el servidor
void SubmitHttpRequest()
{
mySerial.println("AT+CSQ"); //Comprueba la señal en dB
delay(100);
ShowSerialData();
mySerial.println("AT+CGATT?"); //Conectamos con la red GPRS
delay(100);
ShowSerialData();
mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); //Comprobamos la
//señal GPRS
delay(1000);
ShowSerialData();
//configuración de la APN de la operadora escogida
mySerial.println("AT+SAPBR=3,1,\"APN\",\"web.colombiamovil.com.co\"");
//configuración de la APN de la operadora escogida
//mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet.claro.com.ec\"");
delay(2000);
ShowSerialData();
//Configuración del portador para aplicaciones basadas en IP
mySerial.println("AT+SAPBR=1,1");
delay(1000);
ShowSerialData();
mySerial.println("AT+HTTPINIT"); //inicializar el servicio HTTP
delay(1000);
ShowSerialData();
mySerial.print("");
//Enviamos los datos capturados a la siguiente dirección URL
sprintf(frame,"AT+HTTPPARA=\"URL\",\"&Latitud=%s&Longitud=%s&iddispositivo=1&Datetime=%s",latitud, longitud, datetime);
mySerial.print(frame);
mySerial.println("\"");
delay(1000);
ShowSerialData();
//0 GET -- 1 POST
// Acción del método para enviar al servidor utilizando un GET
mySerial.println("AT+HTTPACTION=0");
delay(5000);
ShowSerialData();
//leer la respuesta emitida por el servidor
mySerial.println("AT+HTTPREAD");
delay(300);
ShowSerialData();
mySerial.println("");
delay(45000);
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read());
mySerial.read();
}`