Desarrollo de prototipo de IoT con diseños de placa única disponibles
Colaboración de Editores europeos de DigiKey
2018-02-20
El Internet de las cosas, y específicamente, el Internet de las cosas industrial (IIoT), es responsable de generar un efecto transformador en muchos sectores comerciales, así como de generar un cambio fundamental en la manera en que se aborda el desarrollo de soluciones de IIoT. Muchos ingenieros que enfrentan estos proyectos han optado por seleccionar una computadora de placa única (SBC) disponible comercialmente como base del diseño. Si bien este método puede producir resultados rápidos, también puede llevar al desarrollador por un camino que dificulta llevar fácilmente el diseño resultante a una producción de alto volumen. Al seleccionar una plataforma de prototipos, es importante revisar cuidadosamente la MCU en la que se basa el diseño y la gran cantidad de componentes de soporte para ver si se pueden comprar por separado e incorporar en un nuevo diseño desde el comienzo.
Este artículo destacará el diseño de una plataforma simple de sensor de temperatura para un diseño de IoT y también se centrará en los componentes individuales utilizados. Además, la plataforma se utilizará no solo para probar el concepto del diseño, sino que también mostrará cómo se puede usar para ajustar el desarrollo utilizando una investigación del perfil de consumo de energía y cómo optimizarlo.

Figura 1: Requisito funcional básico para un sensor de temperatura de IIoT.
Considere el diseño simple del sensor de temperatura que se muestra en la Figura 1. Esto resalta los bloques funcionales básicos que deben diseñarse para un sensor de temperatura alimentado por batería que almacena sus datos en una plataforma en la nube. El microcontrolador (MCU) sondea el sensor de temperatura en un intervalo preestablecido, y luego, el uso de un dispositivo inalámbrico establece un enlace de comunicación y envía datos a la aplicación en la nube receptora. Para el ingeniero de diseño, se tomarán muchas decisiones individuales que dictarán la elección de los componentes utilizados y, a su vez, influirán en el costo de la lista de materiales. Por ejemplo, el sensor de temperatura podría comprender un sensor de temperatura específico, como la popular serie TMP36 de Analog Devices, o una temperatura, humedad y presión de aire combinadas más completas, como la placa de Bosch Sensortec, la BME280, o un humilde termistor PTC de montaje en superficie de Epcos-TDK. El costo es solo una consideración; la precisión, la tolerancia y el método de interfaz son otros factores a considerar. La elección del sensor también dará forma a la especificación de MCU. Si se utiliza un termistor de bajo costo, probablemente no se tendría una relación lineal con la temperatura en el rango de temperatura deseado, por lo que se necesitaría algún grado de cálculo de pendiente basado en el software. La cantidad de recursos de MCU para lograr esto es mínima, pero sigue siendo una consideración. En el otro extremo, el BME280 necesita comunicación SPI o I2C con el MCU del host, por lo que se necesitaría un dispositivo con estas capacidades de interfaz y la capacidad de controlar el sensor y procesar más datos.
También hay una variedad de decisiones clave para el método de comunicación. La más importante probablemente sea el protocolo inalámbrico que se utilizará, de los cuales el Bluetooth y el wifi son los más populares. El Bluetooth ofrece un rango de comunicación corto, es adecuado para cantidades relativamente pequeñas de transferencia de datos y, por lo general, se comunica con un dispositivo de puerta de enlace que puede agregar datos antes de la transmisión posterior utilizando comunicaciones de mayor alcance como wifi. Proporcionar comunicación wifi al sensor elimina la necesidad de una puerta de enlace intermedia, permite una comunicación de mayor alcance y se adapta a volúmenes de datos más altos, pero a costa de un perfil de mayor consumo de energía.
Una vez que se ha decidido la comunicación inalámbrica, existe la decisión adicional de optar por un enfoque discreto o utilizar un módulo inalámbrico precertificado. A menos que su organización tenga su propio equipo especializado de ingeniería de radiofrecuencia y los volúmenes de producción previstos sean muy altos, lo más probable es que se utilice el enfoque de módulo.
La función final de este diseño es la administración de energía. Operar desde una celda de monedas reemplazable puede ser un enfoque para alimentar el sensor, pero usar una batería recargable con técnicas inalámbricas de recolección de energía o un panel solar pequeño es un enfoque alternativo. Además, la capacidad de colocar tanto el MCU como el módulo inalámbrico en una serie de modos de suspensión diferentes puede ayudar enormemente a conservar energía para prolongar la vida útil de la batería. Por lo general, el control de los dispositivos de esta manera se logra a través del software. Otras consideraciones para este diseño involucrarán los volúmenes de producción previstos y si este sensor es potencialmente uno de los diferentes productos de sensores que la compañía desea desarrollar y lanzar. Si este último fuera el caso, hay mucho interés en desarrollar un enfoque basado en plataforma en el que las funciones inalámbricas y de MCU sean comunes en todo el rango, con circuitos específicos del sensor diferentes para cada modelo.
Al contemplar el armado del prototipo de un diseño de sensor como el que se destacó anteriormente, el ingeniero de diseño tiene varias formas diferentes de realizar el diseño. En el pasado, los kits de desarrollo del fabricante y las placas de evaluación proporcionaban una plataforma de aprendizaje ideal sobre la cual basar un diseño, aunque en muchos casos la integración de las diversas funciones requería algún trabajo de ingeniería y desarrollo integrado. Sin embargo, una nueva generación de computadoras de placa única (SBC) totalmente integradas y compactas se está haciendo popular entre los ingenieros que buscan un tiempo de desarrollo de prototipo mínimo y que el diseño sea de código suficientemente abierto para que puedan basar su diseño final en la SBC. En ese contexto, es imprescindible que todos los componentes principales de la SBC estén disponibles para comprar, y que una licencia de Creative Commons cubra cualquier biblioteca de dispositivos.
Un buen ejemplo de una SBC compacta totalmente integrada es el Adafruit Feather M0 Wi-Fi (Figura 2).

