Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Integrar un módem celular Digi XBee 3G a la plataforma Ubidots usando MicroPython.
Integrar un módem celular Digi XBee 3G a la plataforma Ubidots usando MicroPython.

Aprende a integrar el dispositivo Digi Xbee Cellular 3G a Ubidots en solo unos minutos.

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

Digi XBee Cellular 3G los módems integrados proporcionan un camino simple hacia 3G (HSPA/GSM) con conectividad de respaldo 2G para OEMs con implementaciones en todo el mundo. Este módem está certificado por la FCC/IC, PTCRB y AT&T, lo que elimina completamente el costo, la complejidad y el riesgo involucrados en el proceso de certificación.

El módem es programable, con soporte para aplicaciones personalizadas de MicroPython que se ejecutan directamente a bordo, lo que permite a los usuarios gestionar sus dispositivos de manera más eficiente y elimina la necesidad de un microcontrolador externo en ciertos casos de uso. Incluye la suite completa de tramas API estándar de Digi XBee y comandos AT, por lo que los clientes existentes pueden simplemente integrar este módem en sus diseños existentes para lograr de inmediato la integración celular 3G, sin el dolor y la molestia de hacer un rediseño completo.

Requisitos

  • KIT DE DESARROLLO DIGI XBEE® CELLULAR 3G

  • Tarjeta SIM Nano (Con plan de datos).

  • Software XCTU.

Configurando Digi XBee

1. Primero, inserte la tarjeta SIM nano dentro de la ranura SIM del módulo Digi XBee 3G.

2. Luego, instale el módulo Digi XBee 3G en la placa de desarrollo.

3. Conecte la antena al módem celular XBee alineando cuidadosamente el conector U.FL, luego presione firmemente hacia abajo para asentar el conector.

4. Conecte la fuente de alimentación de 12V al conector de alimentación en la placa de desarrollo.

5. Ahora, conecte el cable USB desde una PC al puerto USB en la placa de desarrollo. La computadora buscará un controlador, lo que puede tardar unos minutos en instalarse.

Instalando el Software XCTU

2. Inicie el programa y haga clic en Descubrir Módulos de Radio para buscar e instalar la placa de desarrollo Digi XBee.

3. Elija el puerto donde está conectada la placa de desarrollo DIGI XBee y haga clic en “Siguiente”. Deje los parámetros predeterminados y Finalice la instalación.

4. Seleccione el módulo XBee, luego agregue el dispositivo haciendo clic en “Agregar dispositivos seleccionados”.

5. Haga clic en el módulo para abrir la caja de configuración de radio.

Enviando datos a Ubidots

a) Configurando los parámetros de radio.

Para enviar datos a Ubidots, debe configurar varios parámetros relacionados con la Celular, Red, Direccionamiento, Interfaz Serial, Configuraciones de I/O, Comandos de Sueño, Opciones de Comandos AT, opciones de MicroPython y versión/Información del firmware.

1. Primero, en la fila DL, deberá establecer la dirección de destino, escriba “Industrial.api.ubidots.com” y luego haga clic en el botón de escribir.

2. Luego, el puerto 80 es el predeterminado para realizar solicitudes HTTP. El campo de texto DE recibe formato hexadecimal, así que escriba 50 y haga clic en el botón de escribir. El hexadecimal 50 es 80 en decimal.

3. A continuación, para acceder al terminal de MicroPython, cambie el campo BD a 115200 baudios. Haga clic en el botón de escribir.

4. Finalmente, cambie el campo AP a modo MicroPython REPL [4]. Haga clic en el botón de escribir.

NOTA: Es importante esperar hasta que el parámetro AI muestre 0 (Conectado a internet)

b) Programando con MicroPython.

5. Una vez que tenga los parámetros anteriores, es hora de programar con MicroPython. En la barra de herramientas superior, bajo el menú desplegable “Herramientas”, seleccione Terminal de MicroPython.

6. Aparecerá una nueva ventana de terminal de MicroPython, haga clic en el Botón Abrir, seleccione el COM que utiliza el dispositivo, verifique que la tasa de baudios y otros ajustes sean correctos, luego haga clic en OK.

