GPS: не получает никаких действительных выходных данных от ATGM336H

У меня есть Arduino Pro Mini вместе с GPS-модулем - ATGM336H. Ниже приведен скетч, который я сейчас использую:

#include <SoftwareSerial.h>
#include "Ublox.h"
SoftwareSerial GPS(4,5);
Ublox serial_gps;

void setup(){
  Serial.begin(9600);
  GPS.begin(9600);
}

void loop(){
  while(GPS.available()){
  char c = GPS.read();
  if(serial_gps.encode(c)){
  Serial.println(serial_gps.longitude); 
    }
  }
}

Я могу получать поток NMEA от GPS-устройства и анализировать (пробовал TinyGPS++, TinyGPS и Ublox) поток, но данные недействительны и никогда не меняются. Я читал, что этому GPS-устройству может потребоваться до 32 секунд, чтобы получить фиксированное положение и предоставить действительные координаты, но я не могу их получить.

Последовательный монитор

Есть ли что-то явно неправильное в моем эскизе или настройке оборудования?

Любая помощь будет высоко оценена!

, 👍0

Обсуждение

удалите if(serial_gps.encode(c)){ Serial.println(serial_gps.longitude); } .... вместо этого используйте Serial.println(c);, чтобы увидеть, есть ли какие-либо фактические данные ...... Я думаю, что вы отправляете отдельные символы в gps.encode(), поэтому вы ничего не получаете в ответ, @jsotola


1 ответ


-1

пока(GPS.available() > 0) {....

А GPS-устройство тоже снаружи?

,

Я тестировал проект как в помещении, так и на улице. Я получаю потоки NMEA, но, похоже, в них не хватает важной информации. Я включу >0 и свяжусь с вами с результатом., @Mitchel Stuart Fountaine

Нет никакой разницы между while(GPS.available()) и while(GPS.available() > 0). 0 - false, все остальное - true, и GPS.available() не возвращает отрицательных значений., @gre_gor

available() возвращает количество байтов в буфере RX, поэтому если вы просто используете available(), будет возвращен ноль, и подпрограмма запустится и вернет нули, что и выглядит как ее вывод. Если вы используете available() > 0, то подпрограмма запустится только тогда, когда существует 1 или более байтов., @Brian Moreau

Если available() возвращает ноль, то цикл while не будет запущен, поскольку ноль равен false., @gre_gor