Figura 2: Computadora de placa única Adafruit Feather M0 Wi-Fi.
Con un peso de tan solo 6,1 gramos y una medida de solo 2,1 x 0,9 x 0,3 pulgadas, el Adafruit Feather M0 Wi-Fi incluye un microchip ATSAMD21G18 MCU en un paquete QFN que funciona a 48 MHz completo con 256 kB flash y 32 kB SRAM. Este dispositivo basado en Arm® Cortex®-M0 ofrece 20 pines de entrada y salida de uso general accesibles, 8 puertos de modulación por ancho de pulsos, 10 entradas analógicas de 12 bits y un DAC. Las interfaces de comunicación serial periférica incluyen interfaz periférica serial (SPI), I2C y transmisor receptor asíncrono universal (UART). Un regulador de voltaje AP2112K-3.3 de Diodes Inc. integrado en la placa de 3,3 VCC con una capacidad de corriente pico de 600 mA permite alimentar toda la placa a través de un conector micro USB. Los niveles lógicos se mantienen a 3,3 VCC en todo momento, por lo que se requerirán desfasadores de nivel si se hace interfaz con cualquier dispositivo de 5 VCC. Además, la placa se puede suministrar desde una batería LiPo de 3.7 VCC junto con un CI de cargador MCP7331T-2ACI/OT de Microchip. Un tipo aprobado de módulo ATWINC1500 de Microchip certificado por la FCC con una antena integrada proporciona la comunicación wifi 802.11 b/g/n a 2,4 GHz. En funcionamiento normal, el consumo de energía de la placa puede ser de aproximadamente 10 mA para el MCU y un pico de hasta 300 mA para el módulo inalámbrico durante la transmisión.
En la Figura 3 se muestra un esquema de Adafruit Feather M0 Wi-Fi.
Figura 3: Diagrama esquemático de Adafruit Feather M0 Wi-Fi.
Un cristal de 32,768 kHz, cuatro ledes y un puñado de resistores y capacitores completan la BOM para la placa.
El desarrollo de software en el Feather es ayudado por el MCU que tiene un gestor de arranque USB, que permite el uso del popular entorno completo de desarrollo integrado (IDE) Arduino. El uso de este enfoque permite el rápido desarrollo de aplicaciones, mientras que la naturaleza compacta de la placa Feather permite que se integre fácilmente en versiones beta de bajo volumen de un nuevo producto. En lugar de utilizar el USB Arduino de Feather para programar y depurar características en serie, los desarrolladores profesionales pueden optar por utilizar el Software Framework (ASF) de Atmel utilizando los pines SWDIO/SWCLK ubicados en la parte inferior de la placa.
Como se mencionó anteriormente, la clave para usar con éxito una SBC para hacer un prototipo de su diseño radica en poder diseñar su propio diseño basado en los componentes centrales de la SBC. Este es ciertamente el caso con el Adafruit Feather M0. La MCU y el módulo inalámbrico están disponibles comercialmente y vienen con una gran cantidad de herramientas y recursos de desarrollo. La hoja de datos del microcontrolador SAMD21G18 de Microchip se puede encontrar aquí y ofrece una explicación detallada de las opciones de dispositivos y tamaños de paquetes disponibles. Los recursos de hardware incluyen una placa de evaluación ATSAMD21 XPRO junto con una guía de usuario completa, un emulador en circuito, un programador y depurador (Atmel-ICE), y una serie de placas de expansión como la ATIO1-XPRO, que aloja una variedad de sensores diferentes. El WINC1500 también está bien respaldado con recursos de desarrollo que incluyen una placa de extensión XPRO para usar con ATSAMD21 XPRO, la ATWINC1500-XPRO.
El Feather proporciona no solo una plataforma de desarrollo ideal para probar un concepto de diseño y luego hacer el prototipo, sino que, dado que todos los componentes en los que se basa están fácilmente disponibles, significa que el diseño del prototipo también se puede llevar a una fase de diseño de producción con confianza.
Para demostrar la facilidad con la que se puede hacer un prototipo de una aplicación de IoT, se hace referencia a un ejemplo que conecta el Feather M0 Wi-Fi con el servicio de IoT Azure de Microsoft. Se puede encontrar una explicación detallada completa aquí, que guía al ingeniero a través de los pasos de preparación de la placa Feather para conectarse a Azure, las bibliotecas necesarias para usar con el IDE de Arduino y las instrucciones de configuración de Azure.
Microsoft Azure es un buen ejemplo de una plataforma de clase empresarial de IIoT resistente que no solo proporciona la conectividad con dispositivos sensores y actuadores, sino que también ofrece un conjunto completo de aplicaciones de almacenamiento y análisis para los datos recopilados. Hay disponible una versión de prueba gratuita de la plataforma que brinda acceso fácil a todas las funciones requeridas.
Esta aplicación ilustra el uso de un sensor de temperatura, humedad y presión Bosch BME280, aunque para este ejemplo puede estimular los datos que se envían sin la necesidad de conectar el sensor a Feather.
El primer paso es registrarse para obtener una cuenta gratuita de Microsoft Azure, aquí. Una vez que se haya completado, inicie sesión y acceda al panel de Microsoft Azure ilustrado en la Figura 4.