El ícono Abrir cambiará a Cerrar, indicando que el dispositivo está correctamente conectado.

Una vez que el terminal de MicroPython esté disponible, puede interactuar con él utilizando los siguientes comandos REPL (Comandos usando su teclado).

  • Ctrl-E: Entra en el modo de pegado. Útil para fines de prueba.

  • Ctrl-F: Entra en el modo de compilación flash. Útil para cargar y guardar el código en la memoria flash del dispositivo.

  • Ctrl-D: Guarda y sale del modo actual. Puede ser el modo de pegado o el modo de compilación flash.

  • Ctrl-C: Cancela y sale del modo actual. Puede ser el modo de pegado o el modo de compilación flash.

  • Ctrl-R: Ejecuta el código actualmente guardado en la memoria flash del dispositivo.

CONSEJO: Si desea pegar el código en el modo de pegado o en el modo de compilación flash, debe usar el clic derecho y seleccionar pegar de la lista de opciones.

Es hora de escribir código MicroPython en el terminal. Primero, necesitamos importar las bibliotecas que se van a utilizar.

import socketimport timeimport xbee

A continuación, vamos a establecer una rutina para, en primer lugar, establecer el APN del operador de red celular, y en segundo lugar, evitar un error de código si el módulo se desconecta. Esta configuración forzará al dispositivo a reconectarse.

IMEI=x.atcmd('IM')TOKEN="YOUR-UBIDOTS-TOKEN-HERE"x=xbee.XBee()def Validation():    while(x.atcmd('DI') != 0):        x.atcmd('AN', "YOUR-APN-CELLULAR-NETWORK-OPERATOR")         print("Awaiting connection...")        time.sleep(5)

Es hora de escribir la función que envía los datos a Ubidots.

def send_data(deviceLabel, token, body):    s = socket.socket()    s.connect(("industrial.api.ubidots.com", 80))    request=bytes('POST /api/v1.6/devices/%s HTTP/1.1\r\nHost: industrial.api.ubidots.com\r\nX-Auth-Token: %s\r\nContent-Type: application/json\r\nContent-Length: %s\r\n\r\n%s\r\n' % (deviceLabel, token, len(body), body), 'utf8')    print("Sending data to Ubidots")    s.send(request)    dump_socket(s)def dump_socket(s):    try:        while True:            data = s.recv(100)            if data:                print(str(data, 'utf8'), end='')            else:                print('')  # end with newline                s.close()                break    except:        s.close()        raise


Ahora, se inicializará un puerto digital para obtener su estado mediante una función que lee el pin D4 y llama a la función que configuramos anteriormente.

from machine import Pinsensor = Pin("D4", Pin.IN)def Update():    switch = sensor.value()    body='{"var2": ' + repr(switch)+'}'    send_data(IMEI, TOKEN, body)

Por último, pero no menos importante, el siguiente es el bucle que ejecuta todo el código cada 10 segundos.

while(True):    if (x.atcmd('DI') != 0):        Validation()        print("Connected")    Update()    time.sleep(10)

Cuando el código ha sido compilado en “modo de compilación flash”, podrá ejecutar el código usando Ctrl-R. Si el dispositivo no está conectado a internet, recibirá un mensaje de “Esperando conexión”. Una vez conectado, el dispositivo comenzará a enviar datos a Ubidots.


La respuesta “status_code”: 201 significa que los datos se guardaron correctamente en la base de datos de Ubidots. Para aprender más sobre los códigos de estado de Ubidots, vea nuestra documentación.

Visualizando datos en Ubidots

Vaya a dispositivos -> sección de dispositivos en su cuenta de Ubidots, verá un nuevo dispositivo nombrado como el IMEI del dispositivo y una variable dentro de él.

Resultados.

Construimos esta integración con equipo inicial y un conocimiento simple, solo necesita algunos conocimientos de python. Este es un tutorial simple con 1 variable, pero puede usar más sensores y más variables para lanzar una aplicación completa y crear paneles de control de Ubidots para visualizar e interpretar sus datos.

Ahora es el momento de construir su propia visualización de datos. Para hacerlo, explore los siguientes artículos:

¿Ha quedado contestada tu pregunta?