UDOO Neo ideal para diseños de IIoT donde los sensores amplios de E/S y los recursos de computación poderosos son la clave
Colaboración de Editores europeos de DigiKey
2016-06-22
La Internet de las cosas (IoT) es considerada como la responsable del rápido crecimiento de las placas de microcontrolador compactas sin cabecera, diseñadas para una amplia variedad de dispositivos periféricos como sensores y actuadores. Con una pequeña cantidad de E/S, un microcontrolador inalámbrico y un poco consumo de energía, dichas placas y módulos constituirán el conjunto de dispositivos que alimentarán datos a los servicios de análisis basados en la nube. Para muchas aplicaciones, existe un requerimiento de más recursos de computación, interfaces del operador y opciones de conectividad.
Ya sea que se realice una función de puerta de enlace o que se añada información de diversos sensores, iniciando un control local o una mezcla de funciones, existe una necesidad de una computadora de placa única con más funcionalidades y recursos. Debido a que los fabricantes de equipos industriales lidian con la manera de construir un dispositivo integrado que pueda cumplir con todas las necesidades probablemente diversas de cada pieza de equipo, muchos optarán por un enfoque de plataforma que use una placa integrada principal y periféricos adicionales según se requieran. Para volúmenes entre bajos y medianos, cada vez es más necesario seleccionar una de las múltiples computadoras de placa única (SBC) de código abierto disponibles en el mercado. Esto no solo ahorra cantidades inmensas de costos de ingeniería no recurrente, certificación regulatoria inalámbrica y creación de software, sino también permite que el equipo de desarrollo inicie muy rápido los aspectos de aplicación del diseño en lugar de tener que evaluar, diseñar y hacer un prototipo de los diversos dispositivos que podrían incorporar.
Para muchos equipos de ingeniería, uno de los impactos más visibles de la IoT es que existe un cambio fundamental en la forma en que se enfocan nuevos proyectos. El equipo podría ser muy capaz de diseñar una placa integrada desde cero, pero entregar un diseño de trabajo dentro de una fecha límite ajustada es la meta final. Para los que quizás deseen seguir rápido su diseño usando una plataforma SBC antes de crear su propia placa, es necesario el acceso a todos los archivos mecánicos, los diseños y los BOM.

Figura 1: UDOO Neo
Un ejemplo de una SBC que los desarrolladores podrían considerar es la UDOO Neo. Disponible en tres diferentes versiones: Basic (Básica), Extended (Extendida) y Full (Completa), representan un sistema rentable e integral, todas basadas en el procesador de aplicaciones Freescale i.MX6SoloX para Android y Linux. Para este artículo, nos enfocaremos en la Neo Full. El dispositivo Freescale integra en un solo chip un procesador ARM® Cortex®-A9 de un solo núcleo con ejecución a 1 GHz y un coprocesador de tiempo real de E/S ARM Cortex-M4 que puede ejecutar hasta 200 MHz. Capaz de compartir y usar diversas funciones implementadas de hardware como GPIO, UART, I2C, etc., están conectadas juntas a través del bus AXI de alta velocidad. El desarrollador, a través del uso de multiplexación editable, puede asignar la configuración de qué características periféricas se usan y mediante qué núcleo.
La UDOO Neo Full tiene 1 GB de Flash y ofrece un rango integral de entrada y salida de uso general, interfaces seriales, Wi-Fi 802.11 b/g/n completo y conectividad Bluetooth de baja energía. Equipada con sensores de movimiento de nueve ejes integrados, un acelerómetro de tres ejes, un magnetómetro y un giroscopio, LVDS, HDMI, una cámara e interfaces de audio, esta placa se adaptará a muchos diseños industriales.
Desde la perspectiva del sistema operativo, el núcleo Cortex-A9 puede ejecutar un Android Lollipop o un UDOObuntu (14.04 LTS). El Cortex-M4 tiene acceso a un entorno Arduino de pilas llenas, incluidas las cabeceras con blindaje Arduino completo, lo que lo convierte en una plataforma muy flexible.

