Impulsar el desarrollo de productos IoT con la plataforma Electric Imp

Por Jacob Beningo

Colaboración de Editores de DigiKey de América del Norte

Diseñar un producto conectado a Internet requiere muchas destrezas. Los desarrolladores necesitan saber cómo escribir el software incorporado, construir una placa de circuito, comprender cómo proteger su dispositivo y conectarse a una red para actualizar remotamente y gestionar sus dispositivos.

La creación de la experiencia y la infraestructura para un único producto IoT puede resultar difícil, laboriosa y costosa. Los equipos de desarrollo necesitan una forma de impulsar su desarrollo y minimizar lo que tienen que hacer en un típico ciclo de diseño con el fin de satisfacer el costo y las exigencias de los tiempos de introducción al mercado.

Muchas plataformas IoT diferentes que pueden ayudar con esto están empezando a tomar forma, pero una que es particularmente interesante proviene de Electric Imp, que ha unido el hardware y el software necesarios para ofrecer a un desarrollador la capacidad de ponerse en marcha rápidamente.

Este artículo describirá la plataforma IoT de Electric Imp y cómo hacer uso de ella.

Definir la plataforma IoT Electric Imp

La plataforma IoT Electric Imp es una plataforma que proporciona a los programadores una completa solución para conectar y administrar dispositivos IoT. La plataforma contiene todos los bloques de creación que un equipo de desarrolladores necesita para poner rápidamente su producto en marcha y en funcionamiento. Estos bloques de construcción incluyen:

  • Hardware totalmente integrado
  • Sistema operativo integrado
  • Controladores
  • API
  • Servicios en la Nube
  • Bibliotecas de código
  • Soluciones de seguridad

Para empezar, los desarrolladores conectan sus sensores y hardware propietario a un módulo de radio de Electric Imp que contiene no sólo su software personalizado, sino también el ImpOS que gestiona una conexión segura a la Nube Imp (Figura 1). Los usuarios finales y los desarrolladores pueden proporcionar su configuración Wi-Fi para su producto o plataforma de desarrollo a través de un dispositivo móvil mediante una aplicación conocida como BlinkUp. Una vez que el hardware Imp tiene la información de Wi-Fi, puede comunicarse de forma directa y segura con la Nube Imp, y desde allí, el resto de Internet.

Imagen de plataforma Electric Imp

Figura 1: La plataforma Electric Imp viene con hardware probado, completamente integrado, software, sistema operativo, API, servicios en la Nube y seguridad para una rápida conectividad de los dispositivos IoT a la Nube. (Fuente de la imagen: Electric Imp)

El uso de una plataforma como Electric Imp proporciona a los desarrolladores varias ventajas que incluyen:

  • Reducir significativamente el tiempo de llegada al mercado
  • Centrarse en la pericia principal de la empresa en lugar de la conectividad a Internet
  • Productos de mayor valor y diferenciación
  • Eliminar la necesidad de construir la infraestructura de conectividad y experiencia

El hardware de Electric Imp

El hardware de Electric Imp proporciona a los desarrolladores un conjunto estándar de hardware que incluye:

  • Transceptor Wi-Fi 802.11 b/g/n o a/b/g/n
  • Procesador ARM® Cortex® de 32 bits
  • Robusto sistema operativo incorporado con actualizaciones de firmware de fallo-seguridad
  • E/S seleccionable por el usuario, como GPIO, PWM y entrada analógica
  • Comunicación a través de SPI, UART, e I2C

Los módulos son fabricados por Murata Electronics. El diferenciador principal para los diseñadores será el procesador interno, las opciones de conectividad Wi-Fi y el embalaje. Por ejemplo, el imp005 (LBWA1UZ1GC-901) se basa en un procesador de 320 MHz basado en ARM Cortex-R4 y opera en las bandas de 2.45 GHz y 5 GHz. El imp003 (LBWA1ZV1CD-716), por otro lado, se basa en un procesador de 144 MHz basado en ARM Cortex-M4F y opera en la banda de 2.45 GHz. Ambos son paquetes de montaje superficial (Figura 2).

