El sensor PIR detecta movimiento y activa una alerta visual con el LED rojo. Aprende sobre deteccion de eventos, senales digitales y temporizadores — los fundamentos de cualquier sistema de seguridad.
Todos los componentes de esta lista forman parte del kit de STEAM Thinking. Asegurate de tenerlos todos antes de empezar.
Conecta cada cable con cuidado. La placa de expansion tiene etiquetas para cada pin. Un error de conexion puede evitar que el proyecto funcione, pero no daniara nada.
| Componente | Pin del componente | Pin micro:bit | Color recomendado |
|---|---|---|---|
| Sensor PIR | Signal (OUT) | P0 | 🟡 Amarillo |
| Sensor PIR | V (VCC) | 3.3V | 🔴 Rojo |
| Sensor PIR | G (GND) | GND | ⚫ Negro |
| LED Rojo | Signal (S) | P1 | 🟡 Amarillo |
| LED Rojo | V (VCC) | 3.3V | 🔴 Rojo |
| LED Rojo | G (GND) | GND | ⚫ Negro |
OUT, VCC y GND. El cable del OUT (senyal) va a P0, el de VCC a 3.3V y el de GND a GND.S (signal), V (voltaje) y G (ground). Signal a P1, V a 3.3V y G a GND.Elige tu entorno de programacion. MakeCode JavaScript es mas visual y facil de empezar. MicroPython es el siguiente nivel si quieres aprender programacion real. El comportamiento es identico en ambos.
// Alarma anti-intrusos con sensor PIR // El LED rojo se enciende cuando detecta movimiento let alarmaActiva = false let contadorDetecciones = 0 basic.forever(function () { if (pins.digitalReadPin(DigitalPin.P0) == 1) { // ¡Movimiento detectado! alarmaActiva = true contadorDetecciones += 1 // Activar alerta visual for (let i = 0; i < 5; i++) { pins.digitalWritePin(DigitalPin.P1, 1) basic.showIcon(IconNames.Target) basic.pause(300) pins.digitalWritePin(DigitalPin.P1, 0) basic.pause(300) } // Mostrar contador de detecciones basic.showNumber(contadorDetecciones) basic.pause(1000) } else { // Sin movimiento → LED apagado pins.digitalWritePin(DigitalPin.P1, 0) basic.showIcon(IconNames.No) basic.pause(500) } }) // Botón A: resetear el contador de detecciones input.onButtonPressed(Button.A, function () { contadorDetecciones = 0 basic.showString("RST") })
from microbit import * contador_detecciones = 0 while True: if pin0.read_digital() == 1: # ¡Movimiento detectado! contador_detecciones += 1 # Parpadeo de alerta (5 veces) for i in range(5): pin1.write_digital(1) display.show(Image.TARGET) sleep(300) pin1.write_digital(0) sleep(300) # Mostrar contador en pantalla display.scroll(str(contador_detecciones)) sleep(1000) else: # Sin movimiento → LED apagado pin1.write_digital(0) display.show(Image.NO) sleep(500) # Botón A: resetear el contador if button_a.was_pressed(): contador_detecciones = 0 display.scroll("RST")
Una vez cargado el codigo, repasa esta lista para confirmar que todo funciona correctamente. Si algo no ocurre, ve a la seccion de Problemas.
Completa el proyecto base y luego intenta estos desafios. Estan ordenados de menor a mayor dificultad. Cada uno te ensenara un concepto nuevo.
for por un encendido directo con basic.pause(3000).modoSilencioso y comprueba su valor dentro del if de deteccion.radio.sendString("ALERTA") en el emisor y radio.onReceivedString en el receptor para encender otro LED a distancia.Estos son los cuatro problemas mas comunes en este proyecto. Lee el sintoma que describes y aplica la solucion antes de pedir ayuda.
P0 (no en P1 o P2) y que el sensor tiene alimentacion (3.3V y GND conectados).P1 y el PIR a P0 — no al reves. Si los tienes invertidos, el codigo leera el LED como sensor y escribira en el sensor. Intercambia los cables de signal y prueba de nuevo.basic.pause(1000) al final del bloque de deteccion ayuda, pero puedes aumentarlo a 2000 para dar mas tiempo al sensor entre lecturas.Ya dominas la deteccion de movimiento con PIR. Aqui tienes ideas reales que usan exactamente este mismo principio en el mundo real.