Desarrollo de sistemas embebidos con microcontrolador ESP32/ESP8266

Descripción y principales características de plataformas de desarrollo de sistemas embebidos e IoT (internet de las cosas) basadas en código abierto y diversos lenguajes de programación: python, lua, javascrip, C, C++...


7 min de lectura
Desarrollo de sistemas embebidos con microcontrolador ESP32/ESP8266

En este artículo comentaremos diferentes plataformas de desarrollo para los procesadores ESP32 y ESP2866 comentados en el artículo sobre los microcontroladores y sistemas embebidos (SOC), así como los diferentes lenguajes de programación y entornos disponibles para estos sistemas.

Arduino

Arduino - Create
Open-source electronic prototyping platform enabling users to create interactive electronic objects.
mcu: multples lenguaje: C/C++

Arduino es una plataforma de hardware y software libre para el desarrollo de aplicaciones embebidas utilizando microcontroladores de bajo coste y componentes electrónicos de todos tipo.

Dispone de un entorno de desarrollo consistente en un hardware de desarrollo programable mediante puerto serie o USB y un entorno IDE de software que permite la edición (con editor visual), compilación, volcado al microcontrolador del código (flash) y depuración desde un ordenador, disponible para múltiples sistemas operativos (diversas variantes de linux, windows, macos...).

Su lenguaje principal de desarrollo es el C, si bien otros han portado otros lenguajes y kits de desarrollo a su entorno de desarrollo.

El sistema Arduino dispone de algunas placas de hardware de desarrollo de referencia, si bien dada su filosofía de hardware y software libre, hay muchísimos microcontroladores y componentes que se pueden incorporar al entorno de desarrollo de Arduino.

Es uno de los sistemas de desarrollo más vetustos y que cuenta con una mayor cantidad de dispositivos y microcontroladores: prácticamente cualquier componente disponible puede funcionar bajo este sistema.

Enlaces externos

NodeMCU

NodeMcu -- An open-source firmware based on ESP8266 wifi-soc.
NodeMcu -- a firmware based on ESP8266 wifi-soc.
mcu: ESP32/ ESP8266 lenguaje: lua

NodeMCU es una plataforma de desarrollo basada en el lenguaje lua y diseñada exclusivamente apara los chips de Expressif ESP32 y ESP8266.

Es un proyecto de código abierto y se compone de una placa de desarrollo (conocida por el mismo nombre) y un firmware que se vuelca al microcontrolado y que integra máquina virtual lua para la ejecución del código lua, así como un entorno de desarrollo con un transcompilador de lua al bytecode ejecutado por la máquina virtual.

La máquina virtual de la plataforma contiene las extensiones necesarias para el manejo del hardware del microcontrolador, protocolos de comunicación (http,mqtt, etc) y otras funcionalidades extendidas.

El firmware incorpora un intérprete/transpilador de lua de forma que se pueden introducir comandos a través de una conexión serie al microprocesador, o bien compilar el código en la plataforma de desarrollo y subirlo ya compilado.

La placa de desarrollo NodeMCU ha sido utilizada también por otros proyectos como placa de referencia para el desarrollo de aplicaciones para los microcontroladores ESP.

Enlaces externos

Espruino

mcu: STM32 ESP32/ ESP8266 y varios lenguaje: JavaScript

Espruino es una plataforma orientada sobre todo al desarrollo de pequeños dispositivos corporales (wearables) con comunicación bluetooth y NFC, aunque también se puede utilizar para otras funcionalidades, ya que se ha incorporado algún modelo de controlador con WiFi y compatibilidad con el ESP32, con lo que se pueden incorporar aplicaciones web y conectar los dispositivos al Internet de la s cosas (IoT).

Se inició en 2012 como proyecto propietario con el , pero posteriormente pasó a un modelo de código abierto donde cualquiera puede utilizar y modificar el firmware para crear sus propias aplicaciones. Dispone de algunos diseños propios de tarjetas de prueba para el prototipado y también de algunos dispositivos programables como un botón con sensores o un reloj de muñeca con NFC y Bluetooth que se pueden adquirir en su página web.

Enlaces externos

MicroPython

MicroPython - Python for microcontrollers
MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
mcu: STM32 ESP32/ ESP8266 lenguaje: python

Micro Python es una implementación de un interprete de lenguaje Python3 adaptada a los microcontroladores soportados por el entorno,  al que se le han añadido librerías para el control del hardware de los micros.

Dispone de diseños propios de tarjetas de desarrollo (PythonBoards) pero también es perfectamente compatible con las tarjetas de desarrollo NodeMCU.

El firmware incorpora un intérprete de Python (REPL) de forma que se pueden introducir comandos a través de una conexión serie al microprocesador, así como cargar los ficheros mpy que contienen el código binario de Python.

Enlaces externos

Moddable SDK

Moddable
Tools to create open IoT products using standard JavaScript on low cost microcontrollers
mcu: ESP32/ ESP8266 Gecko SG lenguaje: JavaScript/C

Moddable SDK es un entorno de desarrollo para microcontroladores ESP32/ESP8622 y Gecko de Silicon Labs basado en JavaScript.

Dispone de varias modelos de tarjetas de desarrollo, con conexión wifi y algunas de ellas con pantalla TFT, táctil y e-ink.