Imagen de imp005 (izquierda) e imp003 (derecha) de Electric Imp

Figura 2: Los módulos imp005 (izquierda) e imp003 (derecha) integran un módulo Wi-Fi y microcontroladores ARM Cortex para minimizar la huella del dispositivo. (Fuente de la imagen: Murata Electronics)

No sería sencillo acceder a los patrones de montaje superficial sin una placa adaptadora. El imp003 tiene su IMP003-BREAKOUT, una placa adaptadora simple que incluye una interfaz USB para que los desarrolladores puedan alimentar el dispositivo, el fototransistor necesario para programar el módulo con configuración Wi-Fi mediante metodología BlinkUp exclusiva de Electric Imp y algunos componentes varios de apoyo (Figura 3).

Imagen del módulo adaptador imp003 de Murata

Figura 3: El módulo adaptador imp003 es una placa de desarrollo con bajo conteo de pines que permite a los desarrolladores familiarizarse fácilmente y utilizar hardware de Electric Imp que finalmente será utilizado en los productos finales. (Fuente de la imagen: Murata Electronics)

La placa adaptadora imp005 es un poco más sofisticada, ya que el módulo imp005 no sólo tiene una mayor cantidad de pines, sino que también tiene un procesador ARM Cortex-R4 más potente (Figura 4). La placa adaptadora imp005 también incluye Ethernet, una interfaz USB estándar para alimentar el dispositivo y conectar con el host, así como el fototransistor.

Imagen de módulo adaptador imp005 de Murata Electronics

Figura 4: El módulo adaptador imp005 ofrece a los desarrolladores acceso al imp005 más potente, que contiene un microcontrolador ARM Cortex-R4 además de opciones avanzadas de conectividad, como USB y Ethernet. (Fuente de la imagen: Murata Electronics)

Configurar una Electric Imp utilizando BlinkUp

Uno de los problemas que cada dispositivo IoT enfrenta es cómo programar el dispositivo con la información del enrutador Wi-Fi local. Electric Imp ha solucionado este problema con un enfoque único que utiliza un fototransistor para programar el SSID y la información de contraseña en el dispositivo.

Los usuarios de la plataforma y del producto final pueden descargar la aplicación BlinkUp de Electric Imp a su dispositivo móvil y, a continuación, ingresar su información de red en la aplicación. Cuando se le solicite, el usuario presiona su dispositivo móvil hasta el fototransistor. La pantalla del dispositivo móvil a continuación, parpadea una secuencia de comandos que programa el hardware de Electric Imp (Figura 5). Una vez que se ha completado la programación, el desarrollo puede comenzar.

¡Advertencia! No mire a la pantalla del dispositivo móvil mientras la información de la red está siendo programada. Hacerlo puede causar un fuerte dolor de cabeza o un ataque epiléptico.

Imagen de la aplicación BlinkUp de Eletric Imp

Figura 5: La aplicación BlinkUp permite a un desarrollador o usuario introducir el SSID y la contraseña Wi-Fi y transmitir fácilmente esa información al módulo Electric Imp a través de una serie de parpadeos desde el dispositivo móvil a un fototransistor. Esto elimina la necesidad de conectividad adicional, como, por ejemplo, Bluetooth o USB. (Fuente de la imagen: Electric Imp)

Una vez que un desarrollador ha conectado el módulo Electric Imp a Internet, el módulo va a registrar un ID único con la Nube Imp. Esa identificación también pueden encontrarse en la aplicación BlinkUp. El identificador único se utiliza para identificar el módulo y conectarlo al entorno de desarrollo en línea. El código también se utiliza para insertar actualizaciones de firmware para el producto y también para administrar el dispositivo. Un módulo puede ser conectado a la Nube al registrarse en el entorno de desarrollo y luego crear una nueva aplicación de software, también conocida como modelo y, a continuación, asociar los módulos de identificación con el modelo (Figura 6).

