Skip to content

Library reference in Spanish

Ariel Rocholl edited this page Dec 12, 2016 · 29 revisions

Referencia de la librería RF Explorer IoT para Arduino

Version: 1.0.1611.1

Descripción

Para un uso sencillo y potente de los módulos RF Explorer IoT en Arduino, se ha creado una librería nativa organizada en clases y funciones. El uso en Arduino es muy intuitivo y fácil de utilizar.

Recomendamos el uso de los ejemplos para entender mejor el uso de la librería.

  • Ejemplo RFE_IoT_GetPeak
  • Ejemplo

La estructura de funcionamiento sigue el mismo sistema que todos los sketch para Arduino: el uso de las funciones estándar setup() y loop().

Tradicionalmente, en setup() se realiza la configuración del Arduino, por ejemplo, se dice que pines son de entrada y cuales son de salida. En nuestro caso particular se configura el módulo RF Explorer 3G+ IoT. Por otro lado, el loop es el código que se estará ejecutando continuamente, por ejemplo obtener el máximo de una señal.

Para el caso específico de la librería RF Explorer 3G+ IoT, usando como base el ejemplo RFE_IoT_GetPeak en un Arduino DUE, la estructura del sketch es la siguiente:

  • setup():

  • Inicializa el Hardware y las comunicaciones UART

  • El módulo MWSUB3G se conecta a 115200bps

  • El Monitor Serial (UART3 secundaria a través del Puerto USB) se configura a 57600bps

  • Se llama la función requestConfig() para recibir la configuración del módulo MWSUB3G

  • loop():

  • Escanea continuamente el espectro de frecuencia para detectar el pico de señal

  • Cada vez que se recibe un escaneo (sweep) el Serial Monitor mostrará el máximo de potencia de la señal así como la frecuencia a la que se encontró dicho máximo

Descripción del bucle de captura

Probablemente el aspecto más importante es entender cómo se capturan los datos continuamente desde el módulo analizador RF Explorer 3G+ IoT. Las dos funciones que gestionan la captura de información entre el módulo RF y el sketch de Arduino son:

  • updateBuffer(): Esta función obtiene los bytes capturados por la UART de Arduino y los almacena internamente en el buffer interno de la librería IoT.
  • processReceivedString(): Esta función procesa todos los bytes almacenados internamente y los convierte en los datos y comandos de alto nivel que puede usar el sketch de Arduino.

Ambas funciones descritas arriba deben ser ejecutadas periódicamente en la función loop() del Sketch, para asegurarnos de que toda la información transmitida por el módulo RF es correctamente capturada y procesada. Si dichas funciones no son llamadas con la suficiente regularidad, la información transmitida por el módulo puede perderse total o parcialmente.

Implementación correcta del bucle de captura en un Sketch

En cualquier sketch de Arduino se deben realizar llamadas continuas tanto a updateBuffer() (número 1 en la imagen siguiente) como a processReceivedString() (número 2 en la imagen), en ése orden.

El resultado devuelto por processReceivedString() se puede utilizar para procesar externamente la información, como se muestra en el bloque 3 de la imagen. El código utilizado en el bucle debe ser rápido y sencillo, para evitar que se produzcan demoras que puedan ocasionar la pérdida de información transmitida por el módulo RF.

La gestión de errores, presentación de información, etc debe ser rápida como se muestra en los bloques 3 y 4.

Ejemplo de Implementación incorrecta

Para aclarar más el concepto de bucle de captura, podemos utilizar la sencilla modificación mostrada en la imagen a continuación. En dicho ejemplo, se ha introducido un delay(1000) de forma que el bucle de captura tardará un segundo completo en volver a gestionar los bytes capturados por la UART.

Con este tipo de retrasos, la UART normalmente se desborda y algunos bytes se perderán, produciéndose errores de comunicación con el módulo RF y perdiéndose datos. Un ejemplo de salida en un código como el de arriba podría ser como sigue:

Class RFExplorer_3GP_IoT

Función void changeBaudrate(uint32_t nbaudrate)

Cambia la velocidad de comunicación con la UART principal.

Parámetro Tipo Descripción
Retorno void -
nbaudrate uint32_t Nueva velocidad (bps) para la comunicación asíncrona con la UART. Las velocidades de transmisión disponibles para Arduinos de 8 bit (como Seeeduino) son: 2400, 4800, 9600, 19200, 38400, 57600. Para Arduino DUE (u otros modelos basados en ARM) es posible alcanzar una velocidad de 115200

Ejemplo:

changeBaudrate(115200)

Clone this wiki locally