Paso 3: Otra configuración y código
La antena GPS y GPRS a likit uno y también insertar la tarjeta sim en la ranura. Inserte una pila si quieres hacer portable. El código es:-
#include
#include
información de gpsSentenceInfoStruct; buff de Char [256]; char la url [120]; int arreglo = 0;
const int noofDest = 2; const char * números [] = {"0123456789", "0123456789"}; nos que va a recibir el sms cada vez char incoming_num [21] = "0123456789"; Este no.will solo recibir sms cuando enviamos cualquier sms a este no. mensaje de Char [256];
int ButtonPin = 2;
Static unsigned char getComma (unsigned char num, const char * str) {unsigned char i, j = 0; int len=strlen(str); para (i = 0; i < len; i ++) {si (str [i] == ',') j ++; if(j == num) volver i + 1;} return 0;}
estática getDoubleNumber doble (const char * s) {char buf [10]; unsigned char i doble rev; me = getComma (1, s); i = i - 1; strncpy (buf, s, i); buf [i] = 0; rev=atof(buf); rev vuelta;}
estática getIntNumber doble (const char * s) {char buf [10]; unsigned char i doble rev; me = getComma (1, s); i = i - 1; strncpy (buf, s, i); buf [i] = 0; rev=atoi(buf); rev vuelta;}
Float toWGS84(float nmeaCoord) {float degWhole = float(int(nmeaCoord/100)); float degDec = (nmeaCoord - degWhole * 100) / 60; volver degWhole + degDec;}
void parseGPGGA (const char * GPGGAstr) {/ * Referencia: http://www.gpsinformation.org/dale/nmea.htm#GGA * doble latitud doble longitud; int tmp, hora, minuto, segundo, num; si (GPGGAstr [0] == '$') {tmp //latitude = getComma (2, GPGGAstr); latitud = getDoubleNumber (& GPGGAstr[tmp]); tmp = getComma (3, GPGGAstr); / / N o S flotador latWGS84 = toWGS84(latitude); if (de ' == GPGGAstr[tmp]) {latWGS84 = - latWGS84; / / negar si hemisferio sur coordinar} //longitude tmp = getComma (4, GPGGAstr); longitud = getDoubleNumber (& GPGGAstr[tmp]); tmp = getComma (5 GPGGAstr); LonWGS84 flotador E o W = toWGS84(longitude); Si ('W' == GPGGAstr[tmp]) {lonWGS84 = - lonWGS84; / / negar si occidental coordinar} sprintf (url, "http://maps.google.com/?q=%f, %f", latWGS84, lonWGS84);
Ubicación fix tmp = getComma (6, GPGGAstr); Fix = getIntNumber (& GPGGAstr[tmp]); } else {Serial.println ("datos No GPS");}}
void send_sms (char * número, char * mensaje) {LSMS.beginSMS(number); para (int i = 0; i < strlen(message); i ++) {LSMS.write(message[i]);} LSMS.endSMS(); }
void setup() {pinMode (ButtonPin, INPUT_PULLUP); Serial.Begin(115200); LGPS.powerOn(); Serial.println ("LGPS encendido, esperando..."); Delay(3000); }
void loop() {LGPS.getData (e información); Serial.Print ((char*) info. GPGGA); parseGPGGA ((const char*) información. GPGGA);
if(digitalRead(ButtonPin) == LOW) {si (fix! = 0) {sprintf (mensaje, "por favor me ayude!. Ubicación actual: %s ", url); } else {sprintf (mensaje, "me ayuda. Última localización: %s ", url); } Serial.println(message); para (int i = 0; i < noofDest; i ++) {char num [20]; sprintf (num, numbers[i]); send_sms (num, mensaje);} delay(5000); } / / Respuesta SMS entrantes devolviendo la posición if(LSMS.available()) {LSMS.remoteNumber (incoming_num, 20); si (fijar! = 0) {sprintf (mensaje, "ubicación actual: %s", url);} else {sprintf (mensaje, "última ubicación: %s", url);} Serial.println(Message); SEND_SMS (incoming_num, mensaje); LSMS.flush(); } }