Интерфейс U-Blox Neo M8N GNSS-GPS с ESP32-TTGO-T-CALL
Я пытался связаться с производителями, а также с помощью многих поисковых запросов в Google. Я перепробовал множество различных библиотек, чтобы заставить этот GNSS-GPS работать.
Библиотеки, Которые я Пробовал:
Arduino_GPS
Arduino_Parser_Ublox_Neo_M8N
esp32-ublox
МикроНМЕА
НЕО-М8Н
НеоГПС
UBLOX-NEO-M8N
Библиотека, в которой я сейчас пытаюсь:
- парсер_ублокс_нео_м8н с помощью:
- ESPSoftwareSerial
(У меня нет платы AVR, поэтому NeoSWSerial и SoftwareSerial не работали для меня.)
Ссылка на файлы на GitHub: https://github.com/toskyRocker/Arduino_Parser_Ublox_Neo_M8N
Мои вопросы для тех, кто делал это раньше с U-Blox M8N:
- Должен ли я использовать программное обеспечение U-Center для настройки gps, прежде чем он будет выводить данные?
- Выглядит ли мой код функциональным? Я могу скомпилировать, но затем при подключении GPS я получаю вывод (в виде сообщения об ошибке psuedo), который позволяет мне узнать, что последовательное соединение между моим TTGO T-Call V1.3 и U-Blox-M8N недействительно. Вот ссылка на плату, которая у меня есть, и GNSS-GPS:
Плата: https://www.ebay.com/i/284030711638?chn=ps&norover=1&mkevt=1&mkrid=711-213727-13078-0&mkcid=2&itemid=284030711638&targetid=4580840328168117&device=c&mktype=&googleloc=&poi=&campaignid=403206339&mkgroupid=1235851284533722&rlsatarget=pla-4580840328168117&abcId=9300372&merchantid=51291&msclkid=52c16af1ba571d52ddfe35755ba68854
GPS: https://www.bidorbuy.co.za/item/319275677/GYGPSV5_NEO_M8N_NEO_M8N_001_GPS_Chip_Module_for_APM2_6_Flight_Control.html
("<#включить SoftwareSerial.h>" в приведенном ниже коде-это то, что было добавлено, когда я использовал выпадающее меню библиотек Arduino IDE, когда я выбрал espsoftwareserial для включения.)<#включить SoftwareSerial.h>
Вот код (.ino):
#include <SoftwareSerial.h>
#include "Ublox.h"
#define SERIAL_BAUD 115200
#define GPS_BAUD 9600
#define N_INTS 4
//gpsSerial(3,1);
Ublox M8_Gps;
// Altitude - Latitude - Longitude - N Satellites
int gpsArray[N_INTS] = {0, 0, 0, 0};
SoftwareSerial gpsSerial;
/////////////////////////////////////////////////////////////
void setup() {
Serial.begin(SERIAL_BAUD);
gpsSerial.begin(GPS_BAUD,SWSERIAL_8N1,3,1);
//gpsSerial.begin(GPS_BAUD);
pinMode(0,OUTPUT);
}
///////////////////////////////////////////////////////////
void loop() {
digitalWrite(0,LOW);
if(!gpsSerial.available()){
Serial.print("Problem with GPS ");
}
while(gpsSerial.available()){
char c = gpsSerial.read();
if (M8_Gps.encode(c)) {
gpsArray[0] = M8_Gps.altitude;
gpsArray[1] = M8_Gps.latitude;
gpsArray[2] = M8_Gps.longitude;
gpsArray[3] = M8_Gps.sats_in_use;
}
}
for(byte i = 0; i < N_INTS; i++) {
Serial.print(gpsArray[i], 10);Serial.print(" ");
}
Serial.println("");
}
@Jerrad, 👍1
Обсуждение1 ответ
Должен ли я использовать программное обеспечение U-Center для настройки gps, прежде чем он будет выводить данные?
Нет, но это НАСТОЯТЕЛЬНО рекомендуется. Это единственный (простой) способ изменить скорость передачи и единственный (простой) способ изменить, какие сообщения выводятся по последовательному каналу.
Выглядит ли мой код функциональным?
Я не могу ответить на 100%, так как я не использовал эту библиотеку раньше, но проблема я столкнулся с нео-M8N и несколько библиотек, которые я пробовал (MicroNMEA, TinyGPS, TinyGPS++, ...), что, как мульти-созвездие GNSS приемник, который может принимать больше спутников, чем просто GPS, он по умолчанию выводит $GNGGA. Эти библиотеки, которые я пытался использовать, декодировали только старый стандарт $GPGGA и игнорировали более универсальные.
Вот как вы можете использовать U-Center, чтобы убедиться, что это проблема, и если да, то как настроить свой модуль для вывода сообщений GPGGA, которые будут анализироваться этими библиотеками:
- Подключитесь к своему NEO-M8N с помощью U-центра. (Usb отключен, но последовательный тоже будет работать нормально)
- Подтвердите, что это проблема, нажав Вид -> Просмотр сообщений.>
- Вы должны увидеть, как принимаются сообщения GPGGA или GNGGA.
Если вы в настоящее время получаете GNGGA, вот как переключить их на GPGGA:
- Вид -> вид конфигурации>
- Нажмите на "Запись конфигурации NMEA (протокол NMEA)
- Нажмите "Опрос" внизу, чтобы получить текущие настройки с вашего устройства.
- Измените "Идентификатор основного говорящего" на "1 - GP (GPS)".
- Измените "Идентификатор говорящего GSV" на "1 - Используйте основной идентификатор говорящего".
- Нажмите "Отправить" внизу, чтобы загрузить свои изменения.
- Нажмите на запись конфигурации "CFG (конфигурация)".
- Выберите "Сохранить текущую конфигурацию", а затем "Отправить" внизу.
Теперь просто используйте описанный выше метод, чтобы проверить, какие пакеты NMEA вы получаете!
Теперь, когда вы находитесь в U-Center, я бы рекомендовал также проверить конфигурацию GNSS, чтобы включить использование большего количества спутников (GPS, Глонасс, Galileo) и настроить конфигурацию SBAS в зависимости от вашего местоположения. (В США установка WAAS может помочь ему быстрее включиться, так как он не будет утруждать себя поиском других источников SBAS) Вы также можете изменить скорость передачи данных для разных портов в разделе "ПОРТЫ", увеличить или уменьшить частоту отправки обновлений местоположения в разделе "СКОРОСТЬ" и включить или отключить отдельные сообщения NMEA для каждого порта в разделе "MSG".
- Можно ли свободно использовать UART0 при подключении ESP32 s3 через USB (D+, D-)?
- Распознавание поддельного GPS-модуля NEO-M8N?
- Neo 6M + ESP32 не может исправить ситуацию с батареей, но отлично работает с ноутбуком USB
- Получите GPS-координаты с помощью беспроводного трекера Heltec на базе Arduino
- Модуль GPS не предоставляет полные данные
- GPS-модуль uBlox Neo 6M не отвечает
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
1) По умолчанию модуль GPS имеет скорость передачи 115200 бод; 2) ESP32 имеет более 1 аппаратного последовательного, использование Serial2 позволяет работать со скоростью 115200 и подключаться к модулю GPS., @hcheung
Большое вам спасибо за вашу помощь. Является ли serial2 контактами с надписью Rx Tx или это будет другая комбинация контактов UART?, @Jerrad
ESP32 Serail2 находится на выводах 16 (Rx) и 17 (Tx), см. [Исходный код HardwareSerial для ESP32](https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/HardwareSerial.cpp#L17-L23)., @hcheung