Instalación de un Croquis de RadioShuttle para LongRa (Compatible con Arduino Zero)

Este capítulo cubre la instalación de los croquis de RadioShuttle. Puede encontrar información sobre la tarjeta LongRa aquí. Para obtener información sobre la puesta en servicio, lea este capítulo.

Condiciones previas

RadioShuttle utiliza el moderno C++, que está insuficientemente activado en Arduino. Además, un nombre de función se define dos veces, tanto en Arduino como en C++. Por lo tanto, los cambios descritos a continuación deben ser aplicados en la instalación de Arduino para hacer uso de RadioShuttle o soluciones C++ similares.

Activar C++ correctamente

Cerre Arduino. En el archivo “platform.txt” bajo la siguiente ruta (desde la carpeta de usuario), cambie lo siguiente:

Mac: “Library/Arduino15/packages/arduino/hardware/samd/1.6.19“
Windows: “AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.19“

antiguo: compiler.c.elf.cmd=arm-none-eabi-gcc
nuevo: compiler.c.elf.cmd=arm-none-eabi-g++

Por favor, tenga en cuenta que los cambios pueden haber desaparecido al instalar Arduino de nuevo, y necesitan ser aplicados de nuevo.

Nota:
Si aparece el siguiente mensaje de error, el paso anterior no se ha realizado correctamente:
… undefined reference to `std::__detail::_List_node_base …

Activar la memoria permanente D21 para los ajustes

“bossac” es una pequeña utilidad para programar la memoria flash del D21. Debe instalarse en la plataforma que utilice.

Importante:
«bossac» debe instalarse antes de la primera puesta en servicio de la tarjeta LongRa. De lo contrario, todas las propiedades preestablecidas se perderán!

Descargue el archivo “BOSSAC.zip” aquí. Después de descomprimir el archivo, encontrará el programa para tres plataformas diferentes:

NombrePlataformaDirectorio
bossac-linux64Linux.arduino15/packages/arduino/tools/bossac/1.7.0/
bossac-macosmacOSLibrary/Arduino15/packages/Arduino/tools/bossac/1.7.0/
bossac.exeWindowsAppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0\

Copie el binario apropiado para la plataforma que está utilizando en el directorio anterior y renómbrelo a “bossac” (“bossac.exe” para la plataforma Windows no se renombra). Por razones de seguridad, se recomienda realizar previamente una copia de seguridad del programa “bossac” existente, por ejemplo, en “bossac.save”.

Instalar la biblioteca RadioShuttle

El software completo de RadioShuttle se proporciona como archivo Zip y se puede descargar aquí, con una declaración de código de 8 dígitos. El código se encuentra en la parte posterior de la tarjeta, por ejemplo: “0x67bedf1”.
Descargue el archivo Zip que contiene el software actual, por ejemplo, “RadioShuttle-Arduino-2018-05-10.zip”.
Descomprima el archivo Zip y copie el contenido de la carpeta “libraries” en la carpeta “Documents/Arduino/libraries”.

Nota:
En el caso de una biblioteca de RadioShuttle ya existente, el contenido debe estar completamente sobrescrito (no fusionado)!

Después de copiar, debería ver los siguientes elementos en la carpeta “libraries”:

  • “Adafruit_Si7021” (biblioteca para el sensor de temperatura/humedad)
  • “Arduino-mbed-APIs” (controladores adicionales y nuevas funciones de temporizador para los chips ESP32 y D21)
  • “Arduino-TR-064-SOAP-Library” (biblioteca para el protocolo TR-064 para el uso con los FRITZ!Box)
  • “ds3231” (biblioteca para el reloj RTC de la tarjeta ECO Power)
  • “OLED” (biblioteca para las pantallas SSD1306, véase la información técnica Funcionamiento de la Tarjeta ECO Power con una Pantalla OLED)
  • “pubsubclient” (biblioteca que proporciona un cliente para mensajes simples de publicación/suscripción con un servidor habilitado para MQTT)
  • “RadioShuttle” (software de protocolo de radio y ejemplos)
  • “RTCZero” (biblioteca RTC para el chip Atmel D21)
  • “SX1276GenericLib” (controlador para el chip de radio LoRa)

Personalizar PinMap.h

“Pinmap.h” define la asignación de pines del SAMD21 MCU con el chip de radio y los otros periféricos. Debe comprobarse para cada nuevo programa que se instale y se adapte si es necesario. Se puede encontrar en el IDE de Arduino, como una pestaña adicional.

Tarjeta LongRa (rev. 7.2)

Para que el código del programa y la revisión de la tarjeta coincidan, busque la línea #define D21_LONGRA_REV_720 y asegúrese de que está activada. Si usted tiene una versión diferente de la tarjeta LongRa, active la línea respectiva y desactive las otras revisiones:

// #define D21_LONGRA_REV_630 1 // board with LiPo power supply …
#define D21_LONGRA_REV_720 1 // Maker Faire Hannover revision, micro USB

Tarjeta LongRa (rev. 7.5 y posterior)

Para que el código del programa y la revisión de la tarjeta coincidan, busque la línea #define D21_LONGRA_REV_750 y asegúrese de que está activada. Si usted tiene una versión diferente de la tarjeta LongRa, active la línea respectiva y desactive las otras revisiones:

// #define D21_LONGRA_REV_630 1 // board with LiPo power supply …
// #define D21_LONGRA_REV_720 1 // Maker Faire Hannover revision …
#define D21_LONGRA_REV_750 1 // LongRa revision with more pins, micro USB

Aplicación de muestra “PropertyEditor”

Existe una memoria en la que se pueden guardar de forma permanente los ajustes que deben conservarse en la tarjeta después de la instalación de un nuevo croquis. Por ejemplo, es útil para guardar ajustes como datos de acceso WiFi o similares. Para ello se pueden utilizar las aplicaciones de muestra “PropertyEditor” y “PropertyTest” (véase la tabla más abajo). La página Memoria Permanente para Propiedades explica en detalle las diferencias entre los diferentes tipos de memoria.

Después de reiniciar el IDE de Arduino, se debe seleccionar “Arduino/Genuino Zero (Native USB-Port)” para la tarjeta LongRa desde el menú “Herramientas > Placa” porque el IDE de Arduino muestra sólo aquellas bibliotecas que pueden ejecutarse en la tarjeta seleccionada.

A continuación, la muestra “PropertyEditor” se puede cargar en el IDE desde el menú “Archivo > Ejemplos > Arduino-mbed-APIs > PropertyEditor”.

Abra la ventana “Monitor Serie” (véase Abrir la ventana “Monitor Serie” de Arduino más abajo) y cargue el croquis “PropertyEditor” en la tarjeta LongRa usando la función de carga. Si esto tuvo éxito, debería aparecer el siguiente texto:

Para listar todas las propiedades disponibles, introduzca “l” (para list) en el campo de entrada, como puede verse en la figura de arriba, y haga clic en el botón “Enviar”:

Para fijar un valor de propiedad introduzca “s” (para set), seguido del número de la propiedad y el valor deseado. En este ejemplo, a la propiedad “LORA_DEVICE_ID” (número 10) se le asigna el valor “15”:

Al volver a listar las propiedades, a la propiedad “LORA_DEVICE_ID” se le ha asignado el valor “15”:

Las propiedades individuales se pueden borrar de la memoria introduciendo el comando “d” (para delete).

Definir propiedades para “RadioTest”

La sencilla aplicación de muestra de RadioShuttle (“RadioTest”) está pensada para principiantes. Hay dos dispositivos que se comunican entre sí y comparten un mensaje simple. Un dispositivo se llama Nodo, el otro es una Estación. Con sólo pulsar un botón (botón “A”) se transmite un mensaje desde el nodo a la estación. Esto también funciona al revés, la estación también puede transmitir un mensaje al nodo, asumiendo que el nodo ha sido configurado como nodo en línea (por defecto es nodo fuera de línea).

La aplicación de mustra “RadioTest” requiere al menos las siguientes propiedades. Pueden configurarse con la aplicación PropertyEditor:

PropiedadTipoDescripción
LORA_DEVICE_IDT_32BITID de dispositivo de la tarjeta (predefinido, de lo contrario debe ser ajustado)
LORA_CODE_IDT_32BITCódigo de la tarjeta (predefinido, de lo contrario debe ser ajustado)
LORA_RADIO_TYPET_32BITTipo de uso (no establecido):
1 = Nodo fuera de línea (uso como sensor de radio en modo “deepsleep”)
3 = Nodo en línea (uso como sensor de radio, siempre listo para recibir)
4 = Estación básica (funcionamiento como servidor para redes pequeñas)
5 = Estación servidor (funcionamiento como servidor para redes más grandes)
LORA_REMOTE_IDT_32BITID de comunicaciones de la estación remota (no establecido)
LORA_APP_PWD
(optional)
T_STREstablece la contraseña de cifrado AES-128 por aplicación

Si no está predefinido, introduzca el valor de la propiedad “LORA_DEVICE_ID” en la memoria. Lo encontrará en la parte posterior de la tarjeta (“ID:”).

Proceda de la misma manera con las propiedades “LORA_CODE_ID”, este valor también se puede encontrar en la parte posterior de su tarjeta (“Código:”), “LORA_REMOTE_ID” y “LORA_RADIO_TYPE”.

Si “LORA_REMOTE_ID» y “LORA_RADIO_TYPE” no están configurados y #define USE_DEMOBOARD_PAIR está activado en el archivo “RadioTest.ino”, se utiliza un modo de prueba de demostración entre ambas tarjetas (consulte Personalizar RadioTest.ino más adelante).

Activar la aplicación de muestra “RadioTest”

Después de reiniciar el IDE de Arduino, se debe seleccionar “Arduino/Genuino Zero (Native USB-Port)” para la tarjeta LongRa desde el menú “Herramientas > Placa” porque el IDE de Arduino muestra sólo aquellas bibliotecas que pueden ejecutarse en la tarjeta seleccionada.

A continuación, la muestra “RadioTest” se puede cargar en el IDE desde el punto de menú “Archivo > Ejemplos > RadioShuttle > RadioTest”. La muestra permite enviar mensajes desde un nodo a una estación, o viceversa. Se compone de los archivos “PinMap.h”, “RTCUtil.cpp” y “RadioTest.ino”.

Es necesario hacer los siguientes ajustes antes de la utilización:

Personalizar RadioTest.ino

La línea #define USE_DEMOBOARD_PAIR puede desactivarse de la siguiente manera:
// #define USE_DEMOBOARD_PAIR

Esta línea se ha utilizado para hacer coincidir automáticamente los pares de tarjetas suministradas.

Verificar la aplicación de muestra “RadioTest”

Simplemente presione el botón “A” izquierdo de la tarjeta nodo. Esto activará un mensaje de red desde el nodo al servidor. Entonces el servidor debería recibir un mensaje. Durante la transmisión del mensaje, los ledes RX y TX deben parpadear por un momento. Por supuesto, esto también funciona al revés, pulsando el botón “A” en el servidor.

Además, los mensajes se visualizan en la consola “Monitor Serie”.

Abrir la ventana “Monitor Serie” en Arduino

Dentro de los tres segundos siguientes a la carga del software o al reinicio de la tarjeta, debe abrirse la ventana “Monitor Serie” para que todos los mensajes sean visibles. La ventana debe abrirse de nuevo después de cargar o reiniciar.

Si esta ventana no se abre en cinco segundos, la tarjeta apagará la interfaz USB (“Monitor Serie”), y el led 13 parpadeará brevemente, confirmando que el conector USB ha sido apagado. El apagado de la conexión USB es un proceso automático para ahorrar energía.

Ejemplo A: Inicio exitoso del software RadioShuttle

Si el “Monitor Serie” se abre dentro de los cinco segundos siguientes al inicio o reinicio, debería aparecer un mensaje similar al anterior.
Se muestran parámetros importantes como la frecuencia, el ancho de banda y el factor de dispersión. El mensaje “TimeOnAir” indica el tiempo que los datos están en movimiento con los parámetros ajustados. Si está disponible, el tiempo se toma del tiempo de RTC, de lo contrario se utiliza el tiempo de compilación. También es importante la información del número de nodo (aquí “ID=14”) y la configuración de si el sistema funciona como un nodo (“Node”) o como una estación.

Ejemplo B: Mensaje enviado con éxito

Después de pulsar el botón “A”, se envió un mensaje de prueba a un segundo nodo. Este último ha confirmado la recepción.

Ejemplo C: Timeout al enviar de un mensaje

Después de pulsar el botón “A”, se envió un mensaje de prueba. Sin embargo, la recepción no ha sido confirmada. Después de tres intentos, este proceso se cancela y aparece un mensaje de error de timeout (“MSG_SentTimeout”).

Memoria permanente para propiedades

Existe una memoria en la que se pueden guardar de forma permanente los ajustes que deben conservarse en la tarjeta después de la instalación de un nuevo croquis. Por ejemplo, es útil para guardar ajustes como datos de acceso WiFi o similares. Para ello se pueden utilizar las aplicaciones de muestra “PropertyEditor” y “PropertyTest” (véase la tabla siguiente). La página Memoria Permanente para Propiedades explica en detalle las diferencias entre los diferentes tipos de memoria.

Resumen completo de ejemplos

NombreBibliotecaDescripción
BlinkyArduino-mbed-APIsLed parpadeando periodicamente
BlinkyEnhancedArduino-mbed-APIsLed parpadeando a través del temporizador
BlinkyEnhanced_C_Plus_PlusArduino-mbed-APIsLed parpadeando a través del temporizador (en C++)
CPUBenchArduino-mbed-APIsMide el rendimiento de coma flotante y entero de la CPU
DisplayI2CSampleArduino-mbed-APIsUso de una pantalla OLED (128×64 píxeles, I2C). Consulte Funcionamiento de la Tarjeta ECO Power con una Pantalla OLED
HelloWorldArduino-mbed-APIsEjemplo simple de impresión de salida; explica varias opciones de “printf”
LongRaPowerSwitchTestArduino-mbed-APIsMuestra cómo habilitar 5 voltios o 3,3 voltios usando la tarjeta LongRa
PMSensorRadioRadioShuttleSensor de partículas; mide periódicamente el polvo (en µg/m3), según las normas PM10 y PM2.5)
PropertyEditorArduino-mbed-APIsPrograma para la configuración de las propiedades que se guardan en la tarjeta permanentemente. Permanece después de reiniciar o hasta después de instalar un nuevo programa. Véase también Memoria Permanente para Propiedades
PropertyTestArduino-mbed-APIsMuestra cómo guardar propiedades, por ejemplo, cadenas y números en la memoria flash persistente para el uso en un croquis. Véase también Memoria Permanente para Propiedades
RadioTestRadioShuttleVéase la explicación detallada más arriba
TimerTestArduino-mbed-APIsEjemplo de uso de múltiples temporizadores asincrónicos llamando a las funciones de finalización cuando el timeout vence. Funciona con precisión y eficiencia energética

Vídeo de formación: Non-volatile settings (NV Property)

Ficha técnica (PDF)