Alle ESP32-Karten haben einen eingebauten Hall-Effekt-Sensor. Der Hall-Effekt-Sensor kann Änderungen des Magnetfeldes in seiner Umgebung erkennen. Je größer das Magnetfeld ist, desto höher ist die Ausgangsspannung des Hall-Effekt-Sensors.
Der Arduino verfügt über eine Funktion hallRead(), welche die durch das Magnetfeld erzeugte Spannungsdifferenz als Analogwert zurückgibt. Je stärker das externe Magnetfeld ist, desto höher ist der von der Funktion zurückgegebene Analogwert.
Öffnen wir die Arduino IDE, wählen wir das entsprechende ESP32-Board und den Port aus und laden wir den untenstehenden Code hoch.
int hallValue;
void setup()
{
Serial.begin(115200);
}
void loop()
{
hallValue = hallRead();
Serial.print("ESP32 Hall effect sensor value: ");
Serial.println(hallValue);
delay(1000);
}
Wenn der Upload abgeschlossen ist, öffnen wir den seriellen Monitor.
Nähern wir uns dem ESP32 Hall-Sensor mit einem Magneten und sehen wir uns an, wie sich die von der hallRead-Funktion zurückgegebenen Werte ändern.
Wenn wir den Magnet umdrehen, ändert sich das Vorzeichen der Werte. Je nach Polarität des Magneten ist der vom Hall-Effekt-Sensor zurückgegebene Wert positiv oder negativ.
Je näher der Magnet am Sensor ist, desto höher sind die absoluten Werte.
Werbung
Erstellen wir einen Türsensor mit dem eingebauten Hall-Sensor des ESP32
A következő példa bemutatja, hogyan építsünk ajtó/ablak nyitásérzékelőt ESP32-vel és mágnessel.
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);
}
Im obigen Beispiel haben wir einen Grenzwert definiert, und speichern in der Konstante thresholdValue.
Vergleichen wir diesen Wert mit dem HallValue-Wert und wenn er unter dem Grenzwert liegt, wurde der Magnet wahrscheinlich aus der Nähe des eingebauten Hall-Effekt-Sensors des ESP32 entfernt. Eine Benachrichtigung, die diesem Wert entspricht, wird auf dem seriellen Monitor angezeigt.
Shelly Door/Window Sensor
werbung – amazon.de
Wi-Fi, sendet Smartphone-Benachrichtigungen, einfache Installation, kompatibel mit Alexa und Google Home
Senden wir eine Push-Nachricht wenn die Tür geöffnet wird
Der folgende Code kann verwendet werden, um eine Push-Nachricht vom ESP32 an das angegebene Gerät (Telefon, Tablet, Computer) zu senden, wenn eine Tür geöffnet wird.
Weitere Informationen zur Verwendung von ESP32 und Pushsafer finden hier.
#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);
}
werbung