Arduino GPS Module
![]() |
![]() |
Moduler der er brugt:
1 stk. Micro SD card reader Module
1 stk. GY-NEO6MV2 GPS Module
Interesseret i at købe moderne? Så send mig en Denne e-mail adresse bliver beskyttet mod spambots. Du skal have JavaScript aktiveret for at vise den..
Sådan ser koden ud i GPS_Data.txt
Using TinyGPS library v. 13
Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum
(deg) (deg) Age Age (m) --- from GPS ---- ---- to City ---- RX RX Fail
-------------------------------------------------------------------------------------------------------------------------------------
6 188 55.477329 8.462141 620 06/15/2018 22:50:03 638 11.00 0.00 0.06 N 0 139.41 SE 25316 2 3
6 188 55.477317 8.462144 710 06/15/2018 22:50:04 728 11.30 0.00 0.04 N 0 137.00 SE 25760 4 3
6 188 55.477310 8.462141 731 06/15/2018 22:50:05 751 11.30 0.00 0.09 N 0 135.02 SE 26204 6 3
6 188 55.477302 8.462138 760 06/15/2018 22:50:06 778 10.80 0.00 0.02 N 0 131.94 SE 26648 8 3
6 188 55.477302 8.462139 783 06/15/2018 22:50:07 802 10.00 0.00 0.22 N 0 132.07 SE 27092 10 3
6 188 55.477298 8.462137 813 06/15/2018 22:50:08 830 10.40 0.00 0.15 N 0 131.82 SE 27544 12 3
6 188 55.477294 8.462136 839 06/15/2018 22:50:09 856 10.70 0.00 0.07 N 0 129.39 SE 27996 14 3
6 188 55.477294 8.462131 129 06/15/2018 22:50:11 74 10.60 0.00 0.13 N 0 128.78 SE 28763 18 3
6 188 55.477298 8.462136 324 06/15/2018 22:50:12 342 11.50 0.00 0.26 N 0 131.69 SE 29315 20 4
6 188 55.477306 8.462139 346 06/15/2018 22:50:13 364 12.30 0.00 0.69 N 0 133.80 SE 29759 22 4
6 188 55.477294 8.462134 375 06/15/2018 22:50:14 400 10.70 0.00 0.63 N 0 129.14 SE 30203 24 4
6 188 55.477291 8.462129 399 06/15/2018 22:50:15 417 10.00 0.00 0.19 N 0 128.06 SE 30658 26 4
6 187 55.477291 8.462127 427 06/15/2018 22:50:16 445 9.50 0.00 0.15 N 0 127.83 SE 31112 28 4
6 187 55.477287 8.462126 451 06/15/2018 22:50:17 469 9.50 0.00 0.26 N 0 126.25 SE 31566 30 4
6 187 55.477287 8.462126 478 06/15/2018 22:50:18 497 9.40 0.00 0.39 N 0 126.25 SE 32020 32 4
6 187 55.477287 8.462126 502 06/15/2018 22:50:19 519 9.40 0.00 0.11 N 0 126.25 SE 32474 34 4
6 187 55.477287 8.462128 530 06/15/2018 22:50:20 548 9.40 0.00 0.52 N 0 126.48 SE 32928 36 4
6 187 55.477283 8.462121 563 06/15/2018 22:50:21 582 9.00 0.00 0.24 N 0 125.57 SE 33382 38 4
6 187 55.477287 8.462116 596 06/15/2018 22:50:22 614 9.00 0.00 2.07 N 0 124.52 SE 33836 40 4
6 187 55.477287 8.462115 616 06/15/2018 22:50:23 634 8.80 0.00 0.17 N 0 124.42 SE 34290 42 4
6 187 55.477287 8.462108 645 06/15/2018 22:50:24 663 8.60 0.00 1.02 N 0 124.17 SE 34744 44 4
6 187 55.477287 8.462101 667 06/15/2018 22:50:25 686 8.40 0.00 0.24 N 0 123.45 ESE 35198 46 4
6 187 55.477287 8.462098 696 06/15/2018 22:50:26 713 8.40 0.00 0.20 N 0 123.06 ESE 35652 48 4
6 187 55.477283 8.462095 719 06/15/2018 22:50:27 739 8.20 0.00 0.02 N 0 122.76 ESE 36106 50 4
6 187 55.477283 8.462096 745 06/15/2018 22:50:28 763 8.80 0.00 0.07 N 0 122.86 ESE 36560 52 4
6 187 55.477283 8.462092 772 06/15/2018 22:50:29 790 8.70 0.00 0.35 N 0 122.48 ESE 37014 54 4
6 187 55.477279 8.462089 813 06/15/2018 22:50:30 832 9.00 0.00 0.20 N 0 120.76 ESE 37468 56 4
6 187 55.477279 8.462087 832 06/15/2018 22:50:31 850 9.00 0.00 0.24 N 0 120.58 ESE 37922 58 4
Pin nr. opsætning:
Arduino Pin | GPS Modul | |
3.3V | --> | VCC |
~3 | --> | RX |
4 | --> | TX |
GND | --> | GND |
Arduino Pin | SD Modul Pin | |
7 | --> | CS |
13 | --> | CSK |
11 | --> | MOSI |
12 | --> | MISO |
5V | --> | VCC |
GND | --> | GND |
Du er velkommen til at redigere og bruge modulet.
________________________________________________________________________________________________________________________________
#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <SPI.h>
#include <SD.h>
TinyGPS gps;
SoftwareSerial ss(4, 3);
File myFile;
static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);
void setup()
{
Serial.begin(115200);
ss.begin(9600);
if (!SD.begin(7)) {
return;
}
myFile = SD.open("GPS_Data.txt", FILE_WRITE);
myFile.println();
myFile.print("Using TinyGPS library v. ");
myFile.println(TinyGPS::library_version());
myFile.println();
myFile.println("Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum");
myFile.println(" (deg) (deg) Age Age (m) --- from GPS ---- ---- to City ---- RX RX Fail");
myFile.println("-------------------------------------------------------------------------------------------------------------------------------------");
myFile.close();
}
void loop()
{
float flat, flon;
unsigned long age, date, time, chars = 0;
unsigned short sentences = 0, failed = 0;
static const double City_From_LAT = 55.477195, City_From_LON = 8.462352;//City_From_LAT = 51.508131, City_From_LON = -0.128002; London -- City_From_LAT = 55.477195, City_From_LON = 8.462352; Esbjerg Hygge Alle
myFile = SD.open("GPS_Data.txt", FILE_WRITE);
print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
gps.f_get_position(&flat, &flon, &age);
print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
print_date(gps);
print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned long)TinyGPS::distance_between(flat, flon, City_From_LAT, City_From_LON) / 1000, 0xFFFFFFFF, 9);
print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE : TinyGPS::course_to(flat, flon, City_From_LAT, City_From_LON), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, City_From_LAT, City_From_LON)), 6);
gps.stats(&chars, &sentences, &failed);
print_int(chars, 0xFFFFFFFF, 6);
print_int(sentences, 0xFFFFFFFF, 10);
print_int(failed, 0xFFFFFFFF, 9);
Serial.print('*');
Serial.println();
myFile.println();
myFile.close();
smartdelay(1000);
}
static void print_date(TinyGPS &gps)
{
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long age;
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
if (age == TinyGPS::GPS_INVALID_AGE)
myFile.print("********** ******** ");
else
{
char sz[32];
sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",
month, day, year, hour, minute, second);
myFile.print(sz);
}
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
smartdelay(0);
}
static void print_str(const char *str, int len)
{
int slen = strlen(str);
for (int i=0; i<len; ++i)
myFile.print(i<slen ? str[i] : ' ');
smartdelay(0);
}
static void print_int(unsigned long val, unsigned long invalid, int len)
{
char sz[32];
if (val == invalid)
strcpy(sz, "*******");
else
sprintf(sz, "%ld", val);
sz[len] = 0;
for (int i=strlen(sz); i<len; ++i)
sz[i] = ' ';
if (len > 0)
sz[len-1] = ' ';
myFile.print(sz);
smartdelay(0);
}
static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
myFile.print('*');
myFile.print(' ');
}
else
{
myFile.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
myFile.print(' ');
}
smartdelay(0);
}
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}
________________________________________________________________________________________________________________