
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-2018-10-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 la pantalla SSD1306, por ejemplo, la tarjeta Heltec LoRa (véase la información técnica Funcionamiento de la Tarjeta ECO Power con una Pantalla OLED)
- “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 ESP32 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.
Para que el código del programa y la revisión de la tarjeta coincidan, busque #elif definido (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
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
Aplicación de muestra “PropertyEditor”
Existe una memoria en la que se pueden almacenar 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:
Propiedad | Tipo | Descripción |
---|---|---|
LORA_DEVICE_ID | T_32BIT | ID de dispositivo de la tarjeta (predefinido) |
LORA_CODE_ID | T_32BIT | Código de la tarjeta (predefinido) |
LORA_RADIO_TYPE | T_32BIT | Tipo de uso (no definido): 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_ID | T_32BIT | ID de comunicaciones de la estación remota (no definido) |
LORA_APP_PWD (optional) | T_STR | Establece 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 arriba).
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:
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 LEDs 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 son 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, la anchura 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 LEDs 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 está activo regularmente para comprobar si hay alguna tarea que realizar - Se ilumina permanentemente débil
La tarjeta está activa y procesa eventos en el “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 “loop” de Arduino. Mientras está en marcha, el LED está encendido, por lo que si el “loop” está permanentemente activo (funcionamiento continuo), el LED se ilumina continuamente. Para un uso optimizado de la energía, el “loop” 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 LEDs 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 almacenar 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
Nombre | Biblioteca | Descripción |
---|---|---|
Blinky | Arduino-mbed-APIs | Parpadeo periódico del LED |
BlinkyEnhanced | Arduino-mbed-APIs | LED parpadeando a través del temporizador |
BlinkyEnhanced_C_Plus_Plus | Arduino-mbed-APIs | LED parpadeando a través del temporizador en C++ |
CPUBench | Arduino-mbed-APIs | Mide el rendimiento de la CPU flotante y entera |
DisplayI2CSample | Arduino-mbed-APIs | Uso de una pantalla OLED (128×64 píxeles, I2C). Consulte Funcionamiento de la Tarjeta ECO Power con una Pantalla OLED |
ESP32AsyncHTTPClient | Arduino-mbed-APIs | Un 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 |
ESP32BlinkyDeepSleep | Arduino-mbed-APIs | Ejemplo de sueño profundo (bajo consumo de energía); parpadea cada 10 segundos durante el “deepsleep”, el LED2 parpadea al despertar cada minuto |
ESP32FrequencyThrottle | Arduino-mbed-APIs | Cambiar el reloj de la MCU a 2 MHz para ahorrar energía |
ESP32MQTTAlarmSystem | Arduino-mbed-APIs | Pequeñ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 |
ESP32MQTTClient | Arduino-mbed-APIs | Establece una conexión WiFi con un broker MQTT para enviarle mensajes y recibir topics registrados del broker |
ESP32RadioShuttleMQTT | Arduino-mbed-APIs | Recibe datos de los nodos y los envía a un broker MQTT. Los mensajes MQTT recibidos pueden ser reenviados a los nodos LoRa |
HelloWorld | Arduino-mbed-APIs | Ejemplo de impresión de salida simple; explica varias opciones de “printf” |
PropertyEditor | Arduino-mbed-APIs | Programa para la configuración de las propiedades, que se almacenan 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 |
PropertyTest | Arduino-mbed-APIs | Muestra cómo almacenar propiedades, por ejemplo, cadenas y números en la memoria flash persistente para su uso en croquis. Véase también Memoria Permanente para Propiedades |
RTC3231Calibration | Arduino-mbed-APIs | Utilidad de calibración para medir el error de frecuencia del RTC en la tarjeta ECO Power |
TimerTest | Arduino-mbed-APIs | Ejemplo 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 |
RadioTest | RadioShuttle | Véase la explicación detallada más arriba |
PMSensorRadio | RadioShuttle | Sensor de partículas; mide periódicamente el polvo en µg/m3 (normas PM10 y PM2.5) |