
Este ejemplo muestra cómo se puede usar el AVR64DD32 para crear un nodo final de Lorawan que monitorea la temperatura, la humedad, la presión barométrica y la humedad del suelo y transmite esos datos cada tres minutos a una aplicación a través de la red Things (TTN). El nodo se puede colocar entre diez metros y cinco kilómetros de una puerta de enlace de Lorawan en entornos urbanos, pero el rango es más amplio para las ubicaciones suburbanas. El diseño demuestra cómo se puede configurar un nodo final, incluso a largo plazo, para consumir muy baja potencia/tener una duración de batería larga, mientras que se mueve de forma segura datos valiosos. Este diseño se puede escalar fácilmente para permitir la captura de datos de variabilidad del suelo colocando nodos adicionales en una parcela agrícola sin la necesidad de agregar puertas de enlace o infraestructura adicionales.
Esta demostración utiliza el módulo RN2903A que opera en la banda de frecuencia de 915 MHz y es adecuado para proyectos con sede en EE. UU. Y Australia, pero el proyecto se adapta fácilmente a funcionar en otras regiones seleccionando una Board de Click ™ y una puerta de enlace para su región.
Agregue los componentes a la placa adaptadora nano.
Coloque el LR2 Haga clic en Mikrobus ™ 2 y el clima haga clic en Mikrobus 1.
Conecte los cables del sensor de humedad como se muestra en la Figura 1.
Por último, agregue un cable de puente entre (PA1) y PD1 para permitir el reinicio del clic LR2. (PA1) no está conectado por defecto (ya que ya está conectado a un reloj externo), como resultado, este proyecto permite que el pin PD1 conduzca la señal de reinicio.
| Alambre de jersey | Alfiler |
|---|---|
| VCC - alambre rojo del sensor de humedad | VCC |
| GND: alambre negro del sensor de humedad | Gnd |
| Aout: alambre amarillo del sensor de humedad | PD2 |
| (PA1) - Coloque un puente entre | PD1 |

Figura 1. Configuración de hardware

Figura 2. Abra el proyecto en Mplab X
Una vez que se haya abierto el proyecto, comience calibrando los sensores.
Para calibrar el sensor de humedad, abra el archivo application.c y cambie el estado inicial a TEST_MOISTURE .

Figura 3. Establecer el estado inicial en test_moisture
Más adelante, estos ajustes se pueden hacer específico para las necesidades de su suelo y planta, pero para la brevedad, comience con los límites superiores e inferiores para las mediciones mediante pruebas en aire seco y en una taza de agua.
Coloque el sensor para que esté suspendido en aire seco.

Figura 4. Sensor colocado en aire seco
Inicie el visualizador de datos con la siguiente configuración:
Tasa de baudios: 9600
Longitud de carbón: 8 bits
Paridad: ninguno
Partes de parada: 1
Haga clic en Enviar a la terminal, luego haga y programa el dispositivo.

Figura 5. Visualizador de datos envío a terminal

Figura 6. Hacer y programar el dispositivo
Una vez que se inicia el programa, se le pedirá que presione el botón para generar una lectura de convertidor analógico a digital (ADC). Presione el botón varias veces con el sensor en aire seco, luego coloque el sensor una taza de agua y presione el botón varias veces más.
La Figura 7 muestra dos lecturas. Al recolectar muestras de aire seco, la lectura ADC es cercana a 3000. Al recolectar muestras de agua, la lectura es cercana a 1400.

Figura 7. Valores de ADC en aire seco y en una taza de agua
Tenga en cuenta sus resultados y abra el archivo application.h . Reemplace las definiciones para IN_MAX e IN_MIN usando sus resultados, luego use esos valores para calcular la CONVERSION_PERCENT usando la fórmula que se muestra.

Figura 8. Definiciones de humedad del suelo
Solo se necesita un pequeño cambio para calibrar el clic del clima; El resto se atiende en el software. Para tener una lectura de presión precisa, el dispositivo debe usar su elevación actual sobre el nivel del mar. Ingrese este valor en la línea 24 del archivo bme.h

Figura 9. Elevación para el clima Click
A continuación, configure el lado TTN del proyecto.
Si aún no lo ha hecho, configure una cuenta con TTN; La edición comunitaria es gratuita para uso justo. La configuración de la cuenta comienza con la selección de un clúster regional, haga clic aquí para comenzar.
Después de configurar su cuenta, navegue a su consola y haga clic en Ir a las aplicaciones .

Figura 10. Configuración de la aplicación
Haga clic en el botón Crear aplicación y siga las instrucciones para crear una aplicación.

Figura 11. Crear aplicación
Haga clic en formatorios de carga útil y luego en el enlace ascendente .

Figura 12. Formador de carga de enlace ascendente de la aplicación
En Configuración del tipo de formateador*, seleccione Formatter JavaScript personalizado.

