Descubre la nube IoT con el kit Creator Ci40 de Imagination Technologies
Participa en la revolución del Internet de las cosas de forma segura
Con el éxito de la Raspberry Pi, toda una serie de ordenadores de placa única (SBC) de 64 bits de bajo coste también ha querido sacar partido de un mercado del que la placa Pi ha sido pionera. Sin embargo, la competencia en el ámbito de los proyectos IoT (Internet de las cosas) apenas conoce contendientes serios. Si tu intención no es tener un zombie bajo el creciente botnet que aglutina el "internet of Tat", necesitas un SBC diseñado para funcionar de forma segura con una estructura de software que garantice el funcionamiento de tu aplicación. Entre el selecto grupo de productos que ofrece estas garantías a los desarrolladores, está el kit Creator Ci40 de Imagination Technologies.
Presentación del kit Creator Ci40
El kit se basa en una placa de desarrollo púrpura intenso que ofrece a los usuarios:
CPU MIPS
550 MHz doble núcleo, doble Thread interAptiv
2 x caché 32/32 KB L1
1x caché 512 KB L2
Unidad de punto flotante
Sistema operativo OpenWRT Linux
Conectividad
802.11 AC 2 x 2 WiFi
802.15.4 6LoWPAN
Bluetooth (LE y Classic)
1 x puerto RJ45 Ethernet
1 x USB
Expansión de E/S
2 x interfaces MikroElektronika Click
1 x interfaz Raspberry Pi (tipo conector para PCB de 40 pines)
Seguridad
Infineon TPM (Trusted Platform Module) para almacenamiento certificado
Memoria
Boot NOR Flash de 2 MB
Flash NAND 512 MB
SDRAM DDR3 256 MB DDR3
Ranura de tarjeta SD
Entradas de alimentación
Micro-USB o 9 V dc
Las interfaces MikroElektronika Click permiten añadir funcionalidad de sensor o actuador a la aplicación. Hay una gran (y creciente) gama de placas Click disponibles que cubren aplicaciones desde acelerómetros a Wi-Fi. Hay incluso una placa Clicker para desarrollo de prototipos, en caso de que no encuentres ninguna otra que se ajuste a tu bolsillo. Todas reducen a la mitad el valioso tiempo de poner en marcha tu aplicación de concepto prueba.
Para ir aún más rápido que la banda ancha súper rápida, el kit incluye:
1 x placa de desarrollo Creator Ci40
2 x placas MikroElektronika 6LoWPAN Clicker
3 x placas MikroElektronika Click (térmica, movimiento y relé)
1 x cable microUSB
Estructura de software
La principal ventaja del kit Creator es la gran compatibilidad que ofrece con el software de código abierto para aplicaciones IoT.
La placa de desarrollo se ejecuta en OpenWRT Linux.
La administración de dispositivos se realiza mediante una implementación (llamada Awa) del estándar abierto Mobile Alliance Lightweight Machine to Machine (LWM2M) y simplifica de forma segura la comunicación con servidores en la nube.
La especificación Internet Protocol for Smart Objects (IPSO) ofrece un modelo de objetos estandarizado para sensores y actuadores:
Hablemos sin rodeos: hay mucha documentación API para enredar aún más las cosas y que tarda bastante en asimilarse. Sin embargo, para agilizar el proceso de procesar toda esta información en el cerebro, hay una guía de inicio rápido sencilla y directa en la asistencia online que conecta con algunos talleres interesantes sobre las placas Click del kit.
También hay una versión preliminar de un taller que crea un registrador de temperaturas de ejemplo. Cuando redactamos este artículo, aún no había ningún ejemplo de placa Clicker 6LoWPAN.
Vale la pena dedicar toda la mañana, sin ningún tipo de reparo, al primer taller de inicio rápido para empezar manos a la obra con la placa y el software. Si estos temas resultan demasiado fáciles, te sugeriría probar también con la reprogramación de la tarjeta. Personalmente me resultó muy instructivo programar una imagen OpenWRT en una tarjeta microSD y ponerla en marcha.
Mi reino por un relé activado remoto
Hay algo muy satisfactorio en el hecho de oír un relé hacer clic, al saber que podrás activar fácilmente el relé desde la cafetería del barrio, o desde cualquier lugar del mundo con cobertura Wi-Fi gratuita.
- Los comandos que se ejecutan en la línea de comandos Ci40 OpenWRT Linux se preceden con "#", en cambio,
- Los comandos ejecutados en mi máquina virtual Linux Mint 18.1 Cinnamon se preceden con "$".
Inicié sesión de forma remota en el Ci40:
$ ssh root@ipaddr
"ipaddr" es la dirección IP de Ci40. Una vez conectado, lo primero que comprobé fue la versión en la que se ejecutaba LetMeCreate:
# opkg list-installed letmecreate
Mi versión era 1.1.0 en lugar de la 1.3.0 (o posterior) que necesitábamos. Ya que la versión 1.4.0 se había lanzado en Github unos días antes, así que descargue la versión más reciente y la instale en el Ci40. Probablemente, la forma más fácil de hacerlo sea la siguiente:
- Usa Firefox (o el navegador que prefieras) en su distribución de Linux para descargar el archivo de Github
- En la línea de comandos del terminal, cambia el directorio a tu directorio de descargas
- $ cd Downloads
- Copia el archivo en el directorio raíz de su Ci40:
- $ scp letmecreate_1.4.0-1_pistachio.ipk root@ipaddr:/
- Instala el paquete en el Ci40:
- # opkg install /letmecreate_1.4.0-1_pistachio.ipk
Cuando termines, quizá te interese borrar el archivo .ipk del directorio raíz. Con mi versión ya actualizada, me puse a configurar la aplicación. Para ello, cambié el directorio al directorio "myworkspace" que configuré aquella mañana, en mi caso:
$ cd /home/redstone/Projects/Ci40/myworkspace
Entonces, cloné los archivos de proyecto de Github:
$ git clone https://github.com/creatordev/w2-remoterelay
El siguiente paso era actualizar las fuentes OpenWRT para detectar la aplicación nueva:
$ cd ../openwrt-sdk
$ ./scripts/feeds update -a && ./scripts/feeds install -a
Por último, compilamos:
$ make package/w2-remoterelay/compile
El comando makefiles hizo su magia y nuestro archivo remoterelay_1.0.0-1_pistachio.ipk apareció en la carpeta
openwrt-sdk/bin/pistachio/packages/myworkspace.
Para llevarlo a nuestra placa de desarrollo, cambiamos el directorio a la ubicación del archivo de aplicación y volvimos a ejecutar la copia:
$ scp remoterelay_1.0.0-1_pistachio.ipk root@ipaddr:/
Ya sólo quedaba instalar y ejecutar la aplicación:
# opkg install remoterelay_1.0.0-1_pistachio.ipk
# /bin/remoterelay
Con la aplicación ejecutándose, la siguiente llamada al puerto es para activar un navegador en la máquina de su gusto y navegar a la consola del desarrollador de Imagination Technologies. Aquí encontramos nuestros dispositivos conectados a los servidores en la nube de Creator.
Los de Imagination Technologies seguro que son más generosos de lo que yo sería al permitir tantas conexiones con sus servidores en la nube, un número de conexiones "justo y razonable", y son bastantes. Pero en este caso, sólo nos preocupa un dispositivo: el objeto ID 3201.
Si hacemos clic en este dispositivo, se nos presenta diverso contenido de información IPSO estandarizada sobre el estado del mismo.
Al hacer clic en el icono de lápiz (resaltado por la flecha), podemos modificar el estado del dispositivo.
Podemos alternar el valor del campo entre False y True. Cuando hacemos clic en "Save" el valor se guarda en el dispositivo. El resultado es una acción de clic satisfactoria desde los relés Omron G6D-1A-ASI y un útil grupo de indicadores LED conmutados en la placa.
La siguiente selección de herramientas útiles que vamos a probar en este ejemplo son los webhooks. Para entendernos simple y llanamente: un webhook permite que un evento de una parte de Internet active una respuesta predeterminada en cualquier otro sitio. En nuestro caso, podemos enviar datos sobre los relés a una página web cuando los relés cambian de estado. La página usada para demostrar esto en acción es requestb.in.
Si al llegar a esta página haces clic en el botón verde grande "Create a RequestBin", aterrizarás en una página similar a esta:
Copia la URL del contenedor y vuelve a la consola del desarrollador. Haz clic en el enlace "Subscriptions" (Suscripciones) situado bajo "Devices" (Dispositivos), y podrás añadir los datos del webhook del que queremos información:
Si entonces vamos a "Devices" y conmutamos nuestros relés, podemos volver a http://requestb.in/ y actualizar la página para ver que tenemos algunas novedades de nuestro dispositivo IoT que nos informan sobre el cambio de estado y cuándo se produjo este cambio:
Si te interesa ir más lejos con este ejemplo, hay una aplicación Android y algún que otro encantador nodo .js para seguir jugando con el taller de relés. No me metí en más hondura porque mi estómago empezó a rugir para alertarme de que era hora de cenar algo. Pero al hojear las instrucciones, parece obvio que los desarrolladores pueden usar estos ejemplos en sus propias aplicaciones del mundo real.
Conclusiones
No creo que sea ninguna novedad para nadie que el revuelo causado con todo el concepto IoT está en riesgo de disolverse como la espuma resultado de los productos poco fiables, mal concebidos y ejecutados. El kit Ci40 ha tratado de facilitar el desarrollo de soluciones ampliables correctamente desarrolladas para los dispositivos conectados en lugar del puñado de cosas que puedes hacer con casi cualquier SBC.
Un producto bien desarrollado y probado a conciencia es un principio importante que debería instaurarse entre la comunidad de desarrolladores de IoT, si efectivamente el IoT va a dar sus frutos con tecnologías seguras que mejoren la vida de todos. El kit Ci40 es un gran punto de partida para los desarrolladores que ya tienen claro esta idea.
Apéndice A: Informática en la nube
"La nube" es un concepto muy escuchado en estos últimos cinco años pero, ¿qué es y por qué nos debería interesar? En un sentido amplio, la informática en la nube es cualquier proceso informático que se produce en cualquier lugar que no sea un equipo local (Mac, PC o portátil). El término se deriva en última instancia de los antiguos diagramas de las pizarras de presentaciones de ventas (y de los esquemas de telecomunicaciones) compuestos de varios procesos que se conectaban en algún lugar "flotante", representados por flechas rojas grandes y la esponjosa nube que se usaba para enmarañar las complejidades de las redes de larga distancia y área amplia.
En la práctica, cuando los equipos de TI se refieren a informática en la nube, suelen hablar del "modelo de nube pública", en el que al almacenamiento o al procesamiento se accede desde Internet. Ejemplos obvios de almacenamiento en la nube incluyen servicios como Dropbox o OneDrive de Microsoft, aunque Facebook y YouTube (comunidad para cargar y compartir grandes cantidades de imágenes, vídeos y otros datos) también funcionan como servicios de almacenamiento en la nube.
Pero la nube no es sólo almacenamiento; otra área de rápido crecimiento de la nube es el alivio de la carga de trabajo de los procesadores que se traslada a inmensas granjas de servidores. En muchos casos, basta ejecutar un software de base de datos en los servidores del proveedor en lugar del servidor propio; pero llevada al extremo puede ser una gran solución para empresas con necesidades de computación fluctuantes: pueden ampliar el procesamiento en la nube conforme aumentan sus necesidades de computación y volver a disminuirlo cuando la demanda baje. Entre la comunidad se habla de "cloud-bursting" y ahorra a la empresa inversiones masivas en infraestructura de TI que bien podría estar inactiva la mayor parte del tiempo.
No son sólo las empresas las que se benefician del traslado del procesamiento a la nube. Todos los productos de consumo activados por voz, como Siri y Alexa, apenas se encargan de procesar nada en los dispositivos a los que se emiten las órdenes de vox: las tecnologías complejas (y de procesador) como el reconocimiento automático de voz (ASR) y comprensión del lenguaje natural (NLU) se administran en los servidores Apple y Amazon en la nube.
Oirás otros términos como "Software como servicio" (SaaS), piensa en Microsoft Office 365, y "Plataforma como servicio" (PaaS), piensa en el atractivo alojamiento web, pero todos ellos son básicamente una combinación de almacenamiento y procesamiento alojados en la nube, en los servidores de cualquier otra persona.
Sobre las razones por las que deberías interesarte por la nube, los usuarios tienen algunos dilemas sobre hasta qué puntos desean integrar los servicios de la nube en sus vidas. Las preguntas más obvias son qué hacer cuando no se puede obtener acceso (por ataques DDoS al proveedor de su servicio o porque se acabe el mundo), y lo relacionado con la seguridad de los datos, ya que la información está siempre disponible para que los piratas puedan hacerse con ella. Los archivos sincronizados localmente y el cifrado de 256 bits ayudan, pero no son la panacea. Otras preguntas menos obvias se relacionan con los derechos para los datos que (intencionadamente o no) se suben a la nube: quién puede hacer qué con estos datos. Estas son las preguntas que quizá te responderás a ti mismo conforme la informática en la nube vaya calando en más aspectos de tu vida.