Neo M9N has no output on uart1, Please help, thanks

Hello!

Neo M9N works fine , but there is no output on uart1. I tried this several days.

I want to send my Position to my chartplotter Lowrance Elite 1. This is only possible with uart 1. I tried many of solutions but nothing works.

greetings from austria

opto

Hello opto,

Please try resetting your M9N to the factory defaults. Perhaps you ran an example which disabled the NMEA protocol on UART1 - and saved the settings to battery-backed RAM?

Please see: https://github.com/sparkfun/SparkFun_u- … 1515038572

I hope this helps,

Paul

Also, the M9N UART1 operates at 3.3V. Your chart plotter may require RS232 voltages? You may need to add a level-shifter between the two.

I hope this helps,

Paul

optohk:
Hello!

Neo M9N works fine , but there is no output on uart1. I tried this several days.

I want to send my Position to my chartplotter Lowrance Elite 1. This is only possible with uart 1. I tried many of solutions but nothing works.

greetings from austria

opto

Hello,

I am having a similar problem I’m using an Arduino Mega and I am unable to receive serial data from my M9N module.

It works good with I2C. I am connecting the M9N outputs Tx & Rx to Mega pins 16 and 17 w/ 3.3v and ground, but receive no data. Could it possibly be a level shifting issue? Does SparkFun Electronics · GitHub have a sketch for the serial port?

Thanks you in advance.

Rayb

Hi Rayb,

Please be careful if you are using the original Arduino Mega 2560. It is a 5V board. The IO pins are all 5V. The u-blox module is 3.3V. Please see: https://forum.sparkfun.com/viewtopic.ph … 95#p238995

Pins 16 and 17 are (I think) Serial2. You will need to adapt the code example to use Serial2 instead of Serial1:

https://github.com/sparkfun/SparkFun_u- … Serial.ino

#define mySerial Serial2 // Use Serial2 to connect to the GNSS module

Just a warning that the code example will disable the NMEA messages on UART1, leaving just the more efficient UBX messages enabled. If you want to re-enable NMEA, change line 50 to:

myGNSS.setUART1Output(COM_TYPE_UBX | COM_TYPE_NMEA); // Enable both NMEA and UBX

Also, please check the baud rate. The M9N defaults to 38400 baud.

Best wishes,

Paul

Hello paul,

thanks for your help.

i used a usb-C cable to connect to pc, made a reset, and than looked for the neo m9n with my multimeter. TX shows nothing, RX shows 3V, this is standard for me. Then i looked to the settings on port 4 (for me), Nmea und UBX ares enabled for output.

Then i checked VALSET. All ok! i think my neo m9n has a mistake.

i Now Rs422 has other Voltage. I have a converter from UART to RS485.

Thanks and greetings

opto

B3.pdf (555 KB)

B2.pdf (145 KB)

B1.pdf (198 KB)

Hi opto,

Your chart plotter may be expecting GPGGA. But the module is (probably) outputting GNGGA. GPGGA is GPS, GNGGA is ‘N’ constellations (GPS + GLONASS + BeiDou + Galileo).

You can force the module to use GPGGA with the CFG-NMEA “Main Talker ID”. Set it to “1” to set the Talker ID to “GP”.

If you are using our library, use: myGNSS.setMainTalkerID(SFE_UBLOX_MAIN_TALKER_ID_GP);

Best wishes,

Paul

Hi paul,

sorry, i did it, but nothing changes. The chartplatter is not pluged yet. i only check the V with TX und RX to ground an the NEO M9N. So i could see if it works. On my converter are 2 LED, they must work when a output came from Reciever. So i could see if it works.

greetings

opto

Hi opto,

The u-blox UART1 TX output pin is normally high (3.3V). It only goes low (0V) very briefly during the actual transmit. If it is low all the time, that indicates something is not correct.

Have you checked the TX and RX pins on your RS485 converter? Sometimes the TX pin is actually an input, and the RX pin an output.

If you send me a link to your RS485 converter, I will look at it and see if I have any suggestions.

Best,

Paul

hi paul,

thanks you for your help, you are my last hope!

this is my converter

https://www.amazon.de/dp/B083943T9J/ref … 91_TE_item

