Advertisement
Utshaw

GSM-B-4

Jul 21st, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.46 KB | None | 0 0
  1. #include<SoftwareSerial.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. SoftwareSerial GPRS(7,8); //Rx , Tx
  6.  
  7. int lockPin = 12;
  8. int unlockPin = 11;
  9. unsigned char buffer[64];
  10. unsigned char bufferReader[64];
  11. int count = 0;
  12. int bufferReaderCounter = 0;
  13. float floatLat = 12.113;
  14. float floatLng = 61.991;
  15.  
  16.  
  17. void GSMinit(){
  18. floatLat++;
  19. floatLng++;
  20. Serial.println("In GSMInit");
  21. char charLat[10];
  22. char charLng[10];
  23.  
  24. char main[100];
  25.  
  26. //temporarily holds data from vals
  27.  
  28. //4 is mininum width, 3 is precision; float value is copied onto buff
  29. dtostrf(floatLat, 4, 3, charLat);
  30. dtostrf(floatLng, 4, 3, charLng);
  31.  
  32. char * writeQuery = "AT+HTTPPARA=\"URL\",\"http://198.211.96.87/v1/index_Cycle.php/gpsloc?lat=";
  33. strcpy(main,writeQuery);
  34. strcat(main,charLat);
  35. strcat(main,"&lng=");
  36. strcat(main, charLng);
  37. strcat(main,"&bk=1\"\r\n");
  38.  
  39. Serial.write(main);
  40.  
  41. //char * writeQuery = "AT+HTTPPARA=\"URL\",\"http://198.211.96.87/v1/index_Cycle.php/gpsloc?lat=29.64&lng=11.33&bk=1\"\r\n";
  42. GPRS.write(main);
  43. delay(500);
  44.  
  45. GPRS.write("AT+CREG?\r\n");
  46. delay(500);
  47.  
  48. GPRS.write("AT+CGATT=1\r\n"); // Attach to GPRS
  49. delay(500);
  50.  
  51. GPRS.write("AT+SAPBER=3,1,\"APN\",\"gpinternet\"\r\n"); // To query the GPRS context
  52. delay(200);
  53.  
  54. GPRS.write("AT+SAPBR=1,1\r\n"); // Open a GPRS context
  55. delay(500);
  56.  
  57. GPRS.write("AT+HTTPACTION=1\r\n");
  58. delay(1000);
  59.  
  60.  
  61. while(GPRS.available())
  62. {
  63. buffer[count++] = GPRS.read();
  64. if(count == 64) break;
  65. }
  66. //Serial.println(buffer);
  67. Serial.write(buffer , count);
  68. clearBufferArray();
  69. count = 0;
  70. Serial.write("\r\n ... ... \r\n");
  71.  
  72. }
  73.  
  74.  
  75. void setup() {
  76.  
  77. pinMode(LED_BUILTIN, OUTPUT);//blink led for testing
  78. pinMode(lockPin, OUTPUT);
  79. pinMode(unlockPin, OUTPUT);
  80.  
  81. // put your setup code here, to run once:
  82. GPRS.begin(9600);
  83. Serial.begin(9600);
  84.  
  85. GPRS.write("AT\r\n");
  86. delay(200);
  87.  
  88. GPRS.write("AT+HTTPINIT\r\n");
  89. delay(200);
  90.  
  91. GPRS.write("AT+HTTPPARA=\"CID\",1\r\n");
  92. delay(500);
  93.  
  94.  
  95.  
  96. }
  97.  
  98. void loop() {
  99. // put your main code here, to run repeatedly:
  100. GSMinit();
  101. while(1){
  102.  
  103. Serial.println("MASTER SANDWICH----------------------------------");
  104. count=0;
  105. bufferReaderCounter = 0;
  106.  
  107. while(GPRS.available())
  108. {
  109. //Serial.println("Available --> ");
  110. //buffer[count++] = GPRS.read();
  111. //Serial.println(buffer[count-1]);
  112. if(GPRS.read() == '+'){
  113. Serial.println("--------------Found plus ------------");
  114. while(GPRS.available()){
  115. buffer[count++] = GPRS.read();
  116. Serial.println(buffer[count-1]);
  117. }
  118. }
  119. else{
  120. continue;
  121. }
  122. if(count == 64) break;
  123. }
  124.  
  125. //Serial.println("Wrinting from buffer ..........................");
  126.  
  127. char *p;
  128. p = strtok(buffer, ",");
  129. p = strtok(NULL, ",");
  130. p = strtok(NULL, ",");
  131.  
  132.  
  133.  
  134. if(buffer[0] != NULL){
  135. //int i;
  136. //sscanf(p, "%d", &i);
  137. Serial.print("Found buffer array size: ");
  138. //Serial.println(i);
  139.  
  140. char * readContent = "AT+HTTPREAD=0,";
  141. strcat(p, "\r\n");
  142. strcat(readContent, p);
  143. GPRS.write(readContent);
  144. delay(200);
  145.  
  146.  
  147. char flag = 'f';
  148. while(flag == 'f' && !GPRS.available()){
  149.  
  150. }
  151. flag = 't';
  152.  
  153. char temp[20];
  154. char newTemp[33];
  155. int ntemp = 0;
  156. int itemp = 0;
  157. while(GPRS.available()){
  158. char rr = GPRS.read();
  159. if(rr >= 'a' && rr <= 'z'){
  160. newTemp[ntemp++] = rr;
  161. }
  162. }
  163.  
  164.  
  165. newTemp[ntemp] = '\0';
  166. temp[itemp] = '\0';
  167. bufferReader[bufferReaderCounter] = '\0';
  168.  
  169. Serial.println("DEF");
  170. Serial.write(bufferReader,bufferReaderCounter);
  171. Serial.println("DEF");
  172. char* pch = strstr(bufferReader,"unlock"); // find "unlock" inside bufferReader
  173.  
  174.  
  175.  
  176. if( strstr(bufferReader,"unlock") != NULL){
  177. Serial.println("Got unlock inside bufferedReader ");
  178. digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
  179. delay(1000); // wait for a second
  180. digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
  181. delay(1000); // wait for a second
  182. }
  183.  
  184. Serial.println("ABCDEF");
  185. Serial.write(bufferReader,bufferReaderCounter);
  186. Serial.println("ABCDEF");
  187. Serial.println(temp);
  188. Serial.println("ABCDEF");
  189. if(temp[0] == 'u'){
  190. Serial.println("Unlock hoiseeeeeeee");
  191. }else if(temp[0] == 'l'){
  192. Serial.println("Lock hoiseeeeeeee");
  193. }else if(temp[0] == 'n'){
  194. Serial.println("No changed hoiseeeeeeee");
  195. }
  196. Serial.println("ABCDEF");
  197.  
  198. Serial.println("SANDWICH");
  199. if(strcmp(temp, "unlock") == 0){
  200. Serial.println("Sandwiched unlock");
  201. digitalWrite(unlockPin, HIGH);
  202. digitalWrite(lockPin, LOW);
  203.  
  204. }else if(strcmp(temp, "lock") == 0){
  205. Serial.println("Sandwiched lock");
  206.  
  207. digitalWrite(unlockPin, LOW);
  208. digitalWrite(lockPin, HIGH);
  209.  
  210.  
  211. }else if(strcmp(temp, "nock") == 0){
  212. Serial.println("Sandwiched nock");
  213. }
  214. Serial.println("SANDWICH");
  215.  
  216.  
  217.  
  218.  
  219. Serial.println("EXTRA SANDWICH");
  220. Serial.write(newTemp, ntemp);
  221. if(strcmp(newTemp, "unlock") == 0){
  222. Serial.println("Sandwiched unlock");
  223. digitalWrite(unlockPin, HIGH);
  224. digitalWrite(lockPin, LOW);
  225. break;
  226.  
  227. }else if(strcmp(newTemp, "lock") == 0){
  228. Serial.println("Sandwiched lock");
  229.  
  230. digitalWrite(unlockPin, LOW);
  231. digitalWrite(lockPin, HIGH);
  232. break;
  233.  
  234. }else if(strcmp(newTemp, "nock") == 0){
  235. Serial.println("Sandwiched nock");
  236. break;
  237. }
  238. Serial.println("EXTRA SANDWICH");
  239.  
  240. Serial.println("-----T ");
  241. Serial.println("A----");
  242. //clearBufferReaderArray();
  243. //bufferReaderCounter = 0;
  244.  
  245. }
  246. Serial.write(buffer , count);
  247. // Serial.println(i);
  248. clearBufferArray();
  249. count = 0;
  250.  
  251. if(Serial.available()){
  252. //Serial.println("Got data...");
  253. byte b = Serial.read();
  254. if( b == '*')
  255. GPRS.write(0x1a);
  256. else
  257. GPRS.write(b);
  258. }
  259.  
  260. Serial.println("MASTER SANDWICH END----------THE END :( --------------------------------");
  261. }
  262. delay(6000);
  263. }
  264.  
  265. void clearBufferArray()
  266. {
  267. for(int i = 0; i< count ; i++)
  268. {
  269. buffer[i] = NULL;
  270.  
  271. }
  272.  
  273. }
  274.  
  275.  
  276.  
  277. void clearBufferReaderArray()
  278. {
  279. for(int i = 0; i< bufferReaderCounter ; i++)
  280. {
  281. bufferReader[i] = NULL;
  282.  
  283. }
  284.  
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement