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:
Fri Apr 12 17:48:39 2019 +0000
Revision:
1:2f617b92078b
Parent:
0:ee1ae011cba6
Child:
2:3d3d272d2df2
save data

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 1:2f617b92078b 3 #include <iostream>
QuangAnhLe 1:2f617b92078b 4 #include <sstream>
QuangAnhLe 1:2f617b92078b 5 #include <bitset>
QuangAnhLe 1:2f617b92078b 6 #include <string>
QuangAnhLe 0:ee1ae011cba6 7 #include "FATFileSystem.h"
QuangAnhLe 0:ee1ae011cba6 8 //#include "HeapBlockDevice.h"
QuangAnhLe 0:ee1ae011cba6 9 #include "SDBlockDevice.h"
QuangAnhLe 0:ee1ae011cba6 10 #include <stdio.h>
QuangAnhLe 0:ee1ae011cba6 11 #include <errno.h>
QuangAnhLe 0:ee1ae011cba6 12
QuangAnhLe 0:ee1ae011cba6 13 //HeapBlockDevice bd(128 * 512, 512);
QuangAnhLe 0:ee1ae011cba6 14 //SDBlockDevice bd(PinName mosi, PinName miso, PinName sclk, PinName cs);
QuangAnhLe 0:ee1ae011cba6 15 SDBlockDevice bd(D11, D12, D13, D10);
QuangAnhLe 1:2f617b92078b 16 Serial pc(PA_2,PA_3);
QuangAnhLe 1:2f617b92078b 17 GPS gps (PA_11,PA_12);
QuangAnhLe 0:ee1ae011cba6 18
QuangAnhLe 0:ee1ae011cba6 19 FATFileSystem fs("fs");
QuangAnhLe 0:ee1ae011cba6 20
QuangAnhLe 0:ee1ae011cba6 21 void return_error(int ret_val){
QuangAnhLe 0:ee1ae011cba6 22 if (ret_val)
QuangAnhLe 0:ee1ae011cba6 23 printf("Failure. %d\r\n", ret_val);
QuangAnhLe 0:ee1ae011cba6 24 else
QuangAnhLe 0:ee1ae011cba6 25 printf("done.\r\n");
QuangAnhLe 0:ee1ae011cba6 26 }
QuangAnhLe 1:2f617b92078b 27
QuangAnhLe 0:ee1ae011cba6 28 void errno_error(void* ret_val){
QuangAnhLe 0:ee1ae011cba6 29 if (ret_val == NULL)
QuangAnhLe 0:ee1ae011cba6 30 printf(" Failure. %d \r\n", errno);
QuangAnhLe 0:ee1ae011cba6 31 else
QuangAnhLe 0:ee1ae011cba6 32 printf(" done.\r\n");
QuangAnhLe 0:ee1ae011cba6 33 }
QuangAnhLe 1:2f617b92078b 34
QuangAnhLe 0:ee1ae011cba6 35 int main() {
QuangAnhLe 0:ee1ae011cba6 36 int error = 0;
QuangAnhLe 0:ee1ae011cba6 37 printf("Welcome to the filesystem example.\r\n"
QuangAnhLe 0:ee1ae011cba6 38 "Formatting a FAT, RAM-backed filesystem. ");
QuangAnhLe 0:ee1ae011cba6 39 error = FATFileSystem::format(&bd);
QuangAnhLe 0:ee1ae011cba6 40 return_error(error);
QuangAnhLe 1:2f617b92078b 41
QuangAnhLe 0:ee1ae011cba6 42 printf("Mounting the filesystem on \"/fs\". ");
QuangAnhLe 0:ee1ae011cba6 43 error = fs.mount(&bd);
QuangAnhLe 0:ee1ae011cba6 44 return_error(error);
QuangAnhLe 1:2f617b92078b 45
QuangAnhLe 0:ee1ae011cba6 46 printf("Opening a new file, numbers.txt.");
QuangAnhLe 0:ee1ae011cba6 47 FILE* fd = fopen("/fs/numbers.txt", "w");
QuangAnhLe 0:ee1ae011cba6 48 errno_error(fd);
QuangAnhLe 1:2f617b92078b 49
QuangAnhLe 1:2f617b92078b 50 /*for (int i = 0; i < 20; i++){
QuangAnhLe 0:ee1ae011cba6 51 printf("Writing decimal numbers to a file (%d/20)\r", i);
QuangAnhLe 0:ee1ae011cba6 52 fprintf(fd, "%d\r\n", i);
QuangAnhLe 1:2f617b92078b 53 }*/
QuangAnhLe 1:2f617b92078b 54 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 1:2f617b92078b 55 //printf("Writing decimal numbers to a file (20/20) done.\r\n");
QuangAnhLe 1:2f617b92078b 56
QuangAnhLe 0:ee1ae011cba6 57 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 58 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 59 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 60
QuangAnhLe 0:ee1ae011cba6 61 printf("Re-opening file read-only.");
QuangAnhLe 0:ee1ae011cba6 62 fd = fopen("/fs/numbers.txt", "r");
QuangAnhLe 0:ee1ae011cba6 63 errno_error(fd);
QuangAnhLe 1:2f617b92078b 64
QuangAnhLe 0:ee1ae011cba6 65 printf("Dumping file to screen.\r\n");
QuangAnhLe 0:ee1ae011cba6 66 char buff[16] = {0};
QuangAnhLe 0:ee1ae011cba6 67 while (!feof(fd)){
QuangAnhLe 0:ee1ae011cba6 68 int size = fread(&buff[0], 1, 15, fd);
QuangAnhLe 0:ee1ae011cba6 69 fwrite(&buff[0], 1, size, stdout);
QuangAnhLe 0:ee1ae011cba6 70 }
QuangAnhLe 0:ee1ae011cba6 71 printf("EOF.\r\n");
QuangAnhLe 1:2f617b92078b 72
QuangAnhLe 0:ee1ae011cba6 73 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 74 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 75 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 76
QuangAnhLe 0:ee1ae011cba6 77 printf("Opening root directory.");
QuangAnhLe 0:ee1ae011cba6 78 DIR* dir = opendir("/fs/");
QuangAnhLe 0:ee1ae011cba6 79 errno_error(fd);
QuangAnhLe 1:2f617b92078b 80
QuangAnhLe 0:ee1ae011cba6 81 struct dirent* de;
QuangAnhLe 0:ee1ae011cba6 82 printf("Printing all filenames:\r\n");
QuangAnhLe 0:ee1ae011cba6 83 while((de = readdir(dir)) != NULL){
QuangAnhLe 0:ee1ae011cba6 84 printf(" %s\r\n", &(de->d_name)[0]);
QuangAnhLe 0:ee1ae011cba6 85 }
QuangAnhLe 1:2f617b92078b 86
QuangAnhLe 0:ee1ae011cba6 87 printf("Closing root directory. ");
QuangAnhLe 0:ee1ae011cba6 88 error = closedir(dir);
QuangAnhLe 0:ee1ae011cba6 89 return_error(error);
QuangAnhLe 0:ee1ae011cba6 90 printf("Filesystem Demo complete.\r\n");
QuangAnhLe 1:2f617b92078b 91
QuangAnhLe 1:2f617b92078b 92 while (true) {
QuangAnhLe 1:2f617b92078b 93 pc.printf("\n");
QuangAnhLe 1:2f617b92078b 94 wait(1);
QuangAnhLe 1:2f617b92078b 95 if(gps.sample()){
QuangAnhLe 1:2f617b92078b 96 float latitude = gps.latitude;
QuangAnhLe 1:2f617b92078b 97 float longitude = gps.longitude;
QuangAnhLe 1:2f617b92078b 98 float altitude = gps.altitude;
QuangAnhLe 1:2f617b92078b 99 float direction =0.0;
QuangAnhLe 1:2f617b92078b 100 float utc = gps.utc+20000;
QuangAnhLe 1:2f617b92078b 101 //int sek=gps.sek;
QuangAnhLe 1:2f617b92078b 102 //int min=gps.min;
QuangAnhLe 1:2f617b92078b 103 //int hour=gps.hour;
QuangAnhLe 1:2f617b92078b 104 int sat_tracked=gps. sat_tracked;
QuangAnhLe 1:2f617b92078b 105 int fix=gps.fix;
QuangAnhLe 1:2f617b92078b 106 int fix_3d=gps.fix_3d;
QuangAnhLe 1:2f617b92078b 107 int id1=gps.id1;
QuangAnhLe 1:2f617b92078b 108 int id2=gps.id2;
QuangAnhLe 1:2f617b92078b 109 int id3=gps.id3;
QuangAnhLe 1:2f617b92078b 110 int id4=gps.id4;
QuangAnhLe 1:2f617b92078b 111 int id5=gps.id5;
QuangAnhLe 1:2f617b92078b 112 int id6=gps.id6;
QuangAnhLe 1:2f617b92078b 113 int id7=gps.id7;
QuangAnhLe 1:2f617b92078b 114 int id8=gps.id8;
QuangAnhLe 1:2f617b92078b 115 int id9=gps.id9;
QuangAnhLe 1:2f617b92078b 116 int id10=gps.id10;
QuangAnhLe 1:2f617b92078b 117 int id11=gps.id11;
QuangAnhLe 1:2f617b92078b 118 int id12=gps.id12;
QuangAnhLe 1:2f617b92078b 119 double hdop=gps.hdop;
QuangAnhLe 1:2f617b92078b 120 double pdop=gps.pdop;
QuangAnhLe 1:2f617b92078b 121 float speed=gps.speed;
QuangAnhLe 1:2f617b92078b 122 int date=gps.date;
QuangAnhLe 1:2f617b92078b 123 //char aut=gps.aut;
QuangAnhLe 1:2f617b92078b 124 //float vdop=gps.vdop;
QuangAnhLe 1:2f617b92078b 125 //int chek_data=gps.check_data;
QuangAnhLe 1:2f617b92078b 126 /*pc.printf("Latitude, Longitude,Altitude, Direction, Speed in knots, Date, Time, Satellites in use, Satellites in view, IDs of satellites ins use, Fix, Fix mode, PDOP, HDOP\r\n");
QuangAnhLe 1:2f617b92078b 127 pc.printf("%0.6f,%0.6f,%0.3f,%0.2f,%0.2f,%d,%0.0f,%d,",latitude,longitude,altitude,direction,speed,date,utc, sat_tracked);
QuangAnhLe 1:2f617b92078b 128 pc.printf("%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d,",id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12);
QuangAnhLe 1:2f617b92078b 129 pc.printf("%d,%d,%.2f,%.2f\r\n",fix,fix_3d,pdop,hdop);*/
QuangAnhLe 1:2f617b92078b 130 //pc.printf("%d",date);
QuangAnhLe 1:2f617b92078b 131 pc.printf("Latitude: %0.6f\r\n",latitude);
QuangAnhLe 1:2f617b92078b 132 pc.printf("Longitude:%0.6f\r\n",longitude);
QuangAnhLe 1:2f617b92078b 133 pc.printf("Altitude: %0.3f\r\n",altitude);
QuangAnhLe 1:2f617b92078b 134 pc.printf("Speed in knots: %0.2f\r\n",speed);
QuangAnhLe 1:2f617b92078b 135 pc.printf("Date: %d\r\n",date);
QuangAnhLe 1:2f617b92078b 136 pc.printf("Time UTC: %0.0f\r\n",utc);
QuangAnhLe 1:2f617b92078b 137 pc.printf("Number of satellites being tracked: %d\r\n", sat_tracked);
QuangAnhLe 1:2f617b92078b 138 pc.printf("PRNs of satellites used for fix:\r\n");
QuangAnhLe 1:2f617b92078b 139 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 140 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 141 pc.printf("Fix quality: %d - value include 0=invalid; 1=GPS fix\r\n",fix);
QuangAnhLe 1:2f617b92078b 142 pc.printf("3D fix: %d - value include: 1 = no fix, 2 = 2D fix, 3 = 3D fix\r\n\n", fix_3d);
QuangAnhLe 1:2f617b92078b 143 pc.printf("****************************************************************\r\n");
QuangAnhLe 1:2f617b92078b 144
QuangAnhLe 1:2f617b92078b 145 FILE* fd = fopen("/fs/numbers.txt", "a+");
QuangAnhLe 1:2f617b92078b 146 errno_error(fd);
QuangAnhLe 1:2f617b92078b 147
QuangAnhLe 1:2f617b92078b 148 /*for (int i = 0; i < 20; i++){
QuangAnhLe 1:2f617b92078b 149 printf("Writing decimal numbers to a file (%d/20)\r", i);
QuangAnhLe 1:2f617b92078b 150 fprintf(fd, "%d\r\n", i);
QuangAnhLe 1:2f617b92078b 151 }*/
QuangAnhLe 1:2f617b92078b 152 //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 1:2f617b92078b 153 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",latitude, longitude, altitude, speed, date, utc, sat_tracked, id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12, fix,fix_3d);
QuangAnhLe 1:2f617b92078b 154 }
QuangAnhLe 0:ee1ae011cba6 155 }
QuangAnhLe 1:2f617b92078b 156 }