ESP8266 - Türsensor

Der Türsensor ist eine beliebte Wahl für Sicherheitssysteme, da er Eingänge wie Türen, Fenster und mehr erkennen und überwachen kann. Er wird auch als Eingangs- oder Kontaktsensor oder Fenstersensor bezeichnet.

Dieses Tutorial erklärt dir, wie man den ESP8266 mit dem Türsensor verwendet. Im Detail werden wir lernen:

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Türsensor
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Türsensor

Die Pinbelegung des Türsensors

Ein Türsensor besteht aus zwei Teilen:

  • Ein Reed-Schalter mit zwei Stiften
  • Ein Magnet
Türsensor-Pinbelegung

Ähnlich wie bei einem normalen Schalter/Knopf ist es nicht notwendig, zwischen den beiden Kontakten des Reed-Schalters zu unterscheiden.

Wie es funktioniert

Der Magnet ist an der Tür oder am Fenster befestigt (das bewegliche Bauteil), und der Reed-Schalter ist am Türrahmen (dem stationären Teil) befestigt. Wenn die Tür oder das Fenster geschlossen ist, stehen die beiden Bauteile in Kontakt:

  • Wenn der Magnet nahe am Reed-Schalter ist, ist der Reed-Schalter-Schaltkreis geschlossen
  • Wenn der Magnet weit vom Reed-Schalter entfernt ist, ist der Reed-Schalter-Schaltkreis offen
Türsensor: wie er funktioniert

※ Notiz:

Der Reed-Schalter erzeugt kein LOW- oder HIGH-Signal an seinen Pins. Er ist entweder geschlossen oder offen. Je nachdem, wie wir ihn an den ESP8266 anschließen, kann der Pinwert LOW, HIGH oder ein schwebender Wert sein. Um dies zu vermeiden, sollte am ESP8266-Pin ein Pull-up- oder Pull-down-Widerstand verwendet werden.

Wenn wir einen Pin des Reed-Schalters mit GND verbinden und den anderen Pin des Reed-Schalters an einen ESP8266-Eingangspin mit einem Pull-up-Widerstand anschließen (intern oder extern):

  • Wenn der Magnet nahe am Reed-Schalter ist, ist der Wert am ESP8266-Eingangspin LOW
  • Wenn der Magnet vom Reed-Schalter entfernt ist, ist der Wert am ESP8266-Eingangspin HIGH

Um den Status der Tür zu bestimmen, prüfen wir einfach den Zustand des Eingangspins am Arduino:

  • Wenn der Zustand NIEDRIG ist, ist die Tür geschlossen
  • Wenn der Zustand HOCH ist, ist die Tür geöffnet

Wir können auch erkennen, wann sich die Tür öffnet oder schließt, indem wir die Zustandsänderungen am ESP8266-Eingangspin überwachen:

  • Wenn sich der Zustand von LOW auf HIGH ändert, wurde die Türöffnung erkannt
  • Wenn sich der Zustand von HIGH auf LOW ändert, wurde die Türschließung erkannt

Verdrahtungsdiagramm

ESP8266 NodeMCU Türsensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Wie man einen Türsensor programmiert

  • Setzt den ESP8266-Pin in den digitalen Eingabemodus, indem die Funktion pinMode() verwendet wird. Als Beispiel wird der Pin D7 als Eingang festgelegt.
pinMode(D7, INPUT_PULLUP);
  • Verwendet die digitalRead() Funktion, um den Zustand des ESP8266-Pins zu beurteilen.
int door_state = digitalRead(D7);

ESP8266-Code - Türöffnung und Türschließzustand prüfen

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode } void loop() { door_state = digitalRead(DOOR_SENSOR_PIN); // read state if (door_state == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

Schnelle Schritte

Um mit dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Schau dir das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino-IDE an, falls dies dein erster Einsatz mit ESP8266 ist.
  • Schließe die Bauteile wie im Diagramm gezeigt an.
  • Verbinde das ESP8266-Board mit deinem Computer über ein USB-Kabel.
  • Öffne die Arduino-IDE auf deinem Computer.
  • Wähle das richtige ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E Modul), und seinen jeweiligen COM-Port.
  • Kopiere den Code und öffne ihn mit der Arduino-IDE.
  • Klicke im IDE auf die Upload-Schaltfläche, um den Code auf den ESP8266 zu übertragen.
  • Führe den Magneten nahe an den Reed-Schalter heran, und bewege ihn anschließend wieder weg.
  • Überprüfe den Serial Monitor auf das Ergebnis.
COM6
Send
The door is open The door is open The door is closed The door is closed The door is closed The door is closed The door is closed The door is open The door is open
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP8266-Code – Erkennung von Türöffnungs- und Türschließungsereignissen

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door sensor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening has been detected"); // TODO: turn on alarm, light or send notification ... } else if (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing has been detected"); // TODO: turn off alarm, light or send notification ... } }
  • Kopiere den Code und öffne ihn in der Arduino IDE.
  • Klicke auf die Hochladen-Schaltfläche, um ihn auf den ESP8266 zu übertragen.
  • Bringe den Magneten nahe an den Reed-Schalter, und bewege ihn anschließend wieder weg.
  • Schau dir das Ergebnis im Serial Monitor an.
COM6
Send
The door-closing has been detected The door-opening has been detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!