Ejemplos de MicroPython para Digi XBee Parte 1: Edge Computing

Rob Faludi Rob Faludi, IoT Consultor, Faludi.com
29 de octubre de 2018

El nuevo Digi XBee® 3 cuentan con inteligencia de borde para ayudar a ejecutar reglas de negocio y mucho más. Mediante la ejecución de sencillos scripts basados en Python en Digi XBee 3, se puede ahorrar dinero, prolongar la duración de la batería, mejorar la capacidad de respuesta y aumentar la fiabilidad del sistema.

La mejor manera de entender el poder de la inteligencia de borde es la práctica. En esta serie te llevaremos a través de algunos ejemplos sencillos que puedes utilizar directamente, y luego personalizar y ampliar para llevar el poder de la programación a la línea de módulos de radio favorita de todos.

MicroPython es un lenguaje de programación de código abierto basado en Python 3, modificado para adaptarse a dispositivos pequeños y optimizado para microcontroladores. Con MicroPython, un lenguaje de programación y scripting fácil de aprender, podrá crear rápidamente prototipos de comportamientos inteligentes en los extremos de su red. Las lecturas crípticas de los sensores pueden transformarse en datos útiles, el exceso de transmisiones puede filtrarse de forma inteligente, y los sensores y actuadores modernos pueden emplearse directamente, con procedimientos complejos realizados localmente cuando sea necesario.

Introducción a la programación de Digi XBee MicroPython

XCTU v6.3.8 y posteriores incorporan un nuevo terminal MicroPython, que permite al usuario interactuar con MicroPython en los módulos Digi XBee 3. A través de la interfaz de serie en el terminal, los usuarios pueden escribir, probar, cargar y ejecutar código MicroPython utilizando el conocido prompt interactivo REPL.

Es sencillo empezar. Bien, comience con el Digi XBee 3 Cellular LTE-M Kit. (Otros kits de Digi XBee 3 Cellular son similares).

Terminal MicroPython

  1. Ensamble el hardware y conéctelo al XCTU software de configuración. Las instrucciones completas, si son necesarias, se encuentran en la Guía de inicio.
  2. Abra el programa XCTU.
  3. Añadir un dispositivo(ayuda).
  4. El módem celular XBee aparece como una casilla en el panel de información de los módulos de radio. Haga clic en este cuadro para seleccionar el dispositivo y cargar su configuración actual.
  5. Ajuste la velocidad de transmisión de los dispositivos a 115200 bps para obtener la mejor experiencia. En el campo BD, seleccione 115200 [7] y haga clic en el botón Escribir.
  6. Para poner el XBee Cellular Modem en modo MicroPython, en el campo AP selecciona MicroPython REPL [4] y haz clic en el botón Write.
  7. Anote qué puerto(s) COM está utilizando el módem celular XBee, ya que necesitará esta información cuando utilice la comunicación por terminal. El panel de información de los módulos de radio muestra el puerto COM en uso.

Para utilizar el Terminal MicroPythonen XCTU:

  1. Haga clic en el menú desplegable Herramientas y seleccione Terminal MicroPython.
  2. Haga clic en Abrir. Si aún no ha añadido dispositivos a XCTU:
    1. En el área Seleccionar el puerto serie/USB, haga clic en el puerto COM que utiliza el dispositivo.
    2. Compruebe que la velocidad de transmisión y otros ajustes son correctos.
  3. Haga clic en Aceptar. (El icono de Abrir cambia a Cerrar, indicando que el dispositivo está correctamente conectado).
  4. Presione Ctrl+B para obtener el banner de la versión de MicroPython y el prompt.

Libro blanco relacionado: 5 razones por las que debería considerar la conectividad celular integrada.

Ejemplo de Hola Mundo

Vamos a cargar un simple código "Hello World" para confirmar que todo funciona. Usando un editor de texto, como el Bloc de notas en Windows o TextEdit en MacOS, escribe este corto script:

1
2 3 4
importar el sueño
2)
    1. En XCTU en la Terminal de MicroPython, presione Ctrl+F en el prompt >>> para poner a MicroPython en modo de Compilación Flash.
    2. Copie el script de su editor de texto y péguelo en el Terminal de MicroPython, luego presione Ctrl+D para terminar.
    3. No necesitará ejecutar este código al inicio, así que responda N cuando se le pregunte.
    4. Finalmente presiona Ctrl+R para ejecutar tu código. Comenzará a imprimir Hola Mundo en la pantalla cada dos segundos. Puedes detener la ejecución pulsando Ctrl-C. Este es el aspecto que debería tener su sesión completa:
 
MicroPython v1.9.4-797-g4361c12 el 2018-09-20; XBC LTE-M/NB-IoT Global con EFR32MG
Type "help()" for more information. >>> flash compile mode; Ctrl-C to cancel, Ctrl-D to finish 1^^^ from time import sleep 2^^^ while True: 3^^^ print("Hello World!") 4^^^ sleep(2) 5^^^ Compiling 67 bytes of code... Used 10/371 QSTR entries. stack: 424 out of 3584 GC: total: 32000, used: 224, free: 31776 No. of 1-blocks: 6, 2-blocks: 2, max blk sz: 4, max free sz: 1933 Compiled 67 bytes of code to 108/31232 bytes of flash. Automatically run this code at startup [y/N]? N Stored code will not run at startup. Press CTRL-R in the REPL to run the code at any time. MicroPython v1.9.4-797-g4361c12 on 2018-09-20; XBC LTE-M/NB-IoT Global with EFR32MG Type "help()" for more information. >>> Running 108 bytes of stored bytecode... Hello World! Hello World! Hello World! Hello World! Hello World! Traceback (most recent call last): File "<stdin>", line 4, in <module> KeyboardInterrupt: >>>
Resumen de Hello World