But, the converter is not plugged, only the NEO M9N is plugged with USB-C. The PIN RX to ground is 3V. The Pin TX to ground is 0V! This makes me thinking there is a hardware mistake.

Could i send it to you for checking?

all love

opto

Hello opto,

I think this is the schematic etc. for the same RS485 adapter:

https://www.makershop.de/download/TTL-R … dule-4.jpg

https://www.makershop.de/download/TTL-R … dule-5.jpg

Importantly: the TXD pin is an INPUT; the RXD pin is an OUTPUT.

I suggest connecting:

NEO-M9N 3.3V → Adapter VCC

NEO-M9N GND → Adapter GND

NEO-M9N UART1 TX → Adapter TX

NEO-M9N UART1 RX → Adapter RX

If you have connected NEO-M9N UART1 TX to Adapter RX, that may explain why you see 0V on TX.

Best,

Paul

hello Paul,

i did it how you told: the output of the converter has then 1,7v and 2,9V, this could not be.

i think i give it up, mabe i try it later again. I have spent 6 days for this problem.

thanks paul for your friendly help.

all love

opto

PaulZC:
Hi Rayb,

Please be careful if you are using the original Arduino Mega 2560. It is a 5V board. The IO pins are all 5V. The u-blox module is 3.3V. Please see: viewtopic.php?p=238995#p238995

Pins 16 and 17 are (I think) Serial2. You will need to adapt the code example to use Serial2 instead of Serial1:

https://github.com/sparkfun/SparkFun_u- … Serial.ino

#define mySerial Serial2 // Use Serial2 to connect to the GNSS module

Just a warning that the code example will disable the NMEA messages on UART1, leaving just the more efficient UBX messages enabled. If you want to re-enable NMEA, change line 50 to:

myGNSS.setUART1Output(COM_TYPE_UBX | COM_TYPE_NMEA); // Enable both NMEA and UBX

Also, please check the baud rate. The M9N defaults to 38400 baud.

Best wishes,

Paul

Hello Paul,

Thank you for your support,. I changed the sketch you recommended and it works ok. Should I add a level translator to the TX & Rx pins if it is working now. I think I could use the SCL1 for the TX pin and SDA1 for the RX pin for the M9N GPS bd. Additionally do you know of any commands to obtain # of satellites or find distance between different Lat & Long locations.

Thanks for your help,

Rayb

hi paul,

last try…

i do a drawing.

the converter:

https://www.amazon.de/dp/B09V71BHYL/ref … 91_TE_item

do i have guarantee for my NEO M9N ?

thanks

opto

@ Rayb,

I still recommend using a level-shifter. The Mega IO pins are 5V. The Serial1/2/3 TX and RX pins will output 5V and expect 5V signals. Likewise the I2C SCL and SDA pins will output 5V and expect 5V. The NEO-M9N is a 3.3V board. A direct connection may work, but it will not be reliable and could cause damage.

There is a Great Circle Distance example here:

https://github.com/sparkfun/SparkFun_u- … stance.ino

Many of the examples show how to read SIV - Satellites In View. Although that name is not quite correct. The u-blox modules output the number of satellites used in the position calculation, which is not quite the same thing.

https://github.com/sparkfun/SparkFun_u- … sition.ino

Best,

Paul

@ opto,

The modules are fully tested before they leave SparkFun. From the photo you sent and the discussion we have had, perhaps it was damaged during your soldering and connecting to the RS485 board? I will ask my colleagues if they will accept a return.

For the RS422 board, please look at the bottom of the board. Does it look the same as this image?

Screenshot 2023-05-12 090542.png

If so, then:

TXD is an OUTPUT. You need to connect it to RXD on the NEO-M9N.

RXD is an INPUT. You need to connect it to TXD on the NEO-M9N.

Best,

Paul

PaulZC:
@ opto,

The modules are fully tested before they leave SparkFun. From the photo you sent and the discussion we have had, perhaps it was damaged during your soldering and connecting to the RS485 board? I will ask my colleagues if they will accept a return.

If so, then:

TXD is an OUTPUT. You need to connect it to RXD on the NEO-M9N.

RXD is an INPUT. You need to connect it to TXD on the NEO-M9N.

Best,

Paul

hi paul,

