Este capítulo cubre la instalación de los croquis de RadioShuttle. Puede encontrar información sobre la tarjeta Eagle 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, 10998. Otra opción es conectar la tarjeta al monitor serie de Arduino y pulsar el pulsador “Reset” de la tarjeta. El programa por defecto mostrará la salida de inicio incluyendo el ID de la tarjeta, por ejemplo 15:52:46.843491
.
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”:
- “HELIOS_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 xPinMap.h
“xPinMap.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.
Actualmente no hay necesidad de personalizar el archivo “xPinMap.h” porque sólo existe la versión inicial de la tarjeta Eagle. Si hay una revisión de la tarjeta disponible, actualizarémos esta sección
Aplicación de prueba “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 prueba “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 “Heltec WiFi LoRa 32 (V2)” para la tarjeta Eagle 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 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 prueba 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 pulsador (“User”) 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 prueba “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 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_ID | T_32BIT | ID de comunicaciones de la estación remota (no establecido) |
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 abajo).
Activar la aplicación de prueba “RadioTest”
Después de reiniciar el IDE de Arduino, se debe seleccionar “Heltec WiFi LoRa 32 (V2)” para la tarjeta Eagle desde el menú “Herramientas > Placa” porque el IDE de Arduino muestra sólo aquellas bibliotecas 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 prueba puede enviar mensajes desde un nodo a una estación o viceversa. Consiste en los archivos “xPinMap.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.
Verficar la aplicación de prueba “RadioTest”
Simplemente presione el pulsador “User” en el nodo. A continuación, se envía un mensaje de red desde el nodo al servidor. Durante la transmisión de mensajes, el led de transmisión y recepción debe parpadear brevemente. Esto también se puede hacer al revés pulsando el pulsador “User” 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 “Monitor Serie” 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 pulsador “User”, 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 pulsador “User”, 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 blanco:
- Apagado
TLa 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 naranja:
- Se enciende cuando se carga una batería de LiPo o Li-ion conectada a través de una fuente de alimentación externa o USB (puede ser desactivada, ver información técnica La Tarjeta Eagle: Desactivar el Led de Carga)
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 prueba “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 | Led parpadeando periodicamente |
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 | Medición del rendimiento de coma flotante y entero de la CPU |
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 “deepsleep” (bajo consumo de energía); parpadea cada 10 segundos durante el “deepsleep”, el led 2 parpadea al despertar cada minuto |
ESP32DoorBell | Arduino-mbed-APIs | Este ejemplo soporta un botón de timbre y un relé de apertura de puerta. Pulsando el botón de timbre, los teléfonos conectados a través del FRITZ!Box sonarán. Además, el ejemplo envía un mensaje MQTT a la aplicación MQTT Push |
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 los topic registrados del broker |
ESP32RadioShuttleMQTTGateway | 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 simple de impresión de salida; explica varias opciones de “printf” |
PMSensorRadio | Arduino-mbed-APIs | Sensor de partículas; mide periódicamente el polvo (en µg/m3), según las normas PM10 y PM2.5) |
PropertyEditor | Arduino-mbed-APIs | Programa 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 |
PropertyTest | Arduino-mbed-APIs | Muestra 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 |
RadioContinuousTX | Arduino-mbed-APIs | Programa de diagnóstico que transmite continuamente, por ejemplo, para mediciones de antenas de RF |
RadioShuttlePanicButton | Arduino-mbed-APIs | Es muy similar al ejemplo “RadioShuttleSimpleNode”, pero tiene un soporte adicional de sonido de zumbador básico para confirmar a la persona que busca ayuda que se ha activado la alarma de pánico |
RadioShuttleRadioTest2 | Arduino-mbed-APIs | Este ejemplo debería ser más fácil de usar para los nuevos usuarios que “RadioTest” (véase abajo); todo el código de configuración específico de LoRa se ha movido a “LoRa.cpp” |
RadioShuttleSimpleNode | Arduino-mbed-APIs | Envía los datos del sensor a una estación remota. Esto incluye temperatura, humedad y estado de la batería. Los datos se envían automáticamente cada 30 minutos o al pulsar el pulsador “User” |
RadioTest | RadioShuttle | Véase la explicación detallada más arriba |
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 |
Vídeo de formación: Non-volatile settings (NV Property)