Al completar este ejemplo de "Hola Mundo" ahora tienes todas las habilidades necesarias para empezar a usar la inteligencia de borde. Has configurado el hardware Digi XBee 3, lo has conectado al software de configuración, has abierto MicroPython, has cargado el código de trabajo y lo has ejecutado tú mismo. Estás listo para ejecutar tu primera aplicación real.

Detectar, transformar y enviar un valor

Ahora que sabemos cómo crear código MicroPython en la plataforma Digi XBee 3, vamos a hacer algo útil con él. Muchos sistemas de IoT son fundamentalmente redes de sensores. Muestran algún valor localmente, como la temperatura, la presión del agua o la presencia humana, y luego envían esa información para su registro, procesamiento y toma de decisiones por parte de las aplicaciones en línea. En nuestro próximo proyecto, vamos a medir la temperatura con un simple sensor y enviarla a tu teléfono en forma de mensaje de texto. Este ciclo de medición se repite cada minuto, deteniéndose después de 10 rondas para proteger tu cordura.

Muchos sensores producen una tensión simple y variable que hay que transformar en las unidades adecuadas. Por ejemplo, a 25º Celsius un sensor de temperatura puede emitir 750 mV. Aunque es posible enviar el número sin sentido 750 a la aplicación en la nube, sería mucho más claro enviar 25ºC en lugar de la temperatura real. Esto se consigue fácilmente en MicroPython, y estas transformaciones serán cada vez más útiles a medida que construyamos sistemas más inteligentes.

En primer lugar, vamos a conectar un sensor a nuestro módem celular Digi XBee 3. Para facilitar las cosas, utilizaremos un sensor de temperatura TMP36, que se autocalibra y se comunica a través de un solo cable.

Piezas para pedir
Preparar la placa para conectar los componentes

Cabezal de 20 pinesLa forma más fácil de conectar componentes adicionales a la placa de desarrollo XBIB es soldar uno de estos encabezados a la toma de 20 pines del XBIB etiquetada como P1. Ahora puedes utilizar cables de puente para conectar periféricos como sensores o motores.

Nota: Si no tienes cables de puente o un cabezal, soldar los cables o sensores directamente a la placa XBIB también funcionará.

Montar el hardware

Utilice los cables de puente para conectar el sensor de temperatura TMP36 a la placa XBIB.

  1. Con el lado plano del TMP36 mirando hacia ti, el cable de la izquierda se conecta al pin 1, VCC en la placa XBIB.
  2. El cable del medio se conecta al pin 20 (justo al lado) DIO0.
  3. El cable de la derecha va al pin 10, GND.

TMP36 diseño de la temperatura

Configurar el XBee

Con el Digi XBee 3 Cellular en la placa XBIB y conectado a su ordenador por USB, inicie el programa XCTU.

  1. Añade un módulo de radio y haz clic en ese dispositivo de la lista para configurarlo.
  2. La tasa de baudiosde la BD debería estar ya configurada en 115200 [7] y la habilitación de la API de la AP en MicroPython REPL [4].
  3. Con estos dos datos confirmados, localice el campo Número de teléfono de destino P# e introduzca el número de teléfono móvil que desea que reciba los mensajes de temperatura.
  4. Escriba estos ajustes en el módulo, utilizando el icono del lápiz en la parte superior.
Cargar el código

Copie el siguiente código en un editor de texto como el Bloc de notas. Asegúrate de introducir tu propio número de teléfono, sustituyendo "your_mobile_number_here" antes de subir el código. Introdúcelo tal y como lo marcarías en un teléfono móvil, incluyendo el símbolo + si es necesario. Por defecto, este programa envía una lectura de temperatura una vez por minuto, 10 veces en total. Puede personalizarlo cambiando las variables wait_time o cycles según desee.

Recuerda que este código de ejemplo debe ser editado antes de subirlo.

 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# Digi XBee 3 Ejemplo básico celular
#espera entre ciclos sleep(tiempo_de_espera)

Una vez editado el código añadiendo su número de teléfono móvil, se puede cargar en XCTU en el Terminal MicroPython de la forma habitual:

  1. Presione Ctrl+F en el indicador >>> para poner MicroPython en modo de compilación de Flash.
  2. Copie el script de su editor de texto y péguelo en el Terminal de MicroPython.
  3. Pulsa Ctrl+D para terminar y responde N cuando te pregunten.
  4. Finalmente presione Ctrl+R para ejecutar su código. Puede detener la ejecución pulsando Ctrl-C.

Utilizarlo

Con el ejemplo de SMS de temperatura en marcha, deberías empezar a recibir mensajes de texto. Si has dejado la configuración por defecto, recibirás diez mensajes, con un minuto de diferencia. Los resultados en su teléfono deberían tener este aspecto:

temp.png

Resumen

Al completar este ejemplo de SMS has creado una inteligencia de borde real, aunque básica. Ahora tienes experiencia en conectar un sensor, registrar sus valores, transformarlos en unidades útiles y enviarlos a un teléfono móvil. En futuros posts, veremos cómo subir los datos a las aplicaciones en la nube, activar alertas, mejorar la duración de la batería, reducir los costes de ancho de banda y mucho más.

>>> Obtenga más información sobre el ecosistema de módulos inalámbricos deDigi XBee , o póngase en contacto con nosotros para hablar de sus necesidades.
Obtenga nuestra guía OEM
Conozca las herramientas para lanzar su próximo proyecto