ESP32 Basic Starter Kit for dummys: Proyecto - 6 Sensor de movimiento PIR

Este proyecto muestra cómo detectar movimiento con el ESP32 usando un PIR (Passive Infrared o detector pasivo de infrarrojos) que en este caso se usa HC-SR501 Motion Sensor

En el montaje se activará la alarma (sonará el zumbador) cuando se detecte el movimiento de un cuerpo que desprenda calor (radiación infrarroja) y se detendrá cuando no se detecta movimiento durante un tiempo preestablecido (p.e. 4s).

Descripción de  la placa que incorpora el sensor de movimiento HC-SR501 junto al ajuste del retardo, del rango de detección y la descripción de los pines

Montaje de los componentes

Como el sensor necesita 5V en lugar de la salida de "3V3" usaremos "Vin"

Contrariamente a lo que dice el manual el programa no aparece en la libreria de ejemplos así que he reescrito uno basandome en ESP32 – PIR motion sensor project on Wokwi - 2022 (usa LED en lugar de zumbador) y muestra mensajes en el monitor serie.

/*
   Project_6_ESP32_PIR_Motion_Sensor.ino
*/

int buzzPin = 26;              // GPIO del zumbador
int pirPin = 27;               // GPIO del PIR
int pirState = LOW;            // Se inicia el valor de deteccion - sin movimiento
int val = 0;                   // estatus del pin

void setup() {
  pinMode(buzzPin, OUTPUT);    // declara salida al zumbador
  pinMode(pirPin, INPUT);      // declara entrada del PIR 
  Serial.begin(115200);
}

void loop() {
  val = digitalRead(pirPin);      // lee valor dado por el PIR
  if (val == HIGH) {              //  si valor  HIGH
    digitalWrite(buzzPin, HIGH);  // zumba
    delay(1000);
    if (pirState == LOW) {
      Serial.println("¡Movimiento detectado!");
      pirState = HIGH;
    }
  } else {
    digitalWrite(buzzPin, LOW); // turn LED OFF
    if (pirState == HIGH) {
      Serial.println("¡fin del movimiento!");
      pirState = LOW;
    }
  }
}

Hay varias cosas a comentar:
  • Cuando se quiere hacer un comentario largo o quiere destacarse, en lugar de usar // se puede usar /* para iniciarlo y */ para terminarlo. 
  • Se usan las funciones digitalRead() y digitalWrite() para leer y escribir en GPIO 
  • Se usa la variable pirState para saber si es la primera vez que se pasa por un lugar del código o no , este "truco" se conoce como activar o desactivar un switch que nos hace de  testigos

Con lo que ya sabe seguramente le resultará sencillo modificar el programa y el montaje para:

  • Añadir al zumbido que un LED rojo parpadee.
  • Hacer que el sensor  de movimiento actue sobre un doble semaforo para ponerlo en rojo el de los vehiculos y verde el de los peatones cuando se detecta la presencia de estos y tras un retardo revertir la situación

Por si quiere comprar otros sensores HC-SR501 aquíe stán disponibles


Continúa en:  Proyecto - 7 Web Server

Prohibida la reproducción parcial o total de este artículo sin permiso previo del autor 

Comentarios

Entradas populares de este blog

SDR - Software Defined Radio - IIIb: Receptores RSP o MSI (MSI3001: MSI2500 + MSI001)

Amplificadores LNA compactos

ESP32 LoRa for dummys - Inicio