De Prompt a Planta es la serie donde compartimos, en abierto y completos, los prompts que permiten programar un PLC de Industrial Shields con Claude Code. La IA escribe el código; tú lo validas en banco de pruebas.
Una señal. Muchos significados.
Una entrada digital de un PLC no significa una sola cosa. Significa la que tú sepas leer. El mismo pulso puede ser una pieza producida, el inicio de un ciclo, una máquina en marcha o parada, una pieza de rechazo, un microparo que nadie registra, o la velocidad real de la línea.
Y aquí está lo interesante: saber qué significa esa señal en tu planta — y decirlo bien en un prompt — hoy vale tanto como saber programarlo. O mejor dicho: hoy puede sustituirlo. La IA escribe el firmware en minutos. Lo que no puede decidir por ti es qué mides y qué significa. Esa interpretación — 24V, flanco, antirrebote, qué cuenta y qué es ruido — es el trabajo de ingeniería de verdad, y va dentro del prompt.
El ejemplo
En un despliegue de monitorización en máquinas de tejer circulares, el problema de siempre: nadie sabía cuánto producía cada máquina hasta que alguien contaba piezas a mano al final del turno. La solución es de las más simples que hay: un sensor de proximidad 24V apuntando a una parte móvil más un ESP32 PLC. Cada pulso, una unidad. El "hola mundo" de la fábrica — y casi nadie lo tiene montado.
El prompt (cópialo entero)
Así es como se ve un buen prompt: contexto, el porqué de cada requisito, restricciones explícitas, el orden en que quieres la respuesta — y cómo vas a validarlo. Pégalo tal cual en Claude Code y cambia el modelo en el bloque de hardware si el tuyo es otro.
CONTEXTO Quiero convertir una máquina que hoy no reporta nada en una máquina que cuenta su producción en tiempo real: saber cuántas piezas lleva el turno, a qué ritmo va, y enterarme si se para. HARDWARE - PLC: ESP32 PLC 14 de Industrial Shields. (Si tu modelo es otro de la familia ESP32 PLC — 19R, 21, 38R, 42, 57R o 58 — cámbialo aquí: el mapeo de entradas/salidas cambia entre modelos.) - Sensor: detector de proximidad industrial de 24V (inductivo o fotoeléctrico) apuntando a una parte móvil de la máquina. Salida NPN: pulso a nivel bajo. - Conexión: la señal del sensor entra por la entrada digital I0_0. - Equivalencia física: 1 pulso = 1 pieza producida. QUÉ NECESITO, Y POR QUÉ 1. Conteo por INTERRUPCIÓN hardware en flanco de bajada sobre I0_0, no por polling: el polling pierde pulsos cuando el firmware está ocupado escribiendo en la SD o reconectando la red. 2. ISR mínima: solo incrementa contadores volatile. Nada de Serial, String ni delay dentro de la interrupción. 3. Antirrebote por software dentro de la ISR, empezando por 30 ms entre pulsos válidos. Este es el punto crítico: un sensor mecánico rebota y un variador cercano mete ruido eléctrico; sin filtro el contador cuenta de más y después nadie sabe por qué. Dime también cómo ajustar ese tiempo a la velocidad máxima real de mi máquina para que el filtro no acabe comiéndose pulsos buenos, y qué techo de pulsos por segundo impone el valor que elijamos. 4. Dos contadores alimentados por la misma interrupción: uno de intervalo, que se resetea cada vez que se envía, y uno de turno, que acumula hasta recibir un comando de reset explícito. 5. Cada 20 segundos: leer y resetear el contador de intervalo de forma atómica (envuelto en noInterrupts()/interrupts()), estimar las RPM extrapolando esa cuenta a un minuto, y publicar intervalo, turno y RPM. Deja el broker MQTT como placeholder configurable; si prefieres una primera prueba más simple, sácalo por el puerto serie. 6. El conteo no puede depender de la red: si se cae la conexión, la máquina sigue contando y el envío se reintenta en segundo plano, sin bloquear. RESTRICCIONES - No inventes bornas ni pines: usa la nomenclatura del paquete de placas de Industrial Shields, y dime qué placa debo seleccionar en Arduino IDE para que I0_0 sea el pin físico correcto de mi modelo. - Nada de delay() en el loop principal. - No añadas servidor web, OTA ni ninguna otra superficie de red que no te haya pedido. QUÉ QUIERO RECIBIR, EN ESTE ORDEN 1. Los supuestos que hayas tenido que hacer y cualquier duda que te bloquee: pregúntame antes de asumir algo que cambie el cableado o la lógica. 2. El cableado del sensor a la entrada (alimentación 24V, señal, común) y qué cambia si mi sensor fuera PNP en vez de NPN. 3. El código completo, comentado, listo para compilar. 4. El protocolo de prueba en banco. CÓMO LO VOY A VALIDAR (escribe el código para que pase esta prueba) - Genero 20 pulsos a mano con un pulsador: el contador debe marcar exactamente 20, ni uno más. - Pulso muy rápido a propósito, simulando rebotes: no deben contarse dobles. - Reinicio el equipo: el contador de turno debe comportarse como me hayas explicado — dime tú si debería persistir o no, y por qué. - Desconecto la red con la máquina en marcha: el conteo sigue.
Qué obtienes
Producción por intervalo, total de turno y RPM en vivo, con detección de parada gratis. Claude Code entrega el firmware con la ISR antirrebote, los dos contadores y el reporte periódico, más la explicación del cableado del sensor y un protocolo de validación en banco.
Antes de la máquina
Regla de la casa: la IA escribe el código, el técnico lo valida. Valida primero en banco, generando pulsos a mano o con un botón, antes de acercarte a la máquina. Y el técnico es quien decide qué significa la señal — esa es la parte que no cabe en un fin de semana.
Responde cinco preguntas sobre tu proyecto — tus entradas/salidas, tu protocolo, tu lógica de control — y obtén la secuencia completa de prompts, con la misma metodología de esta serie. Gratis.
Abrir el Generador de Prompts PLC →Cada semana, un prompt real y verificado. Próximo episodio: sin Arduino IDE — Claude Code compila y graba tu PLC solo. Archivo completo y próximos episodios en este blog, y en la newsletter De Prompt a Planta.