Advertisement
EmptySet5150

Beta - GPS Data Logger

Sep 9th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Include libarys
  2. #include <SoftwareSerial.h>
  3. #include <LiquidCrystal.h>
  4. #include <TinyGPS++.h>
  5. //Initalize libarys
  6. TinyGPSPlus gps;
  7. LiquidCrystal lcd(4,5,6,7,8,9);//RS,E,DB4,DB5,DB6,DB7, pins
  8. SoftwareSerial ssgps(2,3);//RX,TX pins
  9. //Custom characters
  10. byte satelliteChar[8]={
  11.   B01000,B01010,B01100,B01111,B01000,B11110,B00000,
  12. };
  13. byte altitudeChar[8]={
  14.   B00100,B01110,B10101,B00100,B00100,B11111,B00000,
  15. };
  16. byte clockChar[8]={
  17.   B00000,B01110,B10101,B10111,B10001,B01110,B00000,
  18. };
  19. byte speedChar[8]={
  20.   B00000,B00100,B00010,B11111,B00010,B00100,B00000,
  21. };
  22. //Set pins
  23. int debug=A0;
  24. int gled=10;
  25. int rled=11;
  26. int bled=12;
  27. int p13led=13;
  28. //Set some place holders
  29. int gpsSatellites;
  30. int gpsAltitude;
  31. int gpsSpeed;
  32. float gpsTime;
  33. float gpsLat;
  34. float gpsLng;
  35. long waitTime=5000;
  36. long waitLast=0;
  37. long waitCurrent;
  38. void setup(){
  39.   //Start serial displays and lcd
  40.   Serial.begin(115200);
  41.   ssgps.begin(9600);//Software serial at 9600 baud the default for GY-NE06MV2
  42.   lcd.begin(16,2);//16 char across and 2 lines
  43.   lcd.clear();//Clear lcd screen
  44.   //Print some text
  45.   lcd.setCursor(0,0);
  46.   lcd.print("GPS Data Logger ");
  47.   lcd.setCursor(0,1);
  48.   lcd.print("V 0.5 Beta");
  49.   //Set memory address for custon charaters
  50.   lcd.createChar(1,satelliteChar);
  51.   lcd.createChar(2,altitudeChar);
  52.   lcd.createChar(3,clockChar);
  53.   lcd.createChar(4,speedChar);
  54.   //Set pin for output pins
  55.   pinMode(debug,INPUT_PULLUP);
  56.   pinMode(gled,OUTPUT);
  57.   pinMode(rled,OUTPUT);
  58.   pinMode(bled,OUTPUT);
  59.   pinMode(p13led,OUTPUT);
  60.   //Delay and clear lcd screen
  61.   delay(10000);
  62.   lcd.clear();
  63. }
  64. void loop(){
  65.   //Loop while gps is available
  66.   while(ssgps.available()>0)
  67.     if(gps.encode(ssgps.read()))
  68.       displayInfo();
  69.   //If no data from gps for 5 sec print no gps
  70.   if(millis()>5000&&gps.charsProcessed()<10){
  71.     lcd.clear();
  72.     lcd.setCursor(0,0);
  73.     lcd.print("NO GPS DETECTED");
  74.     lcd.setCursor(0,1);
  75.     lcd.print("CHECK WIRING");
  76.     while(true);
  77.   }
  78. }
  79. void displayInfo(){
  80.   //Set the vars from gps info
  81.   gpsSatellites=(gps.satellites.value());
  82.   gpsAltitude=(gps.altitude.feet());
  83.   gpsSpeed=(gps.speed.mph());
  84.   gpsTime=(gps.time.value());
  85.   gpsLat=(gps.location.lat(),6);
  86.   gpsLng=(gps.location.lng(),6);
  87.   //When delay has been reached we display this
  88.   unsigned long waitCurrent=millis();
  89.   if(waitCurrent-waitLast>waitTime){
  90.     waitLast=waitCurrent;
  91.     lcd.clear();
  92.     //Set cursor and print icon and satellites from gpsSatellites
  93.     lcd.setCursor(0,0);
  94.     lcd.write(1);
  95.     lcd.setCursor(1,0);
  96.     if (gps.satellites.isValid()){lcd.print(gpsSatellites);}
  97.     else{lcd.print("**");}
  98.     //Set cursor and print icon and altitude from gpsAltitude
  99.     lcd.setCursor(3,0);
  100.     lcd.write(2);
  101.     lcd.setCursor(4,0);
  102.     if (gps.altitude.isValid()){lcd.print(gpsAltitude);}
  103.     else{lcd.print("****");}
  104.     //Set cursor and print icon and speed from gpsSpeed
  105.     lcd.setCursor(8,0);
  106.     lcd.write(4);
  107.     lcd.setCursor(9,0);
  108.     if (gps.speed.isValid()){lcd.print(gpsSpeed);}
  109.     else{lcd.print("**");}
  110.     //Set cursor and print icon and time from gpsTime
  111.     lcd.setCursor(11,0);
  112.     lcd.write(3);
  113.     lcd.setCursor(12,0);
  114.     if (gps.time.isValid()){lcd.print(gps.time.value());}
  115.     else{lcd.print("****");}
  116.     //Set cursor and print lat and lng from GPS
  117.     lcd.setCursor(0,1);
  118.     if (gps.location.isValid()){
  119.       lcd.print(gps.location.lat(),4);
  120.       lcd.setCursor(8,1);
  121.       lcd.print(gps.location.lng(),4);
  122.     }
  123.     else{lcd.print("INVALID DATA");}
  124.   }
  125.   //Turning on and off leds depending on the number of satellites seen
  126.   if (gpsSatellites >= 9) {
  127.     digitalWrite(gled,HIGH);
  128.     digitalWrite(bled,LOW);
  129.     digitalWrite(rled,LOW);
  130.   }
  131.   if (gpsSatellites < 9 && gpsSatellites > 3) {
  132.     digitalWrite(bled,HIGH);
  133.     digitalWrite(gled,LOW);
  134.     digitalWrite(rled,LOW);
  135.   }
  136.   else {
  137.     digitalWrite(rled,HIGH);
  138.     digitalWrite(bled,LOW);
  139.     digitalWrite(gled,LOW);
  140.   }
  141.   //Check if debug pin is low
  142.   if(digitalRead(debug)==LOW){//If debug pin is low serial print more data
  143.     digitalWrite(p13led,HIGH);
  144.     lcd.clear();
  145.     lcd.setCursor(0,0);
  146.     lcd.print("DIAGNOSTIC MODE");
  147.     Serial.println("---------------------");
  148.     Serial.print("Debug Pin Status - ");
  149.     Serial.println(digitalRead(debug));
  150.     Serial.print("Red Led Status - ");
  151.     Serial.println(digitalRead(rled));
  152.     Serial.print("Blue Led Status - ");
  153.     Serial.println(digitalRead(bled));
  154.     Serial.print("Green Led Status - ");
  155.     Serial.println(digitalRead(gled));
  156.     Serial.print("Satellites Age - ");
  157.     Serial.print(gps.satellites.age());
  158.     Serial.print(" - Satellites Seen - ");
  159.     Serial.println(gps.satellites.value());
  160.     Serial.print("Altitude Age - ");
  161.     Serial.print(gps.altitude.age());
  162.     Serial.print(" - Altitude - ");
  163.     Serial.println(gps.altitude.feet());
  164.     Serial.print("Speed Age - ");
  165.     Serial.print(gps.speed.age());
  166.     Serial.print(" - Speed - ");
  167.     Serial.println(gps.speed.mph(),2);
  168.     Serial.print("Time Age - ");
  169.     Serial.print(gps.time.age());
  170.     Serial.print(" - Time - ");
  171.     Serial.println(gps.time.value());
  172.     Serial.print("Location Age - ");
  173.     Serial.println(gps.location.age());
  174.     Serial.print("Location Lat -");
  175.     Serial.print(gps.location.lat(),6);
  176.     Serial.print(" - Lng - ");
  177.     Serial.println(gps.location.lng(),6);
  178.     delay(5000);
  179.     digitalWrite(p13led,LOW);
  180.   }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement