Advertisement
safwan092

Untitled

Aug 24th, 2023
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.97 KB | None | 0 0
  1. #include <TinyGPSPlus.h>
  2. #include <SoftwareSerial.h>
  3. static const int RXPin = 4, TXPin = 5;
  4. String s = "www.google.com/maps/dir/";
  5. String LAT = "";
  6. String LON = "";
  7. unsigned long interval = 1000;
  8. unsigned long previousMillis = 0;
  9. int data_counter;
  10. String msg ;
  11.  
  12. const size_t BUFSIZE = 300;
  13. char f_buffer[BUFSIZE];
  14. float *f_buf = (float*)f_buffer;
  15.  
  16. TinyGPSPlus gps;// The TinyGPSPlus object
  17. SoftwareSerial mySerial(RXPin, TXPin);// The serial connection to the GPS device
  18.  
  19. void setup() {
  20. Serial.begin(9600);
  21. mySerial.begin(9600);
  22. delay(1000);
  23.  
  24. Serial.println("Starting...");
  25. mySerial.println("\r");
  26. mySerial.println("AT\r");
  27. delay(10);
  28.  
  29. mySerial.println("\r");
  30. mySerial.println("AT+GPS=1\r");
  31.  
  32. delay(100);
  33. mySerial.println("AT+CREG=2\r");
  34. delay(6000);
  35.  
  36. //ss.print("AT+CREG?\r");
  37. mySerial.println("AT+CGATT=1\r");
  38. delay(6000);
  39.  
  40. mySerial.println("AT+CGDCONT=1,\"IP\",\"WWW\"\r");
  41. delay(6000);
  42.  
  43. // ss.println("AT+LOCATION=1\r");
  44. mySerial.println("AT+CGACT=1,1\r");
  45. delay(6000);
  46.  
  47. //Initialize ends
  48. //Initialize GPS
  49. mySerial.println("\r");
  50. mySerial.println("AT+GPS=1\r");
  51. delay(1000);
  52.  
  53. //ss.println("AT+GPSMD=1\r"); // Change to only GPS mode from GPS+BDS, set to 2 to revert to default.
  54. mySerial.println("AT+GPSRD=10\r");
  55. delay(100);
  56.  
  57. // set SMS mode to text mode
  58. mySerial.println("AT+CMGF=1\r");
  59. delay(1000);
  60.  
  61. //ss.println("AT+LOCATION=2\r");
  62.  
  63. Serial.println("Setup Executed");
  64. }
  65.  
  66. void loop() {
  67. smartDelay(1000);
  68. readSMS();
  69. /*
  70. // Check for incoming SMS
  71. //if (mySerial.available()) {
  72. //String sms = mySerial.readString();
  73.  
  74. Serial.println(sms);
  75. s += String(gps.location.lat(), 6);
  76. s += ",";
  77. s += String(gps.location.lng(), 6);
  78. s += "/";
  79.  
  80. //s = "new_new_24-08-2023";
  81. Serial.println(s);
  82. s = "www.google.com/maps/dir/";
  83. if (sms.indexOf("+CMT:") != -1) {
  84. // Get the sender's phone number
  85. String sender = sms.substring(sms.indexOf("+966"), sms.indexOf("\",,\"20"));
  86. Serial.println("Sender Number: ");
  87. Serial.println(sender);
  88. // Read the SMS message
  89. String message = sms.substring(sms.indexOf("GPS"));
  90. //message.trim();
  91. Serial.println("SMS Content: ");
  92. Serial.println(message);
  93. // Check if the SMS contains a specific keyword
  94. if (message.indexOf("GPS") != -1) {
  95. Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
  96. Serial.println("GPS SMS Detected");
  97. Serial.println(sender);
  98. Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
  99. send_gps_data(sender);
  100. /*
  101. // Get GPS coordinates
  102. mySerial.println("AT+GPSRD=2");
  103. delay(1000);
  104.  
  105. // Read GPS coordinates
  106. String gpsData = mySerial.readString();
  107. gpsData.trim();
  108.  
  109. // Extract latitude and longitude
  110. int commaIndex = gpsData.indexOf(',');
  111. String latitude = gpsData.substring(0, commaIndex);
  112. String longitude = gpsData.substring(commaIndex + 1);
  113.  
  114. // Compose SMS reply with coordinates
  115. String reply = "Latitude: " + latitude + "\nLongitude: " + longitude;
  116.  
  117. // Send SMS reply
  118. Serial.println("Sending Message");
  119.  
  120. mySerial.println("AT+CMGF=1\r");
  121. delay(1000);
  122.  
  123. mySerial.println("AT+CNMI=2,2,0,0,0\r");
  124. delay(1000);
  125.  
  126.  
  127. mySerial.print("AT+CMGS=\"");
  128. mySerial.print(sender);
  129. mySerial.print("\"\r");
  130. delay(1000);
  131. mySerial.print(reply);
  132. mySerial.write(0x1A);
  133. delay(1000);
  134. //mySerial.write(26); // CTRL+Z to send the SMS
  135. */
  136. //}
  137. //}
  138. //}
  139.  
  140. }//end of loop
  141.  
  142.  
  143.  
  144. void send_gps_data(String NUMBER) {
  145. /*
  146. if (gps.location.lat() == 0 || gps.location.lng() == 0)
  147. {
  148. Serial.println("Return Executed");
  149. return;
  150. }
  151. */
  152.  
  153. Serial.print(LAT);
  154. Serial.print(" , ");
  155. Serial.println(LON);
  156. Serial.println();
  157. Serial.println();
  158. Serial.println();
  159. Serial.println();
  160. Serial.println();
  161. s += LAT;
  162. s += ",";
  163. s += LON;
  164. s += "/";
  165.  
  166. //s = "new_new_24-08-2023";
  167. Serial.println(s);
  168.  
  169. Serial.println("Sending Message");
  170.  
  171. mySerial.println("AT+CMGF=1\r");
  172. delay(1000);
  173.  
  174. mySerial.println("AT+CNMI=2,2,0,0,0\r");
  175. delay(1000);
  176.  
  177. mySerial.print("AT+CMGS=\"");
  178. mySerial.print(NUMBER);
  179. mySerial.print("\"\r");
  180. delay(1000);
  181. mySerial.print(s);
  182. mySerial.write(0x1A);
  183. delay(1000);
  184. s = "www.google.com/maps/dir/";
  185.  
  186. }
  187.  
  188. void smartDelay(unsigned long ms)
  189. {
  190. unsigned long start = millis();
  191. do
  192. {
  193. while (mySerial.available())
  194. gps.encode(mySerial.read());
  195. LAT = String(gps.location.lat(), 6);
  196. LON = String(gps.location.lng(), 6);
  197. Serial.print(LAT);
  198. Serial.print(" , ");
  199. Serial.println(LON);
  200. //String sms = mySerial.readString();
  201. //Serial.println(sms);
  202. } while (millis() - start < ms);
  203. }
  204. String sms;
  205. void readSMS() {
  206. unsigned long start = millis();
  207. do
  208. {
  209. while (mySerial.available())
  210. sms = mySerial.readString();
  211. Serial.println(sms);
  212. if (sms.indexOf("+CMT:") != -1) {
  213. // Get the sender's phone number
  214. String sender = sms.substring(sms.indexOf("+966"), sms.indexOf("\",,\"20"));
  215. Serial.println("Sender Number: ");
  216. Serial.println(sender);
  217. // Read the SMS message
  218. //msg = sms.substring(sms.indexOf("GPS"));
  219. //message.trim();
  220. //Serial.println("SMS Content: ");
  221. //Serial.println(msg);
  222. // Check if the SMS contains a specific keyword
  223. //if (msg.indexOf("GPS") != -1) {
  224. Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
  225. Serial.println("GPS SMS Detected");
  226. Serial.println(sender);
  227. Serial.println("|||||||||||||||||||||||||||||||||||||||||||||||||||");
  228. send_gps_data(sender);
  229. delay(5000);
  230.  
  231. }
  232. } while (millis() - start < 20000);
  233. }
  234.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement