GPS-модуль uBlox Neo 6M не отвечает
Я недавно начал работать с GPS-модулем uBlox Neo 6 М (спецификация http://www.u-blox.com/images/downloads/Product_Docs/NEO-6_DataSheet_%28GPS.G6-HW-09005%29.pdf). Я подключил его к Arduino Uno, как показано на рисунке:
GPS Arduino VCC-- 3,3 В RX -- D11 TX -- D10 GND-- GND
Я попробовал этот пример кода из TinyGPS++ (конечно, изменив контакты и gpsbaud на 9600, что является стандартом gps по умолчанию).
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
Этот пример скетча демонстрирует нормальное использование объекта TinyGPS++ (TinyGPSPlus).
Это требует использования программного обеспечения и предполагает, что у вас есть
последовательное GPS-устройство с частотой 4800 бод подключено к контактам 4(rx) и 3(tx).
*/
static const int RXPin = 10, TXPin = 11;
static const uint32_t GPSBaud = 9600;
// Объект TinyGPS++ object
TinyGPSPlus gps;
// Последовательное подключение к GPS-устройству
SoftwareSerial ss(RXPin, TXPin);
void setup() {
Serial.begin(115200);
ss.begin(GPSBaud);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("Простая демонстрация TinyGPS++ с подключенным GPS-модулем"));
Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
}
void loop() {
// Этот скетч отображает информацию каждый раз, когда новое предложение правильно закодировано.
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo() {
Serial.print(F("Location: "));
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid()) {
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid()) {
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
} else {
Serial.print(F("INVALID"));
}
Serial.println();
}
Однако у меня не мигает индикатор GPS, а также индикатор RX моего Arduino, поэтому модуль не передает никаких данных. Это вывод из кода:
A simple demonstration of TinyGPS++ with an attached GPS module
Testing TinyGPS++ library v. 0.92
by Mikal Hart
Location: INVALID Date/Time: 0/0/2000 00:00:00.00
Location: INVALID Date/Time: 0/0/2000 00:00:00.00
Спасибо!
@Alrro, 👍3
Обсуждение4 ответа
Попробуйте подключить свой GPS-модуль с помощью кабеля FTDI непосредственно к последовательному порту вашего компьютера (и считайте его с помощью экрана или любой другой терминальной программы). Как только это сработает, приступайте к работе с Arduino. И проверьте, что означает отсутствие мигания вашего GPS-модуля. Обычно он говорит, что "исправления" нет, что означает, что он не видит достаточного количества спутников. Результат, который вы показали, соответствовал бы этой теории. Что означало бы, что все в порядке, за исключением того, что ваш модуль не видит неба...
Спасибо! Реальной проблемы не было, просто я находился в тесном пространстве и у меня не было терпения ;), @Alrro
Neo 6M требует немного времени для исправления при первом включении. Если на вашей плате установлена небольшая батарея, она, скорее всего, разрядится и зарядка займет час или два. Он предназначен для обеспечения зарядки EEPROM и встроенного RTC.
Также убедитесь, что провода на батарее не закорачиваются.
Вы не получите действительное предложение данных из GPS до тех пор, пока RTC не сможет синхронизировать время.
В сообщении об ошибке, которое вы получили от Майка Харта, во-первых, говорится, что для исправления недостаточно данных, а во-вторых, дата и время не синхронизируются.
Я думал, что мой GPS был неисправен. Слава Богу, я увидел ваш ответ и позволил своему модулю остаться включенным на час... И знаешь что?.. Это сработало идеально... Индикатор на борту начал мигать, @Bhuvnesh
1) Попробуйте выйти на улицу или подойти к окну. потому что сигнал может не проникнуть внутрь дома.
2)Проверьте соединение.
3) Выведите количество подключенных спутников, чтобы узнать, подключено ли устройство с помощью
Serial.println(gps.satellites.value());
Удачи!!!
После 2 дней устранения неполадок я нашел решение
- Используйте внешнее питание 3,3 вольта
- Используйте делители напряжения, чтобы сделать 3,3 вольта совместимыми с модулем
- выйди на улицу(открытое пространство)
Вот и все
- TinyGPS не дает долготу, широту и другие данные
- последовательная передача данных на GPS-экране duinopeak
- GPS-модуль не работает с датчиком
- Могу ли я объединить ультразвуковой датчик и GPS вместе?
- Модуль GPS выводит вопросительные знаки в последовательном окне
- Neo 6m выводит что-то, что я как нуб не могу понять
- Получение «Открыть сбой питания GPS» на модуле SIM808
- Arduino Uno R3 не работает с Сайтроном экран GPS 53
Откуда у тебя GPS-навигатор? Возможно, тот, который вы получили, был настроен на использование двоичного протокола uBlox по умолчанию вместо NMEA, @BrettAM
Еще один комментарий: я некоторое время работал с некоторыми GPS-модулями u-blox LEA-6T, и они были ДЕЙСТВИТЕЛЬНО нетерпимы к несоответствиям скорости передачи данных до такой степени, что он не разговаривал с моим устройством, передавая 115200 бод, даже если скорость передачи данных была всего ~2%. Я специально выбрал скорость передачи данных, которая хорошо работала с локальным генератором, который у меня был. Я не знаю, похожи ли модули NEO-6M, но это может быть возможно., @Connor Wolf