Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un Pycom LoPy a Ubidots usando LoRaWAN sobre HTTP
Conectar un Pycom LoPy a Ubidots usando LoRaWAN sobre HTTP

Aprende a conectarte a LoRaWAN utilizando Pycom + Multitech + Ubidots a través de HTTP.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

Con LoRa, Wifi y BLE, el LoPy es el único microcontrolador habilitado para MicroPython con triple portador en el mercado actual: el hardware IoT de grado empresarial perfecto para tus cosas conectadas. Con el último chipset de Espressif, el LoPy ofrece una combinación perfecta de potencia, amabilidad y flexibilidad.

No importa el tipo de placa que estés utilizando WiPy, SiPy, LoPy o FiPy, toda la familia Pycom se comunica con Ubidots de la misma manera.

Para más información sobre la familia de hardware de Pycom, simplemente haz clic aquí.

Siguiendo esta guía, podrás transmitir datos desde los dispositivos LoPy como nodos finales LoRa a un Gateway LoRaWAN previamente configurado con el servidor de red TTN LoRaWAN. Luego, los datos recibidos en TTN se reenviarán a Ubidots utilizando una función de "Integración HTTP" proporcionada por TTN.

Requisitos

Paso a Paso

  1. Configurando el Gateway LoRaWAN a TTN

  2. Configurando una Aplicación TTN

  3. Configurando Nodos LoRa - LoPy

  4. Integra tus datos de TTN con Ubidots

  5. Resumen

1. Configurando el Gateway LoRaWAN a TTN

Para poder transmitir datos desde el LoPy a Ubidots a través de LoRaWAN, necesitarás configurar un Gateway LoRaWAN para llevar tus datos a la nube.

Para aprender cómo configurar un Multitech Conduit con el servidor de red LoRaWAN ofrecido por The Things Network, consulta la guía a continuación:

Si estás utilizando un Gateway diferente para tu aplicación, consulta la documentación de TTN para encontrar detalles adicionales sobre el gateway compatible con TTN que estás utilizando.

Con el Gateway ya configurado y conectado a tu cuenta de TTN, podrás recibir datos de los nodos LoRa (Placas LoPy).

2. Configurando una Aplicación TTN

Ahora, necesitas crear una aplicación en TTN para poder configurar y generar las credenciales (DevEUI, AppEUI, AppKey) que se asignarán en el código de muestra proporcionado a continuación para establecer la comunicación entre el hardware y los gateways y luego hacia TTN y Ubidots, donde los datos pueden ser útiles en una aplicación IoT lista para el usuario final.

1. Ve a la sección "Aplicación" de tu cuenta de TTN y presiona "Agregar Aplicación"

Después de asignar un nuevo ID de aplicación y descripción, tendrás una pantalla con algo similar a lo siguiente:

Para finalizar, presiona el botón "Agregar aplicación".

2. Una vez que la aplicación esté creada, serás redirigido a una ventana de Resumen de Aplicación. Allí selecciona "Registrar Dispositivo" de la sección Dispositivo:

En la siguiente ventana, asigna todos los parámetros requeridos más la región donde están desplegados tus dispositivos. En este punto, en el campo Device EUI, deberías asignar el proporcionado por el fabricante del hardware.

  • Device EUI (DevEUI): El DevEUI identifica el dispositivo en la red LoRaWAN durante la solicitud de JOIN. Esto es asignado al dispositivo por el fabricante del chip. Podrás conocer el DevEUI ejecutando el siguiente comando a través de la consola de Pymakr.

>>> import network>>> from network import LoRa>>> import binascii>>> binascii.hexlify(network.LoRa().mac())b'70b3d5100046a40e'


Después de asignar todos los parámetros requeridos, deberías tener como resultado algo como lo siguiente:

Para finalizar, presiona el botón "Registrar".

3. Una vez que el dispositivo esté correctamente registrado, podrás obtener las credenciales necesarias para transmitir datos al gateway LoRaWAN. Como puedes ver en la imagen a continuación, el ID del Dispositivo, Application EUI y App Key fueron generados por el registro del dispositivo de TTN:

3. Configurando Nodos LoRa - LoPy

Antes de comenzar, es importante revisar los recursos a continuación para asegurarte de que tu placa será programada correctamente:

Si es tu primera vez trabajando con una placa Pycom, te recomendamos encarecidamente que consultes estos materiales de introducción y luego regreses a esta guía para más instrucciones una vez que te hayas familiarizado con tu hardware.

Para la Activación Over-The-Air (OTAA) deberás asignar los siguientes parámetros al código: AppEUI, AppKey, DevEUI. Donde:

  • Device EUI (DevEUI): El DevEUI identifica el dispositivo en la red LoRaWAN durante la solicitud de JOIN. Esto es asignado al dispositivo por el fabricante del chip. Podrás conocer el DevEUI a través de la consola de Pymakr, simplemente ejecutando los siguientes comandos.

>>> import network>>> from network import LoRa>>> import binascii>>> binascii.hexlify(network.LoRa().mac())b'70b3d5100046a40e'

Como puedes ver, el DeviceEUI de mi dispositivo es 70b3d5100046a40e .

  • Application EUI (AppEUI): El AppEUI identifica la aplicación durante la solicitud de JOIN. Esto será generado por TTN.

  • Application key (AppKey): El AppKey cifra los datos durante la solicitud de JOIN. Esto será generado por TTN.

