NEO m8n - UBX/NMEA

Добрый день. Имеется: GPS модуль NEO m8n.

Покдлючал его полгода назад - работал. Сейчас подключаю - не выдает ничего. Пробовал библиотеки TinyGPS, TinyGPSplus, TinyGPSPlusPlus, ublox_GNSS.h. Пробовал подключение softwareserial, Serial2, Serial3 (у меня Мега).

Sats HDOP  Latitude   Longitude   Fix  Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum
           (deg)      (deg)       Age                      Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail
----------------------------------------------------------------------------------------------------------------------------------------
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
No GPS data received: check wiring
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
No GPS data received: check wiring
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0        
No GPS data received: check wiring
**** ***** ********** *********** **** ********** ******** **** ****** ****** ***** ***   ******** ****** ***   0     0         0

Запустил “U-center”


Начал копаться в настройках.

Протоколы - UBX.
как только ставлю протоколы NMEA:


Всё работатет.
Сохраняюсь:

Вроде бы сохраняется, ошибки не выдает.
Но стоит отключить питание, и снова включить (к Ардуино или U-center) - опять протоколы сбрасываются на UBX (не сохранились). И не работает на Меге.
Я подразумеваю что китайцы могли поставить туда не FLASHROM а ПЗУ.
Обновление прошивки тоже ничего не даёт. Ошибка 2.
Может кто сталкивался с такой болезнью. Как победить?
Я оставлял его на окне часа на 2. Ничего.
Причем пару раз было:

  • в колонке “Chars RX” принимались символы. Числа были до 65 тысяч. Но кроме этих значений больше он ничего не выдавал
  • и пару раз он принимал время

Это уже хорошо, значит в принципе модуль рабочий.
Остается настроить его правильно. Например, написать в коде ардуино свою процедуру конфигурации на формат NMEA и запускать ее при каждом рестарте модуля.

Батарейку проверь на всяк случай.

3.3 вольта при выключенном модуле. Я не знаю сколько дольно быть. Номинал не разглядеть. Она точечной сваркой припаяна к контактам.

Всё было бы хорошо если бы данные принимались. Но я не вижу что он что нибудь принимает.

#include <Adafruit_GFX.h>
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
#include "DFRobot_ILI9488_SPI.h"
...
DFRobot_ILI9488_SPI tft(TFT_CS, TFT_DC);
...
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial NEOM8N(RXPin, TXPin);

void setup() 
{
  NEOM8N.begin ( GPSBaud );
  gps.encode( NEOM8N.read() );
}
void loop(void) 
{
  while ( NEOM8N.available() > 0)  
    {
      tft.setCursor (50, 110); tft.println("Data Recieve");  
    }
}

