Отображение данных NEO 6M в терминале Bluetooth с ESP32 - PullRequest
1 голос
/ 24 июня 2019

Я создаю GPS-трекер, который отправляет данные о местоположении на Android с Bluetooth и отображает информацию в Терминале.Я пытаюсь использовать библиотеку TinyGPS ++ для анализа данных в более читаемый текст.Я могу напечатать исходные данные NEO 6M на мониторе и в терминале Bluetooth, но я получаю только 0 значений при использовании TinyGPSPlus для отображения данных.Я хочу, чтобы позиция обновлялась каждые 5 секунд.Как я могу распечатать местоположение каждые 5 секунд в терминале Bluetooth?

Вывод этого кода на терминале Bluetooth и мониторе:

LONG = 0.000 
ALT = 0.000 
SATs = 0 

Вот мой код:

#include "BluetoothSerial.h"
#include <TinyGPS++.h>

BluetoothSerial ESP_BT;
TinyGPSPlus gps;

#define GPS_RXD2 16
#define GPS_TXD2 17

char datGPS=' ';
int incoming;
int OUTLED = 2;

void setup() {

    Serial.begin(9600);
    Serial2.begin(9600, SERIAL_8N1, GPS_RXD2, GPS_TXD2);
    Serial.println("Serial Txd is on pin: "+String(GPS_TXD2));
    Serial.println("Serial Rxd is on pin: "+String(GPS_RXD2));

    ESP_BT.begin("BLE-GPS-Tracker"); //Name of your Bluetooth Signal
    Serial.println("Bluetooth Device is Ready to Pair");

    pinMode (OUTLED, OUTPUT);
}

void loop() {
    while (Serial2.available()) {
        datGPS = char(Serial2.read());
        Serial.print(datGPS);
        ESP_BT.print(datGPS);
        gps.encode(Serial2.read());

        static unsigned long lastTime = 0;
        if (millis() - lastTime >= 5000) {
            lastTime = millis();
            Serial.print("LAT=");  Serial.println(gps.location.lat(), 3);
            Serial.print("LONG="); Serial.println(gps.location.lng(), 3);
            Serial.print("ALT=");  Serial.println(gps.altitude.meters());
            Serial.print("SATs="); Serial.println(gps.satellites.value());

            ESP_BT.print("LAT=");  ESP_BT.println(gps.location.lat(), 3);
            ESP_BT.print("LONG="); ESP_BT.println(gps.location.lng(), 3);
            ESP_BT.print("ALT=");  ESP_BT.println(gps.altitude.meters());
            ESP_BT.print("SATs="); ESP_BT.println(gps.satellites.value());
        }
    }

    if (ESP_BT.available())
    {
    incoming = ESP_BT.read();
    Serial.print("Received:");
    Serial.println(incoming);

    if (incoming == 49)
        {
        digitalWrite(OUTLED, HIGH);
        ESP_BT.println("LED turned ON");
        }

    if (incoming == 48)
        {
        digitalWrite(OUTLED, LOW);
        ESP_BT.println("LED turned OFF");
        }

    if (Serial2.available())
        {
        ESP_BT.println(char(Serial2.read()));
        }    
    }
delay(5);  
}
...