
Chisme 196: sensor PIR micro:bit, detector de presencia
Era martes por la tarde y Lynx Enterprises estaba vacía. Todos se habían ido a casa. Todos menos las luces.
Víctor Vílchez, el Lince de la Noche, recorría el pasillo con una linterna. Cada sala tenía las bombillas encendidas, y no había nadie dentro.
—¿Para qué estas luces? ¿Para que no se asusten las sillas? —preguntó.
La Gata Montesa apareció con la factura de la luz en la mano.
—Para pagar más y contaminar más. Seis bombillas de 36 vatios, una hora, y sin nadie: tira la cuenta tú mismo.
—Pues apago las luces a mano cada noche.
—Tú te olvidarías en tres días. Y los profesores, en dos. Necesitas algo que note solo si hay alguien en la sala.
—¿Un guardia?
—Un sensor. Se llama PIR y es más sencillo de lo que parece.
Introducción
En este chisme 196 vas a construir un detector de presencia con un sensor PIR micro:bit (el sensor PIR y la micro:bit). Primero mostrará 😊 cuando detecte movimiento. Después, la micro:bit contará los segundos sin nadie y mostrará una ✖ que significa «apaga la luz».
Es un prototipo educativo para trabajar los ODS 7 (energía asequible y no contaminante) y 13 (acción por el clima). Antes de montarlo, practica en el simulador del chisme 196, que tiene modo demostración.
Si es tu primera vez con la placa de ampliación, mira antes el chisme 146, el LED con micro:bit: allí se explica cómo se pincha la micro:bit.
Qué necesitamos
- Una micro:bit V2 y la placa de ampliación Keyestudio (kit ks0361, 37 en 1).
- El sensor de movimiento PIR del kit.
- Un cable de 3 hilos.
- Un cable USB y un ordenador con Chrome o Edge para MakeCode.
Cómo funciona un sensor PIR
PIR significa Passive Infrared, infrarrojo pasivo. Pasivo quiere decir que el sensor no emite nada: solo escucha. Y lo que «escucha» es el calor que desprenden los cuerpos, que es una luz infrarroja que no vemos.
Una persona está más caliente que la pared que tiene detrás. Cuando se mueve, el reparto de calor delante del sensor cambia, y eso es lo que nota. Puedes leer más en la Wikipedia sobre el sensor infrarrojo pasivo.
La salida del sensor es muy simple: 1 si detecta un cambio y 0 si no. Ni cuenta personas ni dice quién es: solo responde a «¿se ha movido algo caliente?».

Conexión del sensor PIR micro:bit
Con el USB desenchufado, pincha la micro:bit arriba en la placa, con los botones A y B hacia ti. Conecta el PIR con el cable de 3 hilos, que tiene los mismos colores que la placa:
| Cable | Va a |
|---|---|
| negro | G de la fila 1 |
| rojo | V de la fila 1 |
| amarillo | S de la fila 1 |
Los tres van a la misma fila, la 1. Esa fila corresponde al pin P1, así que el pin del bloque y la fila del cable tienen que coincidir. Después conecta el cable USB a la micro:bit.


Los primeros 30 a 60 segundos el sensor se «calienta» y puede dar lecturas raras. Es normal: espera un poco.
Paso 1 · ¿Hay alguien?
En MakeCode, el programa del paso 1 hace tres cosas:
- al iniciar: muestra ✓ para saber que la micro:bit está lista.
- para siempre: si la lectura digital del pin P1 es 1, muestra 😊; si no, muestra ✖.
- pausa de 500 ms para no leer sin parar.

