Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <TinyGPSPlus.h>
- #include <SoftwareSerial.h>
- static const int RXPin = 4, TXPin = 5;
- String s = "www.google.com/maps/dir/";
- String LAT = "";
- String LON = "";
- unsigned long interval = 1000;
- unsigned long previousMillis = 0;
- int data_counter;
- String msg ;
- const size_t BUFSIZE = 300;
- char f_buffer[BUFSIZE];
- float *f_buf = (float*)f_buffer;
- TinyGPSPlus gps;// The TinyGPSPlus object
- SoftwareSerial mySerial(RXPin, TXPin);// The serial connection to the GPS device
- void setup() {
- Serial.begin(9600);
- mySerial.begin(9600);
- delay(1000);
- Serial.println("Starting...");
- mySerial.println("\r");
- mySerial.println("AT\r");
- delay(10);
- mySerial.println("\r");
- mySerial.println("AT+GPS=1\r");
- delay(100);
- mySerial.println("AT+CREG=2\r");
- delay(6000);
- //ss.print("AT+CREG?\r");
- mySerial.println("AT+CGATT=1\r");
- delay(6000);
- mySerial.println("AT+CGDCONT=1,\"IP\",\"WWW\"\r");
- delay(6000);
- // ss.println("AT+LOCATION=1\r");
- mySerial.println("AT+CGACT=1,1\r");
- delay(6000);
- //Initialize ends
- //Initialize GPS
- mySerial.println("\r");
- mySerial.println("AT+GPS=1\r");
- delay(1000);
- //ss.println("AT+GPSMD=1\r"); // Change to only GPS mode from GPS+BDS, set to 2 to revert to default.
- mySerial.println("AT+GPSRD=10\r");
- delay(100);
- // set SMS mode to text mode
- mySerial.println("AT+CMGF=1\r");
- delay(1000);
- //ss.println("AT+LOCATION=2\r");
- Serial.println("Setup Executed");
- }
- void loop() {
- smartDelay(1000);
- readSMS();
- /*
- // Check for incoming SMS
- //if (mySerial.available()) {
- //String sms = mySerial.readString();
- Serial.println(sms);
- s += String(gps.location.lat(), 6);
- s += ",";
- s += String(gps.location.lng(), 6);
- s += "/";
- //s = "new_new_24-08-2023";
- Serial.println(s);
- s = "www.google.com/maps/dir/";
- if (sms.indexOf("+CMT:") != -1) {
- // Get the sender's phone number
- String sender = sms.substring(sms.indexOf("+966"), sms.indexOf("\",,\"20"));
- Serial.println("Sender Number: ");
- Serial.println(sender);
- // Read the SMS message
- String message = sms.substring(sms.indexOf("GPS"));
- //message.trim();
- Serial.println("SMS Content: ");
- Serial.println(message);
- // Check if the SMS contains a specific keyword
- if (message.indexOf("GPS") != -1) {
- Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
- Serial.println("GPS SMS Detected");
- Serial.println(sender);
- Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
- send_gps_data(sender);
- /*
- // Get GPS coordinates
- mySerial.println("AT+GPSRD=2");
- delay(1000);
- // Read GPS coordinates
- String gpsData = mySerial.readString();
- gpsData.trim();
- // Extract latitude and longitude
- int commaIndex = gpsData.indexOf(',');
- String latitude = gpsData.substring(0, commaIndex);
- String longitude = gpsData.substring(commaIndex + 1);
- // Compose SMS reply with coordinates
- String reply = "Latitude: " + latitude + "\nLongitude: " + longitude;
- // Send SMS reply
- Serial.println("Sending Message");
- mySerial.println("AT+CMGF=1\r");
- delay(1000);
- mySerial.println("AT+CNMI=2,2,0,0,0\r");
- delay(1000);
- mySerial.print("AT+CMGS=\"");
- mySerial.print(sender);
- mySerial.print("\"\r");
- delay(1000);
- mySerial.print(reply);
- mySerial.write(0x1A);
- delay(1000);
- //mySerial.write(26); // CTRL+Z to send the SMS
- */
- //}
- //}
- //}
- }//end of loop
- void send_gps_data(String NUMBER) {
- /*
- if (gps.location.lat() == 0 || gps.location.lng() == 0)
- {
- Serial.println("Return Executed");
- return;
- }
- */
- Serial.print(LAT);
- Serial.print(" , ");
- Serial.println(LON);
- Serial.println();
- Serial.println();
- Serial.println();
- Serial.println();
- Serial.println();
- s += LAT;
- s += ",";
- s += LON;
- s += "/";
- //s = "new_new_24-08-2023";
- Serial.println(s);
- Serial.println("Sending Message");
- mySerial.println("AT+CMGF=1\r");
- delay(1000);
- mySerial.println("AT+CNMI=2,2,0,0,0\r");
- delay(1000);
- mySerial.print("AT+CMGS=\"");
- mySerial.print(NUMBER);
- mySerial.print("\"\r");
- delay(1000);
- mySerial.print(s);
- mySerial.write(0x1A);
- delay(1000);
- s = "www.google.com/maps/dir/";
- }
- void smartDelay(unsigned long ms)
- {
- unsigned long start = millis();
- do
- {
- while (mySerial.available())
- gps.encode(mySerial.read());
- LAT = String(gps.location.lat(), 6);
- LON = String(gps.location.lng(), 6);
- Serial.print(LAT);
- Serial.print(" , ");
- Serial.println(LON);
- //String sms = mySerial.readString();
- //Serial.println(sms);
- } while (millis() - start < ms);
- }
- String sms;
- void readSMS() {
- unsigned long start = millis();
- do
- {
- while (mySerial.available())
- sms = mySerial.readString();
- Serial.println(sms);
- if (sms.indexOf("+CMT:") != -1) {
- // Get the sender's phone number
- String sender = sms.substring(sms.indexOf("+966"), sms.indexOf("\",,\"20"));
- Serial.println("Sender Number: ");
- Serial.println(sender);
- // Read the SMS message
- //msg = sms.substring(sms.indexOf("GPS"));
- //message.trim();
- //Serial.println("SMS Content: ");
- //Serial.println(msg);
- // Check if the SMS contains a specific keyword
- //if (msg.indexOf("GPS") != -1) {
- Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
- Serial.println("GPS SMS Detected");
- Serial.println(sender);
- Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
- send_gps_data(sender);
- delay(5000);
- }
- } while (millis() - start < 20000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement