KryonOS es un pequeño sistema operativo impulsado por JavaScript que convierte una placa de desarrollo ESP32 compatible, con pantalla táctil, en un ordenador autónomo con su propia interfaz gráfica, lanzador de aplicaciones y almacenamiento de archivos. Aporta el entorno de software básico necesario para utilizar la placa sin tener que escribir y flashear un firmware distinto para cada aplicación.
A diferencia del firmware tradicional para ESP32, KryonOS mantiene las aplicaciones separadas del sistema principal y las ejecuta a través de su motor de JavaScript integrado. También incluye una tienda de aplicaciones que permite descargar e instalar programas y actualizaciones por Wi-Fi sin necesidad de volver a flashear el dispositivo.
Características principales de KryonOS:
- MCU compatibles: ESP32 (WROOM-32), ESP32-S2, ESP32-S3 y ESP32-C3
- Almacenamiento: compatibilidad con tarjeta microSD a través del bus HSPI
- Pantalla
- Controlador de pantalla ILI9341 con controlador táctil resistivo XPT2046 conectado por VSPI
- Compatibilidad experimental con otros controladores de pantalla, por ejemplo, ST7789V2
- Motor de JavaScript: Duktape 2.x (compatible con ES5/ES5.1)
- Motor gráfico: renderizado directo a pantalla en RGB565 de 16 bits con doble búfer por hardware (Mini-Sprites) para eliminar el parpadeo de la pantalla
- API del sistema: amplias vinculaciones en C++ hacia JavaScript para GPIO del hardware, ADC, PWM, sondeo táctil, sistema de archivos unificado (/local/ y /sd/) y retardos inferiores al milisegundo
En términos sencillos, la ESP32 se flashea una sola vez. A partir de ahí, se controla todo el hardware físico (sensores, motores, pantallas) escribiendo únicamente archivos de texto en JavaScript, sin necesidad de volver a tocar C++ ni el IDE de Arduino.
Escribir aplicaciones para KryonOS es sencillo, ya que se programan en JavaScript y se ejecutan sobre el motor Duktape 2.x. El entorno admite ECMAScript 5.1, además de algunas funciones de ES6, pero no es compatible con funciones flecha, let/const ni clases de ES6. Cada aplicación dispone de unos 90 KB de RAM utilizable, por lo que conviene mantener bajo el consumo de memoria. KryonOS además ejecuta la recolección de basura cuando se llama a System.delay(ms), lo que ayuda a reducir la fragmentación de memoria en aplicaciones de larga duración.
Ejemplo de código JavaScript «Hello world»:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// Limpia la pantalla Graphics.fillScreen(Graphics.COLOR_BLUE); // Dibuja algo de texto en el centro Graphics.setTextColor(Graphics.COLOR_WHITE); Graphics.drawString("Hello KryonOS!", 120, 160, 2); // Espera 3 segundos System.delay(3000); // Cierra la aplicación y vuelve al lanzador del sistema System.exit(); |
Para crear una aplicación basta con generar una carpeta que contenga un archivo app.json con los metadatos (como el nombre del paquete, la versión y la URL de actualización OTA) y un archivo main.js con la lógica de la aplicación. El sistema operativo abstrae la compleja configuración en C++, de modo que se pueden dibujar formas, leer la tarjeta SD o conmutar pines del hardware con sencillos comandos de JavaScript.
El sistema utiliza el mismo pinout de pantalla y táctil que el ESP32 Marauder v4, v6 y v6.1, por lo que puede ejecutarse en estos dispositivos sin modificar el cableado predeterminado. El proyecto también ofrece compatibilidad experimental con varios dispositivos basados en ESP32, entre ellos la Cheap Yellow Display (CYD), la M5Stack Cardputer y la LilyGO T-HMI.

Anteriormente hemos hablado de Espruino, otra plataforma basada en JavaScript para microcontroladores que ofrece un intérprete de JavaScript en lugar de un sistema operativo autónomo. Se ha utilizado en plataformas como la ESP32 y la propia placa Pixl.js de Espruino, donde JavaScript permite controlar GPIO, pantallas, Bluetooth LE, NFC y otros periféricos de hardware. También admite aplicaciones como juegos, relojes, estaciones meteorológicas y proyectos que emplean shields de Arduino. En cambio, KryonOS combina una interfaz tipo escritorio, un explorador de archivos y una tienda de aplicaciones en JavaScript dentro de un único sistema operativo para placas ESP32.
Si tienes por casa una placa ESP32 compatible, una pantalla ILI9341 y un módulo de tarjeta SD, ya puedes flashear KryonOS. Hay archivos .bin precompilados listos para flashear directamente con esptool.py, o bien puedes compilar el sistema desde el código fuente con PlatformIO. El código fuente, la guía de desarrollo de aplicaciones y la documentación completa de la API de JavaScript están disponibles en el repositorio de GitHub del proyecto.
Vía Hackaday
Traducido del artículo en inglés «KryonOS turns ESP32 boards into JavaScript-powered mini computer» de Debashis Das.

Publicaciones traducidas automáticamente

