El sensor “PIR SR501” es ampliamente utilizado para detectar movimiento en proyectos de seguridad y automatización. En esta entrada del blog, aprenderemos a utilizar el sensor “PIR SR501” en un ejemplo práctico detallado, conectándolo a un LED y utilizando MQTT para publicar mensajes cuando se detecte movimiento y asi Home Assistant pueda interpretarlo.

Materiales necesarios:

  • Sensor “SR501”
  • LED
  • Resistencia de 220 ohmios
  • Dispositivo compatible con MQTT (por ejemplo, NodeMCU)
  • Cables de conexión
  • Protoboard

1: Conexión del sensor “PIR SR501” al dispositivo compatible con MQTT

  1. Conecta el pin VCC del sensor “PIR SR501” al pin de alimentación de 5V del dispositivo compatible con MQTT.
  2. Conecta el pin GND del sensor “PIR SR501” al pin de tierra (GND) del dispositivo.
  3. Conecta el pin OUT del sensor “SR501” a un pin digital del dispositivo (por ejemplo, D1).

2: Conexión del LED al dispositivo compatible con MQTT

  • Título para las fotografías: Conexión del LED
  1. Conecta el ánodo (terminal largo) del LED a un pin digital del dispositivo compatible con MQTT (por ejemplo, D5) a través de la resistencia.
  2. Conecta el cátodo (terminal corto) del LED a GND del dispositivo.

3: Código en Arduino IDE para la detección de movimiento y publicación MQTT PIR

#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "Nombre_de_red";  // Nombre de tu red WiFi
const char* password = "Contraseña";  // Contraseña de tu red WiFi
const char* mqttServer = "mqtt.servidor.com";  // Dirección del servidor MQTT
const int mqttPort = 1883;  // Puerto del servidor MQTT
const char* mqttUser = "usuario_mqtt";  // Usuario MQTT
const char* mqttPassword = "contraseña_mqtt";  // Contraseña MQTT

const char* motionTopic = "mi_proyecto/deteccion_movimiento";

WiFiClient espClient;
PubSubClient client(espClient);

const int pirPin = D1;  // Pin digital conectado al pin OUT del sensor PIR
const int ledPin = D5;  // Pin digital conectado al LED

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Conectando a WiFi...");
  }

  Serial.println("Conectado a WiFi");

  pinMode(pirPin, INPUT);  // Configurar el pin del sensor PIR como entrada
  pinMode(ledPin, OUTPUT);  // Configurar el pin del LED como salida
  digitalWrite(ledPin, LOW);  // Apagar el LED inicialmente

  client.setServer(mqttServer, mqttPort);

  while (!client.connected()) {
    if (client.connect("NodeMCU_Client", mqttUser, mqttPassword)) {
      Serial.println("Conectado a MQTT");
    } else {
      Serial.print("Error de conexión MQTT, rc=");
      Serial.print(client.state());
      Serial.println(" Intentando de nuevo en 5 segundos...");
      delay(5000);
    }
  }
}

void loop() {
  client.loop();

  // Detección de movimiento
  if (digitalRead(pirPin) == HIGH) {
    digitalWrite(ledPin, HIGH);  // Encender el LED
    client.publish(motionTopic, "Movimiento detectado");
  } else {
    digitalWrite(ledPin, LOW);  // Apagar el LED
  }

  delay(100);  // Pequeña pausa antes de volver a verificar el movimiento
}

Recuerda ajustar los valores según tus necesidades, como el nombre de la red WiFi, la contraseña, la dirección del servidor MQTT y el tema MQTT.

En este ejemplo, el sensor “PIR SR501” detectará movimiento y enviará mensajes MQTT cuando se detecte movimiento. El LED se encenderá cuando se detecte movimiento y se apagará cuando no haya movimiento.

Captura fotografías del proceso de conexión del sensor “PIR SR501” y del LED. Toma imágenes del LED encendido cuando se detecte movimiento y del LED apagado cuando no haya movimiento.

Recuerda visitar mis otros post como por ejemplo Domotica a tu portón con NodeMCU, MQTT y control remoto RF

By juan

Un amante de la tecnología, cada día se aprende algo nuevo

2 thoughts on “PIR SR501 sensor de detección de movimiento, MQTT y Hassio”

Agregar un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos están marcados *