Imagen de la conexión de un módulo a través de la Nube al modelo de software Electric Imp

Figura 6: La conexión de un módulo a través de la Nube a un modelo de software se realiza mediante una simple revisión de la lista de módulos Imp disponibles y luego se asigna un modelo de software existente o un nuevo modelo, para el dispositivo. (Fuente de la imagen: Electric Imp)

Una vez que el modelo ha sido creado, un desarrollador tiene acceso al entorno de desarrollo en línea. Esto permite la escritura de software para el módulo Electric Imp y también el código que se ejecuta en la Nube para comunicarse con dicho módulo. El código de aplicación del servidor y el módulo está escrito en un lenguaje de programación llamado Squirrel. Squirrel tiene una notación similar al lenguaje de programación C, así que para la mayoría de los desarrolladores de sistemas integrados de transición es natural.

El entorno de desarrollo está dividido en tres elementos principales. El primero es el código del lado del servidor, también conocido como código de agente. El segundo es el código del dispositivo, que puede ser implementado en un módulo, una vez que la programación se compila y es administrada por la Nube Imp. En tercer lugar, hay un registro que se puede utilizar para supervisar el comportamiento del dispositivo y del agente, así como para depurar.

Imagen del entorno de desarrollo Electric Imp

Figura 7: El entorno de desarrollo Electric Imp es un entorno completamente integrado que permite a los desarrolladores trabajar simultáneamente en su firmware del dispositivo y el software de la Nube desde una sola vista. (Fuente de la imagen: Electric Imp)

Decimos "Hola Mundo" con un programa Blinky LED

Lograr el funcionamiento de una aplicación en un módulo Electric Imp es muy sencillo. Los objetos pueden ser asignados a funciones de hardware desde un nivel alto de abstracción. Esto convierte el módulo Imp y el microcontrolador subyacente en una caja negra.

El primer paso que toma cualquier desarrollador es imprimir "Hola Mundo" a través de un terminal o hacer parpadear un LED. Veamos el código que sería necesario para hacer parpadear un LED.

En primer lugar, un desarrollador debe iniciar sesión en el entorno de desarrollo y crear un modelo "Hola Mundo" o "Blinky" y asignarlo a su módulo de destino. Al igual que en cualquier aplicación, el programador puede asignar y configurar los pines y las variables. En este caso, si un LED se conecta al pin 5, un desarrollador podría escribir el código para configurar el LED y crear un estado variable (Lista 1).

// Crear una variable global llamada 'LED' y asignar el objeto 'PIN' a la misma

led <- hardware.pin5;

 

// Configurar 'LED' para ser una salida digital con un valor inicial de digital 0 (bajo, 0V).

led.configure(DIGITAL_OUT, 0);

 

// Crea una variable global para almacenar el estado actual de 'LED'

state <- 0;

Listado 1: Escribir software para el módulo Electric Imp es muy sencillo con las bibliotecas preexistentes y el lenguaje de programación Squirrel. Esta programación configura el LED y crea una variable de estado. (Fuente de código: Electric Imp)

Una simple función de aplicación podría grabarse para hacer parpadear el LED (Lista 2).

Función parpadeo()

{   

   // Invertir el valor de estado:   

   // Cuando el estado = 1, 1-1 = 0   

   // Cuando el estado = 0, 1-0 = 1   

   Estado = 1 - estado;     

 

   // Escriba el estado actual a 'LED' (que es el pin9).   

   led.write(state);   

 

   // Programar el imp para la activación en 0,5 segundos y llame al parpadeo() nuevamente        

   imp.wakeup(0.5, blink);

}

Listado 2: Hacer parpadear un LED o controlar el hardware se realiza a través de un conjunto de bibliotecas que facilita el desarrollo y pueden reducir drásticamente el tiempo de desarrollo. En este ejemplo, una función simple se utiliza para tener acceso a un recurso de LED y demorar la ejecución de función en 500 milisegundos a través ImpOS (Fuente de código: Electric Imp)