(я не включил в скетч строки работы с TFT. Но вывод организован правильно. Я другие надписи вижу. А вот надпись “Data Recieve” я не вижу. Я не думаю что он вообще что нибудь принимает.

А что если ему после инициализации послать команду смены протокола входящего и исходящего с UBX на NMEA?
U-center как то формирует это сообщение и посылает его?
Кто знает как оно должно выглядеть и как это сообщение послать в модуль из скетча?
Вот после этого я думаю он заработает.

В программе U-center данные принимаются, судя по картинкам.

вы удивительно догадливы :slight_smile:

С этим никто не спорит. Но принимаются только после посыла сообщения о смене протокола.
Так вопрос всё еще открытый: подскажите пожалуйста как должно выглядеть это сообщение и как его послать из скетча?
Исходя из моего скетча:
NEOM8N.write(“$PUBX,41,2,0007,0003,9600,0*25”) ?
Правильно?

я думаю что оно должно быть в даташите на модуль

я не вижу в вашем скетче такой строчки.
Правильная она или нет - сказать не берусь. Повторюсь - это надо смотреть в даташите. Вы-то сами откуда ее взяли?

Я взял ее отсюда:

Так в скетче её и нет. Я хочу туда добавить строку которая посылает сообщение о смене протокола.

#include <Adafruit_GFX.h>
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
#include "DFRobot_ILI9488_SPI.h"
...
DFRobot_ILI9488_SPI tft(TFT_CS, TFT_DC);
...
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial NEOM8N(RXPin, TXPin);

void setup() 
{
  NEOM8N.begin ( GPSBaud );
  NEOM8N.write(“$PUBX,41,1,0007,0003,9600,0*25”);
  gps.encode( NEOM8N.read() );
}
void loop(void) 
{
  while ( NEOM8N.available() > 0)  
    {
      tft.setCursor (50, 110); tft.println("Data Recieve");  
    }
}

Строка 16.
Не сработало. “Data Recieve” я не вижу. и светодиод не моргает на модуле (я так понимаю он указывает на обмен данными со спутниками).

25 в конце - это контрольная сумма. Вы ее рассчитывали или просто из мануала скопировали? Подозрительно, что там в примере тоже стоит 25, хотя параметры другие.
То же самое про параметры входного и выходного протокола - 0007,0003 - вы их реально подобрали для своего случая или просто из примера списали?

@Rankle
Забавно вы себя ведете… (подсмотрено на двух форумах).

Зачинаете дискуссию, обсуждаете что-то - а как доходит до реальных ответов - сливаетесь.
Похоже вы ищете какой-то волшебный совет, который решит вашу проблему по мановению руки. А если надо хоть чуть-чуть подумать, например разобраться, что такое чек-сумма - вам сразу скучно становится и вы уходите.

b707 (ещё раз повторюсь) вы - один из тех людей на этом форуме, чьи советы мне реально помогали в прошлых проектах. Но здесь для меня то случай что полученная информация ( и здесь и из других источников в инете) не даёт мне понимания в каком направлении всё же двигаться дальше. Вы правы, что “наскоком” (как позавчера) мне не решить эту проблему и правы что контрольная сумма не верна. Но там (.сс) человек (занимающийся авиамоделизмом) дал реально рабочий кусок кода, после которого я увидел данные на GPS. Пока мне не понятные, но данные. Да, контрольную сумму я пересчитаю; ещё раз посмотрю документацию на UBX сообщения. Но это уже небольшой шаг вперед.

Знаете, это (да впрочем и не только это, а очень многие случаи использования всех модулей) немного похоже на ситуацию: остановился я на дороге, спустило колесо на машине. Машу руками и говорю: помогите, колесо спустило. останавливается один и говорит: (диалог)

  • Спустило? Его надо накачать!!!
  • ~!@#$%^&&* я и так знаю что надо накачать. Дай лучше насос.
  • а вот в насосе используется резиновый шланг, что бы им пользоваться ты должен знать технологию добычи каучука его обработку, а ещё корпус покрыт краской ты должен знать химический состав краски и технологию ее нанесения и т.п.
  • мне надо накачать колесо и ехать дальше везти груз, людей и т.п.

Мне не 20 и не 30 лет. я не знаю сколько десятков ещё разменяю, но у меня есть много “хотелок”, которые я хочу реализовать и успеть ими воспользоваться.
Пусть в меня опять полетят помидоры и будут сравнивать мои рисунки с произведениями кулинарного искусства, мне всё равно. Я хочу довести свой проект до конца (этот и будущие). И, кстати, b707, вы правильно подметили - помидоров там (.cc) гораздо меньше.

Отступлю немного (этот вопрос очень для меня интересный) если всё же у меня китайский клон и у меня стоит М8030, на борту ПЗУ а не флеш-память , накой … там батарейка. Я оторвал у неё верхний контакт (слабая контактная сварка оказалась) и она всё равно работает. Раз при выключении питания модуль надо снова инициализировать (смена протоколов и т.п.), зачем там батарейка (или аккумулятор)?

это довольно интересно, с учетом того что он дал кусок кода, ОТКЛЮЧАЮЩИЙ вывод данных. Почему Вы, кстати, не написали это там? - может дискуссия бы продолжилась и еще кто-нибудь что-нить посоветовал.

может она там изначально была плохо припаяна и не работала, раз вы ее легко оторвали.
Или просто разряжена в ноль и уже не работает.

он говорил что выключил NMEA и оставил UBX. Я сейчас сделаю наоборот и посмотрю что выведет модуль