Figura 2: Características principales de la placa UDOO Neo Full
En la Figura 2, se muestran clavijas externas en color rojo asignadas de manera predeterminada al Cortex-A9 en modo de entrada y salida de uso general. De esta forma, las clavijas se pueden controlar directamente desde el sistema de archivo (Linux, Android). Las clavijas internas, que aparecen de color verde, son asignadas y controladas por el Cortex-M4 con las mismas dimensiones de la salida Arduino UNO.
La placa se alimenta desde un suministro único de entre 6 y 15 VCC y todas las entradas y salidas de uso general a 3,3 VCC. En la Figura 3, un diagrama de bloque esquemático resalta los componentes y las interfaces principales alrededor del procesador de aplicaciones i.M.X.
La Neo se adapta al uso como una plataforma de computación sin cabecera o, añadiendo un panel táctil LVDS o HDMI, una plataforma adecuada para el control del usuario. Si su aplicación diseñada no requiere sensores de movimiento o mucha memoria, puede optar por las versiones Basic o Extended de Neo, y ahorrará en el costo de la placa. Para varias aplicaciones remotas, es deseable una configuración sin cabecera cuya comunicación sea a través de un terminal remoto SSH o algo similar.

Figura 3: Diagrama de bloque i.MX6 de UDOO Neo
Comenzar con UDOO Neo no podría ser más sencillo. Toda la información necesaria para lograr la ejecución de la tarjeta junto con una configuración más integral, muestras de códigos, etc., se puede encontrar en un sitio estilo Wiki. Este sitio también proporciona los archivos de diseño completamente mecánicos y la lista de BOM si los necesita.
Así como se suministra, la placa no cuenta con ningún sistema operativo instalado. Ya sea que elija Linux o Android, deberá tener acceso a una tarjeta microSD con capacidad de 8 GB o más. Descargue el sistema operativo de su elección del sitio de documentación de Neo a su PC o computadora portátil y descomprímalo. Luego, deberá insertar su tarjeta microSD en la toma de la tarjeta o un adaptador USB. Acceda a la línea de comandos de su computadora, obtenga mayor información aquí y siga con las instrucciones para desmontar la tarjeta y todas las particiones, antes de transferir la imagen del sistema operativo. Luego de finalizar, no olvide que deberá sincronizar o expulsar la tarjeta para cerrar la escritura de la imagen de manera adecuada.
Ahora, inserte la tarjeta microSD en la Neo, conecte un mouse y un teclado (USB, por lo general), un monitor HDMI (recomendado al inicio para ver que todo funciona bien) y luego encienda. Pronto deberá ver la actividad de los ledes de color verde y amarillo en la placa, y en el supuesto de que haya elegido Linux, Tux, el pingüino de Linux, deberá aparecer en la pantalla antes del escritorio Ubuntu de UDOO. Este escritorio familiar le da acceso a todas las funciones normales y utilidades de Linux. Un entorno completo de desarrollo integrado (IDE) Arduino configurado en Neo también se carga previamente en la distribución de Linux y está listo para usarse desde el escritorio. La siguiente etapa es conectarse al panel de control basado en la web de Neo. Existe una variedad de formas para realizar esto, ya sea indicando el navegador de Neo en su servidor web udooneo.local o señalando la propia dirección IP de la tarjeta si la conoce. Consulte la Figura 4.

Figura 4: Panel de control web UDOO Neo
Este control le da una buena perspectiva de lo que sucede dentro de Neo. Además de presentar información sobre el estado de la conexión inalámbrica y por cable, información de los sensores y la tarjeta de resumen, también brinda opciones de configuración para establecer y conectarse con los puntos de acceso inalámbrico, configurar ajustes regionales y cambiar la salida de la pantalla. También se brinda información sobre el módulo y el eje del acelerómetro, el giroscopio y el magnetómetro, y puede probar su funcionamiento al mover suavemente la placa.
La habilidad para probar los diseños de muestra de Arduino y escribir algunos simples también se proporciona desde el panel de control web, consulte la Figura 5. Aquellos que estén familiarizados con las placas como Arduino UNO reconocerán el ejemplo simple de "parpadeo" en la aplicación de muestra que aparece en la Figura 5 que conmuta la clavija 13. El led rojo de Neo está conectado a esta clavija, de tal forma que si carga este diseño, parpadeará. Tenga en cuenta que entre las aplicaciones de programación está provista la aplicación Ardublocky, lo que permite la creación de diseños Arduino en una forma de bloque lógico interconectado y gráfico.

