Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- String data = "";
- void setup() { Serial.begin(9600);
- delay(6000);
- Serial1.begin(9600); // default NMEA GPS baud
- Serial.println("Starting");
- // $GPRMC,104322.00,A,5225.12039,N,00705.03973,E,0.546,,160718,,,A*7D
- }
- //-------------------------------------------------------------------//
- void getData(){
- char c;
- int q = 0;
- while( q < 2){
- if (Serial1.available()) {
- c = Serial1.read();
- if (c == '$'){
- q ++;
- }
- if ( q == 1){
- data += c;
- }
- if( data.startsWith("$") && c == '\n'){
- q++;
- }
- }
- if (data.length() == 66){ //other gps (Blue 6M)
- data = data.substring(0,16) + "0" + data.substring(16,28)+ data.substring(29,42) + data.substring(43, 50) + data.substring(51,52) + "XXXXXX"+ data.substring(52,66);
- }
- }
- if (data.length() == 71){
- data = data.substring(0,50) + "0" + data.substring(50,72);
- }
- if (data.length() == 72){
- data = data.substring(0,45) + "0" + data.substring(45,73);
- }
- if (data.length() == 73){
- data = data.substring(0,45) + "0" + data.substring(45,74);
- }
- }
- //-------------------------------------------------------------------//
- boolean checkData(){ if (data.substring(0,6).equals("$GPRMC") && data.length() == 74){
- return true;
- }
- return false; }
- //-------------------------------------------------------------------//
- boolean checkStatus(){
- if ((data.substring(18,19)).equals("A")){ return true;
- } return false; }
- //-------------------------------------------------------------------//
- String getTime(){ String time = String((data.substring(7,9).toInt())+2) + ":" + data.substring(9,11) + ":" +data.substring(11,13);
- return time;
- }
- //-------------------------------------------------------------------//
- String getLongitude(){ /*
- uint32_t deg = (data.substring(20,22).toInt())*1000000;
- uint32_t mm = (data.substring(22,24).toInt())*100;
- uint32_t ssms = data.substring(25,29).toInt();
- uint32_t longitude = (((ssms/60)+mm)/60)+deg;
- */
- String longitude = data.substring(30,31) + data.substring(20,22) + data.substring(22,24) + data.substring(25,29); return longitude; }
- //-------------------------------------------------------------------//
- String getLatitude(){ /* uint32_t deg = (data.substring(32,35).toInt())*1000000;
- uint32_t mm = (data.substring(35,37).toInt())*100;
- uint32_t ssms = data.substring(38,42).toInt(); uint32_t latitude = (((ssms/60)+mm)/60)+deg;
- */
- String latitude = data.substring(43,44) + data.substring(32,35) + data.substring(35,37) + data.substring(38,42);
- return latitude; }
- //-------------------------------------------------------------------//
- String getDate(){ String date = data.substring(59,61) + "." + data.substring(61,63) + "." + data.substring(63,65); return date; }
- //-------------------------------------------------------------------//
- /*String getSpeed(){
- uint32_t beforekomma = data.substring(45,48).toInt();
- uint32_t komma = data.substring(49,51).toInt();
- uint32_t speed = ((((beforekomma*100)+komma)*1000)*1852)/10;
- String kmh = String(speed);
- return kmh;
- }
- */
- //-------------------------------------------------------------------//
- void loop() {
- getData();
- //Serial.println("getData");
- //Serial.println(data);
- if (checkData() == true){
- // Serial.println("checkData");
- if (checkStatus() == true){
- Serial.println("-- Active Fix --");
- Serial.println("Time(DE):");
- Serial.println(getTime());
- Serial.println("Date:");
- Serial.println(getDate());
- Serial.println("Longitude:");
- Serial.println(getLongitude());
- Serial.println("Latitude:");
- Serial.println(getLatitude());
- //Serial.println("Speed(in Km/h):");
- //Serial.println(getSpeed());
- Serial.println("Data:");
- Serial.println(data);
- }
- }
- if (data.length() >75 && data.substring(0,6).equals("$GPRMC")) {
- Serial.println("Data coruppt or GPS-Module broken. You may restart the device to fix issue.");
- Serial.println(data);
- }
- if (data.substring(18,19).equals("V")) {
- Serial.println("-- No Fix --");
- }
- data = "";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement