In einigen Situationen benötigen wir aus Gründen der Benutzerfreundlichkeit oder Sicherheit möglicherweise eine Bewegungserkennung. Der Mikrowellenradarsensor RCWL-0516, der nach dem Prinzip des Doppler-Effekts arbeitet, ist dabei eine große Hilfe.
Diese erforderlich sein:
Mikrowelle Radar Sensor RCWL-0516
NodeMCU Lolin V3 Module ESP8266 ESP-12F
Dieser Sensor arbeitet auch alleine, sein Ausgang beträgt 2 Sekunden lang 3,3 V, wenn eine Bewegung erkannt wird. Wir verwenden jetzt jedoch eine NodeMCU ESP8266, um die Informationen über das MQTT-Protokoll an den ioBroker zu senden.
Sie können dann ein entsprechendes Ereignis auf ioBroker starten, z. B. ein Licht einschalten, eine Push-Nachricht senden und vieles mehr.
Die Schaltung ist jetzt auch nicht kompliziert:
Und der Beispielcode für den Mikrowellensensor RCWL-0516:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "PASSWORD";
const char* mqtt_server = "192.168.X.XXX";
int DetectionPin = D5;
bool Detection = false;
bool previousDetection = false;
WiFiClient espClient;
PubSubClient client(espClient);
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_Radar";
if (client.connect(clientId.c_str()))
{
// pass
}
else
{
delay(6000);
}
}
}
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
pinMode (DetectionPin, INPUT);
}
void loop()
{
if(!client.connected())
{
reconnect();
}
client.loop();
Detection = digitalRead(DetectionPin);
if(Detection == true)
{
if(previousDetection == false)
{
client.publish("bewegung", "true");
previousDetection == false;
}
}
else
{
if(previousDetection == true)
{
client.publish("bewegung", "false");
previousDetection == false;
}
}
}
Sie können den RCWL-0516 auch durch den PIR-Sensor HC-SR501 ersetzen. Vergessen Sie jedoch nicht, den Code zu ändern, da der Ausgang des HC-SR501 bei Bewegungserkennung niedrig ist und daher umgekehrt wie unser Radarsensor funktioniert.
Wir werden sehen:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "PASSWORD";
const char* mqtt_server = "192.168.X.XXX";
int PirPin = D5;
bool Detection = false;
bool previousDetection = false;
WiFiClient espClient;
PubSubClient client(espClient);
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_HC-SR501_PIR";
if (client.connect(clientId.c_str()))
{
// pass
}
else
{
delay(6000);
}
}
}
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
pinMode (PirPin, INPUT);
}
void loop()
{
if(!client.connected())
{
reconnect();
}
client.loop();
Detection = digitalRead(PirPin);
if(Detection == false)
{
if(previousDetection == false)
{
client.publish("bewegung", "true");
previousDetection == false;
}
}
else
{
if(previousDetection == true)
{
client.publish("bewegung", "false");
previousDetection == false;
}
}
}
Die Verbindung ist wie folgt:
Wenn Ihnen gefallen hat, lesen Sie med im Rest meines Schreibens.