Configurando el Proyecto Pymakr

1. Abre el editor Atom y activa el plugin Pymakr.

2. Conecta la placa con el editor Atom. Una vez que la placa esté conectada, verás el mensaje "conectado" en el estado:

3. Para comenzar, crea un nuevo directorio llamado "ubidots" para gestionar los códigos y bibliotecas. Una vez creado el directorio, en el editor Atom selecciona Abrir un Proyecto y busca el directorio "ubidots," que fue creado previamente y ábrelo.

4. En el directorio "ubidots" vamos a gestionar las bibliotecas y los códigos main/boot. Por favor, consulta y sigue la estructura a continuación para construir tu proyecto correctamente. Ten en cuenta que el lib contendrá las bibliotecas externas para tu proyecto, si son necesarias en tu proyecto:

> ubidots  - boot.py  - main.py  > lib

NOTA DE DESPLIEGUE: En caso de que necesites usar una biblioteca micro-python externa, agrega una carpeta para la gestión de las bibliotecas en el directorio Ubidots. Haz clic derecho en la carpeta "ubidots" y selecciona "Nueva carpeta", asigna "lib" como nombre.

Ahora, vamos a agregar los archivos main y boot:

  • Haz clic derecho en la carpeta "ubidots" y selecciona "Nuevo Archivo", asigna "boot.py" como nombre

  • Repite los pasos anteriores para crear el main llamado "main.py":

Una vez que ambos archivos estén creados, la estructura de tu proyecto se verá así:

Hora de Codificar

1. A continuación, copia y pega el código a continuación en el archivo "boot.py":

from machine import UARTimport machineimport osuart = UART(0, baudrate=115200)os.dupterm(uart)machine.main('main.py')

Guarda tu código una vez que lo hayas subido al "boot.py" file.

2. A continuación, copia y pega el código a continuación en el archivo "main.py". Una vez que el código esté pegado, asigna tu AppEUI, AppKey, DevEUI proporcionados y asignados en el dispositivo previamente registrado en TTN donde se indica en el código a continuación:

from network import LoRaimport socketimport timeimport binasciiimport utimedef select_subband(lora, subband):    if (type(subband) is int):        if ((subband<1) or (subband>8)):            raise ValueError("subband out of range (1-8)")    else:        raise TypeError("subband must be 1-8")    for channel in range(0, 72):        lora.remove_channel(channel)    index = (subband-1)*8    for channel in range(0, 7):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(8, 15):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(16, 23):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(24, 31):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(32, 39):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(40, 47):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(48, 55):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(56, 63):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1    index = (subband-1)*8    for channel in range(64, 71):        lora.add_channel(channel, frequency=902300000+index*200000, dr_min=0, dr_max=3)        index+=1lora = LoRa(mode=LoRa.LORAWAN, adr=False, public=True, tx_retries=0)sb = 1 #Cambia a la sub-banda de frecuencia del conducto deseadaselect_subband(lora,sb) # asigna tu AppEUI, AppKey, DevEUIapp_eui = binascii.unhexlify('ff ff ba 78 20 0c c2 ee'.replace(' ','')) app_key = binascii.unhexlify('12 67 ad a4 da e3 ac 12 67 6b ad da e3 ac ff ff'.replace(' ',''))dev_eui = binascii.unhexlify ('b1 17 11 b5 3d ec b3 44'.replace(' ',''))  # crea una autenticación OTAA (DevEUI, AppEUI, AppKey)auth =(dev_eui, app_eui, app_key)# crea una autenticación OTAA (AppEUI, AppKey)#auth=(app_eui, app_key)# unirse a una red usando OTAA (Activación Over the Air)lora.join(activation=LoRa.OTAA, auth=auth, timeout=0)print("Joined...")while not lora.has_joined():    time.sleep(5)    print('Not yet joined on frequency sub-band '+str(sb)+'...')s = socket.socket(socket.AF_LORA, socket.SOCK_RAW)s.setblocking(False)s.setsockopt(socket.SOL_LORA, socket.SO_DR, 3)pressure = 1    while lora.has_joined():    payload = '{"pressure":'+str(pressure)+',"time":'+str(utime.time())+'}'    print(payload)    s.send(payload)    time.sleep(6)    pressure +=1    if pressure > 100:        pressure = 1

Guarda tu código una vez que lo hayas subido al "main.py" file.

3. Ahora sincroniza el proyecto. Presiona el ícono "Sync" desde la consola, o selecciona Paquetes –> Pymakr –> Sincronizar proyecto.

¡En este punto, tus dispositivos LoPy podrán transmitir datos al Gateway LoRaWAN!

4. Integra tus datos de TTN con Ubidots

Ahora que tus dispositivos están transmitiendo datos a TTN, necesitas reenviar los datos a Ubidots utilizando la función de Integración HTTP ofrecida por TTN.

Para una explicación detallada de cómo configurar la Integración HTTP con Ubidots, consulta la guía a continuación:

5. Resumen

Ahora puedes transmitir datos desde tus dispositivos LoPy a Ubidots utilizando el servidor de red TTN LoRaWAN. Con los datos en Ubidots, puedes transformar tus datos en bruto en información y ofrecer soluciones para resolver problemas a los clientes finales de la manera en que desean verlas.

Otros lectores también han encontrado útil...

¿Ha quedado contestada tu pregunta?