¿ Como puedo cambiar los Hz y baudios del Ublox M8N con arduino?

Buenas tardes colegas ! estoy armando un proyecto de Tracker gps y estoy utilizando arduino uno y módulo gps U-BLOX M6N el cual quiero cambiar su velicidad de transmición Baudios y su frecuencia de actualización. El módulo viene por defecto con 1hz y 9600 baudios.

El cambio lo quiero hacer por código programando el arduino porque ya lo he probado por el U-center de ublox.

Hé leido por ahí que se pueden enviar por comandos como por ejemplo: "PUBX,41,1,3,3,9600,0"

si alguien me puede aclarar mejor o mostrarme un ejemplo claro se los agradecería

Pues me autorespondo jajaja.
Ublox es una empresa que crea chips gsp y entre otros más. Pero dentro del mercado aparecen copias de los mismos, como pasa con los receptores gps NEO M8N como el que yo tengo en mi casa, logre configurar los módulos usando arduino y enviando las intrucciones en forma hexadecimal como en el siguiente ejmplo:

Queria cambiar los baudios 9600 a 19200 para el puerto serial del módulo gps NEO M8N y lo logré de la siguiente manera :slight_smile:

funcion 1:

void changeBaudrate19200() {
    // CFG-PRT
    byte packet[] = {
        0xB5, // sync char 1
        0x62, // sync char 2
        0x06, // class
        0x00, // id
        0x14, // length
        0x00, // 
        0x01, // payload
        0x00, // payload
        0x00, // payload
        0x00, // payload
        0xD0, // payload
        0x08, // payload
        0x00, // payload
        0x00, // payload
        0x00, // payload
        0x4B, // payload
        0x00, // payload
        0x00, // payload
        0x07, // payload
        0x00, // payload
        0x03, // payload
        0x00, // payload
        0x00, // payload
        0x00, // payload
        0x00, // payload
        0x00, // payload
        
        0x48, // CK_A
        0x57, // CK_B
    };
    sendPacket(packet, sizeof(packet));
}

funcion 2:

void sendPacket(byte *packet, byte len) {
    for (byte i = 0; i < len; i++)
    {
        deb.write(packet[i]);
    }
}

y luego pegas esto en el setup:

deb.begin(9600);   //default mode
  changeBaudrate19200();
  delay(300); 
  deb.flush();
deb.begin(19200);   //new 115k boost mode

vale aclarar que estoy usando arduino uno en el cual creo el puerto serial con la libreria ALTSOFTSERIAL

No hace falta que uses ALTSOFTSERIAL porque SoftwareSerial esta disponible sin tener que descargar nada.
Solo un comentario que no te cambia mucho

Has podido resolver tu problema?

1 Like

Hola sisi, lo he resuelto, según leí ALTSOFTSERIAL es un poquito más rápido que el SotfwareSerial y en la práctica así lo ví, por lo menos en el monitor serial.
Ennn finnnn. Lo pude resolver.

Mas rápido? No lo creo
Mira la página principal AltSoftSerial Library, for an extra serial port

AltSoftSerial is particularly useful when simultaneous data flows are needed. More details below.

AltSoftSerial is capable of running up to 31250 baud on 16 MHz AVR, or up to 400000 baud on Teensy 3.2 at 96 MHz. Slower baud rates are recommended when other code may delay AltSoftSerial's interrupt response.

Si dice que lo máximo es 31250 bps como puede andar bien a 115200 bps?
Es mas rapida en un Teensy pero no es tu caso o si?

De todos modos a 19200 bps no tendrás problemas.

1 Like

El fuerte de AltSoftSerial está descripto en la misma descripción de la librería (y que bien lo cita @Surbyte):

AltSoftSerial es particularmente útil cuando se necesitan flujos de datos simultáneos‎.

De otro modo no se justifica su uso.

Saludos

Holaaa! Pues si necesito trabajar con el GPS y la pantalla Nextion que ya me ocupado el hardware serial, la pantalla va a 115200baud y el GPS 19200 baud.
Hasta ahora no tuve problemas.

Desde ya muchas gracias por sus aportes!

Bueno, avanti entonces y no nos hagas caso porque cuando algo funciona no hay que cambiarlo.
Además tienes mucha razón en eso, SoftwareSerial es hasta torpe cuando tienes 2 o 3 hardware que atender. Hay que poner objeto.listen y es problemático.
Olvida mi comentario y voy a ensayarlo a ver como trabaja con 2 dispositivos. Para 3 siempre uso MEGA o DUE. No tiene sentido usar un Arduino de un puerto Serie si luego usarás 2 o 3 dispositivos Serie pero evidentemente tu elección trabaja mas que bien y vale la pena evaluarlo para aconsejar mejor en el futuro a otros usuarios.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.