En este artículo comentaremos diversas alternativas hardware para el desarrollo de aplicaciones embebidas, mediante el emplre de microcontroladores y sistemas embebidos en un chip (SOC) de bajo coste.
Arduino
Arduino es una plataforma open source de desarrollo de aplicaciones para micocontroladores y sistemas embebidos (microcontroladores SOC).
Es una de las plataformas con más solera en el panorama de los entornos de desarrollo para sistemas embebidos, por lo que está muy extendido y prácticamente cualquier microcontrolador dispondrá de ejemplos y versiones de tarjetas de desarrollo compatibles con este sistema.
Tanto el software como el hardware es open source, disponiendo de sistemas de desarrollo que cuestan sólo unos pocos euros, con microprocesadores de 8 bits y capacidades bastante limitadas, pero también de microcontroladores más potentes de 32 bits o con varios núcleos.
Se compone de una parte software y una parte hardware.
En la parte de software dispone de un entorno visual de desarrollo integrado (IDE) desde el que podremos realizar todo el ciclo: programación en un editor, compilación del código fuente para generar el código binario correspondiente al controlador, volcado del código a la memoria del microcontrolador (Flash) y depuración y ejecución del programa.
El lenguaje nativo de programación en Arduino es el C y C++, lenguajes ambos de bajo nivel y complejos, aunque también se han desarrollado para muchos controladores firmwares con intérpretes de otros lenguajes como python, javascript.
En la parte hardware, Arduino dispone de unos kit de desarrollo consistentes en un controlador (de diferentes tipos y características) con su correspondiente memoria flash, sistema de alimentación y puertos USB o serie para la comunicación con el chip y su programación, a parte de otros periféricos de que puedan disponer algunas de dichas tarjetas de desarrollo.
Todo ellos se organiza dentro de un esquema open source, donde se dispone de toda la información correspondiente a la circuitería, disposición y uso de los pines y los periféricos etc.
A parte de eso también hay multitud de kits de periféricos que integran sensores, actuadores, motores, etc que se venden ya pre-montados compatibles con Arduino, y montones de información en interne con esquemas de montaje para diferentes usos.
Actualmente podemos considerar que Arduino es el sistema de desarrollo open source de referencia y el standar de facto.
ESP32/ESP8266/NodeMCU
Fabricados por Expresiff.
Esp32 y Esp8266 son dos sistemas de microcontrolador integrados (SOC) que en el propio chip disponen de todo lo necesario para el desarrollo de aplicaciones avanzadas y modernas, y con conectividad a internet.
Son microcontroladores versátices, de bajo costo y bajo consumo energético, con RAM estática (sRAM) para el almacenamiento del las variables del programa, si bien no disponen de memoria flash flash para almacenar los programas y el código se ejecuta desde la propia memoria flash, si necesidad de cargarlo en la memoria principal).
Su popularidad ha crecido mucho últimamente debido a su bajo precio (se encuentran integrados en placas de desarrollo por debajo de los 8€, con todo lo necesario para poder programarlos sin necedidad de componentes adicionales.
Ambos dispositivos disponen de cristal oscilador interno para generar la frecuencia de relor, timers, salidas y entradas digitales, convertidores analógico/digital, convertidores digital/analógico, generadores de pulsos PWM, salidas de alimentación a 3.3 V y 5 V, UART para la comunicación serie, comunicación a través de I2C, SPI, etc.
Además de eso integran en el propio chip conectividad mediante WiFi (n 2.4 GHz), por lo que no necesitamos de nada más para poder conectarnos a internet (la antena wifi viene incorporada en las placas de desarrollo).
Las placas de desarrollo que se venden incorporan habitualmente un convertidor de USB a serie para poder conectarlo al ordenador a través de un conector microUSB, y la electrónica necesaria para alimentar el chip desde el puerto USB a 5V (el chip funciona internamente a 3.3V).
Por supuesto se puede utilizar Arduino como entorno de desarrollo para estos módulos.
Este microcontrolador integra en el chip un procesador RISC Tensilica L106 de 32-bit de un solo núcleo y frecuencias de reloj de 80-160 MHz .
Tiene 160 KB de memoria RAM estática (sRAM) y no dispone en el chip de memoria flash, si no que la memoria flash se integra de forma externa en la placa de desarrollo y se lee mediante interfae SPI.
Característica | Description |
---|---|
CPU: | RISC/32-bit (Tensilica Xtensa LX106 a un reloj de 80 MH 160 MHz overclocked |
Memoria sRAM: | 160 KB (64 KB de instrucción, 96 KB de lo que para el usuario 50 KB, resto usado por la wifi y otros sistemas internos). |
Memoria Flash | Módulos externos conectados por SPI de 40 a 80 MHz (512 KB a 4 MB, ampliable hasta 16 MB |
GPIO | 16 entradas/salidas propósito general |
Convertidores analógicos/digitales (ADC): | 1 (10 bits por aproximaciones sucesivas) |
Interfaces comunicaciones: | I2C, SPI, HSPI, 2 UART (una pines dedicados, otra con GPIO2), I2S (conexión circuitos audio digital),IR (Control remoto por infrarojos) |
Interface WiFi: | IEEE 802.11 b/g/n Wi-Fi (con autentificación WEB y WPA/WPA2 |
(más información en wikipedia)
Esta es una versión más moderna con muchas mejoras respecto al ESP8266, sin embargo su precio es similar, por lo que en desarrollos de proyectos nuevos puedes ser más interesante.
Por supuesto dispone de todas las características del modelo anterior, muchas de ellas mejoradas e incluye de otras nuevas, con un consumo similar.
Entre las mejoras, cabe destacar la inclusión de BlueTooth integrado, además del WiFi (n, 2. 4 GHz), un procesador RISC 32 bits Xtensa LX6 de doble núcleo operando de 160 a 240 MHz, convertidores ADC de 12 bits, inclusión de convertirores DAC (digital a analógico) de 8 bits, un mayor número de GPIOs.
Incluye un módulo de encriptado por hardware para acelerar las operaciones criptográficas (en conexciones a la wifi o cuando se usan protocolos encriptados como el SSL) y también características de encriptado del firmware para evitar el acceso no autorizado al contenido del chip (ingeniería inversa del firmware, robo de claves almacenadas en la memoria no volátil del chip, etc).
Característica | Description |
---|---|
CPU: | RISC 32 bits Xtensa LX6 de doble núcleo (160 a 240 MHz) |
Memoria sRAM: | 520 KB |
Memoria Flash | integrada de 4 MB a 16 MB |
GPIO | 16 entradas/salidas propósito general |
Convertidores analógicos/digital (ADC): | 18 canales SAR (12 bits) |
Convertidores digital/analógico (DAC): | 2 (8 bit) |
Sensores capacitivos de tacto: | 10 (GPIO) |
Canales PWM | 10 PWM led/1 Motor PWM |
Interfaces comunicaciones: | 2 I2C, 4 SPI, HSPI, 3 UART (una pines dedicados, otra con GPIO2), 2 I2S (conexión circuitos audio digital),IR (Control remoto por infrarojos), Bus Can 2.0 |
Interface WiFi: | IEEE 802.11 b/g/n Wi-Fi (con autentificación WEB y WPA/WPA2 |
Bluetooth: | Bluetoth 4.2 BE/BR y Bluetooth LE |
otras características: | sensor efecto Hall, módulo de encriptación por hardware |
(más información en wikipedia)
NodeMCU es una plataforma open source de desarrollo de sistemas embebidos basada en microcontroladores ESP8266/ESP32 y lenguaje lua.
Se compone de un diseño open source de una tarjeta de desarrollo basada en esos microcontrolaadores y un firmware que incluye el intérprete lua para poder interpretar los programas desarrollados en ese lenguaje, además de herramientas para realizar el volcado del firmware y los programas.
Existen muchos fabricantes que proporcionan tarjetas de desarrollo basadas NodeMCU que tiene un diseño análogo a las tarjetas de desarrollo (Dev kits) de Expressif, todas ellas muy similares entre sí, aunque pueden haber alguna variante y pequeñas diferencias entre ellas.
A partir de las especificaciones de los kits de desarrollo, se han creado otros proyectos de código libre para permitir el uso de otros lenguajes de programación como el javascript (Moddable SDK y Espruino o Mongoose OS un sistema operativo diseñado para sistemas embebidos con pocos recursos basado en javascript/C que incluye soporte para estos microcontroladores) o bien Python (MicroPython)
Es un conjunto modular de herramientas de desarrollo para el microcontrolador ESP32.
Se compone de un módulo controlador (denominado core) basado en ESP32 montado en una caja de pequeñas dimensiones que puede incluir lector de tarjetas y pantalla, con conectores externos en los que se pueden conectar otros módulos de desarrollo apilados, que ampliarán la funcionalidad del core, como puedan ser sensores de temperatura y proximidad, cámaras web, etc.

Para el desarrollo de las aplicaciones se puede utilizar Arduino, o bien utilizar el propio entorno de desarrollo de m5stack (uiflow) programando en un entorno de diagrama de bloque (conocido como blocky) o bien en Python (MicroPython).
Por supuesto, al estar basado en esp32, también se podrían utilizar otros entornos que soporten dicho chip.
Es un sistema orientado sobre todo al aprendizaje, que facilita todo el proceso de desarrollo al no necesitar soldar los componentes y utilizar engorrosas placas de desarrollo, y emplear un lenguaje como el Python considerado uno de los más sencillos de aprender.
El inconveniente es que nos tendríamos que limitar a los módulos y herramientas proporcionados por el sistema (aunque sería posible fabricarse módulos uno mismo).
Raspberry Pi
Es un híbrido entre un ordenador y un sistema embebido SOC.
Se trata de un ordenador completo integrado en una única placa de bajo coste, al que se le han añadido entradas y salidas digitales, convertidores analógico/digital, buses de comunicación, etc., característicos de los sistemas SOC, pero sin prescindir de un sistema de almacenamiento de ficheros, tarjeta gráfica, conectores para teclado y ratón u otros dispositivos esperables en un ordenador.
Para ello el dispositivo se basa en procesadores ARM con tarjeta gráfica, tarjetas de red y otros periféricos integrados en el chip.
En el dispositivo se puede instalar un sistema operativo linux completo, adaptado a sus características. En concreto el OS oficial de estos dispositivos es el Raspberry Pi OS (también conocido como Raspbian, basado en Debian linux) si bien se pueden instalar otros sistemas operativos linux (Ubuntu, Fedora/Pidora, ArchLinux, etc), Android o incluso windows 10.
Raspberry Pi 4

Es la última versión de las placas de sobremesa de Raspberry, con procesador ARM Broadcom BCM2711 con CPU Cortex A-72 quad-core/64 bits a 1,5 GHz, GPU Broadcom VideoCore VI y memoria de 1 a 8 GB según modelos (compartida con la GPU. Incluye dos puertos microHDMI para la salidad de video 4K, un puerto Gigabit Ethernet, 2 puertos USB 2.0 + 2 USB 3.0, 17 entradas/salidas GPIO, 4 UART, 4 I2C y 4 SPI, Wifi (ac 2,4 y 5 GHz) y Bluetooth 5.0 BLE.
La alimentación es a 5 V, y puede realizarse a través de un puerto USB-C o bien con conector GPIO.
(ver tabla de características de los moedelos Raspberry Pi en la wikipedia)
RaspBerry Pi Zero

Es una versión reducida de la Raspberry Pi en un formato más compacto, más barata y con especificaciones inferiores.
Estos modelos incluyen un chip Broadcom BCM2835, con CPU ARM ARM1176JZF-S de un único núcleo 1 GHz, GPU Broadcom VideoCore IV @ 250 MHz con salida miniHDMI , 512 MB de RAM, 1 USB 2.0 + 1 USB 3.0 m, lector de tarjetas microSD y 17 salidas/entradas GPIO.
No dispone de conector Ethernet, si bien se puede añadir via USB.
Existen tres variantes: el modelo Zero a secas (sin conexión WiFi) el Zero W (que añade conexión WiFi) y el modelo WH (con wifi y con el conector hembra de 40 pines ya soldados a la placa). Las demás características son comunes entre los tres modelos.
Los modelos con conexión WiFi disponen b/g/n 2.4 GHz y BlueTooth 4.1 BLE.
La alimentación es a 5 V y puede hacer mediante conector usb o mediante pin GPIO.

Sitios relacionados: