Stap 3: Andere setup en code
De antenne van de GPS en GPRS likit één lid en ook het invoegen van de SIM-kaart in de sleuf zijn geplaatst. Plaats de batterij als u wilt maken het draagbare. De code is:-
#include
#include
gpsSentenceInfoStruct info; char buff [256]; char url [120]; int, fix = 0;
Const int noofDest = 2; const char * nummers [] = {"0123456789", "0123456789"}; amendementen die ontvangt de sms everytime char incoming_num [21] = "0123456789"; deze no.will wordt alleen sms ontvangen wanneer we sturen een sms naar dit geen. char bericht [256];
int ButtonPin = 2;
statische unsigned char getComma (unsigned char num, const char * str) {unsigned char i, j = 0; int len=strlen(str); voor (ik = 0; ik < len; ik ++) {als (str [i] == ',') j ++; if(j == num) return ik + 1;} keren 0;}
statische dubbele getDoubleNumber (const char * s) {char buf [10]; unsigned char ik dubbele rev; ik = getComma (1, s); Ik i - = 1; strncpy (buf, s, i); buf [i] = 0; rev=atof(buf); terugkeer rev;}
statische dubbele getIntNumber (const char * s) {char buf [10]; unsigned char ik dubbele rev; ik = getComma (1, s); Ik i - = 1; strncpy (buf, s, i); buf [i] = 0; rev=atoi(buf); terugkeer rev;}
zweven toWGS84(float nmeaCoord) {zweven degWhole = float(int(nmeaCoord/100)); degDec zweven = (nmeaCoord - degWhole * 100) / 60; return degWhole + degDec;}
VOID parseGPGGA (const char * GPGGAstr) {/ * verwijzing: http://www.gpsinformation.org/dale/nmea.htm#GGA * / double breedte; double lengtegraad; int tmp, uur, minuut, seconde, num; als (GPGGAstr [0] == '$') {//latitude tmp = getComma (2, GPGGAstr); latitude = getDoubleNumber (& GPGGAstr[tmp]); de tmp = getComma (3, GPGGAstr); / / N of S zweven latWGS84 = toWGS84(latitude); als (de ' == GPGGAstr[tmp]) {latWGS84 = - latWGS84; / / ontkennen als zuidelijk halfrond coördineren} //longitude tmp = getComma (4, GPGGAstr); lengtegraad = getDoubleNumber (& GPGGAstr[tmp]); de tmp = getComma (5 GPGGAstr); E of W float-lonWGS84 = toWGS84(longitude); Als ('W' == GPGGAstr[tmp]) {lonWGS84 = - lonWGS84; / / ontkennen als westerse coördineren} sprintf (url, "http://maps.google.com/?q=%f, %f", latWGS84, lonWGS84);
locatie fix tmp = getComma (6, GPGGAstr); Fix = getIntNumber (& GPGGAstr[tmp]); } else {Serial.println ("No GPS-gegevens");}}
VOID send_sms (char-nummer, char-bericht) {LSMS.beginSMS(number); voor (int i = 0; ik < strlen(message); i ++) {LSMS.write(message[i]);} LSMS.endSMS(); }
void setup {pinMode (ButtonPin, INPUT_PULLUP); Serial.begin(115200); LGPS.powerOn(); Serial.println ("LGPS drijven op, wachten..."); delay(3000); }
void loop {LGPS.getData (& info); Serial.Print ((char*) info. GPGGA); parseGPGGA ((const char*) info. GPGGA);
if(digitalRead(ButtonPin) == LOW) {als (fix! = 0) {sprintf (bericht, "Wees zo goed helpmenu!. Huidige locatie: %s ", url); } else {sprintf (bericht, "helpmenu. Laatste locatie: %s ", url); } Serial.println(message); voor (int i = 0; ik < noofDest; i ++) {char num [20]; sprintf (num, numbers[i]); send_sms (num, bericht);} delay(5000); } / / Beantwoorden van binnenkomende SMS door terug te keren van positie if(LSMS.available()) {LSMS.remoteNumber (incoming_num, 20); als (fix! = 0) {sprintf (bericht, "huidige locatie: %s", url);} anders {sprintf (bericht, "laatste locatie: %s", url);} Serial.println(Message); send_sms (incoming_num, bericht); LSMS.flush(); } }