Advertisement
Guest User

Untitled

a guest
Aug 24th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include <TimerOne.h>
  2. #include <TinyGPS.h>
  3. #include <SoftwareSerial.h>
  4.  
  5. TinyGPS gps;
  6. SoftwareSerial gsmSerial(2, 3);
  7. SoftwareSerial ss(5,6);
  8. String inData = "";
  9. boolean inputAvailable = false;
  10. String ADMIN_PHONE_NUMBER_1 = "05558233343";
  11. String ADMIN_PHONE_NUMBER_2 = "05323342543";
  12. String ADMIN_PHONE_NUMBER_3 = "05396933985";
  13. String ADMIN_PHONE_NUMBER_4 = "05373624959";
  14. String receivedNumber = "";
  15. String bora = "";
  16. int callback_counter=0;
  17. int indexofMsgStr = 0;
  18. float flat, flon, fkmph;
  19. unsigned long age;
  20. char okunanKarakter = '*';
  21. float flat_store = 0.0;
  22. float flon_store = 0.0;
  23. boolean gsmdinle = false;
  24.  
  25. void setup() {
  26. delay(30000);
  27. Serial.begin(9600);
  28. ss.begin(9600);
  29. gsmSerial.begin(9600);
  30. Timer1.initialize(8388480); //about 8.3 seconds
  31. Timer1.attachInterrupt(callback);
  32. delay(2000);
  33. gsmSerial.listen();
  34. gsmSerial.println("AT+CLIP=1");
  35. delay(1000);
  36. gsmSerial.println("ATE=0");
  37. delay(1000);
  38. gsmSerial.listen();
  39. }
  40.  
  41. void loop() {
  42. // run over and over
  43. while(gsmSerial.available()) {
  44. inputAvailable = true;
  45. okunanKarakter = (char) gsmSerial.read();
  46. inData += okunanKarakter;
  47. if(okunanKarakter == ',') {
  48. break;
  49. }
  50. }
  51. if(inputAvailable) {
  52. inputAvailable=false;
  53. processData();
  54. inData="";
  55. }
  56. }
  57.  
  58. void printGPSDATA() {
  59. gps.f_get_position(&flat, &flon, &age);
  60. if(flat > 0.0)
  61. flat_store = flat;
  62. if(flon > 0.0)
  63. flon_store = flon;
  64. fkmph = gps.f_speed_kmph(); // speed in km/hr
  65. }
  66.  
  67. void TAKEGPSDATA() {
  68. boolean gps_valid = false;
  69. ss.listen();
  70. delay(1000);
  71. for(int i =0 ; i < 200 ; i++) {
  72. if(!gps_valid) {
  73. while (ss.available()) {
  74. char c = ss.read();
  75. if (gps.encode(c)) {
  76. // Did a new valid sentence come in?
  77. printGPSDATA();
  78. gps_valid = true;
  79. break;
  80. }
  81. }
  82. delay(5);
  83. }
  84. }
  85. gsmSerial.listen();
  86. delay(1000);
  87. }
  88.  
  89. void processData() {
  90. if(IsRinging()) {
  91. indexofMsgStr = inData.indexOf("05");
  92. receivedNumber = inData.substring(indexofMsgStr , indexofMsgStr+11);
  93. if(IsAdminNumber()) {
  94. TAKEGPSDATA();
  95. KoordinatBilgisiGonder();
  96. }
  97. }
  98. }
  99.  
  100. void KoordinatBilgisiGonder() {
  101. bora = "AT+CMGS="";
  102. bora+= "+9";
  103. bora+=receivedNumber;
  104. bora+= """;
  105. gsmSerial.println("AT+CMGF=1");
  106. delay(2000);
  107. gsmSerial.println(bora);
  108. delay(1000);
  109. gsmSerial.print("ENLEM =");
  110. gsmSerial.println(flat_store,6);
  111. gsmSerial.print("BOYLAM =");
  112. gsmSerial.println(flon_store,6);
  113. gsmSerial.print("HIZ =");
  114. gsmSerial.print(fkmph);
  115. gsmSerial.println(" km/saat");
  116. gsmSerial.println("LINK =");
  117. gsmSerial.print("http://maps.google.com/?ie=UTF8&hq=&ll=");
  118. gsmSerial.print(flat_store,6);
  119. gsmSerial.print(",");
  120. gsmSerial.print(flon_store,6);
  121. gsmSerial.print("&z=20");
  122. gsmSerial.write(26);
  123. }
  124. int IsRinging() {
  125. if (inData.indexOf("CLIP:") >= 0) {
  126. return 1;
  127. } else {
  128. return 0;
  129. }
  130. }
  131. int IsAdminNumber() {
  132. if(ADMIN_PHONE_NUMBER_1 == receivedNumber) {
  133. return 1;
  134. } else if(ADMIN_PHONE_NUMBER_2 == receivedNumber) {
  135. return 1;
  136. } else if(ADMIN_PHONE_NUMBER_3 == receivedNumber) {
  137. return 1;
  138. } else if(ADMIN_PHONE_NUMBER_4 == receivedNumber) {
  139. return 1;
  140. }
  141. return 0;
  142. }
  143.  
  144. void callback() {
  145. callback_counter++;
  146. if(callback_counter >= 80) {
  147. callback_counter = 0;
  148. TAKEGPSDATA();
  149. }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement