ESP32 beépített hall-effekt érzékelő használata

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ő

Shelly ajtó/ablak érzékelő

Hirdetés

Shelly Door/Window

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