Advertisement
safwan092

Untitled

Jan 7th, 2024
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.18 KB | None | 0 0
  1. #include <TinyGPSPlus.h>
  2. #include <SoftwareSerial.h>
  3.  
  4.  
  5. #define rainSensorPin 2
  6. #define buzzer 3
  7. #define led 4
  8. static const int RXPin = 6, TXPin = 5;
  9. String s = "www.google.com/maps/dir/";
  10. unsigned long interval = 10000;
  11. static const uint32_t GPSBaud = 9600;
  12. unsigned long previousMillis = 0;
  13. String Lat = "";
  14. String Lng = "";
  15. int SendSMS_Now = 0;
  16.  
  17. const size_t BUFSIZE = 300;
  18. char f_buffer[BUFSIZE];
  19. float *f_buf = (float*)f_buffer;
  20.  
  21. TinyGPSPlus gps;// The TinyGPSPlus object
  22. SoftwareSerial ss(RXPin, TXPin);// The serial connection to the GPS device
  23.  
  24.  
  25. void setup()
  26. {
  27. Serial.begin(9600);
  28. pinMode(rainSensorPin, INPUT_PULLUP);
  29. pinMode(buzzer, OUTPUT);
  30. pinMode(led, OUTPUT);
  31. setupA9G();
  32. Serial.println("Setup Executed");
  33. attachInterrupt(digitalPinToInterrupt(rainSensorPin), send_SMS_NOW, CHANGE);
  34.  
  35. }
  36.  
  37. void send_SMS_NOW() {
  38. SendSMS_Now = 1;
  39. }
  40.  
  41. void loop() {
  42. readGPS_Data();
  43. if (SendSMS_Now == 1) {
  44. get_gps_data();
  45. digitalWrite(buzzer, HIGH);
  46. digitalWrite(led, HIGH);
  47. sendSMSwithLocation1();
  48. delay(2000);
  49. sendSMSwithLocation2();
  50. delay(2000);
  51. sendSMSwithLocation3();
  52. delay(2000);
  53. s = "www.google.com/maps/dir/";
  54. SendSMS_Now = 0;
  55. }
  56. digitalWrite(buzzer, LOW);
  57. digitalWrite(led, LOW);
  58. //send_gps_data();
  59.  
  60. }
  61.  
  62. static void smartDelay(unsigned long ms)
  63. {
  64. unsigned long start = millis();
  65. do
  66. {
  67. while (ss.available())
  68. gps.encode(ss.read());
  69. } while (millis() - start < ms);
  70. }
  71.  
  72. void get_gps_data(){
  73. /*if (gps.location.lat() == 0 || gps.location.lng() == 0)
  74. {
  75. Serial.println("Return Executed");
  76. return;
  77. }*/
  78. Serial.print("Latitude (deg): ");
  79. Lat = String(gps.location.lat(), 6);
  80. Serial.println(Lat);
  81. Serial.print("Longitude (deg): ");
  82. Lng = String(gps.location.lng(), 6);
  83. Serial.println(Lng);
  84. Serial.println();
  85. s += String(gps.location.lat(), 6);
  86. s += ",";
  87. s += String(gps.location.lng(), 6);
  88. s += "/";
  89. Serial.println(s);
  90. }
  91.  
  92.  
  93. void setupA9G() {
  94. ss.begin(GPSBaud);
  95. Serial.println("Starting...");
  96. ss.println("\r");
  97. ss.println("AT\r");
  98. delay(10);
  99. ss.println("\r");
  100. ss.println("AT+GPS=1\r");
  101. delay(100);
  102. ss.println("AT+CREG=2\r");
  103. delay(6000);
  104. //ss.print("AT+CREG?\r");
  105. ss.println("AT+CGATT=1\r");
  106. delay(6000);
  107. ss.println("AT+CGDCONT=1,\"IP\",\"WWW\"\r");
  108. delay(6000);
  109. // ss.println("AT+LOCATION=1\r");
  110. ss.println("AT+CGACT=1,1\r");
  111. delay(6000);
  112. //Initialize ends
  113. //Initialize GPS
  114. ss.println("\r");
  115. ss.println("AT+GPS=1\r");
  116. delay(1000);
  117. //ss.println("AT+GPSMD=1\r"); // Change to only GPS mode from GPS+BDS, set to 2 to revert to default.
  118. ss.println("AT+GPSRD=10\r");
  119. delay(100);
  120. // set SMS mode to text mode
  121. ss.println("AT+CMGF=1\r");
  122. delay(1000);
  123. //ss.println("AT+LOCATION=2\r");
  124.  
  125. }
  126.  
  127. /////////////////////////////////////////////////////////
  128. void sendSMSwithLocation1() {
  129. Serial.println("Sending Message");
  130. ss.println("AT+CMGF=1\r");
  131. delay(1000);
  132. ss.println("AT+CNMI=2,2,0,0,0\r");
  133. delay(1000);
  134. ss.print("AT+CMGS=\"+966541755469\"\r");//Replace this with your mobile number
  135. delay(1000);
  136. ss.print("Warning - Water Leak Detected \n");
  137. ss.print(s);
  138. ss.write(0x1A);
  139. delay(1000);
  140. }
  141. void sendSMSwithLocation2() {
  142. Serial.println("Sending Message");
  143. ss.println("AT+CMGF=1\r");
  144. delay(1000);
  145. ss.println("AT+CNMI=2,2,0,0,0\r");
  146. delay(1000);
  147. ss.print("AT+CMGS=\"+966556754045\"\r");//Replace this with your mobile number
  148. delay(1000);
  149. ss.print("Warning - Water Leak Detected \n");
  150. ss.print(s);
  151. ss.write(0x1A);
  152. delay(1000);
  153. }
  154. void sendSMSwithLocation3() {
  155. Serial.println("Sending Message");
  156. ss.println("AT+CMGF=1\r");
  157. delay(1000);
  158. ss.println("AT+CNMI=2,2,0,0,0\r");
  159. delay(1000);
  160. ss.print("AT+CMGS=\"+966501914144\"\r");//Replace this with your mobile number
  161. delay(1000);
  162. ss.print("Warning - Water Leak Detected \n");
  163. ss.print(s);
  164. ss.write(0x1A);
  165. delay(1000);
  166. }
  167. /////////////////////////////////////////////////////////
  168.  
  169. void readGPS_Data() {
  170. smartDelay(2000);
  171. if (millis() > 5000 && gps.charsProcessed() < 10)
  172. Serial.println(F("No GPS data received: check wiring"));
  173.  
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement