Nodo ttn mkrwan
Fondo
Prueba de concepto para un nodo de red "Ultra Low Power" / The Things Network usando el Arduino MKR WAN 1300.
El MKR WAN 1300 usa demasiada potencia en el modo de suspensión para usarse como dispositivo de potencia ultra baja (un poco más de 1 mA).
Esta prueba de concepto utiliza un temporizador de potencia ultra baja TPL5110 de Texas TPL5110 para llevar la corriente de sueño bajo 50NA.
A medida que el dispositivo está completamente alimentado durante el tiempo de sueño, usamos un módulo Fram para guardar las teclas de sesión de Lorawan y los contadores de cuadros.
Dos nodos de prueba:
Arriba a la izquierda: Sensor de temperatura de pantalla y máxima DS18B20
Abajo a la izquierda: Bosch BME280 Temperatura Humedad y sensor de presión

Arriba a la derecha: Corriente del sueño
Abajo a la derecha: Ejecución de corriente (nodo con la pantalla)
Teoría de la operación
- TPL5110 se despierta y enciende el MKR WAN 1300
- Leer datos guardados de fram
- Únete a la red
- OTAA la primera vez (sin datos en Fram)
- ABP usando las teclas de sesión guardadas y los contadores de cuadro después
- Recopilar datos de sensores
- Envíe la carga útil de Lorawan en formato LPP de Cayenne
- Verifique el mensaje de enlace descendente
- Ingrese el modo de suspensión (levante el pasador de hechos del TPL5110)
Requisito de hardware
El código se basa en el siguiente hardware:
- Arduino MKR WAN 1300 - Firmware 1.1.7 o más nuevo
- Breakout tpl5110
- Ruptura de fram
- Sensores, código de muestra proporcionado para
- Voltaje de la batería (usando el divisor incorporado)
- Sensor de temperatura Maxim DS18B20 (un cable)
- Bosch BME280 Sensor de presión de humedad de temperatura
- Opcional
- SH1106 128X64 I2C Pantalla para la depuración
- Botón para forzar el reinicio (OTAA Join) en el momento del arranque
Cualquier hardware similar debería funcionar, pero podría necesitar algún cambio de código.
Dependencias de software
El Arduino IDE con las siguientes bibliotecas (todas disponibles en el Arduino Library Manager):
- Arduino Mkrwan versión 1.1.7 o más nuevo
- Adafruit fram (versión SPI)
- Thethingsnetwork versión 2.5.13 o más nueva ( ¡no 2.5.12!)
- Para el sensor BME280
- Sensor unificado de Adafruit
- Adafruit BME280
- Para el sensor Maxim DS18B20
- Onewire
- Dallaastemperatura
- Para la pantalla opcional: U8G2
Configuración de muestra
Configuración de muestra con una pantalla OLED SH1106 y un sensor DS18B20:

Operaciones
Configuración de software
- Copiar
arduino_secrets_distr.h a arduino_secrets.h e ingrese sus claves obtenidas de la consola de redes - En
TTNMkrWanNode uncomment, la define para sus sensores.
El sensor de voltaje siempre está disponible, utiliza el divisor incorporado. Tenga en cuenta que el hecho de que el divisor sea 1/3 y la referencia de voltaje es 1.0V, el máximo que puede medir es 3.0V ... - En
debug.h Elige tu opción de depuración:-
#define DEBUG comentado: no se generó código de depuración -
#define DEBUG sin commentada: depuración en la consola serie (USB). ¡El nodo esperará la consola! -
#define DEBUG y #define OLED sin comments: Mensajes de depuración en la pantalla OLED.
- En
ttn.h puede establecer su puerto predeterminado de Lorawan y la velocidad de datos
Fuerza
Desconecte la alimentación que proviene del TPL5110 (DRV) al encender desde USB.
Inicialización
Si el FRAM no contiene datos válidos o si se presiona el botón cuando se inicia el MKR WAN 1300, el dispositivo realizará una unión OTAA.
Mensajes de enlace descendente
Antes de dormir, el nodo verificará el mensaje de enlace descendente:
- 0x01: reiniciar. El nodo realizará una unión de OTAA durante el próximo ciclo
- 0x02 0xpp: establecer puerto. El nodo usará Port
pp al enviar datos - 0x03 0xdd: Establezca la velocidad de datos. El nodo utilizará la velocidad de datos solicitada.
Hora de dormir
- Cuando se alimenta desde USB, el nodo se inactivo durante 5 minutos y luego se reiniciará
- Cuando se alimenta a través del TPL5110, el tiempo de sueño es impulsado por una resistencia (en la ruptura de Adafruit, puede usar el trimpot en el tablero)