Figura 4: Configuración de su nueva instancia de concentrador de IoT en Azure.
Haga clic en el botón + Nuevo en la parte superior de la página del panel de instrumentos y seleccione Internet de las cosas seguido de concentrador de IoT. A continuación, puede nombrar los parámetros de su concentrador de IoT (nombre y grupo de recursos) como se muestra en la Figura 5.

Figura 5: Configuración de la función concentrador de IoT en Microsoft Azure.
La etapa final en el proceso de configuración es crear un dispositivo dentro del concentrador de IoT. Esto se muestra en la Figura 6, donde se agrega un dispositivo con la ID de dispositivo de TempSensor1. Marque la casilla para generar automáticamente las claves del dispositivo, lo cual ocurrirá cuando se guarde. Necesitará la clave primaria para este dispositivo una vez que ejecute el diseño Feather. Puede ser confuso, ya que tanto el concentrador de IoT como cada dispositivo tienen sus propias claves principales. La clave principal será la que se utilizará cuando se le pida que ingrese la cadena de conexión (Figura 8).
Figura 6: Agregar el sensor de temperatura Feather como un dispositivo al concentrador de IoT.
Ahora está listo para trabajar en el diseño de demostración suministrado, que se puede descargar aquí.
Suponiendo que ya tiene su IDE Arduino disponible, solo necesita agregar los archivos de soporte para la placa Feather M0. Un tutorial de Adafruit lo guiará a través de este proceso, el cual podrá encontrar aquí.
Es conveniente probar su placa Feather M0 Wi-Fi utilizando el diseño de ejemplo Blink. Asegúrese de que pueda compilar y cargar el diseño, y que el pin de 13 ledes integrado en la placa (situado al lado del conector micro USB) parpadee correctamente antes de continuar.
Para usar el diseño de demostración, debe agregar la lista de bibliotecas en su entorno completo de desarrollo integrado (IDE) Arduino. Tenga en cuenta que para las bibliotecas de Azure AzureIoTHub, AzureIoTUtility y AzureIoTProtocol_HTTP debe instalar las versiones 1.0.21; de lo contrario, el diseño fallará con errores de compilación. Además, si decide no usar un sensor BME280 pero usa datos simulados, aún deberá incluir su biblioteca. Además, de forma predeterminada, el diseño supone que utilizará un sensor físico. Si desea simular datos, debe cambiar la línea del encabezado en el archivo config.h para que se lea '#define SIMULATED_DATA true'.
La Figura 7 destaca la lista completa de las bibliotecas, y en la parte inferior de la pantalla, la compilación y carga exitosas del diseño en la placa Feather M0 de destino.

