I redo it but still cannot receive sms.
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
TinyGPSPlus gps;
SoftwareSerial ss(10, 11);
SoftwareSerial SIM(2, 3);
char text[180];
char latitude[12];
char longitude[12];
String phone = "+xxxxxxxxx";
char inchar;
boolean gpsUpdated = false;
boolean smsRequest = false;
void setup()
{
Serial.begin(9600);
SIM.begin(9600);
delay(1000);
ss.begin(9600);
delay(1000);
}
void loop()
{
gpsUpdate();
readSMS();
sendSMS();
}
void gpsUpdate()
{
ss.listen();
delay(500);
while (ss.available())
(gps.encode(ss.read()));
if (gps.location.isUpdated())
{
strcpy(text, "comgooglemaps://?q=");
dtostrf(gps.location.lat(), 1, 6, latitude);
strcat(text,latitude);
strcat(text,",");
dtostrf(gps.location.lng(), 1, 6, longitude);
strcat(text,longitude);
Serial.println(text);
delay(100);
gpsUpdated = true;
}
}
void readSMS()
{
SIM.listen();
if (SIM.available() >0) {
delay(50);
inchar = SIM.read();
}
if (inchar == 'Location')
{
smsRequest = true;
}
}
void sendSMS()
{
if ((gpsUpdated == true) && (smsRequest == true))
{
Serial.println("sending SMS");
SIM.listen();
delay(300);
SIM.print("AT+CMGF=1\r\n");
delay(100);
SIM.println("AT+CMGS=\""+phone+"\"\r\n");
delay(100);
SIM.println(text);
delay(100);
SIM.println((char)26);
delay(100);
SIM.println();
delay(100);
gpsUpdated = false;
smsRequest = false;
}
}