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 секунд, чтобы получить фиксированное положение и предоставить действительные координаты, но я не могу их получить.

Есть ли что-то явно неправильное в моем скетче или настройке оборудования?
Любая помощь будет высоко оценена!
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
- Отправка команд PUBX на плату GPS (Ublox NEO-6M) через SoftwareSerial
- Самый компактный способ питания Arduino от розетки
- GPS-модуль uBlox Neo 6M не отвечает
- Как заставить Arduino взаимодействовать с тремя другими Ардуино?
- avrdude: stk500_getsync(): not in sync: resp=0x00
- Ошибка "avrdude:stk500_recv(): programmer is not responding" при загрузке скетча в Arduino Pro Mini
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Самое дешевое решение Arduino GPRS или 3G
удалите
if(serial_gps.encode(c)){ Serial.println(serial_gps.longitude); }.... вместо этого используйтеSerial.println(c);, чтобы увидеть, есть ли какие-либо фактические данные ...... Я думаю, что вы отправляете отдельные символы вgps.encode(), поэтому вы ничего не получаете в ответ, @jsotola