Dispone de librerías para el manejo de todos los dispositivos del microcontrolador (PWMs, servos, E/S analógicas y digitales, interfaces de I2C, SPI, etc) y también para controlar la WiFi y conectarse a internet utilizando protocolos estándar (http, https, mqtt, REST, WebSockets, etc.).

También es compatible con la mayoría de las variantes de tarjetas de desarrollo NodeMCU.

El kit de software de desarrollo se compone de un transpilador de código javascript y un conjunto de herramientas para compilar el código y flashearlo en el microcontrolador, además de herramientas para la transformación de imágenes, archivos de sonido y otros recursos a formatos que sean fácilmente manejables desde el microcontrolador.

El firmware instalado en el microcontrolador incluye una máquina virtual de javascript denominada XS, con modificaciones y optimizaciones para adaptarse al los microcontroladores con escasos recursos a los que va destinado.

Para la instalación, además de descargar sus herramientas, también hay que instalar las herramientas de Expressiff, puesto que el compilador de C, la herramietna de flasheado y la de depuración están basadas en las herramientas de Expressif.

Se puede instalar tanto en equipos con linux, como con en windows o MAC OS, pero el proceso de instalación es algo complejo, ya que requiere descargar el código fuente y compilarlo empleando un compilador de C compatible (en Windows se ha de instalar la Microsoft  Visual Studio 2019 para C++ edición Comunidad, que es gratuita). También es necesario descargar el código fuente de las herramientas ESP-IDF Tools Installer de Expressif y compilarlas (también gratuitas y de código abierto).

Ello resulta un proceso un tanto tedioso, pero está bien explicado en las instrucciones.

También es posible emplear TypeScript para el desarrollo de las aplicaciones, que es un lenguaje fuertemente tipado, basado en JavaScript, que una vez compilado genera código JavaScript compatible 100% y ejecutable por cualquier máquina virtual JavaScript standard.

(ver artículo completo sobre Moddable en nuestro blog)

Enlaces externos

Mongoose OS

mcu: STM32 ESP32/ ESP8266 y varios lenguaje: JavaScript/C++

Mongoose OS es un firmware que implementa un sistema operativo para el internet de las cosas (IoT), adaptado a dispostivos con pocos recursos con microcontroladores STM32 ESP32/ ESP8266 y otros modelos.

Implementa un sistema de archivos virtual con lo que es posible montar tarjetas SD u otro tipo de sistemas de almacenamiento y accederlos de igual forma que los ficheros almacenados en la memoria flash.

Incorpora también por defecto muchos otros servicios como llamadas RPC que permiten configurar remotamente el sistema o acceder a sus recursos internos (activar una salida digital de forma remota usando una RPC) todo ello sin apenas ningún esfuerzo de programación por nuestra parte.

También tiene una completa librería de funciones con la que poder programar nuestras aplicaciones, comunicándose con otros dispositivos a través de múltiples protocolos (HTTP, REST, mqhtt, WebSockets, etc.), así como fácil integración con servicios cloud de IoT como Amazon AWS IoT, Google IoT Core o Microsfoft Azure IoT entre otros, así como con un broker MQTT privado.

El desarrollo de las aplicaciones se puede realizar en C++ o bien en JavaScript, pues la herramienta de desarrollo (conocida como mos) incorpora un compilador de JavaScript.

La herramienta mos está disponible para diferentes sistemas operativos del ordenador de desarrollo (linux, windows, etc), que no requiere instalación, es suficiente con descargarla y ejecutarla.

Consiste en un entorno visual desde el que se puede editar el código, compilarlo y flashearlo de forma sencilla.

En realidad el compilado no lo hace por defecto en la propia máquina de usuario, si no que envía el código a un servicio en internet que se encarga del compilado y nos devuelve el firmware ya preparado.

Ello hace que el proceso sea bastante lento, si bien existe la posibilidad de descargar el compilador para ejecutarlo localmente. Se trata de un paquete docker que se ha de instalar en un servidor de docker, por lo que es necesario tener el servidor docker instalado en el ordenador local u otro de nuestra red.

Dispone también de cierto grado de integración con Microsoft Visual Studio Code, para poder utilizar un entorno de programación más completo.

Aunque el servicio es gratuito, es de esperar que pronto pase a ser de pago o bien se le impongan algunas restricciones, como viene sucediendo con otros servicios de internet últimamente.

De hecho ya dispone de algunos servicios entreprise de pago, si bien no se paga por la herramienta en sí, ya que es de código abierto, o por el compilado (al menos por ahora) si no por otros servicios añadidos como el servicio mDash que incluye el manejo remoto de los equipos y servicios de actualización de firmware al vuelo (OTA).

Sin duda es una plataforma muy interesante, con muchísimos servicios añadidos y que funcionan directamente nada más instalar el firmware.

Pero para proyectos sencillos, puede ser un poco sobredimensionado.

Para proyectos complejos con muchas necesidades de interconexión usando múltiples protocolos y con conexión a la nube, puede ser la herramienta ideal.

Enlaces externos

Artículos Relacionados

Moddable SDK: entorno de desarrollo javascript
4 min de lectura
Libros sobre Javascript
2 min de lectura
Protocolos de comunicación IoT
1 min de lectura
Protocolo MQTT
2 min de lectura
Microcontroladores y Sistemas embebidos (SOC)
8 min de lectura

SUBIR