Sensor Arduino LoRa con radio InAir9B

Sensor Arduino LoRa con radio InAir9B

Tabla de contenido:

Anonim

Aquí describiré paso a paso cómo hacer que el sensor LoRa funcione con la pila LoRaWAN basada en el módulo inAir9B y Arduino UNO (lo mismo se puede aplicar a Mega).

No he encontrado un tutorial completo en ninguna parte de la Web y decidí hacerlo.

Al final, tendrá listo para usar el nodo final de LoRa enviando el mensaje 'Hello World' cada minuto.

Como es un ejemplo de LoRaWAN, asumo que ya tiene la puerta de enlace de LoRa.

Que necesitarás:

1. Arduino UNO (Mega u otro)

2. Módulo inAir9B (porque puede intentar lo mismo con otro módulo pero está fuera del alcance de esta guía)

3. Cables y breakboard

4. Puerta de enlace de LoRa.

5. PC o laptop con Arduino IDE

6. Servidor de la red LoRa para ver sus datos (uso loriot.io aquí)

Preparación:

Conecte la puerta de enlace a su servidor de red:

1) la forma más fácil es usar la cuenta gratuita en loriot.io. Regístrese allí y agregue su puerta de enlace. Proporciona todas las instrucciones para configurar su puerta de enlace y descargar software personalizado si es necesario. Cuando termine, verá su puerta de enlace como 'en línea' y 'Conectada'

2) Crea una aplicación de red en tu servidor.

3) Generar nuevo dispositivo en su aplicación. Esto le dará configuraciones como 'Dispositivo EUI', DevADDR, NWKSKEY, APPSKEY y algunos otros que no necesitamos ahora.

Suministros:

Paso 1: Módulo de cableado

Algunos de mis módulos en Air9B estaban con patas soldadas (a la derecha en la imagen) y otros yo solté (a la izquierda en la foto). Los módulos previamente unidos tienen patas sobre las etiquetas, lo cual no es conveniente para mi POV porque si usa el tablero no puede ver lo que está escrito en él. Así que mis módulos los soldé con las patas hacia abajo. Pero depende de usted qué elegir.

Conecte inAir9B a Arduino de la siguiente manera:

inAir9B - Arduino

D0 - 2

D1 - 5

D2 - 6

CS - 10

0V -GND

3V3 - 3.3V

SI - MOSI (en el encabezado de ICSP)

SO - MISO (en el encabezado de ICSP)

CK - SCK (en el encabezado de ICSP)

Para los pines en el encabezado ICSP ver imagen

Paso 2: Programación

Actualmente hay 2 versiones de las bibliotecas LoRaWAN para Arduino:

1. http://github.com/matthijskooijman/arduino-lmic: esta biblioteca es portada desde IBM LoRaWAN en la biblioteca C. El problema con esto es que usa mucha memoria (principalmente debido a la parte de la inscripción AES) y no se pudo usar como está en Arduino UNO debido a eso. Pero se puede usar después de deshabilitar algunas funciones (que hacen que el código sea más pequeño).

2. http://github.com/things4u/LoRa-LMIC-1.51: este es el mismo puerto de la biblioteca de IBM pero con una biblioteca diferente para la inscripción AES (versión más pequeña).

Tuve problemas con la ejecución de un boceto de la segunda opción y decidí detenerme en la primera.

Para hacer lo mismo, debe descargar la biblioteca desde el enlace anterior (versión de Matthijs Kooijman) y colocarla en la carpeta de bibliotecas de Arduino (sin comprimir). Luego reinicie el IDE de Arduino y lo verá en bibliotecas y ejemplos.

En primer lugar, vaya a la carpeta con la biblioteca y abra el archivo 'config.h'. Chequea esa linea

'#define CFG_sx1276_radio 1' no está comentado y '// # define CFG_sx1272_radio 1' está comentado.

Descomente las líneas '#define DISABLE_PING' y '#define DISABLE_BEACONS' para ahorrar espacio para Arduino UNO (para Mega puede omitir esto).

A continuación, abra en Arduino IDE: Archivo -> Ejemplos -> marco de trabajo de IBM LMIC -> ttn

Revise los pines, debe ser así:

// Mapeo de pines

const lmic_pinmap lmic_pins = {.nss = 10,.rxtx = LMIC_UNUSED_PIN,.rst = 5,.dio = {2, 5, 6},};

Configure NWKSKEY, APPSKEY, DEVADDR como lo administró en su servidor de red.

Ver archivos adjuntos como ejemplo.

Sube tu boceto a Arduino. ¡Hecho!

Comenzará a enviar paquetes a su puerta de enlace y luego se reenviará a Network Server.

Si usa 'loriot' puede ver paquetes que van a su servidor en la página: http: //www.loriot.io/apps/gwtap.html? Gw = B8-27-EB -… (ponga el MAC de su GW aquí)

Y también puede comprobar los mensajes que llegan a su servidor (ver imágenes).

Puede convertir HEX a datos ASCII aquí: http: //www.rapidtables.com/convert/number/hex-to-a …

En mi caso, '48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 'significa' ¡Hola mundo! '

Próximos pasos:

Conecte sus sensores reales a arduino y programe para enviar datos en lugar de "Hello World".