Figura 7: IDE Arduino que muestra la lista de bibliotecas y una carga exitosa.
Tan pronto como se haya cargado el diseño, deberá cambiar al monitor en serie del IDE. El diseño está escrito de tal manera que los detalles de acceso a wifi y la cadena de conexión de Azure se ingresan a través del monitor en serie (Figura 8).

Figura 8: Ingreso de wifi e información de conexión del dispositivo.
Poco después de haber ingresado los detalles anteriores, debería ver la confirmación en el monitor de serie en el que se ha realizado la conexión wifi. Luego, Feather debería comenzar a enviar datos al concentrador de IoT Azure, como se muestra en la Figura 9. En este ejemplo, hemos estado usando datos simulados.

Figura 9: Monitor en serie que muestra los mensajes que se están enviando desde Feather M0 Wi-Fi.
Una vez que los mensajes hayan comenzado a ser aceptados por el concentrador de IoT Azure, puede verificar que se estén recibiendo. La Figura 10 ilustra el resumen del dispositivo de IoT que muestra la cantidad de mensajes recibidos.
Figura 10: Concentrador de IoT de Microsoft Azure que muestra el resumen de mensajes.
Una vez que la plataforma Azure ha comenzado a recibir los datos del sensor, se puede investigar utilizando algunas de las funciones de almacenamiento y análisis de datos, cuyos detalles adicionales se pueden encontrar en el sitio web de Microsoft Azure.
Como se mencionó anteriormente en este artículo, la necesidad de conservar el consumo de energía es primordial cuando se usa una batería como fuente de energía. El wifi es un protocolo particularmente ávido de poder, pero, como ya se identificó, tiene muchas ventajas sobre otros métodos. Por esta razón, se debe prestar atención a la optimización del funcionamiento del diseño del sensor para que se pueda lograr un bajo perfil de consumo de energía sin afectar el rendimiento del sensor. Tanto el MCU como el módulo de wifi pueden ponerse en modo de suspensión y, en conjunto, pueden prolongar significativamente la duración de la batería.
En la hoja de datos del SAM-D21 puede encontrar información detallada sobre los diversos modos de ahorro de energía del MCU y la forma en que la característica de administración de energía del dispositivo los controla. Una nota de la aplicación que investiga el ahorro de consumo de energía posible de las interfaces y funciones periféricas del MCU también se puede encontrar aquí.
El ATWINC1500 también tiene una cantidad similar de recursos de ahorro de energía disponibles, que incluyen una sección dedicada a esto en esta nota de aplicación. En su tutorial de Feather M0 Wi-Fi, Adafruit muestra el uso de un monitor de alimentación para ilustrar la variación en el consumo del módulo de wifi (Figura 11).

Figura 11: Consumo de energía de la placa Feather M0 Wi-Fi.
La línea naranja de la Figura 11 es el consumo total de energía de la placa Feather M0 Wi-Fi. La línea violeta indica el voltaje de suministro de una batería LiPo. Tenga en cuenta los picos causados por el funcionamiento de la radio con el primero que incluye el enlace configurado con el punto de acceso. Fuera de las comunicaciones que se realizan, la corriente en reposo es de aproximadamente 22 mA, lo que indica aproximadamente 10 mA para el MCU y 12 mA para el módulo de wifi. Una comprensión de los posibles casos de uso para el producto final previsto ayudará a determinar el grado de ahorro de energía posible. Por ejemplo, si solo se requiere medir la temperatura una vez por minuto, el dispositivo podría mantenerse en reposo durante al menos 55 segundos en función de la medición de la temperatura y la comunicación a la aplicación en la nube tardaría 5 segundos, lo que permite que el dispositivo esté en el modo de sueño más profundo el 91 % del tiempo. Otros métodos de ahorro de energía podrían implicar tomar varias medidas de temperatura antes de enviarlas a través de wifi o quizás solo enviar si la temperatura leída es diferente de la medición realizada anteriormente.
Conclusión
Las SBC fácilmente disponibles constituyen una plataforma ideal para probar los conceptos de los productos y crear diseños de prototipos iniciales. La selección cuidadosa de una SBC que utiliza un MCU y componentes inalámbricos disponibles comercialmente garantiza que, una vez probado, el prototipo se puede transformar rápidamente en un diseño final, de modo que se aprovechan al máximo las ventajas de tiempo de comercialización, los recursos de código abierto y el apoyo de la comunidad que generalmente proporciona el uso de dichas placas.
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.







