1
8#include <SoftwareSerial.h>
9#include <TinyGPS.h>
10#include <SPI.h>
11#include <SD.h>
12
13SoftwareSerial mySerial(10, 11);
14TinyGPS Bz_gps;
15
16long lat, lon;
17unsigned long time, date, speed, course;
18unsigned long chars;
19unsigned short sentences, failed_checksum;
20
21int year;
22int fkmph;
23byte month, day, hour, minute, second, hundredths;
24unsigned long fix_age;
25
26String dataString = "";
27const int chipSelect = 53;
28
29void setup()
30{
31 mySerial.begin(9600);
32 Serial.begin(9600);
33 pinMode(53, OUTPUT);
34 if (!SD.begin(chipSelect))
35 {
36 Serial.println("Card failed, Check MOSI & MISO pin Connection");
37 return;
38 }
39 Serial.println("card initialized.");
40}
41void loop()
42{
43 if (mySerial.available())
44 {
45 char c = mySerial.read();
46
47 if (Bz_gps.encode( c ))
48 {
49 Bz_gps.get_position(&lat, &lon, &fix_age);
50 Bz_gps.get_datetime(&date, &time, &fix_age);
51 speed = Bz_gps.speed();
52 course = Bz_gps.course();
53 Bz_gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &fix_age);
54 int fkmph = Bz_gps.f_speed_kmph();
55 dataString = String(day) + "," + String(month) + "," + String(year) + "," + String(hour) + "," + String(minute) + "," + String(second) + "," + String(lat) + "," + String(lon) + "," + String(fkmph);
56 Serial.println(dataString);
57 File dataFile = SD.open("datalog.txt", FILE_WRITE);
58 if (dataFile)
59 {
60 dataFile.println(dataString);
61 dataFile.close();
62 }
63 else
64 {
65 Serial.println("error opening datalog.txt");
66 }
67 }
68 }
69}
70