Figura 13. Seleccione Formatero de JavaScript personalizado
Reemplace la función decodeUplink predeterminada con el siguiente fragmento:
function decodeUplink ( input ) {
var data = { } ;
data . temp = input . bytes [ 0 ] ;
data . humidity = input . bytes [ 1 ] ;
data . moisture = input . bytes [ 2 ] ;
data . pressure = ( input . bytes [ 3 ] + 900 ) ;
return {
data : data
} ;
}Figura 14. Decode el fragmento del código ascendente
Haga clic en Guardar y volver a la página Descripción general.
Desde la página Descripción general de la aplicación, haga clic en el botón Registro de dispositivo final .

Figura 15. Registro de un dispositivo final para OTAA
Para registrar el dispositivo, se necesitan algunos detalles del módulo. Abra el archivo application.c nuevamente y cambie el estado para registrarse.

Figura 16. Cambiar el estado para registrarse
Inicie el visualizador de datos y cree y vuelva a programar el dispositivo. Cuando se ejecute el programa, copie el Hweui y tenga en cuenta la especificación de Lorawan.

Figura 17. Detalles del dispositivo final en el visualizador de datos
Regrese a la ventana del dispositivo final de registro en TTN y seleccione Ingrese los detalles del dispositivo final manualmente. Elija su plan de frecuencia según su ubicación y seleccione la especificación de Lorawan. En la sección Información de aprovisionamiento, ingrese todos los ceros para el campo Joineui, luego haga clic en Confirmar .

Figura 18. Registro de un nuevo dispositivo
Pegue el hweui que copió anteriormente en el campo Deveui y luego haga clic en Generar para generar una nueva aplicación.

Figura 19. Generar una nueva AppKey
El dispositivo final ahora se crea y necesitará tener un formateador de carga útil.
La forma más rápida de configurar el formateador es usar el botón Formator de la aplicación Pegar . Haga clic en el botón Formatorios de carga útil , luego seleccione la opción Formator JavaScript personalizada y presione el formateador de la aplicación Pegar .

Figura 20. Pegue el formateador de la aplicación
En TTN, abra la página Descripción general del dispositivo final, hay dos campos para copiar y pegar en el archivo de encabezado RN2XX3 para el proyecto. Haga clic en el Deveui y péguelo en el campo Hweui en la definición RN2xx3.h . Copie el campo AppKey y péguelo en la definición de AppKey.

Figura 21. Copie el Deveui y AppKey al portapapeles

Figura 22. Actualice las definiciones de Hweui y AppKey
Este ejemplo supone que tiene una puerta de enlace pública cerca de usted, o ha establecido uno por su cuenta. Tener su propia puerta de enlace es muy útil para solucionar problemas si se encuentra con problemas. Si desea configurar su propia puerta de enlace, se pueden encontrar dos guías útiles en: Hackster Project y Rak Developer Gateway.
Una vez que tenga acceso a una puerta de enlace, continúe la prueba abriendo el archivo application.c nuevamente y cambiando el estado a Init.

Figura 23. Volver a Init
Inicie el visualizador de datos nuevamente y vuelva a programar el dispositivo.

Figura 24. Iniciar visualizador de datos
Cuando se inicia la aplicación, se inicializarán los módulos. Presione el botón para iniciar el procedimiento TTN.
La configuración del plan de frecuencia del canal tardará unos diez segundos en completarse. Posteriormente, si se acepta la solicitud de unión, el dispositivo enviará su primera carga útil. Si el dispositivo no se conecta, se darán algunas sugerencias. Los problemas comunes son demasiado cercanos a una puerta de enlace, las teclas incorrectas o la puerta de enlace pueden haberse desconectado temporalmente. Normalmente, debería ver una salida como la de la Figura 25.

Figura 25. Salida cuando se acepta la solicitud de unión
Para este proyecto, el nodo envía nuevos datos cada tres minutos. Una vez al día, envía los datos como una carga útil confirmada como en esta primera transmisión. Los mensajes confirmados requieren un reconocimiento de la red, pero también consumen tiempo de aire en la puerta de enlace y la duración adicional de la batería para el nodo. Entonces, los siguientes 479 mensajes cada día se envían como mensajes no confirmados.
Este proyecto envía todos los mensajes confirmados en el puerto 10 y los mensajes no confirmados en el puerto 11. Puede ver en la Figura 26 a continuación que muestra la ventana de datos en vivo de la aplicación, que después de unir y enviar un mensaje confirmado inicial, el nodo envía posteriormente un mensaje no confirmado a la aplicación cada tres minutos.

Figura 26. Mensajes confirmados en el puerto 10 y mensajes no confirmados en el puerto 11
Este ejemplo muestra cómo configurar un nodo final de Lorawan utilizando el AVR64DD32 con el clic Mikroe LR2, el clic de Mikroe Weather y un sensor de humedad del suelo para compartir las condiciones del suelo a largo plazo con poca potencia.