Minden ESP32 kártya rendelkezik egy beépített Hall Effect szenzorral. A Hall-effektus-érzékelő képes érzékelni a mágneses tér változásait a környezetében. Minél nagyobb a mágneses tér, annál nagyobb a hall érzékelő kimeneti feszültsége.
Az Arduino rendelkezik egy hallRead() funkcióval, amely a mágneses tér által generált feszültségkülönbséget analóg érték formájában adja vissza. Minél erősebb a külső mágneses tér, annál nagyobb a függvény által visszaadott analóg érték.
Nyissuk meg az Arduino IDE-t, válasszuk ki a megfelelő ESP32 alaplapot és portot, majd töltsük fel az alábbi kódot.
int hallValue;
void setup()
{
Serial.begin(115200);
}
void loop()
{
hallValue = hallRead();
Serial.print("ESP32 Hall effect sensor value: ");
Serial.println(hallValue);
delay(1000);
}
Ha a feltöltés kész, nyissuk meg a soros monitort.
Közelítsünk egy mágnest az ESP32 hall-érzékelőhöz, és nézzük meg hogyan változnak a hallRead függvény által visszaadott értékek.
Ha megfordítjuk meg a mágnest, az értékek előjele megváltozik. A mágnes polritásától függően az hall-effekt érzékelő által visszaadott érték pozitív vagy negatív lesz.
Minél közelebb van a mágnes az érzékelőhöz, annál nagyobbak az abszolút értékek.
Készítsünk nyitásérzékelőt az ESP32 beépített hall-érzékelőjével
A következő példa bemutatja, hogy készíthetünk egy ajtó/ablak nyitásérzékelőt ESP32 és egy mágnes segítségével.
int hallValue;
const int thresholdValue = 40;
void setup()
{
Serial.begin(115200);
}
void loop()
{
hallValue = hallRead();
Serial.print("ESP32 Hall effect sensor value: ");
Serial.print(hallValue);
if(abs(hallValue) < thresholdValue)
{
Serial.println(" - The door is open!");
}
else
{
Serial.println(" - The door is closed!");
}
Serial.println();
delay(1000);
}
A fenti példában meghatároztunk egy küszöbértéket, ezt a thresholdValue konstansban tároljuk.
Összehasonlítjuk a hallValue értékkel és ha ez a küszöbérték alatt van, valószínűleg eltávolították a mágnest az ESP32 beépített Hall-Effekt érzékelő közeléből. Az értéknek megfelelő értesítést kiírjuk a soros monitorra.
Shelly ajtó/ablak érzékelő
Hirdetés
A Shelly ajtóérzékelő érzékeli és jelzi az ajtó/ablak nyitását és zárását, a dőlésszöget, a hőmérsékletet és a rezgést. Kompatibilis az Alexával és a Google Home-mal
Küldjünk Push üzenetet ajtónyitás esetén
A következő kód segítségével egy push üzenetet küldhetünk az ESP32-ről a megadott eszközre (telefonra, tabletre, számítógépre), ha ajtónyitás történt.
ESP32 és Pushsafer használatáról itt olvashatsz.
#include <WiFi.h>
#include <WiFiClient.h>
#include <Pushsafer.h>
#define PushsaferKey "Your_private_key" // http://pushsafer.com
int hallValue;
int thresholdValue = 40;
bool pushsaferFlag = false;
const char ssid[] = "SSID"; // Your SSID
const char password[] = "Password"; // Your password
WiFiClient client;
Pushsafer pushsafer(PushsaferKey, client);
void setup()
{
WiFi.mode(WIFI_STA);
delay(100);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
}
void loop()
{
hallValue = hallRead();
if(abs(hallValue) < thresholdValue)
{
if(!pushsaferFlag)
{
struct PushSaferInput input;
input.message = "The door is open!";
input.title = "Attention!";
input.sound = "6";
input.vibration = "1";
input.icon = "1";
input.iconcolor = "#00FF00";
input.priority = "1";
input.device = "xxxxx"; // Your Device ID: http://pushsafer.com
pushsafer.sendEvent(input);
pushsaferFlag = true;
}
}
else
{
pushsaferFlag = false;
}
delay(300);
}