Si prefieres escribirlo, pega esto en la pestaña JavaScript de MakeCode y vuelve a Bloques:
basic.showIcon(IconNames.Yes)
basic.forever(function () {
if (pins.digitalReadPin(DigitalPin.P1) == 1) {
basic.showIcon(IconNames.Happy) // detecta movimiento
} else {
basic.showIcon(IconNames.No) // no detecta nada
}
basic.pause(500)
})
Muévete delante del sensor: sale 😊. Quédate quieto: pasados unos segundos sale ✖. Fíjate en que no depende de que haya alguien, sino de que alguien se mueva.
Paso 2 · Ahorra energía
Ahora la ✖ va a significar otra cosa: «apaga la luz». Para eso la micro:bit cuenta los segundos que lleva sin ver movimiento, en una variable. Si llega a 10, muestra ✖. Si vuelve a haber movimiento, el contador se pone a 0.
Cuando no hay nadie pero todavía no han pasado 10 segundos, la pantalla se queda apagada. Pega este programa en la pestaña JavaScript:
let segundosSinNadie = 0
basic.forever(function () {
if (pins.digitalReadPin(DigitalPin.P1) == 1) {
segundosSinNadie = 0 // hay alguien: reinicia
basic.showIcon(IconNames.Happy)
} else {
segundosSinNadie += 1 // nadie: suma un segundo
if (segundosSinNadie >= 10) {
basic.showIcon(IconNames.No) // ✖ apaga la luz
} else {
basic.clearScreen()
}
}
serial.writeValue("segundos sin nadie", segundosSinNadie)
basic.pause(1000)
})
Los bloques equivalentes son:
- para siempre
- si lectura digital pin P1 = 1 entonces: fijar segundosSinNadie a 0 y mostrar ícono 😊.
- si no: cambiar segundosSinNadie por 1; si segundosSinNadie ≥ 10, mostrar ícono ✖; si no, borrar pantalla.
- serie escribir valor «segundos sin nadie» = segundosSinNadie
- pausa (ms) 1000
En el aula real el aviso saltaría a los 5 o 10 minutos. Aquí usamos 10 segundos para poder probarlo.
Qué deberías ver
- Al moverte delante del sensor sale 😊.
- Si te quedas quieto, la pantalla se apaga.
- Pasados 10 segundos sin movimiento, sale ✖.
- Al volver a moverte, se reinicia todo.
Abre el puerto serie de MakeCode (Mostrar datos Dispositivo) y verás cómo sube el contador. Es un dato como los que guardaste en el chisme 150, el datalogger con micro:bit.
Si algo falla
- No sale nada aunque te muevas: espera un minuto de calentamiento y comprueba que el cable amarillo esté en la S de la fila 1.
- Detecta demasiado o se queda encendido mucho: algunos PIR traen dos ruedecitas, de sensibilidad y de tiempo, que se ajustan con un destornillador pequeño. Además, el sensor mantiene la salida a 1 unos segundos después de notar movimiento: es normal.
- No funciona nada: mira en el puerto serie qué texto aparece.
Qué estamos midiendo realmente
El sensor PIR no mide personas: mide cambios de calor. Si te quedas muy quieto, no te ve. Si pasa un perro o el sol calienta una pared, puede dar un aviso falso.
Por eso un detector de presencia real no apaga la luz a los 10 segundos, sino a los 5 o 10 minutos. Es una decisión de diseño: ahorrar energía sin dejar a oscuras a quien lleva un rato sentado leyendo.
Para el aula
- ¿Qué variable estamos midiendo? ¿Es un número o un 0/1?
- ¿Qué pasa si te quedas muy quieto? ¿Por qué?
- ¿Y si pones el sensor mirando a un radiador? Diseña una prueba para saberlo.
- Si una clase tiene 6 bombillas de 36 W encendidas durante 1 hora sin nadie, ¿cuánta energía se gasta de más? (6 × 36 W = 216 W durante 1 hora = 216 Wh.)
- ¿Qué otros sitios del instituto necesitarían un detector de presencia?
Retos con enfoque ODS
- Nivel 1: cambia los 10 segundos por otro valor y pruébalo.
- Nivel 2: añade un contador de cuántas veces se detecta movimiento.
- Nivel 3: haz que muestre en pantalla los segundos sin nadie cuando llegue a 9.
- Nivel 4: guarda los datos con el datalogger y calcula cuántas horas está vacía la clase.
- Piensa en los ODS 7 y 13: ¿cuánto ahorraría el instituto si esto funcionara en todas las aulas?
Versión monitor
Si eres alumno o alumna de 1º de Bachillerato y se lo vas a enseñar a los pequeños:
- Deja el montaje hecho y que lo prueben ellos: moverse, quedarse quietos y ver cuándo sale la ✖.
- Pregúntales: «¿por qué sale ✖ si estoy aquí?». Que descubran que el sensor ve movimiento, no personas.
- Cuenta la historia del Lince y las luces encendidas, y pídeles que busquen dónde se malgasta luz en el instituto.
Apoyos DUA incluidos
- Pasos numerados y cortos, con los mismos colores en el cableado y en los cables.
- Programa en bloques y en JavaScript, para elegir.
- Dos niveles: el paso 1 para empezar y el paso 2 para ampliar.
- Preguntas de reflexión y retos de distinto nivel.
Qué hemos aprendido
El sensor PIR micro:bit detecta el movimiento de cuerpos calientes y da 1 o 0. Con un contador y una condición, la micro:bit sabe cuánto tiempo lleva sin ver a nadie y puede avisar de que se apague la luz.
El Lince apagó la luz de Lynx Enterprises, la Gata cerró la factura y los dos salieron a la calle. Arriba, en Sierra Bermeja, solo quedaba encendida la luna.
Para seguir investigando
- Simulador del chisme 196
- Chisme 150: datalogger con micro:bit
- MakeCode para micro:bit
- ODS 13: acción por el clima
Prototipo educativo, no un sistema de ahorro certificado.
