Microcontroladores y Sistemas embebidos (SOC)


8 min de lectura
Microcontroladores y Sistemas embebidos (SOC)

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 uno circuit board on black background
Photo by Harrison Broadbent / Unsplash

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.

esp8266 electronics module on wooden surface
Photo by Harrison Broadbent / Unsplash

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.

ESP8266

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)

ESP32

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

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)

(mas información wikipedia)

M5stack

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.

Módulo Core2 de m5Stack

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

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

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.

Raspberry Pi Zero WH

Sitios relacionados:


OjoDigital
Artículo anterior

OjoDigital

OjoDigital es uno de los foros más antiguos y con mayor número de usuarios entre los foros en castellano sobre la fotografía. Ha llegado a

Protocolo MQTT
Artículo siguiente

Protocolo MQTT

El protocolo MQTT (Message Queue Telemetry Transmision) es un protocolo de comunicación sobre conexiones TCP desarrollado por Andy Standford-Clark de IBM a finales de los


Artículos Relacionados

Moddable SDK: entorno de desarrollo javascript
4 min de lectura
Protocolos de comunicación IoT
1 min de lectura
Protocolo MQTT
2 min de lectura

SUBIR