U-blox GNSS receiver programming in arduino

Hello everyone. I am using ublox zed F9P multi GNSS module. I have to program it for its configuration messages. Like I have to run a specific configuration of my receiver with the help of Arduino. I know arduino parse the GNSS sentences but can anyone tell me how to write code for ublox configuration commands such that that command change setting of the receiver upon burning it in Arduino. Also, that code should retain in the receiver even if arduino is disconnected (closing arduino IDE console). Please help

arooj16088002:
can anyone tell me how to write code for ublox configuration commands

share a link to the specification of the configuration protocol of your module.

Thats a fairly high spec GPS, whats the application ?

You can configure the receiver any way you like using u-center (download from u-blox). The configuration is retained while power is off, so the Arduino doesn't need to configure anything.

J-M-L:
share a link to the specification of the configuration protocol of your module.

https://www.u-blox.com/sites/default/files/ZED-F9P_IntegrationManual_(UBX-18010802).pdf

srnet:
Thats a fairly high spec GPS, whats the application ?

Basically it is conversion of one constellation to the other. So for each configuration, there are specific messages in u-center like to enable raw data there are CFG-RXM and many others. My task is to write these configurations in such a way that Arduino should tell the receiver to enable this message. I don't want to use u center here. Arduino commands should run the configurations in the receiver and to write code in such a way is a task difficult because I am not a good programmer. If anyone can help in this regard.

jremington:
You can configure the receiver any way you like using u-center (download from u-blox). The configuration is retained while power is off, so the Arduino doesn't need to configure anything.

I want Arduino to do this configuration. I know u-center can do this but my task is to make Arduino do all this. Writing code is a problem that is to be solved.

if you don't use u-center, it seems that you "just need" to send specifically crafted phrase through Serial on UART1 input (38400 baud, 8 bits, no parity bit, 1 stop bit) to the module and wait for an UBX-ACK-ACK response

As per your documentation

3.1 Receiver configuration
The ZED-F9P is fully configurable with UBX configuration interface keys. The configuration database in the receiver's RAM holds the current configuration, which is used by the receiver at run-time. It is constructed on start-up of the receiver from several sources of configuration. The configuration interface and the available keys are described fully in the ZED-F9P Interface description

...

3.1.1 Changing the receiver configuration
All configuration messages, including legacy UBX-CFG messages, will result in a UBX-ACK-ACK or UBX-ACK-NAK response. If several configuration messages are sent without waiting for this response then the receiver may pause processing of input messages until processing of a previous configuration message has been completed. When this happens a warning message "wait for cfg ACK" will be sent to the host.

it seems you need to find the doc ZED-F9PInterfacedescription,doc.no.UBX-18010854 - may be this one ? In that doc they state

1.3 Receiver configuration
u-blox positioning receivers are fully configurable with UBX protocol messages. The configuration used by the receiver during normal operation is called the "current configuration". The current configuration can be changed during normal operation by sending UBX-CFG-VALSET messages over any I/O port (except UART2). The receiver will change its current configuration immediately after receiving a configuration message. The receiver will always use the current configuration only.
The current configuration is loaded from permanent configuration hard-coded in the receiver firmware (the defaults) and from non-volatile memory (user configuration) on startup of the receiver. Changes made to the current configuration at run-time will be lost when there is a power cycle, a hardware reset or a (complete) controlled software reset (see Configuration reset behavior).

Storing information seems to be described in

3.10.2.1 Clear, save and load configurations

sending a Serial command is just a print to the rightly configured Serial port.
listening for the answer requires a bit of coding. I would suggest to study Serial Input Basics to handle this

it seems that the SPI slave interface is shared with UART1 and I2C port and thus physical pins are same. so a bit of reading of your doc will be necessary to see what's configured by default.

arooj16088002:
Basically it is conversion of one constellation to the other. So for each configuration, there are specific messages in u-center like to enable raw data there are CFG-RXM and many others. My task is to write these configurations in such a way that Arduino should tell the receiver to enable this message. I don't want to use u center here. Arduino commands should run the configurations in the receiver and to write code in such a way is a task difficult because I am not a good programmer. If anyone can help in this regard.

It makes no sense to me that you can 'convert' from one constellation to another, they are seperate systems with seperate groups of satellites in orbit.

You have asked this question several times before, there may be a reason why you never got an answer on the previous ocaisons.

You are right and I am understanding your point. Explaining in very simple terms, I don't know how to write this configuration in arduino format. There are hex sentences. How writing for one specific configuration (in hex format) will be store and what will be the proper syntax for that. Kindly guide if there is some tutorial.

srnet:
It makes no sense to me that you can 'convert' from one constellation to another, they are separate systems with separate groups of satellites in orbit.

You have asked this question several times before, there may be a reason why you never got an answer on the previous occasions.

https://forum.arduino.cc/index.php?topic=376319.msg2594603#msg2594603
Kindly see this post. This is what I want to do. He is doing with NEO 7 and I want to do it with ZED-F9P. The code is written in this post is what I am asking how to write it for each specific message. For enabling constellation, there will be one message, for enabling NMEA or UBX protocol there will be one message. For each message, a binary format is written on u center console. Writing those binary messages in form of arduino commands is task for which i asked severel times.

Do remember that once the configuration is done with the help of Arduino I will show my results on u center and one more software that is rtklib. It's all about the configuration of the receiver (in form of Arduino code).

Writing those binary messages in form of arduino commands is task for which i asked several times

well if you believe there is an obligation to answer if you ask several times, you are in the wrong place... Getting professional (and paid for) support is elsewhere (see Gigs and Collaboration forum for example).

That being said, assuming you know which binary command needs to be sent, it's a pretty trivial task to write that code

const byte messageToBeSent[] = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00, 0x00} ; // whatever you want to send
Serial.write(messageToBeSent, sizeof(messageToBeSent)); // send the binary message on the Serial port

Listening for the answer requires you to read the tutorial (Serial Input Basics) I pointed above.

My task is to write these configurations in such a way that Arduino should tell the receiver to enable this message.

We don't do homework problems for students. Rather stupid assignment, by the way.