Instalación de un Croquis de RadioShuttle para el ESP32

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

Instalar la biblioteca RadioShuttle

El software completo de RadioShuttle se entrega en un archivo Zip y se puede cargar aquí introduciendo un código de identificación de la tarjeta. El código se encuentra en el reverso de la tarjeta, por ejemplo, 5678.
Se carga un archivo Zip con el software actual, por ejemplo, “RadioShuttle-Arduino-2019-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)
  • “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 MCU ESP32 con el chip de radio y los otros periféricos. Si es necesario, debe comprobarse y adaptarse para cada nuevo programa que se instale. Se puede encontrar en el IDE de Arduino, como una pestaña adicional.

Para que el código del programa y la revisión de la tarjeta coincidan, busque #elif defined(ARDUINO_ESP32_DEV) y asegúrese de que esta línea esté activa. Si tiene otra versión de la tarjeta ECO Power, active la línea correspondiente y desactive la revisión ECO Power anterior, si es necesario:
#define ESP32_ECO_POWER_REV_1 // our rev1 ESP32 ECO Power Boards

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 siguiente). 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 “ESP32 Dev Module” para la tarjeta ECO Power desde el menú “Herramientas > Placa” porque el IDE de Arduino muestra sólo aquellas librerías 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 la programa muestra “PropertyEditor” en la tarjeta ECO Power usando la función de subir. 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. A continuación, haga clic en el botón “Enviar”. En este ejemplo se debe asignar el valor “radioshuttleuser” a la propiedad “WIFI_SSID” (número 30):

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

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 (“Usuario”) 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.

La aplicación de muestra “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)
LORA_CODE_IDT_32BITCódigo de la tarjeta (predefinido)
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 “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 la sección Personalizar RadioTest.ino más abajo).

Activar la aplicación de muestra “RadioTest”

Después de reiniciar el IDE de Arduino, se debe seleccionar “ESP32 Dev Module” para la tarjeta ECO Power desde el menú “Herramientas > Placa” porque el IDE de Arduino muestra sólo aquellas librerías que pueden ejecutarse en la tarjeta seleccionada.

Cargue el ejemplo “RadioTest” a través de “Archivo > Ejemplos > RadioShuttle > RadioTest” en el IDE. Con este programa de muestra puede enviar mensajes desde un nodo a una estación o viceversa. Consiste en los archivos “PinMap.h”, “RTCUtil.cpp” y “RadioTest.ino”.

Los siguientes ajustes deben ser comprobados o realizados antes de su uso:

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.

Verificar la aplicación de muestra “RadioTest”

Simplemente presione el botón “Usuario” en el nodo. A continuación, se envía un mensaje de red desde el nodo al servidor. Durante la transmisión de mensajes, los ledes de transmisión y recepción deben parpadear brevemente. Esto también se puede hacer al revés pulsando el botón “Usuario” en el servidor y el nodo recibirá un mensaje.

Además, los mensajes se muestran en la ventana de la consola “Monitor Serie”.

Abrir la ventana “Monitor Serie” de Arduino

Se recomienda tener siempre abierta la ventana “Serial Monitor” de la consola Arduino, ya que aquí se muestran mensajes importantes. Por supuesto, se debe conectar un adaptador de programación. Los mensajes de restablecimiento, como el restablecimiento del watchdog (“perro guardián”), el restablecimiento de la alimentación (“apagón”) y los mensajes de arranque también se muestran allí.

Aquí también se muestran los mensajes recibidos de RadioShuttle y los mensajes enviados. La función EnablePacketTrace() puede utilizarse para desactivar o ajustar el registro de mensajes.

Si la ventana “Monitor Serie” se abre más tarde, los mensajes anteriores no están visibles.

Ejemplo A: Inicio exitoso del software RadioShuttle

Inmediatamente después de iniciar o reiniciar la tarjeta, aparecerá un mensaje similar al anterior en la ventana “Monitor Serie”. Se pueden ver 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 camino 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 sobre el número de nodo (aquí “ID=201”) así como la configuración de si el sistema funciona como nodo o como estación.

Ejemplo B: Mensaje enviado con éxito

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

Ejemplo C: Tiempo máximo al enviar un mensaje

Después de pulsar el botón “Usuario”, 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 tiempo máximo (“MSG_SentTimeout”).

Estados de los ledes en el ejemplo “RadioTest”

Led 2 (led verde a la derecha):

  • Apagado
    La tarjeta no tiene alimentación o está en modo “deepsleep”
  • Parpadea brevemente cada 10 segundos
    La tarjeta funciona y se encuentra en el modo “deepsleep” del ESP32 para consumir la menor cantidad de energía posible; el procesador está apagado en gran medida. El parpadeo corto indica que se pone activo regularmente para comprobar si hay alguna tarea que realizar
  • Se ilumina permanentemente débil
    La tarjeta está activa y procesa eventos en el bucle (“loop”) de Arduino. Después simplemente cae en un “sueño” y es despertado unas 1000 veces por segundo por el sistema operativo
  • Parpadeante
    Esto señala la recepción de datos de radio LoRa
  • Permanentemente encendido
    La tarjeta está activa y funciona en el bucle de Arduino. Mientras está en marcha, el led está encendido; si el bucle está permanentemente activo (funcionamiento continuo), el led se ilumina continuamente. Para un uso optimizado de la energía, el bucle debería funcionar lo menos posible o sólo si hay algo que procesar. La palabra clave es: sin sondeo (“no polling”)

Led 1 (led rojo a la izquierda):

  • Apagado
    Normalmente el led rojo no se enciende, pero puede ser utilizado por el usuario
  • Parpadeante
    Al enviar datos de radio LoRa, el led rojo se ilumina brevemente, dependiendo de la longitud de los datos. Esto ocurre durante el envío de cada mensaje

Por supuesto, los ledes también pueden ser utilizados de forma individual o adicional por el usuario.

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
ESP32AsyncHTTPClientArduino-mbed-APIsUn simple programa cliente HTTP que ejecuta una petición HTTP GET o POST. Todo esto ocurre asincrónicamente sin bloquear el bucle principal de Arduino
ESP32BlinkyDeepSleepArduino-mbed-APIsEjemplo de “deepsleep” (bajo consumo de energía); parpadea cada 10 segundos durante el “deepsleep”, el led 2 parpadea al despertar cada minuto
ESP32FrequencyThrottleArduino-mbed-APIsCambiar el reloj de la MCU a 2 MHz para ahorrar energía
ESP32MQTTAlarmSystemArduino-mbed-APIsPequeño sistema de alarma que dispara una alarma vía MQTT a través de un detector de movimiento, incluyendo datos de estado y temperatura vía display
ESP32MQTTClientArduino-mbed-APIsEstablece una conexión WiFi con un broker MQTT para enviarle mensajes y recibir topics registrados del broker
ESP32RadioShuttleMQTTArduino-mbed-APIsRecibe datos de los nodos y los envía a un broker MQTT. Los mensajes MQTT recibidos pueden ser reenviados a los nodos LoRa
HelloWorldArduino-mbed-APIsEjemplo simple de impresión de salida; explica varias opciones de “printf”
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
RTC3231CalibrationArduino-mbed-APIsUtilidad de calibración para medir el error de frecuencia del RTC en la tarjeta ECO Power
TimerTestArduino-mbed-APIsEjemplo de uso de múltiples temporizadores asincrónicos llamando a las funciones de finalización cuando el tiempo de espera vence. Funciona con precisión y eficiencia energética

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

Ficha técnica (PDF)