¡Así es! Todo el código Squirrel necesario para configurar y parpadear un LED en el hardware. El programa LED puede ser escrito en menos de una docena de líneas de código y un desarrollador no está obligado a saber un sólo núcleo ARM para registrarse. Con fácil acceso a la API de alto nivel y los desarrolladores están listos para comenzar.

Integración de sensores externos a un modelo Electric Imp

La integración de sensores y componentes externos en la plataforma Electric Imp también es relativamente simple. La plataforma permite a los programadores incluir una biblioteca que ya ha sido desarrollada utilizando la directiva #requerir, que es similar a la directiva #incluir en el lenguaje de programación C. Hay varios tipos de bibliotecas que se están desarrollando y están listas para que los desarrolladores puedan usar directamente. Estas bibliotecas incluyen:

  • Servicios Web
  • Servicios
  • Controladores de hardware

Los desarrolladores de productos pueden conectar dispositivos como relés, acelerómetros y magnetómetros con el módulo Electric Imp y, luego utilizar las bibliotecas que ya están escritas para estos componentes para dinamizar su diseño. Las bibliotecas están disponibles desde el sitio web del centro de desarrollo de Electric Imp.

Imagen de la amplia variedad de bibliotecas de Electric Imp

Figura 8: Electric Imp tiene una amplia variedad de bibliotecas que están listas para ser utilizadas desde el momento en que el desarrollo se ha iniciado. Estas bibliotecas aceleran el tiempo de desarrollo y facilitan el acceso a los populares servicios de software y dispositivos de hardware. (Fuente de la imagen: Electric Imp)

Consejos y trucos para utilizar la plataforma IoT de Electric Imp

Hay varias consideraciones que los equipos de desarrollo necesitan tener en cuenta al utilizar una plataforma como Electric Imp. Primero, el módulo Electric Imp es la integración de dos componentes principales, la radio Wi-Fi y el microcontrolador, en un solo paquete. Esta integración puede ahorrar costos y espacio. A continuación, los desarrolladores deben revisar el hardware existente y las bibliotecas de controladores al seleccionar componentes para sus productos. El uso de las bibliotecas existentes contribuirá a acelerar el ciclo de desarrollo.

Por último, los desarrolladores deben recordar que la plataforma Electric Imp no se conecta directamente a Internet. Toda la comunicación se realiza primero a través de una conexión segura a la Nube Imp. Esta utiliza un agente para dirigir los mensajes a la web más amplia. También hay bibliotecas para servicios de terceros, como el almacenamiento de datos y análisis que pueden utilizar los desarrolladores en la Nube. Se trata de conseguir la mayor cantidad de código existente de las bibliotecas como sea posible.

Conclusión

Desarrollar un dispositivo IoT puede hacerse muy rápidamente si los diseñadores utilizan tecnologías existentes y utilizan una plataforma IoT. Aprovechar una de varias plataformas que se encuentran en el mercado hoy en día puede ayudar a los desarrolladores a centrarse en sus competencias y dejar que otras empresas se encarguen de gestionar la infraestructura. Como hemos visto, la plataforma IoT de Electric Imp es una solución interesante y única que merece un estudio en profundidad.

 
DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Información sobre el autor

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo es un consultor de software integrado que actualmente trabaja con clientes en más de una docena de países para transformar drásticamente sus negocios mejorando la calidad del producto, el costo y el tiempo de comercialización. Ha publicado más de 200 artículos sobre técnicas de desarrollo de software embebido, es un conferenciante y entrenador técnico muy solicitado y tiene tres títulos que incluyen una Maestría en Ingeniería de la Universidad de Michigan. No dude en ponerse en contacto con él en jacob@beningo.com, en su sitio web www.beningo.com, y suscríbase a su boletín mensual Embedded Bytes Newsletter.

Información sobre la editorial

Editores de DigiKey de América del Norte