GPS-Tracking-Velo

Dependencies:   MODSERIAL SDBlockDevice GPS

Forschungsstand und Theoretische Grundlage

Die Bestandteile der Hardware, die das Projekt gebraucht wird, bestehen aus drei Komponente ein Mikrocontroller Board, eine GPS Antenne und ein SIM Modul. GPS basiert auf Satelliten, die mit codierten Radiosignalen ständig ihre aktuelle Position und genaue Uhrzeit ausstrahlen. Aus den Signallaufzeiten können eine GPS Antenne ihre eigene Position und Geschwindigkeit berechnen. Diese GPS Antenne sollte die Daten der Objektposition aus Satelliten auf dem Board gespeichert werden. Diese Daten wurden noch weiter durch eine SIM Module nach GMS Turm und dann per SMS Nachrichten an Handy gesendet. Möglicherweise können diese Daten auch an Webanwendung nach der Sendung an GMS Turm geschickt werden.

https://os.mbed.com/media/uploads/QuangAnhLe/picture1.png

Committer:
QuangAnhLe
Date:
Tue Apr 30 10:08:59 2019 +0000
Revision:
4:793221f865f6
Parent:
3:eb739df911ef
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
QuangAnhLe 0:ee1ae011cba6 1 #include "mbed.h"
QuangAnhLe 1:2f617b92078b 2 #include "GPS.h"
QuangAnhLe 4:793221f865f6 3 #include "MODSERIAL.h"
QuangAnhLe 1:2f617b92078b 4 #include <iostream>
QuangAnhLe 1:2f617b92078b 5 #include <sstream>
QuangAnhLe 1:2f617b92078b 6 #include <bitset>
QuangAnhLe 1:2f617b92078b 7 #include <string>
QuangAnhLe 0:ee1ae011cba6 8 #include "FATFileSystem.h"
QuangAnhLe 0:ee1ae011cba6 9 #include "SDBlockDevice.h"
QuangAnhLe 0:ee1ae011cba6 10 #include <stdio.h>
QuangAnhLe 0:ee1ae011cba6 11 #include <errno.h>
QuangAnhLe 4:793221f865f6 12 #include <stdio.h>
QuangAnhLe 0:ee1ae011cba6 13
QuangAnhLe 4:793221f865f6 14
QuangAnhLe 0:ee1ae011cba6 15 SDBlockDevice bd(D11, D12, D13, D10);
QuangAnhLe 1:2f617b92078b 16 Serial pc(PA_2,PA_3);
QuangAnhLe 4:793221f865f6 17 Serial SIM900(PA_9,PA_10); // (TX,RX)
QuangAnhLe 4:793221f865f6 18 //MODSERIAL pc(PA_2,PA_3);
QuangAnhLe 4:793221f865f6 19 //MODSERIAL SIM900(PA_9,PA_10);
QuangAnhLe 1:2f617b92078b 20 GPS gps (PA_11,PA_12);
QuangAnhLe 0:ee1ae011cba6 21
QuangAnhLe 3:eb739df911ef 22 const string GoogleChunk = "https://maps.google.com.au/maps?q="; // URL constant
QuangAnhLe 3:eb739df911ef 23 const string GoogleExtras = "&z=20"; // Zoom Level
QuangAnhLe 4:793221f865f6 24 char GPRSbuffer[200];
QuangAnhLe 4:793221f865f6 25 char resp[6];
QuangAnhLe 3:eb739df911ef 26 char NUMBER[14];
QuangAnhLe 4:793221f865f6 27 char str1[20];
QuangAnhLe 4:793221f865f6 28 char str2[20];
QuangAnhLe 4:793221f865f6 29 char str3[25];
QuangAnhLe 4:793221f865f6 30 char str4[25];
QuangAnhLe 4:793221f865f6 31 char passwort[100];
QuangAnhLe 3:eb739df911ef 32 string MESSAGE;
QuangAnhLe 4:793221f865f6 33 bool smsRequest = false;
QuangAnhLe 3:eb739df911ef 34 int index;
QuangAnhLe 3:eb739df911ef 35 int i=0;
QuangAnhLe 4:793221f865f6 36 Timer timeCnt;
QuangAnhLe 4:793221f865f6 37
QuangAnhLe 4:793221f865f6 38 #define DEFAULT_TIMEOUT 5
QuangAnhLe 3:eb739df911ef 39
QuangAnhLe 0:ee1ae011cba6 40 FATFileSystem fs("fs");
QuangAnhLe 2:3d3d272d2df2 41 string result;
QuangAnhLe 2:3d3d272d2df2 42 char x;
QuangAnhLe 0:ee1ae011cba6 43
QuangAnhLe 0:ee1ae011cba6 44 void return_error(int ret_val){
QuangAnhLe 0:ee1ae011cba6 45 if (ret_val)
QuangAnhLe 0:ee1ae011cba6 46 printf("Failure. %d\r\n", ret_val);
QuangAnhLe 0:ee1ae011cba6 47 else
QuangAnhLe 0:ee1ae011cba6 48 printf("done.\r\n");
QuangAnhLe 0:ee1ae011cba6 49 }
QuangAnhLe 1:2f617b92078b 50
QuangAnhLe 0:ee1ae011cba6 51 void errno_error(void* ret_val){
QuangAnhLe 0:ee1ae011cba6 52 if (ret_val == NULL)
QuangAnhLe 0:ee1ae011cba6 53 printf(" Failure. %d \r\n", errno);
QuangAnhLe 0:ee1ae011cba6 54 else
QuangAnhLe 0:ee1ae011cba6 55 printf(" done.\r\n");
QuangAnhLe 0:ee1ae011cba6 56 }
QuangAnhLe 2:3d3d272d2df2 57
QuangAnhLe 2:3d3d272d2df2 58 void clearString()
QuangAnhLe 2:3d3d272d2df2 59 {
QuangAnhLe 2:3d3d272d2df2 60 result.clear();
QuangAnhLe 2:3d3d272d2df2 61 }
QuangAnhLe 2:3d3d272d2df2 62
QuangAnhLe 2:3d3d272d2df2 63 void callback_rx() {
QuangAnhLe 2:3d3d272d2df2 64
QuangAnhLe 2:3d3d272d2df2 65 while (SIM900.readable()) {
QuangAnhLe 2:3d3d272d2df2 66 x = SIM900.getc();
QuangAnhLe 2:3d3d272d2df2 67 result += x;
QuangAnhLe 4:793221f865f6 68 pc.putc(x); // print the answer from SIM900
QuangAnhLe 2:3d3d272d2df2 69
QuangAnhLe 2:3d3d272d2df2 70 }
QuangAnhLe 2:3d3d272d2df2 71 }
QuangAnhLe 4:793221f865f6 72 void getlineGSM()
QuangAnhLe 4:793221f865f6 73 {
QuangAnhLe 4:793221f865f6 74 //char c;
QuangAnhLe 4:793221f865f6 75 timeCnt.start(); // start timer
QuangAnhLe 4:793221f865f6 76 while(1) {
QuangAnhLe 4:793221f865f6 77 while (SIM900.readable()) {
QuangAnhLe 4:793221f865f6 78 char c = SIM900.getc();
QuangAnhLe 4:793221f865f6 79 if (c == '\r' || c == '\n') c = '$';
QuangAnhLe 4:793221f865f6 80 GPRSbuffer[i++] = c;
QuangAnhLe 4:793221f865f6 81 if(i > 512)break;
QuangAnhLe 4:793221f865f6 82 }
QuangAnhLe 4:793221f865f6 83 if(i > 512)break;
QuangAnhLe 4:793221f865f6 84 if(timeCnt.read() > DEFAULT_TIMEOUT) {
QuangAnhLe 4:793221f865f6 85 timeCnt.stop();
QuangAnhLe 4:793221f865f6 86 timeCnt.reset();
QuangAnhLe 4:793221f865f6 87 break;
QuangAnhLe 4:793221f865f6 88 }
QuangAnhLe 4:793221f865f6 89 }
QuangAnhLe 4:793221f865f6 90 wait(0.5);
QuangAnhLe 4:793221f865f6 91 while(SIM900.readable()) { // display the other thing..
QuangAnhLe 4:793221f865f6 92 char c = SIM900.getc();
QuangAnhLe 4:793221f865f6 93 }
QuangAnhLe 4:793221f865f6 94 }
QuangAnhLe 4:793221f865f6 95
QuangAnhLe 4:793221f865f6 96 int readBuffer(char *buffer,int count)
QuangAnhLe 4:793221f865f6 97 {
QuangAnhLe 4:793221f865f6 98 int i = 0;
QuangAnhLe 4:793221f865f6 99 timeCnt.start(); // start timer
QuangAnhLe 4:793221f865f6 100 while(1) {
QuangAnhLe 4:793221f865f6 101 while (SIM900.readable()) {
QuangAnhLe 4:793221f865f6 102 char c = SIM900.getc();
QuangAnhLe 4:793221f865f6 103 if (c == '\r' || c == '\n') c = '$';
QuangAnhLe 4:793221f865f6 104 buffer[i++] = c;
QuangAnhLe 4:793221f865f6 105 if(i > count)break;
QuangAnhLe 4:793221f865f6 106 }
QuangAnhLe 4:793221f865f6 107 if(i > count)break;
QuangAnhLe 4:793221f865f6 108 if(timeCnt.read() > DEFAULT_TIMEOUT) {
QuangAnhLe 4:793221f865f6 109 timeCnt.stop();
QuangAnhLe 4:793221f865f6 110 timeCnt.reset();
QuangAnhLe 4:793221f865f6 111 break;
QuangAnhLe 4:793221f865f6 112 }
QuangAnhLe 4:793221f865f6 113 }
QuangAnhLe 4:793221f865f6 114 wait(0.5);
QuangAnhLe 4:793221f865f6 115 while(SIM900.readable()) { // display the other thing..
QuangAnhLe 4:793221f865f6 116 char c = SIM900.getc();
QuangAnhLe 4:793221f865f6 117 }
QuangAnhLe 4:793221f865f6 118 return 0;
QuangAnhLe 4:793221f865f6 119 }
QuangAnhLe 4:793221f865f6 120 void cleanBuffer(char *buffer, int count)
QuangAnhLe 4:793221f865f6 121 {
QuangAnhLe 4:793221f865f6 122 for(int i=0; i < count; i++) {
QuangAnhLe 4:793221f865f6 123 buffer[i] = '\0';
QuangAnhLe 4:793221f865f6 124 }
QuangAnhLe 4:793221f865f6 125 }
QuangAnhLe 4:793221f865f6 126 void readSMS()
QuangAnhLe 4:793221f865f6 127 {
QuangAnhLe 4:793221f865f6 128 // If theres a char waiting in the MODSERIAL buffer
QuangAnhLe 4:793221f865f6 129 /*while (SIM900.readable()) {
QuangAnhLe 4:793221f865f6 130 // Assign it to 'c'
QuangAnhLe 4:793221f865f6 131 char c = SIM900.getc();
QuangAnhLe 4:793221f865f6 132 // Replace all returns and or line endings with money!
QuangAnhLe 4:793221f865f6 133 if (c == '\r' || c == '\n') c = '$';
QuangAnhLe 4:793221f865f6 134 // Put it in the array
QuangAnhLe 4:793221f865f6 135 GPRSbuffer[i] = c;
QuangAnhLe 4:793221f865f6 136 // Repeat if possible
QuangAnhLe 4:793221f865f6 137 i++;
QuangAnhLe 4:793221f865f6 138 }*/
QuangAnhLe 4:793221f865f6 139
QuangAnhLe 4:793221f865f6 140 if (SIM900.readable()) {
QuangAnhLe 4:793221f865f6 141 readBuffer(GPRSbuffer,110);
QuangAnhLe 4:793221f865f6 142 pc.printf("%s\r\n",GPRSbuffer);
QuangAnhLe 4:793221f865f6 143 for(i=0;i<5;i++)
QuangAnhLe 4:793221f865f6 144 {
QuangAnhLe 4:793221f865f6 145 resp[i]=GPRSbuffer[i];
QuangAnhLe 4:793221f865f6 146 }
QuangAnhLe 4:793221f865f6 147 }
QuangAnhLe 4:793221f865f6 148 //Uncomment the following to debug
QuangAnhLe 4:793221f865f6 149 //pc.printf("\nbuffer = %s", GPRSbuffer);
QuangAnhLe 4:793221f865f6 150
QuangAnhLe 4:793221f865f6 151 printf("read SMS\r\n");
QuangAnhLe 4:793221f865f6 152 //SIM900.attach(&callback_rx);
QuangAnhLe 4:793221f865f6 153 SIM900.attach(&callback_rx, Serial::RxIrq);
QuangAnhLe 4:793221f865f6 154 SIM900.baud(9600);
QuangAnhLe 4:793221f865f6 155 clearString();
QuangAnhLe 4:793221f865f6 156 SIM900.printf("AT+CMGF=1\r"); //at command for send sms
QuangAnhLe 4:793221f865f6 157 wait_ms(1000);
QuangAnhLe 4:793221f865f6 158 clearString();
QuangAnhLe 4:793221f865f6 159 wait_ms(1000);
QuangAnhLe 4:793221f865f6 160 SIM900.printf("AT+CMGL=");
QuangAnhLe 4:793221f865f6 161 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 162 SIM900.printf("ALL");
QuangAnhLe 4:793221f865f6 163 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 164 SIM900.printf("\r");
QuangAnhLe 4:793221f865f6 165 printf("\n");
QuangAnhLe 4:793221f865f6 166 //SIM900.printf("AT+CMGR=1\r\n");
QuangAnhLe 4:793221f865f6 167 wait_ms(1000);
QuangAnhLe 4:793221f865f6 168 //SIM900.printf("AT+CMGD=2");
QuangAnhLe 4:793221f865f6 169 /*SIM900.putc('"');
QuangAnhLe 4:793221f865f6 170 SIM900.printf("DEL ALL");
QuangAnhLe 4:793221f865f6 171 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 172 SIM900.printf("\r");
QuangAnhLe 4:793221f865f6 173 printf("\n");*/
QuangAnhLe 4:793221f865f6 174 //SIM900.printf("AT+CMGR=1\r\n");
QuangAnhLe 4:793221f865f6 175 wait_ms(1000);
QuangAnhLe 4:793221f865f6 176 //clearString();
QuangAnhLe 4:793221f865f6 177 //cleanBuffer(GPRSbuffer,200);
QuangAnhLe 4:793221f865f6 178 readBuffer(GPRSbuffer,200);
QuangAnhLe 4:793221f865f6 179 readBuffer(GPRSbuffer,200);
QuangAnhLe 4:793221f865f6 180 getlineGSM();
QuangAnhLe 4:793221f865f6 181 wait_ms(1000);
QuangAnhLe 4:793221f865f6 182 printf("Buffer: %s\r\n",GPRSbuffer);
QuangAnhLe 4:793221f865f6 183 wait_ms(1000);
QuangAnhLe 4:793221f865f6 184 if (sscanf(GPRSbuffer,"+CMTI: \"SM\",%d", &index)>0)
QuangAnhLe 4:793221f865f6 185 {
QuangAnhLe 4:793221f865f6 186 pc.printf("Index: %d\r\n", index);
QuangAnhLe 4:793221f865f6 187 }
QuangAnhLe 4:793221f865f6 188 if(sscanf(GPRSbuffer,"+CMGL: 1\"%*[^\"]\",\"%[^\"]",str3)>0)
QuangAnhLe 4:793221f865f6 189 //"+CMGL: %d,\"%*[^\"]\",\"%[^\"]"
QuangAnhLe 4:793221f865f6 190 //if(sscanf(GPRSbuffer,"+CMTI: \"SM \",%d",&index)>0)
QuangAnhLe 4:793221f865f6 191 //{
QuangAnhLe 4:793221f865f6 192 // SIM900.printf("AT+CMGR=%d\r\n",index);
QuangAnhLe 4:793221f865f6 193 //}
QuangAnhLe 4:793221f865f6 194 //if(sscanf(GPRSbuffer,"+CMGR: \"%[^\"]\",\"%[^\"]\",,\"%[^\"]\"\r\n%s\r\n", str1, str2, str3, passwort)>0)
QuangAnhLe 4:793221f865f6 195 {
QuangAnhLe 4:793221f865f6 196 //if(passwort == "Position")
QuangAnhLe 4:793221f865f6 197 //{
QuangAnhLe 4:793221f865f6 198 // smsRequest = true;
QuangAnhLe 4:793221f865f6 199 //}
QuangAnhLe 4:793221f865f6 200 printf("Phone number is %s\n",str3);
QuangAnhLe 4:793221f865f6 201 }
QuangAnhLe 4:793221f865f6 202 wait_ms(1000);
QuangAnhLe 4:793221f865f6 203 //SIM900.printf("AT+CMGD=1\r");
QuangAnhLe 4:793221f865f6 204 //printf("Delete SMS\r\n");
QuangAnhLe 4:793221f865f6 205 wait_ms(1000);
QuangAnhLe 4:793221f865f6 206 }
QuangAnhLe 4:793221f865f6 207
QuangAnhLe 2:3d3d272d2df2 208 void sendSMS()
QuangAnhLe 2:3d3d272d2df2 209 {
QuangAnhLe 4:793221f865f6 210
QuangAnhLe 4:793221f865f6 211 printf("send SMS\r\n");
QuangAnhLe 4:793221f865f6 212 SIM900.attach(&callback_rx, Serial::RxIrq);
QuangAnhLe 4:793221f865f6 213 SIM900.baud(9600);
QuangAnhLe 4:793221f865f6 214 clearString();
QuangAnhLe 4:793221f865f6 215 SIM900.printf("AT+CMGF=1\r"); //at command for send sms
QuangAnhLe 4:793221f865f6 216 wait_ms(1000);
QuangAnhLe 4:793221f865f6 217 clearString();
QuangAnhLe 4:793221f865f6 218 wait_ms(1000);
QuangAnhLe 4:793221f865f6 219 SIM900.printf("AT+CMGS=");
QuangAnhLe 4:793221f865f6 220 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 221 SIM900.printf("+4917645651571");
QuangAnhLe 4:793221f865f6 222 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 223 SIM900.printf("\r");
QuangAnhLe 4:793221f865f6 224 wait_ms(1000);
QuangAnhLe 4:793221f865f6 225 //SIM900.printf("Latitude: %0.6f, Longitude: %0.6f,Altitude: %0.3f",gps.latitude,gps.longitude,gps.altitude);
QuangAnhLe 4:793221f865f6 226 SIM900.printf("Find me at....\n %s%f,%f%s", GoogleChunk, gps.latitude, gps.longitude, GoogleExtras);
QuangAnhLe 4:793221f865f6 227 wait_ms(1000);
QuangAnhLe 4:793221f865f6 228 SIM900.putc(0x1A);
QuangAnhLe 4:793221f865f6 229 wait_ms(60000);
QuangAnhLe 4:793221f865f6 230 //smsRequest=false;
QuangAnhLe 4:793221f865f6 231
QuangAnhLe 3:eb739df911ef 232 }
QuangAnhLe 3:eb739df911ef 233
QuangAnhLe 3:eb739df911ef 234 void parseSMS()
QuangAnhLe 3:eb739df911ef 235 {
QuangAnhLe 3:eb739df911ef 236 while(SIM900.readable())
QuangAnhLe 3:eb739df911ef 237 {
QuangAnhLe 3:eb739df911ef 238 // Assign it to 'c'
QuangAnhLe 3:eb739df911ef 239 char c = SIM900.getc();
QuangAnhLe 3:eb739df911ef 240 // Replace all returns and or line endings with money
QuangAnhLe 3:eb739df911ef 241 if(c == '\r' || c == '\n') c= '$';
QuangAnhLe 3:eb739df911ef 242 // Put it in the array
QuangAnhLe 3:eb739df911ef 243 GPRSbuffer[i] =c;
QuangAnhLe 3:eb739df911ef 244 // Repeat if possible
QuangAnhLe 3:eb739df911ef 245 i++;
QuangAnhLe 3:eb739df911ef 246
QuangAnhLe 3:eb739df911ef 247 }
QuangAnhLe 3:eb739df911ef 248 // Uncomment the following to debug
QuangAnhLe 4:793221f865f6 249
QuangAnhLe 3:eb739df911ef 250
QuangAnhLe 3:eb739df911ef 251 // If we get an SMS notification
QuangAnhLe 4:793221f865f6 252 if (sscanf(GPRSbuffer,"+CMTI: \"SM\",%d", &index)>0)
QuangAnhLe 3:eb739df911ef 253 {
QuangAnhLe 3:eb739df911ef 254 pc.printf("\nSMS recieved @ index [%d]", index);
QuangAnhLe 4:793221f865f6 255 pc.printf("\nbuffer = %s", GPRSbuffer);
QuangAnhLe 4:793221f865f6 256 //memset(GPRSbuffer, '0', 511);
QuangAnhLe 3:eb739df911ef 257 i=0;
QuangAnhLe 3:eb739df911ef 258 pc.printf("\nOpening message...");
QuangAnhLe 3:eb739df911ef 259 // ask GPRS to read the message
QuangAnhLe 3:eb739df911ef 260 SIM900.printf("AT+CMGR=%d\r\n", index);
QuangAnhLe 3:eb739df911ef 261 }
QuangAnhLe 4:793221f865f6 262 if (strncmp(GPRSbuffer, "+CMGR",7) == 0 ) // compared return value = 0 then it indicates str1 is equal to str2
QuangAnhLe 3:eb739df911ef 263 {
QuangAnhLe 3:eb739df911ef 264 // Get the number out
QuangAnhLe 3:eb739df911ef 265 char *n = strstr(GPRSbuffer,"+49"); // finds the first occurrence of the substring "+49" in the string GPRSbuffer +4917645651571
QuangAnhLe 3:eb739df911ef 266 strncpy(NUMBER, n, 14); // this funtion returns the final copy of the copied string
QuangAnhLe 3:eb739df911ef 267 char * pch;
QuangAnhLe 3:eb739df911ef 268 pch = strtok (GPRSbuffer, "$$"); // return a pointer to the first token found in the string. A null pointer is returned if there are no tokens left to retrieve
QuangAnhLe 3:eb739df911ef 269 pch = strtok (NULL, "$$");
QuangAnhLe 3:eb739df911ef 270 MESSAGE = pch;
QuangAnhLe 3:eb739df911ef 271 pc.printf("\nDone! ");
QuangAnhLe 3:eb739df911ef 272 // Send the location
QuangAnhLe 4:793221f865f6 273 //sendSMS();
QuangAnhLe 3:eb739df911ef 274 // Reset the GPRS buffer
QuangAnhLe 4:793221f865f6 275 // memset(GPRSbuffer, '0', 511);
QuangAnhLe 3:eb739df911ef 276 // Reset the char counter
QuangAnhLe 4:793221f865f6 277 i = 0;
QuangAnhLe 4:793221f865f6 278 pc.printf("\nbuffer = %s", GPRSbuffer);
QuangAnhLe 3:eb739df911ef 279 }
QuangAnhLe 3:eb739df911ef 280 if (strncmp(GPRSbuffer, "$$+CMGS",7) == 0) {
QuangAnhLe 3:eb739df911ef 281 // Reset the GPRS buffer
QuangAnhLe 4:793221f865f6 282 //memset(GPRSbuffer, '0', 511);
QuangAnhLe 3:eb739df911ef 283 // Reset the char counter
QuangAnhLe 3:eb739df911ef 284 i = 0;
QuangAnhLe 3:eb739df911ef 285 }
QuangAnhLe 3:eb739df911ef 286 if (strncmp(GPRSbuffer, "$$RING",6) == 0) {
QuangAnhLe 3:eb739df911ef 287 SIM900.printf("ATH0\r\n");
QuangAnhLe 3:eb739df911ef 288 pc.printf("\nCall bounced!...");
QuangAnhLe 3:eb739df911ef 289 // Do the send SMS routine...
QuangAnhLe 4:793221f865f6 290 //sendSMS();
QuangAnhLe 3:eb739df911ef 291 // Reset the GPRS buffer
QuangAnhLe 4:793221f865f6 292 //memset(GPRSbuffer, '0', 511);
QuangAnhLe 3:eb739df911ef 293 // Reset the char counter
QuangAnhLe 3:eb739df911ef 294 i = 0;
QuangAnhLe 3:eb739df911ef 295 }
QuangAnhLe 4:793221f865f6 296 //pc.printf("\nbuffer = %s", GPRSbuffer);
QuangAnhLe 3:eb739df911ef 297 pc.printf("\n\n\nWaiting for SMS or call...\n");
QuangAnhLe 3:eb739df911ef 298 pc.printf("\nThe last number was : %s", NUMBER);
QuangAnhLe 3:eb739df911ef 299 pc.printf("\nThe last message was : %s", MESSAGE);
QuangAnhLe 3:eb739df911ef 300 // Reset the GPRS buffer
QuangAnhLe 4:793221f865f6 301 //memset(GPRSbuffer, '0', 511);
QuangAnhLe 3:eb739df911ef 302 // Reset the char counter
QuangAnhLe 3:eb739df911ef 303 i = 0;
QuangAnhLe 2:3d3d272d2df2 304 }
QuangAnhLe 1:2f617b92078b 305
QuangAnhLe 0:ee1ae011cba6 306 int main() {
QuangAnhLe 4:793221f865f6 307 /**/
QuangAnhLe 4:793221f865f6 308 /*memset(GPRSbuffer, '0', 511);
QuangAnhLe 2:3d3d272d2df2 309 pc.printf("\r\n GSM 900 Test\n");
QuangAnhLe 3:eb739df911ef 310 //SIM900.attach(&callback_rx);
QuangAnhLe 2:3d3d272d2df2 311 SIM900.baud(9600);
QuangAnhLe 2:3d3d272d2df2 312 wait_ms(100);
QuangAnhLe 3:eb739df911ef 313 SIM900.printf("ATE0\r\n");
QuangAnhLe 3:eb739df911ef 314 pc.printf("\nGPRS echo [OFF]\n");
QuangAnhLe 3:eb739df911ef 315 wait(1);
QuangAnhLe 3:eb739df911ef 316 // Delete all messages on the sim card
QuangAnhLe 3:eb739df911ef 317 SIM900.printf("AT+CMGDA=\"DEL ALL\"\r\n");
QuangAnhLe 3:eb739df911ef 318 wait(1);
QuangAnhLe 3:eb739df911ef 319 pc.printf("\nMessages Cleared...\n");
QuangAnhLe 4:793221f865f6 320 wait(1);*/
QuangAnhLe 3:eb739df911ef 321 //sendSMS();
QuangAnhLe 4:793221f865f6 322 //printf("read SMS\r\n");
QuangAnhLe 4:793221f865f6 323 /*SIM900.printf("AT+CMGF=1\r"); //at command for send sms
QuangAnhLe 4:793221f865f6 324 wait_ms(1000);
QuangAnhLe 4:793221f865f6 325 SIM900.printf("AT+CMGL=\"ALL\"\r\n");
QuangAnhLe 4:793221f865f6 326
QuangAnhLe 4:793221f865f6 327 wait_ms(1000);
QuangAnhLe 4:793221f865f6 328 wait_ms(100);*/
QuangAnhLe 4:793221f865f6 329 /*printf("read SMS\r\n");
QuangAnhLe 4:793221f865f6 330 SIM900.attach(&callback_rx, Serial::RxIrq);
QuangAnhLe 4:793221f865f6 331 SIM900.baud(9600);
QuangAnhLe 4:793221f865f6 332 clearString();
QuangAnhLe 4:793221f865f6 333 SIM900.printf("AT+CMGF=1\r"); //at command for send sms
QuangAnhLe 4:793221f865f6 334 wait_ms(1000);
QuangAnhLe 4:793221f865f6 335 clearString();
QuangAnhLe 4:793221f865f6 336 wait_ms(1000);
QuangAnhLe 4:793221f865f6 337 SIM900.printf("AT+CMGL=");
QuangAnhLe 4:793221f865f6 338 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 339 SIM900.printf("ALL");
QuangAnhLe 4:793221f865f6 340 SIM900.putc('"');
QuangAnhLe 4:793221f865f6 341 SIM900.printf("\r");
QuangAnhLe 4:793221f865f6 342 printf("\n");
QuangAnhLe 4:793221f865f6 343 wait_ms(30000);
QuangAnhLe 4:793221f865f6 344 if (sscanf(GPRSbuffer,"+CMTI: \"SM\",%d", &index)>0)
QuangAnhLe 4:793221f865f6 345 {
QuangAnhLe 4:793221f865f6 346 pc.printf("Index: %d\r\n", index);
QuangAnhLe 4:793221f865f6 347 }*/
QuangAnhLe 4:793221f865f6 348 //if(sscanf(GPRSbuffer,"+CMGR: 2,\"REC READ\",\"+4917645651571\",,\"2019/04/26,15:57:07+02\"\r\n%s\r\n",passwort)>0)
QuangAnhLe 4:793221f865f6 349
QuangAnhLe 4:793221f865f6 350 //pc.printf("passwort: %s\r\n",passwort);
QuangAnhLe 4:793221f865f6 351
QuangAnhLe 4:793221f865f6 352 //sendSMS();
QuangAnhLe 4:793221f865f6 353
QuangAnhLe 4:793221f865f6 354 readSMS();
QuangAnhLe 4:793221f865f6 355 //parseSMS();
QuangAnhLe 4:793221f865f6 356
QuangAnhLe 4:793221f865f6 357
QuangAnhLe 2:3d3d272d2df2 358 /**/
QuangAnhLe 0:ee1ae011cba6 359 int error = 0;
QuangAnhLe 0:ee1ae011cba6 360 printf("Welcome to the filesystem example.\r\n"
QuangAnhLe 0:ee1ae011cba6 361 "Formatting a FAT, RAM-backed filesystem. ");
QuangAnhLe 0:ee1ae011cba6 362 error = FATFileSystem::format(&bd);
QuangAnhLe 0:ee1ae011cba6 363 return_error(error);
QuangAnhLe 1:2f617b92078b 364
QuangAnhLe 0:ee1ae011cba6 365 printf("Mounting the filesystem on \"/fs\". ");
QuangAnhLe 0:ee1ae011cba6 366 error = fs.mount(&bd);
QuangAnhLe 0:ee1ae011cba6 367 return_error(error);
QuangAnhLe 1:2f617b92078b 368
QuangAnhLe 0:ee1ae011cba6 369 printf("Opening a new file, numbers.txt.");
QuangAnhLe 2:3d3d272d2df2 370 FILE* fd = fopen("/fs/numbers.txt", "a+");
QuangAnhLe 0:ee1ae011cba6 371 errno_error(fd);
QuangAnhLe 4:793221f865f6 372 fprintf(fd,"Latitude, Longitude,Altitude,Speed in knots, Date, Time,Number of satellites being tracked, IDs of satellites ins use, Fix, Fix mode\r\n");
QuangAnhLe 0:ee1ae011cba6 373 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 374 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 375 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 376
QuangAnhLe 0:ee1ae011cba6 377 printf("Re-opening file read-only.");
QuangAnhLe 0:ee1ae011cba6 378 fd = fopen("/fs/numbers.txt", "r");
QuangAnhLe 0:ee1ae011cba6 379 errno_error(fd);
QuangAnhLe 1:2f617b92078b 380
QuangAnhLe 0:ee1ae011cba6 381 printf("Dumping file to screen.\r\n");
QuangAnhLe 0:ee1ae011cba6 382 char buff[16] = {0};
QuangAnhLe 0:ee1ae011cba6 383 while (!feof(fd)){
QuangAnhLe 0:ee1ae011cba6 384 int size = fread(&buff[0], 1, 15, fd);
QuangAnhLe 0:ee1ae011cba6 385 fwrite(&buff[0], 1, size, stdout);
QuangAnhLe 0:ee1ae011cba6 386 }
QuangAnhLe 0:ee1ae011cba6 387 printf("EOF.\r\n");
QuangAnhLe 1:2f617b92078b 388
QuangAnhLe 0:ee1ae011cba6 389 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 390 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 391 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 392
QuangAnhLe 0:ee1ae011cba6 393 printf("Opening root directory.");
QuangAnhLe 0:ee1ae011cba6 394 DIR* dir = opendir("/fs/");
QuangAnhLe 0:ee1ae011cba6 395 errno_error(fd);
QuangAnhLe 1:2f617b92078b 396
QuangAnhLe 0:ee1ae011cba6 397 struct dirent* de;
QuangAnhLe 0:ee1ae011cba6 398 printf("Printing all filenames:\r\n");
QuangAnhLe 0:ee1ae011cba6 399 while((de = readdir(dir)) != NULL){
QuangAnhLe 0:ee1ae011cba6 400 printf(" %s\r\n", &(de->d_name)[0]);
QuangAnhLe 0:ee1ae011cba6 401 }
QuangAnhLe 1:2f617b92078b 402
QuangAnhLe 0:ee1ae011cba6 403 printf("Closing root directory. ");
QuangAnhLe 0:ee1ae011cba6 404 error = closedir(dir);
QuangAnhLe 0:ee1ae011cba6 405 return_error(error);
QuangAnhLe 0:ee1ae011cba6 406 printf("Filesystem Demo complete.\r\n");
QuangAnhLe 2:3d3d272d2df2 407 wait(2);
QuangAnhLe 1:2f617b92078b 408 while (true) {
QuangAnhLe 1:2f617b92078b 409 pc.printf("\n");
QuangAnhLe 1:2f617b92078b 410 wait(1);
QuangAnhLe 1:2f617b92078b 411 if(gps.sample()){
QuangAnhLe 1:2f617b92078b 412 float latitude = gps.latitude;
QuangAnhLe 1:2f617b92078b 413 float longitude = gps.longitude;
QuangAnhLe 1:2f617b92078b 414 float altitude = gps.altitude;
QuangAnhLe 1:2f617b92078b 415 float utc = gps.utc+20000;
QuangAnhLe 1:2f617b92078b 416 int sat_tracked=gps. sat_tracked;
QuangAnhLe 1:2f617b92078b 417 int fix=gps.fix;
QuangAnhLe 1:2f617b92078b 418 int fix_3d=gps.fix_3d;
QuangAnhLe 1:2f617b92078b 419 int id1=gps.id1;
QuangAnhLe 1:2f617b92078b 420 int id2=gps.id2;
QuangAnhLe 1:2f617b92078b 421 int id3=gps.id3;
QuangAnhLe 1:2f617b92078b 422 int id4=gps.id4;
QuangAnhLe 1:2f617b92078b 423 int id5=gps.id5;
QuangAnhLe 1:2f617b92078b 424 int id6=gps.id6;
QuangAnhLe 1:2f617b92078b 425 int id7=gps.id7;
QuangAnhLe 1:2f617b92078b 426 int id8=gps.id8;
QuangAnhLe 1:2f617b92078b 427 int id9=gps.id9;
QuangAnhLe 1:2f617b92078b 428 int id10=gps.id10;
QuangAnhLe 1:2f617b92078b 429 int id11=gps.id11;
QuangAnhLe 1:2f617b92078b 430 int id12=gps.id12;
QuangAnhLe 1:2f617b92078b 431 float speed=gps.speed;
QuangAnhLe 1:2f617b92078b 432 int date=gps.date;
QuangAnhLe 3:eb739df911ef 433
QuangAnhLe 3:eb739df911ef 434 /*pc.printf("Latitude: %0.6f\r\n",latitude);
QuangAnhLe 1:2f617b92078b 435 pc.printf("Longitude:%0.6f\r\n",longitude);
QuangAnhLe 1:2f617b92078b 436 pc.printf("Altitude: %0.3f\r\n",altitude);
QuangAnhLe 1:2f617b92078b 437 pc.printf("Speed in knots: %0.2f\r\n",speed);
QuangAnhLe 1:2f617b92078b 438 pc.printf("Date: %d\r\n",date);
QuangAnhLe 1:2f617b92078b 439 pc.printf("Time UTC: %0.0f\r\n",utc);
QuangAnhLe 1:2f617b92078b 440 pc.printf("Number of satellites being tracked: %d\r\n", sat_tracked);
QuangAnhLe 1:2f617b92078b 441 pc.printf("PRNs of satellites used for fix:\r\n");
QuangAnhLe 1:2f617b92078b 442 pc.printf("ID1:%d,ID2:%d,ID3:%d,ID4:%d,ID5:%d,ID6:%d\r\n",id1,id2,id3,id4,id5,id6);
QuangAnhLe 1:2f617b92078b 443 pc.printf("ID7:%d,ID8:%d,ID9:%d,ID10:%d,ID11:%d,ID12:%d\r\n",id7,id8,id9,id10,id11,id12);
QuangAnhLe 1:2f617b92078b 444 pc.printf("Fix quality: %d - value include 0=invalid; 1=GPS fix\r\n",fix);
QuangAnhLe 1:2f617b92078b 445 pc.printf("3D fix: %d - value include: 1 = no fix, 2 = 2D fix, 3 = 3D fix\r\n\n", fix_3d);
QuangAnhLe 4:793221f865f6 446 pc.printf("****************************************************************\r\n");*/
QuangAnhLe 3:eb739df911ef 447
QuangAnhLe 1:2f617b92078b 448
QuangAnhLe 1:2f617b92078b 449 FILE* fd = fopen("/fs/numbers.txt", "a+");
QuangAnhLe 2:3d3d272d2df2 450 //errno_error(fd);
QuangAnhLe 2:3d3d272d2df2 451 if(fd != NULL)
QuangAnhLe 2:3d3d272d2df2 452 {
QuangAnhLe 2:3d3d272d2df2 453 printf("write file.\r\n");
QuangAnhLe 2:3d3d272d2df2 454 fprintf(fd,"%0.6f,%0.6f,%0.3f,%0.2f,%d,%0.0f,%d,%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d,%d,%d\r\n",latitude, longitude, altitude, speed, date, utc, sat_tracked, id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12, fix,fix_3d);
QuangAnhLe 2:3d3d272d2df2 455 //fclose(fd);
QuangAnhLe 2:3d3d272d2df2 456 printf("Closing file.\r\n");
QuangAnhLe 2:3d3d272d2df2 457 fclose(fd);
QuangAnhLe 2:3d3d272d2df2 458 printf(" done.\r\n");
QuangAnhLe 2:3d3d272d2df2 459 }
QuangAnhLe 1:2f617b92078b 460
QuangAnhLe 2:3d3d272d2df2 461 //printf("Re-opening file read-only.");
QuangAnhLe 2:3d3d272d2df2 462 //fd = fopen("/fs/numbers.txt", "r");
QuangAnhLe 2:3d3d272d2df2 463 //errno_error(fd);
QuangAnhLe 2:3d3d272d2df2 464
QuangAnhLe 2:3d3d272d2df2 465 wait(1);
QuangAnhLe 4:793221f865f6 466 //parseSMS();
QuangAnhLe 4:793221f865f6 467 //readSMS();
QuangAnhLe 4:793221f865f6 468 //printf("Passwort: %s\r\n",passwort);
QuangAnhLe 4:793221f865f6 469
QuangAnhLe 4:793221f865f6 470
QuangAnhLe 4:793221f865f6 471 wait_ms(3000);
QuangAnhLe 3:eb739df911ef 472 wait(1);
QuangAnhLe 4:793221f865f6 473
QuangAnhLe 4:793221f865f6 474 //sendSMS();
QuangAnhLe 4:793221f865f6 475
QuangAnhLe 4:793221f865f6 476 wait(1);
QuangAnhLe 1:2f617b92078b 477 }
QuangAnhLe 2:3d3d272d2df2 478 }
QuangAnhLe 1:2f617b92078b 479 }