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:
É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:
Ha tetszett ez a kis szösszenet nézd med a többi írásomat .