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

Entradas populares de este blog

Tips electrónica: Reparar punta de soldador (Baño electrolítico)

Introducción a la electrónica III: Potencia eléctrica y consumo

ESP32 - Preparando el sistema Windows para desarrollar mediante el ESP32-IDF SDK