Go Down

Topic: Cambiar baud rate A6 GPRS/GSM (Read 320 times) previous topic - next topic

PinaGamer

Hola a todos, tengo la placa A6 GPRS/GSM montada por la empresa OPEN-SMART (concretamente ésta). Antes de nada deciros que la he conseguido hacer funcionar y realizar más o menos bien peticiones HTTP. Estoy utilizando la librería AltSoftSerial.h para poder mostrar los datos por la consola del PC a la vez que envio los datos a placa y ésta me responde.

Indagando en el manual de comandos AT del chip he descubierto que el comando AT+IPR permite modificar el baud rate que trae por defecto, que son 115200, a 9600 porque, según tengo entendido y he podido comprobar, la librería AltSoftwareSerial es buena, pero tampoco hace maravillas permitiendo un baud rate muy grande. Así que conecté la placa al PC, y usando la consola Realterm conseguí bajárselo 9600 y guardar esa configuración con el comando AT&W0 (el 0 hace referencia al único slot donde guardar la configuración de parámetros). Es clave destacar que en el punto de los Remarks (punto 2.12.4 del manual) dice:


Quote
The user defined profile will be restored automatically after power-up. Use ATZ to restore user profile and AT&F to restore factory settings. Until the first use of AT&W, ATZ works as AT&F.
Es decir, que una vez yo cambie el baud rate y guarde esa configuración con el comando AT&W0, cuando apague el A6 y lo vuelva a encender tomará esa configuración. Además, el comando ATZ fijará la configuración actual como configuración de fábrica, de lo contrario volverá a su valor por defecto (o eso es lo que yo interpreto de los comandos)

Bien, después de todo esto que os he contado, aquí viene la primera pregunta:

¿Alguien me puede explicar porque mi A6 ha vuelto a a tener un baud rate de 115200 si se supone que la configuración de fábrica la había sobreescrito para que fuese de 9600?

Y segunda pregunta:

Como la conexión con el ordenador la hago para depurar los resultados y ver que es correcto, cuando funcione dejaré de usarlo, ¿podría prescindir de la librería AltSoftSerial y conectar los pines de comunicación RX y TX del Arduino al A6 funcionando a 115200 bps para evitar más quebraderos de cabeza?

Danicap

Hola PinaGamer,

Según lo que he podido leer, el comando AT&W guarda en un perfil de usuario la configuración que tengas en ese momento, para cargar esa configuración a los parametros actuales tienes que utilizar el comando AT&Z y el AT&F regresa a los parámetros de fábrica.

Ahora bien, si grabas en AT&W0 debería quedarse como predefinida la configuración que hayas guardado y ejecutarse esa configuración al arrancar, a no ser, que en el 0 esté la de fábrica y no pueda sobreescribirse, de esto no he visto nada en el manual, prueba a guardar la configuración en AT&W1 a ver si así funciona.

En cuanto a la pregunta 2, sí, una vez ya no uses el serial pc como debugger puedes conectar ahí los pines y utilizar el serial normal.

Saludos!

PinaGamer

Hola Danicap, muchas gracias lo primero por tu respuesta.

Te explico el proceso que sigo:

1. En Realterm configuro la conexión a 115200 bps.

2. Conecto los pines RX y TX y después lo alimento por USB.

3. Seguidamente esto es lo primero que me muestra la consola:

    ^CINIT: 8, 2048, 1
    ^CINIT: 16, 0, 1638430
    ^CINIT: 32, 0, 0
    +CREG: 0
    +CTZV:17/04/21,10:13:14,+02
    +CIEV: service,  1
    +CIEV: roam, 0
    +CREG: 1


Lo cual es malo que se muestre correctamente porque eso significa que esta trabajando a 115200 bps pese a haberle fijado anteriormente los 9600 bps.


4. Le pregunto por su baud rate con el comando AT+IPR?:

    +IPR?                                                                     
    +IPR: 115200                                                     
    OK

     

Efectivamente está trabajando a 115200 bps.

5. Le bajo el baud rate a 9600 con AT+IPR=9600

    +IPR = 9600                                                             
    OK

 


Para asegurarme, le mando un comando como puede ser ATOI (que devuelve información del dispositivo). Y efectivamente me devuelve caracteres raros, eso significa que ahora trabaja a 9600.

6. Cambio la velocidad de transmisión de la consola a 9600. Efectivamente, en la esquina inferior derecha de Realterm ha cambiado de 115200 a 9600.

7. Le vuelvo a mandar el comando AT+IPR? y su respuesta es:

    +IPR?                                                     
    +IPR: 9600                                     
    OK

   
Ahora sí trabaja a 9600 bps.

8. Guardo la configuración actual con el comando AT&W0 (no se puede poner AT&W1 porque solo tiene un único perfil que es el 0):

    &W0                                                                       
    OK

 
Ahora mismo, según esto, en su memoria interna he escrito que la nueva velocidad de transmisión será de 9600 bps, ¿correcto?.

9. Desconecto el A6 por unos cuantos segundos de la alimentación y de los pines RX y TX.

10. Lo vuelvo a conectar con la configuración del Realterm tal y como estaba antes: 9600 bps.

11. Obtengo los datos de inicialización del dispositivo en caracteres raros. Lo que implica que el comando AT&W0 no ha servido para nada.


Danicap

Pues lo único que se me ocurría es que hubiera varios perfiles programables, siendo que sólo hay uno no tiene mucho sentido que te pase lo que te está pasando.

Al volver a iniciar y trabajar a 115200 si le mandas el comando AT&Z0 que pasa? vuelve a los 9600?

PinaGamer

Sí, ahí sí que coge el baud rate a 9600 mandándole el comando ATZ0. Pero solo me lo coge en el programa Realterm, si lo pruebo en el Arduino no obtengo el OK. No entiendo por qué. El A6 está bien alimentado y los cables RX y TX también.

Go Up