Cultura electrónica: mbed
El gran éxito que trajo consigo
la aparición de Arduino influyó no
solo en los consumidores de dicha plataforma, sino que, se convirtió en un
claro ejemplo de caso de éxito a imitar por parte de grandes compañías del
sector electrónico.
De esta forma, en 2009, apareció mbed (ARM mbed), una
plataforma similar a Arduino y perteneciente a la empresa británica ARM (ARM
Holdings plc), cuyo objetivo principal consiste en permitir un desarrollo
simple y rápido de productos electrónicos basados en sistemas de arquitectura
ARM (RISC).
ARM creó mbed en respuesta a
Arduino, como solución competidora y apostando por la evolución en el campo del
Internet de las Cosas (IOT, del inglés Internet Of Things). Para
intentar ganar terreno dentro de esa competencia, debía de mantener la
simplicidad y además presentar características que lo hicieran destacar frente
a su contendiente.
Por este motivo, se enfocaron en
sistemas hardware que tuvieran una mayor potencia que los típicos
microcontroladores de 8 bits (con una frecuencia de operación de 16 MHz o menos)
que, por aquel entonces, utilizaba Arduino; así, tenemos que los sistemas
hardware objetivos de mbed son microcontroladores
de 32 bits de arquitectura ARM (con frecuencias que van desde los
16 MHz hasta los 400 MHz).
Dada la actual cantidad de
dispositivos de arquitectura ARM existentes, no es de extrañar que mbed
consiguiera una gran cantidad de partners
(“socios/asociados”) que fabrican placas de desarrollo aptas para utilizar la
plataforma mbed, a estas placas se las denota con la frase identificativa “ARM mbed Enabled”. Entre todos sus partners, nos encontramos con placas de
desarrollo de NXP Semiconductors, STMicroelectronics, Nordic Semiconductors, Atmel, Silicon Labs, Maxim Integrated,
Renesas Electronics, Wiznet y Nuboton Technologies; sin embargo, las que
calaron con mayor profundidad, debido a su bajo
precio (del orden de los 10 euros), son las placas Nucleo de STMicroelectronics, las cuales incorporan
microcontroladores STM32 y presentan
un formato de placa idéntico al de los Arduino UNO, con una disposición de
pines aptas para conectar los Shields existentes de Arduino, en la
misma, y poder utilizarlos.
Figura 1. Nucleo-F103RB (STM32F103RB)
Por otro lado, además de un
hardware más potente, el software a
desarrollar por los usuarios debería tener la misma filosofía simple y de alto
nivel que tiene Arduino, evitando conocimientos específicos sobre el hardware
en sí y permitiendo al usuario abstraerse de la base electrónica, además, también
tendría que presentar alguna característica destacable que lo diferenciara de
Arduino. Apostaron de forma inteligente (en mi opinión), por toda una
plataforma web que contiene un entorno
de desarrollo completo en la nube accesible a través de cualquier navegador
web, mediante el cual, aparte de poder escribir código, compilar y descargar el
resultado para cargarlo en nuestra placa de desarrollo, permite almacenar los proyectos en un repositorio
remoto asociado a la cuenta del usuario. De este modo, a parte del
almacenamiento en la cuenta de usuario, se otorga la posibilidad de publicar, en el perfil de usuario,
dichos proyectos para que el resto
de usuarios puedan verlos y reutilizarlos, por lo que, consiguen crear la comunidad de usuarios al mismo tiempo
que ofrecen el entorno de desarrollo y el almacenamiento en la nube.
Figura 2. Compilador mbed (web)
La plataforma web fue una jugada
interesante, pero intentaron ir más allá que Arduino con la forma de programar
los sistemas. Crearon una capa de
abstracción basada en C++,
posicionándose en un nivel más alto en la programación; esto con la idea de
utilizar la programación orientada a
objetos (POO), de forma que cada elemento hardware perteneciente al sistema
a programar se encuentra encapsulado en clases, mediante las cuales basta con
crear objetos correspondientes para su control (objetos que ya están implementados). Así,
nos encontramos que para controlar, por ejemplo, si un pin es entrada o salida
digital, se crea un objeto perteneciente a las clases DigitalIn o DigitalOut;
para una entrada o salida analógica, los objetos AnalogIn o AnalogOut;
para periféricos tales como la UART como puerto serie o interfaces I2C y SPI,
objetos del tipo Serial, I2C y SPI…
Este modelo de programación, que
en esencia debería favorecer la simplicidad de la programación gracias al uso
de un lenguaje de más alto nivel, con el que se acercan más los elementos
electrónicos al mundo físico (por el hecho de tratar sus partes como objetos)
resultó, en mi opinión, contraproducente. Esto debido a que el modelo mental
del formato de programación de estos sistemas electrónicos, para las personas
no relacionadas con la electrónica (claramente el éxito de Arduino se dio al
permitir su uso a personas ajenas a estudios técnicos), ya estaba prefijado por
la existencia anterior de Arduino, así, aun siendo una programación más evidente,
difiere de la experiencia previa que tienen las personas que han usado Arduino.
El hecho de que Arduino ya estuviera implantado y tuviera tal éxito, junto a la
escasa publicidad existente sobre mbed, lo deja en segundo plano (ya que Arduino
es una plataforma superiormente más reconocida, cualquiera que quiera entrar en
el mundo de la electrónica lo hará a partir de ella y, no será hasta después de
su uso, que muestren interés en alguna otra plataforma).
La apuesta novedosa de mbed, por
dispositivos de mayor potencia y un planteamiento de plataforma en la nube es acertada,
pero no tuvieron en cuenta que la mayoría de las personas que podrían utilizar
su plataforma serían aquellas que ya hubiesen utilizado anteriormente un
Arduino. Opino que mbed ya asumió este hecho y, en vez de reinventar toda su
plataforma, optó por dar soporte a un mayor número de dispositivos y se centró
más en publicitar a su plataforma como una solución prometedora para desarrollar
dispositivos del campo del IOT. Para ello, se concentraron en el desarrollo de
lo que consideran un “Sistema Operativo”, el mbed OS, el cual implementa como base un RTOS (sistema operativo en tiempo real, del inglés, Real Time Operating
System) junto con stacks (pilas) de
protocolos y APIs de diversas tecnologías
de comunicación (Bluetooth Low Energy, Wi-Fi, 6LowPan, RFID/NFC, Lora,
GSM/GPRS, Ethernet…) y mecanismos que dotan de una gran robusteza en la seguridad del firmware desarrollado en
él. Se podría decir que el mbed OS es un “sistema operativo” diseñado
específicamente para desarrollar sistemas del Internet de las Cosas, y que
otorga un conjunto de herramientas software configurables y usables con el fin
de conseguir un firmware modular y eficiente, de poco espacio en memoria (desechándose
los componentes del SO que no hacen uso de la aplicación desarrollada).
Cabe destacar que, para su
creación, la plataforma mbed tomó la esencia de Arduino; sin embargo, el
aspecto libre y abierto de la plataforma no se siguió completamente. Así, a mbed
se la puede considerar como una
plataforma open source, pero hay que
tener en cuenta que no siempre liberan la totalidad de sus elementos, aunque en
algunos casos (como con su SDK y el mbed SO), con el paso del tiempo, pasan a liberarlos.
Hoy en día pocos conocen sobre
mbed, al menos en comparación con Arduino, no obstante, es una plataforma innovadora,
adaptable a los cambios y que utiliza dispositivos ARM, por lo que cuenta con
un gran potencial. Quizás falta la aparición de algún producto de éxito que dé
a conocer a la plataforma.
Enlaces de interés:
Comentarios
Publicar un comentario