El Arduino Yun es una placa electrónica basada en el procesador ATmega32u4 y el procesador Atheros AR9331 que corre Linino, una versión personalizada de una distribución Linux llamada OpenWrt, especialmente diseñado para ejecutarse en SBCs o microcontroladores. También cuenta con conexión WiFi, Ethernet y una ranura microSD para el almacenamiento.
La Yun se distingue de otras placas Arduino en que se puede comunicar con la distribución de Linux de la placa, que ofrece un ordenador en red de gran alcance con la facilidad de Arduino. Además de los comandos de Linux como Curl, puede escribir sus propios Shell y Python Scripts para interacciones robustas.
La placa sola cuesta alrededor de US$ 64.98 en Amazon, lo cual en mi opinión la hace un poco costosa si se compara con los precios de los Raspberry Pi, aunque cada cual tiene su aplicación.
Puede encontrar documentación interesante en este enlace: http://playground.arduino.cc/Hardware/Yun
Microcontrolador Arduino AVR
Procesador: ATmega32U4 |
Microprocesador Linux
Procesador: Atheros AR9331 |
OpenWrt
OpenWrt es un sistema operativo (particularmente “integrado”) basado en el núcleo Linux, usado principalmente en dispositivos embebidos a tráfico de red, tales como los Routers Wifi. Los principales componentes son el núcleo de Linux, util-linux, uClibc o musl, y el BusyBox. Todos los componentes se han optimizado para ser lo suficientemente pequeños, de tal forma de caber en las limitadas capacidades de almacenamiento y la memoria disponible en routers domésticos.
OpenWrt se puede configurar mediante interfaz de línea de comandos (Shell) así como también mediente interfaz Web (llamada “Luci”). Hay alrededor de 3500 paquetes de software opcional disponible para la instalación a través del sistema de gestión de paquetes “opkg”.
OpenWrt puede funcionar con varios tipos de dispositivos, incluyendo los routers CPE, Gateways (pasarelas) residenciales, teléfonos inteligentes (por ejemplo el Neo Freerunner), ordenadores de bolsillo (por ejemplo el Ben NanoNote) y portátiles (por ejemplo las “One Laptop per Child (OLPC)”). También es posible ejecutar OpenWrt en ordenadores normales, los cuales están basados más comúnmente en arquitecturas x86.
Linino
Linino es una caja MIPS ejecutando GNU/Linux para Arduino y el IOE (Internet del Todo).
Permite realizar interesantes proyectos combinando del sistema operativo Linux con el hardware IOE, la conectividad WiFi 802.11n, OpenWRT y Peer-to-Peer (con el Framework AllJoyn).
Componentes:
- LininoOS: se basa en la distribución de OpenWrt con cerca de 3.000 paquetes integrado y disponibles. LininoOS proporciona un sistema de archivos totalmente modificable con la administración de paquetes con firma GPG. Integrado con LininoIO es un sistema Linux completo para el espacio de la IOT (Internet de las Cosas).
– Node.js con Ideino: Ideino es un editor integrado para escribir y depurar aplicaciones y Node.js es una plataforma para crear fácilmente aplicaciones de red rápidas y escalables. Node.js utiliza un modelo orientado a eventos, sin bloqueo de E/S que hace que sea ligero y eficiente, ideal para aplicaciones en tiempo real de datos intensivos que se ejecutan a través de dispositivos distribuidos.
- Soporte de AllJoyn: AllJoyn es un proyecto de código abierto que proporciona un Framework (marco de software) universal y conjunto básico de servicios del sistema, que permiten la interoperabilidad entre los productos conectados y aplicaciones de software para crear redes dinámicas proximales.
- LininoOS: se basa en la distribución de OpenWrt con cerca de 3.000 paquetes integrado y disponibles. LininoOS proporciona un sistema de archivos totalmente modificable con la administración de paquetes con firma GPG. Integrado con LininoIO es un sistema Linux completo para el espacio de la IOT (Internet de las Cosas).
Visita http://www.linino.org para obtener más información.
Bridge: el Puente de Arduino Yun
La “parte Arduino” del Yun no tiene acceso a las interfaces de red Ethernet o WiFi, lo que significa que los Sketchs que usan los Shields Ethernet o Wifi necesitan ser reprogramados. La “parte Arduino” del Yun puede hablar con el mundo exterior a través de un elemento llamado “Bridge” (o “Puente”). Existe documentación para la biblioteca del puente, pero es bastante escasa.
La biblioteca del Bridge ofrece las siguientes interfaces:
- Los Sketchs (*) pueden iniciar procesos en la “parte Linux” (por ejemplo Shell Scripts o programas Phyton) y leer su resultado de salida.
- La Consola de Serie del Software de Arduino (*) se puede usar como Telnet para ver la salida de depuración de los Sketchs o interactuar con los mismos a través de la red.
- FileIO es una interfaz para el sistema de archivos de Linux y se puede utilizar para leer/escribir archivos en la tarjeta microSD.
- HTTPClient crea un cliente HTTP sobre el Linux.
- Mailbox (o “Buzón”) es una interfaz “Sessionless” (sin sesión) que permite manejar pares Clave/Valor volátiles.
- YunClient emula una conexión TCP a un host/puerto arbitrarios a través del Bridge.
- YunServer es un servidor HTTP basado en Arduino.
(*) Cuando hablamos del “Software de Arduino” nos referimos al programa que permite editar, compilar y transferir los programas en C++ a las placas Arduino. Al mencionar “Sketch” nos referimos a los programas desarrollados en lenguaje C++
Los Webservices (Servicios Web)
OpenWrt-Yun utiliza clientes y servidores compatibles con la tecnología REST. REST es un acrónimo de “Representational State Transfer” (o “Transferencia de Estado Representacional”), y se trata de una arquitectura de software que expone varias partes del hardware Arduino a través de URLs.
Por defecto, el acceso a la API REST está protegido por contraseña. Es posible cambiar esto para acceder a los servicios sin una contraseña. Para cambiar esta configuración, entrar en el panel de configuración Yun. En la parte inferior de la página, verá alterna para cambiar el acceso.
La hay tres puntos finales de descanso reconocidos por la Yun son:
/arduino
/data
/mailbox
El directorio “/arduino” no tiene nada pre-configurado. Cualquier cosa añadida a la URL después del punto final se pasa desde el Servidor Web al Sketch en el 32U4 (o sea, la “parte Arduino”). Puede definir sus APIs en el interior del Sketch. Véase el ejemplo de Bridge para ver cómo se hace esto para tener acceso a las patas de la placa.
“/data” se utiliza para acceder al almacenamiento de clave / valor interno. Las llamadas disponibles son:
/put/KEY/VALUE : guarda un valor dentro del almacenamiento
/get/KEY : obtiene el valor de la clave solicitada en formato JSON
/get : obtiene la lista completa de almacenamiento en formato JSON
/delete : borra el almacenamiento interno
“/mailbox” se utiliza para agregar mensajes en una cola llamada “Mailbox” (o “Buzón”). La cola de mensajes se almacena dentro del sistema Linux y puede ser leído por el microcontrolador Arduino. La llamada REST disponible es:
“/mailbox/message”
Para obtener más información, visite: https://www.arduino.cc/en/Guide/ArduinoYun