Mozgásérzérzékelő ioBrokerhez, RCWL-0516 doppler radar és ESP8266

Bizonyos helyzetekben szükségünk lehet mozgás érzékelésére, kényelmi vagy biztonsági okokból. Ehez nyújt remek segítséget a doppler effektus elvén müködő RCWL-0516 mikrohullámú radarszenzor.


Felhasznált dolgok:

Mikrohullámú Radar Szenzor RCWL-0516

NodeMCU Lolin V3 Modul ESP8266-12F

HC-SR501 PIR Mozgásérzékelő Modul


Ez az érzékelő önállóan is működik, a kimenetén 3,3V jelenik meg 2 másodpercig mozgás felismerésekor, de mi most egy NodeMCU ESP8266 segítségével MQTT protokollon küldjük az információt az ioBrokernek.

Az ioBrokeren aztán ennek megfelelő esemény indítható, például kapcsolhatunk lámpát, Push üzenetet küldhetünk, stb.

Az áramkör most sem bonyolult:

RCWL-0516 az ESP8266 NodeMCUval
RCWL-0516 az ESP8266 NodeMCUval

És a példakód az RCWL-0516 mikrohullámú radarszenzorhoz:

#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;
   }
 }
}

Az RCWL-0516 helyére kapcsolhatunk HC-SR501 PIR érzékelőt is, de ne felejtsük el a kódot módosítani, mert a HC-SR501 kimenete mozgás érzékeléskor alacsony lesz, tehát fordítva müködik mint a radarszenzorunk.

Lássuk:

#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;
   }
 }
}

A kapcsolás pedig így alakul:

HC-SR501 PIR szenor az ESP8266 NodeMCU-val
HC-SR501 PIR szenor az ESP8266 NodeMCU-val

Ha tetszett ez a kis szösszenet nézd med a többi írásomat .


Arduino Starter kitNano Atmega328 CH340 + USB KabelHC-SR501 PIR sensor
Arduino Starter kitNano Atmega328 CH340 + USB KabelHC-SR501 PIR sensorblank
Amazon