-
Notifications
You must be signed in to change notification settings - Fork 2
Library reference in Spanish
Versions:
- 1.0.1611.1
- 1.0.1612.1
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 RFE_IoT_SweepAndChangeConfig
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
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.
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.
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:
En esta imagen del Serial Monitor podemos ver que, tras los caracteres de inicio de programa, aparecen mensajes de “Error: 20” y ninguno de procesamiento del espectro. Si consultamos el apartado Manejo de errores veremos que es un RFE_IGNORE que significa que el dispositivo se encuentra esperando para obtener más información de una cabecera cortada.
Como solucionar errores en el bucle de captura:
- Utilizar un código sin retrasos ni esperas activas (procesamiento mas rápido)
- Seleccionar baudrates de menor velocidad
- Mejorar el rendimiento del sketch
- Detener temporalmente la comunicación con el módulo RF usando funciones
setHold()ysetRun()
Nota: Para el tiempo de monitorización en su programa utilice la función micros() de la referencia de lenguaje Arduino. https://www.arduino.cc/en/Reference/Micros Esta función devuelve el número de microsegundos desde que la placa Arduino empezó a ejecutar el programa, por tanto puede ser utilizada para diagnosticar tiempos de ejecución.
Cambia la velocidad de comunicación de RF Explorer con la UART principal. El cambio es inmediato y se pierde con un reset.
| 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)


