Bewegungssensor für ioBroker, RCWL-0516 Doppler Radar und ESP8266

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

HC-SR501 PIR Bewegungssensor


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:

RCWL-0516 mit ESP8266 NodeMCU
RCWL-0516 mit ESP8266 NodeMCU

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:

HC-SR501 PIR-Sensor mit ESP8266 NodeMCU
HC-SR501 PIR-Sensor mit ESP8266 NodeMCU

Wenn Ihnen gefallen hat, lesen Sie med im Rest meines Schreibens.