Figura 5: Muestras de diseño e IDE web Arduino
Como se mencionó antes, la Neo cuenta con dos conjuntos de entrada y salida de uso general. Los que son accesibles desde un diseño Arduino son conocidos como internos, el conjunto de cabeceras más internas, y los que están dentro de Linux son los denominados externos. Todos están establecidos en una configuración interna de modo predeterminado, son configurables como entradas o salidas y pueden causar interrupciones del núcleo si se requieren. La multiplexación de clavijas permite que la MPU (unidad de protección de memoria) asigne tareas especializadas a estas clavijas externas.
Figura 6: Entrada y salida de uso general accesible desde el interior de Linux. Haga clic aquí para visualizar la imagen de tamaño completo.
Se puede lograr el control de una clavija de entrada y salida de uso general desde la línea de comandos usando comandos simples como:
echo out > /gpio/pin19/direction: para configurar la clavija como una de salida o,
echo in > /gpio/pin19/direction: para configurar la clavija como una de entrada
Una clavija designada como una salida puede configurarse bajo, cero voltios con echo 0 > /gpio/pin19/value
o a alto, +3,3 VCC con echo 1 > /gpio/pin19/value
Los valores de la clavija de entrada se pueden leer usando cat /gpio/pin19/value
El paquete udoo-gpio-export, preinstalado en las tareas Linux UDOObuntu se encarga de la exportación de todas las entradas y salidas de uso general como entradas, además de crear los enlaces del directorio /sys/class/gpio. Se puede encontrar mayor información sobre los requerimientos avanzados como este dentro de la documentación UDOO.
La comunicación entre el Cortex-A9 y los núcleos Cortex-M4 se logra a través de una clavija serial virtualizada bidireccional que usa una memoria compartida para intercambiar datos. Esto se puede leer desde el interior de Linux usando /dev/ttyMMC, por ejemplo, minicom –D /ttyMCC o dentro de un diseño Arduino usando el objeto Serial0.
La UDOO Neo Full cuenta con sensores de tres movimientos en la placa. Dentro del mismo paquete se encuentran un acelerómetro de 14 bits y un magnetómetro de 16 bits, un dispositivo Freescale FXOS8700CQ. El acelerómetro cuenta con rangos de escala completa seleccionables dinámicamente de +/-2 g, +/- 4 g o +/- 8 g.
El giroscopio de tres ejes es un Freescale FXAS21002C.
Están fijados al bus I2C, consulte la Figura 7, y puede accederse a ellos mediante cualquier núcleo.

Figura 7: El bus I2C muestra las configuraciones del sensor y del dispositivo
Desde la línea de comandos se pueden activar con
echo 1 > /sensors/accelerometer/enable o echo 1 > /sensors/gyroscope/enable y todos los valores desactivados se pueden leer con el comando cat /sensors/magnetometer/data.
Por supuesto, las aplicaciones integradas podrán leerse directamente desde estas a través de los registros adecuados de I2C. El acelerómetro y el magnetómetro usan la dirección 0x1E y el giroscopio usa la dirección 0x20.
Se puede acceder a los sensores mediante un lenguaje de nivel superior, por ejemplo Python. En las primeras etapas de usar alguna placa nueva, apreciará la naturaleza de la comunidad y el código abierto del diseño de una placa. Un buen ejemplo de esto es la biblioteca Neo.GPIO Python disponible enGitHub que proporciona el código de la interfaz del sensor desde el interior de una aplicación Python que se ejecuta en el Cortex-A9. Python ya está incluida en la distribución UDOObuntu, de tal manera que facilita la elección de desarrollo en la Neo. Antes de usar, debe descargar el archivo zip de GitHub y luego extraerlo en el directorio en el que creará su aplicación Python. También se incluyen varios ejemplos de códigos en el archivo zip, una versión simplificada de lo que se muestra en la Figura 8.

Figura 8: Programa Python que lee el giroscopio y muestra su información
Para ejecutar el código Python mostrado en la Figura 8 de la línea de comandos, debe ejecutar como root. Si está usando la UDOO Neo tal y como se indicó anteriormente, su cuenta de usuario es udooer, por lo que deberá incluir el programa GyroExample.py de la siguiente manera. Consulte la Figura 9.
echo udooer | sudo –S su –c ‘python GyroExample.py’

Figura 9: Captura de pantalla de la ejecución del código GyroExample.py
La UDOO Neo ofrece una SBC completa y potente que sirve como una plataforma de desarrollo ideal para una aplicación industrial de IoT. Si usa Neo, podrá hacer que su aplicación inicial se ejecute muy rápido y llevará su producto al mercado de la forma más rápida y rentable posible.
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.


