GloboSondaV1/PruebaModuloSim/PruebaModuloSim.ino

114 lines
2.3 KiB
C++

#include <SPI.h>
#include <SD.h>
#include "stdio.h"
//librerias propias--------------------
#include "utiles.h"
#include "Sim808Manager.h"
unsigned long milliseconds=100;
//inicializacion sensores
Sim808Manager sim808;
unsigned long timer=millis();
unsigned long incremento=5000;//5 seg
char strFecha[24];
int veces=0;
void setup() {
// initialize both serial ports:
//Serial1.begin(19200);
//SIM808.begin(19200);
initCOM();
//inicia modulo sim808---------------
Serial2.begin(9600);
if(sim808.inicia(&Serial2, 48))
{
/*
printCOM("envia sms hola");
if(!sim808.EnviaSMS("+34690744597", "hola"))
printCOM("Error al enviar sms data");
*/
printCOM("Modulo sim iniciado...");
printCOM("GPS iniciado...");
DataGPSSimManager* coor=sim808.GetGPSValid();
printCOM("Datos gps validos...");
//envia mensaje inicial------------------------------
enviaData(false);
}
else
{
printCOM("Fallo al iniciar SIM808");
}
printCOM("...FIN INICIALIZACIONES");
}
void loop() {
if(!isTime(&timer,incremento))
{
delay(100);
return;
}
veces++;
bool envia=veces>10;
if(veces>10)
veces=0;
enviaData(false);
}
void enviaData(bool envia)
{
DataGPSSimManager* coor=sim808.GetGPS();
//envia mensaje inicial------------------------------
char buff[160];
char strlat[16];
char strlon[16];
char strfecha[24];
char stralt[16];
char strpres[16];
char strtem[16];
char strtemInt[16];
char strhdop[16];
char strvdop[16];
char precision[12];
dtostrf(coor->lat, 4, 6, strlat);
dtostrf(coor->lon, 4, 6, strlon);
dtostrf(coor->altitude, 6, 1, stralt);
dtostrf(coor->hdop, 2, 2, strhdop);
dtostrf(coor->vdop, 2, 2, strvdop);
sprintf(buff,"APPData;%s;%s;%s;%s; Prec=%s; HDOP=%s; VDOP=%s ",coor->getFecha(strfecha), strlat, strlon, stralt, coor->getPrecision(precision), strhdop, strvdop );
printCOM(buff);
if(!envia)
return;
if(!sim808.EnviaSMS("+34690744597", buff))
printCOM("Error al enviar sms data");
}
/*
* Para log en puerto COM en modo DEBUG
*/
void initCOM()
{
Serial.begin(9600);
Serial.println("Iniciando");
}