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
- Conecta el pin VCC del sensor “PIR SR501” al pin de alimentación de 5V del dispositivo compatible con MQTT.
- Conecta el pin GND del sensor “PIR SR501” al pin de tierra (GND) del dispositivo.
- 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
- 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.
- 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
[…] visita también Explorando la detección de movimiento con el sensor “PIR SR501”: ejemplo práctico con LED y pu… […]
[…] visita mis otros links como por ejemplo PIR SR501 sensor de detección de movimiento, MQTT y Hassio […]