Cuando JavaScript encuentra al hardware: una nueva palabra en embebidos
Cuando decimos "desarrollo embebido", normalmente vienen a la mente asociaciones con C, metal desnudo, inserciones en ensamblador e interminables sesiones de depuración con un osciloscopio. Ahora imagina que escribes el firmware para un sensor de temperatura inteligente usando TypeScript. ¿Suena a ciencia ficción? Pues no lo es.
El mundo de los sistemas embebidos está experimentando una revolución silenciosa. Los microcontroladores modernos cuentan con suficiente memoria y frecuencia de reloj para ejecutar lenguajes interpretados. Y TypeScript, con su tipado estático y su rico ecosistema, se convierte en el candidato ideal para proyectos embebidos donde la fiabilidad y la legibilidad del código son importantes.
En este artículo, analizaremos cómo TypeScript se adentra en el mundo embebido, qué herramientas se necesitan para ello y escribiremos código real para controlar un LED a través de GPIO. ¡Allá vamos!
¿Por qué TypeScript y no C o Python?
La elección clásica para embebidos es C. Es rápido, predecible y consume poca memoria. Pero tiene su lado oscuro: gestión manual de memoria, falta de tipado adecuado a nivel de compilador y un "infierno" con las macros. Python (MicroPython) es más sencillo, pero lento y dinámico: te enteras de un error solo en tiempo de ejecución, cuando el dispositivo se cuelga en algún estante.
TypeScript ofrece un punto medio dorado:
- Tipado estricto — el compilador detecta errores en la fase de compilación. Nada de
stringaccidental en lugar denumberen los registros del microcontrolador. - Sintaxis moderna — async/await, genéricos, interfaces. El código se vuelve autodocumentado.
- Ecosistema npm — miles de bibliotecas que se pueden adaptar al hardware.
- Seguridad de tipos — sabes exactamente qué estás pasando a la función
setPin(17, HIGH), y nosetPin("17", true).
Por supuesto, TypeScript no reemplazará a C para sistemas de tiempo real de alta carga. Pero para sensores IoT, bombillas inteligentes, estaciones meteorológicas y prototipos, es la elección ideal.
Herramientas: qué necesitas para empezar
Para programar en TypeScript sobre hardware, necesitamos un entorno de ejecución que pueda interpretar JavaScript en un microcontrolador. Las opciones más populares son:
- JerryScript — un motor JS ligero de Samsung. Ocupa ~1 MB de Flash.
- Espruino — un firmware especializado para STM32 y ESP32. Soporta TypeScript mediante transpilación.
- Moddable SDK — un potente framework para IoT con soporte nativo de TypeScript.
Usaremos Espruino en una placa ESP32 (o Raspberry Pi Pico con firmware Espruino). Es la forma más sencilla de probar TypeScript en embebidos sin necesidad de soldador ni hojas de datos.
Instalación y configuración
- Descarga el firmware de Espruino para tu placa desde el sitio oficial.
- Flashea la placa por USB (usa la utilidad
esptoolpara ESP32). - Instala Node.js y npm, si aún no los tienes.
- Instala
espruino-cliglobalmente:npm install -g espruino-cli. - Crea un proyecto:
mkdir my-embedded-ts && cd my-embedded-ts && npm init -y. - Instala TypeScript:
npm install --save-dev typescript @types/espruino.
¡Ahora tienes un proyecto TypeScript que conoce los tipos de Espruino! Crea un archivo tsconfig.json:
{ "compilerOptions": { "target": "ES2015", "module": "commonjs", "strict": true, "outDir": "./dist", "rootDir": "./src", "types": ["espruino"] }, "include": ["src/**/*"]}