exact the same Image /thing

TXD is an OUTPUT. You need to connect it to RXD on the NEO-M9N.
RXD is an INPUT. You need to connect it to TXD on the NEO-M9N.

Yes i did it exactly in this way.

I will ask my colleagues if they will accept a return.

This would be nice, Please.

i send you again my wiring.

Thanks!!

Wiring.pdf (211 KB)

Hi opto,

Your wiring diagram looks correct to me. I can not explain why it is not working. I am out of ideas. Sorry!

My colleagues will message you if they will accept the return.

Best,

Paul

Thanks, Paul!!

PaulZC:
@ Rayb,

I still recommend using a level-shifter. The Mega IO pins are 5V. The Serial1/2/3 TX and RX pins will output 5V and expect 5V signals. Likewise the I2C SCL and SDA pins will output 5V and expect 5V. The NEO-M9N is a 3.3V board. A direct connection may work, but it will not be reliable and could cause damage.

There is a Great Circle Distance example here:

https://github.com/sparkfun/SparkFun_u- … stance.ino

Many of the examples show how to read SIV - Satellites In View. Although that name is not quite correct. The u-blox modules output the number of satellites used in the position calculation, which is not quite the same thing.

https://github.com/sparkfun/SparkFun_u- … sition.ino

Best,

Paul

Hello Paul,

I ordered the level shifter and I will install it. The baud rate is 38400 so it is ok. I down loaded my recent sketch and I turned on the debug and the following was my response. It looks like there is a missing acknowledge. Do you know what this means.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

Incoming: Size: 92 Received: CLS:NAV ID:PVT Len: 0x5C Payload: E0 8 63 1D E7 7 5 C 10 38 33 37 89 0 0 0 2F 0 C2 23 3 3 AB 6 1D 10 CB CC 18 4C D4 16 44 49 3 0 DF C8 3 0 6A 59 0 0 7 89 0 0 4F 0 0 0 76 0 0 0 1A 0 0 0 8E 0 0 0 E CB A3 1 39 3 0 0 94 D3 A3 0 11 1 0 0 EE 13 4F 2F 0 0 0 0 0 0 0 0

packetCfg now valid

packetCfg classAndIDmatch

waitForNoACKResponse: valid data with CLS/ID match after 1022 msec

This Far

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1100 msec. No packet received.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1100 msec. No packet received.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

Incoming: Size: 92 Received: CLS:NAV ID:PVT Len: 0x5C Payload: 40 12 63 1D E7 7 5 C 10 38 36 37 88 0 0 0 58 BB FE FF 3 3 AB 5 D4 F CB CC 32 4C D4 16 4C 4B 3 0 E8 CA 3 0 6 58 0 0 47 87 0 0 83 0 0 0 CA FF FF FF 10 0 0 0 8E 0 0 0 E CB A3 1 EE 3 0 0 1A FB A3 0 16 1 0 0 EE 13 4F 2F 0 0 0 0 0 0 0 0

packetCfg now valid

packetCfg classAndIDmatch

waitForNoACKResponse: valid data with CLS/ID match after 163 msec

This Far

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1100 msec. No packet received.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1100 msec. No packet received.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

Incoming: Size: 92 Received: CLS:NAV ID:PVT Len: 0x5C Payload: A0 1B 63 1D E7 7 5 C 10 38 38 37 87 0 0 0 7E 40 D6 17 3 3 AB 5 3D F CB CC 22 4C D4 16 9 4B 3 0 A5 CA 3 0 D7 56 0 0 BF 85 0 0 1C 0 0 0 C3 FF FF FF 16 0 0 0 43 0 0 0 E CB A3 1 B3 3 0 0 40 20 A4 0 15 1 0 0 EE 13 4F 2F 0 0 0 0 0 0 0 0

packetCfg now valid

packetCfg classAndIDmatch

waitForNoACKResponse: valid data with CLS/ID match after 162 msec

This Far

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1100 msec. No packet received.

Sending: CLS:NAV ID:PVT Len: 0x0 Payload:

sendCommand: Waiting for No ACK response

waitForNoACKResponse: TIMEOUT after 1101 msec. No packet received.

Thanks,

Rayb

PS: the PPS Led is blinking.