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 от получения данных и повторно включить его в какой-то другой момент?
- Модуль SIM808 GSM работает нормально, GPS не работает (нет сообщения о готовности GPS при включении питания)
удалите
if(serial_gps.encode(c)){ Serial.println(serial_gps.longitude); }
.... вместо этого используйтеSerial.println(c);
, чтобы увидеть, есть ли какие-либо фактические данные ...... Я думаю, что вы отправляете отдельные символы вgps.encode()
, поэтому вы ничего не получаете в ответ, @jsotola