Basta escribir "blink pin 4 every 5 seconds" en una terminal serie para que un ESP32-S3 haga parpadear el LED conectado a ese pin, sin conexión a internet. La placa también entiende órdenes como ponerle "desk lamp" de nombre a un pin, encender varios pines a la vez o rechazar un GPIO inválido o un intervalo peligroso, contó Electronics For You el 30 de septiembre.

El responsable es esp32-gpio-llm, un proyecto de código abierto que corre un transformer de 312.000 parámetros directamente en el microcontrolador. El modelo está diseñado solo para controlar GPIO, no para conversar, y todo el proceso ocurre sin salir de la placa.

¿Cómo cabe un modelo de lenguaje en un ESP32-S3?

Una mano sostiene un ESP32-S3 en protoboard con cuatro LED encendidos, junto a un notebook con el código del proyecto

El modelo ocupa cerca de 1,2 MB de flash en formato FP32. El ESP32-S3 lo mapea y lo lee desde la flash, en vez de cargarlo completo en la RAM interna.

Durante la inferencia usa unos 300 KB de PSRAM para la caché de claves y valores. El repositorio informa una latencia por orden de entre 150 milisegundos y 1,5 segundos, medida en el mismo ESP32-S3.

Se entrenó desde cero con órdenes sintéticas de control de GPIO. Su salida se convierte en una estructura de comando pequeña y no en JSON libre, lo que acota lo que puede llegar a la capa de hardware.

La seguridad no depende del modelo

El proyecto no deja que el modelo de lenguaje decida por sí solo si una operación sobre un GPIO es segura. Una capa de hardware separada valida el pin y los parámetros pedidos.

La implementación actual admite 25 GPIO, del 1 al 18, el 21, del 38 al 42 y el 48. Los intervalos de parpadeo quedan entre 50 y 10.000 milisegundos, así que una orden de parpadear cada 60 segundos se rechaza en lugar de ejecutarse.

Esa separación salió de un problema real durante el desarrollo. El autor comprobó que hacer que el modelo no pudiera representar valores ilegales traía otra falla, porque una orden inválida como "pin 100" podía terminar convertida en un número de pin válido. La solución actual deja que el modelo reproduzca el valor pedido y que sea la capa de hardware la que lo rechace.

Nombres para los pines

El firmware permite asociar un GPIO a un nombre elegido por el usuario. Se puede escribir "call pin 4 the desk lamp" y después "turn on the desk lamp".

Los nombres quedan guardados en el dispositivo y sobreviven a un corte de energía. Un nombre desconocido se rechaza, en vez de asignarse al dispositivo conocido más parecido.

Para una demostración básica basta un LED y una resistencia entre un GPIO admitido y tierra. El repositorio recomienda un ESP32-S3 con PSRAM, y el firmware de inicio rápido se puede grabar directo desde las versiones publicadas del proyecto.

¿Qué tan bien funciona?

La última evaluación usó 612 órdenes válidas y 417 que debían rechazarse, probadas con tres semillas de entrenamiento distintas.

MétricaResultadoMeta del proyecto
Coincidencia exacta84,4% ± 1,5%más de 95%
Pin equivocado en órdenes válidas4,5% ± 0,7%cero
Órdenes aceptadas que debían rechazarse (pin que se movió)5,1% ± 1,3%sin meta propia
Aceptación indebida en sentido amplio13,3% ± 1,6%menos de 2%
Copia correcta del número de pin91,3% ± 0,9%más de 99%

Las cifras siguen bajo las metas que el propio proyecto se puso.

El repositorio también compara el modelo con su analizador tradicional basado en reglas. El analizador resolvió bien el 41,7% de las órdenes de prueba, pero nunca ejecutó una acción equivocada sobre un GPIO, porque rechaza todo lo que queda fuera de su gramática. El modelo de lenguaje cubre muchas más formas de decir lo mismo, a cambio de abrir la posibilidad de una acción incorrecta.

Un experimento, no un asistente

El proyecto no busca reemplazar a un chatbot ni ofrecer IA de propósito general. Muestra cómo un transformer entrenado para una tarea acotada puede traducir instrucciones en lenguaje natural a acciones físicas sin conexión.

El código va con licencia MIT e incluye el proceso de entrenamiento, el firmware y los datos de apoyo, así que el camino completo desde el entrenamiento del modelo hasta el control de los GPIO queda disponible para experimentar.

Para makers y estudiantes de ingeniería, la lección que destaca Electronics For You es de arquitectura. Un microcontrolador no necesita la nube para interpretar órdenes en lenguaje natural, pero el modelo no debe ser la última barrera de seguridad cuando controla hardware físico.

El proyecto y sus versiones están en GitHub.