La tecnología LoRa (Long Range) garantiza una comunicación confiable de largo alcance entre un nodo y una puerta de enlace, lo que proporciona un bajo consumo de energía para los dispositivos a largo plazo. Este artículo proporciona una explicación de la comunicación de nodo a puerta de enlace LoRa al tiempo que presenta un nodo equipado con dos botones para controlar las banderas. Estos botones permiten a los usuarios habilitar o deshabilitar acciones específicas asociadas con cada botón y actualizar el estado en la puerta de enlace.
Desde la automatización del hogar hasta el monitoreo industrial, esta configuración de comunicación LoRa mejorada presenta diversas posibilidades para implementaciones de Internet de las cosas (IoT).
Este tutorial cubrirá la configuración del hardware, la selección de protocolos y la configuración de la puerta de enlace, lo que facilitará la transmisión y visualización de datos en tiempo real.
Abstracto
Esto es lo que cubriremos...
1. Cómo cargar el código LoRa a la miniplaca LoRa E5
2. Diagrama de circuito para conectar un ST-Link y botones a la miniplaca LoRa E5
3. Cómo configurar un nodo final en la puerta de enlace
4. El flujo del programa o algoritmo con una explicación.
Requisitos
1. Asegúrese de que la puerta de enlace LoRa ya esté instalada como se muestra en este artículo
2. STM32Cube IDE debe estar instalado en su PC
3. La mini tarjeta Seed Studio LoRa E5
4. El programador ST-Link V2 original
5. Un interruptor táctil y algunos conocimientos básicos de soldadura.
Compilando el código
1. Descarga el código y extráelo.
2. Abra la carpeta y haga doble clic en ".project"
3. El proyecto aparecerá en la pestaña 'Explorador de proyectos' a la izquierda del IDE STM32CUBE. Seleccione el proyecto y haga clic en el icono del martillo en la barra superior para compilar el código.
4. Después de compilar el código, no debería haber ningún error como se muestra en la imagen a continuación. Si aparece un mensaje de error, siga los pasos nuevamente para garantizar el éxito.
Cargando el código
1. Es necesario localizar un ST-Link V2 genuino para actualizar adecuadamente el código LoRa, ya que las variantes clonadas de ST-Link a menudo no son compatibles. Esto significa que es fundamental reconocer el ST-Link original. Un método confiable de identificación implica examinar los componentes de hardware.
Después de un análisis exhaustivo, un ST-Link V2 genuino tiene un chip STM, que indica autenticidad. Los clones suelen importarse de China y tienen una apariencia ligeramente diferente.
Este proyecto requiere un “proceso de actualización” fluido, que ocurre de manera confiable con un ST-Link genuino con chip STM (ver imagen a continuación). Conocer la diferencia garantizará la compatibilidad y la programación adecuada.
2. Conecte cinco cables a la mini placa LoRa E5 como se muestra en la imagen a continuación, incluidos 3V3, SWDIO, SWCLK, RST y GND.
3. Vuelva al IDE de STM32 Cube y haga clic en 'Reproducir; como se muestra a continuación para cargar el código.
4. Debería recibir el mensaje "Descarga verificada correctamente".
Conectando los botones
Conecte los dos interruptores táctiles como se muestra en este diagrama de circuito:
Agregar un dispositivo a la puerta de enlace
1. Si no hay ningún perfil de dispositivo, agregue uno. Si ya tiene uno, este mismo perfil se puede utilizar para varios nodos.
2. Para agregar un perfil, abra ChirpStack y vaya a 'Perfiles de dispositivo'.
3. Haga clic en 'Agregar perfil de dispositivo'.
4. Complete la información general y haga clic en 'Enviar'.
5. Apague OTAA porque el dispositivo funcionará en modo ABP. Complete los detalles y la frecuencia de la velocidad de datos del RX3.
6. Active el modo Clase C como se muestra a continuación.
7. Luego agregue 'Aplicaciones' que contiene todos los dispositivos.
8. Haga clic en 'Agregar aplicaciones'.
9. Rellena los datos de registro como se indica a continuación en la imagen.
10. Haga clic en la aplicación que acaba de crear y luego haga clic en el botón 'Agregar dispositivo'. Este proceso debe realizarse cada vez que se agrega un nuevo dispositivo.
11. Comience a completar los detalles como se muestra a continuación. Necesitará encontrar el EUI del dispositivo, que cubriremos en el siguiente paso.
Encontrar EUI y CLAVE
1. Para encontrar el dispositivo EUI y las claves, conecte el dispositivo a una PC mediante un cable USB.
2. Abra cualquier terminal serie (estamos usando Arduino) y seleccione el puerto del dispositivo. Abra la Terminal Serial con una velocidad de baudios de 115200. Presione el botón 'Reset' para ver las Claves.
3. Copie el dispositivo EUI del terminal serie y péguelo en ChirpStack. Agregue la sección del dispositivo como se muestra en la imagen a continuación.
4. Vaya a la sección 'Activación' y complete la dirección del dispositivo, AppSkey y la clave Network S, que puede obtener desde la Terminal Serial.
Recibiendo información
1. Para recibir datos, vaya a la sección de eventos donde se reciben datos cada 10 segundos.
2. Los datos están en formato hexadecimal. Envía el nivel de batería, así como el estado del Botón1 y Botón2, en hexadecimal.
3. Cuando se presiona el Botón1, la bandera del Botón1 estará ALTA en los siguientes datos (simplemente haga clic una vez con el mouse sin mantenerlo presionado).
4. Cuando se presiona el Botón2, el indicador del Botón2 estará ALTO en los siguientes datos.
5. Cuando se presionan ambos botones, la bandera será cero.
Algoritmo de código
Explicación del código
1. El código STM32 basado en LoRa es ligeramente diferente de los códigos típicos. El archivo main.c inicia el proceso para ejecutar lora_app.c como archivo principal. Entonces, abra lora_app.c que contiene el código.
2. Están sucediendo muchas cosas en el código, pero revisemos lo que es relevante para este tutorial. La siguiente condición inicia un temporizador, que llama a la función de evento OnTxTimer que envía datos a la puerta de enlace. El tiempo predeterminado es 10 segundos, que se puede cambiar inicializando TxPeriodicity en milisegundos. La siguiente imagen elimina APP_TX_DUTYCYCLE y establece el retraso de tiempo requerido en milisegundos.
Esta función maneja todas las interrupciones que ocurren en los pines de interrupción. Hay un retraso de 100 milisegundos para fines de depuración.
Integración de contadores inteligentes
Los medidores inteligentes con sensores de pulso se pueden integrar perfectamente en el código anterior. Los sensores de pulso generan pulsos cada vez que aumenta la lectura del medidor, actuando como si el botón se detuviera en este tutorial. Al configurar un microcontrolador (MCU) para reconocer estos pulsos como interrupciones, un usuario puede realizar un seguimiento eficaz de las lecturas del medidor en tiempo real.
Cada vez que el pin de interrupción recibe un pulso, la MCU incrementará la lectura del medidor y la almacenará como una variable. Luego, el código se puede programar para enviar estas lecturas a la puerta de enlace a intervalos regulares, por ejemplo cada 10 segundos. La frecuencia de transmisión se puede ajustar para cumplir con los requisitos específicos de la aplicación.
Esta integración mejora la funcionalidad de los medidores inteligentes, permitiendo un seguimiento preciso y automatizado del consumo de energía. Con lecturas en tiempo real, las empresas de servicios públicos pueden monitorear de manera eficiente el uso, identificar patrones y optimizar la distribución de energía. El código versátil se puede ajustar para diferentes configuraciones de sensores de pulso, por lo que puede funcionar con muchos diseños de medidores inteligentes.