ESP8266 - Türschloss mit Tastenfeld

Dieses Tutorial zeigt dir, wie du ein Passwort-Türschloss-System mit ESP8266, einer Tastatur und einem Solenoidschloss oder elektromagnetischen Schloss baust. Im Folgenden wird beschrieben, wie das Türschloss-System funktioniert.

ESP8266 NodeMCU, Tastatur, Solenoidschloss

Um es einfach zu machen, ist das Tutorial in mehrere Schritte unterteilt, von einfach bis schwierig:

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×Tastenfeld 3x4 and 4x4 Kit
1×Relais
1×Magnetschloss
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Optional) Electromagnetic Lock
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 das Keypad, die Solenoidverriegelung und das elektromagnetische Schloss

Sowohl das Solenoidschloss als auch das elektromagnetische Schloss werden verwendet, um die Tür zu verriegeln bzw. zu entriegeln. Sie unterscheiden sich hauptsächlich in der mechanischen Ausführung. Ihre Verkabelung zum ESP8266 ist ähnlich. Der ESP8266-Code zur Steuerung beider ist derselbe.

Falls Sie mit dem Ziffernfeld, dem Solenoidschloss, dem elektromagnetischen Schloss (Pinbelegung, Funktionsweise, wie man es programmiert …) nicht vertraut sind, können Ihnen die folgenden Tutorials beim Lernen helfen:

Verdrahtungsdiagramm

  • Schaltplan mit ESP8266, Tastatur und Solenoidschloss
ESP8266 NodeMCU, Tastaturfeld, Verdrahtungsdiagramm für Solenoidschloss

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.

  • Schaltplan mit ESP8266, Tastatur und elektromagnetische Türverriegelung
ESP8266 NodeMCU, Tastatur, Schaltplan der elektromagnetischen Türverriegelung

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

ESP8266-Code - Türschloss mit Tastenfeld

/* * 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-keypad-door-lock */ #include <Keypad.h> #define RELAY_PIN D0 // The ESP8266 pin connected to the IN pin of relay #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "0156CAB"; // change your password here const String password_2 = "5642CD"; // change your password here const String password_3 = "545423"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 32 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("Valid Password => unlock the door"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("Invalid Password => Try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Schnelle Schritte

Um mit ESP8266 in der Arduino-IDE zu beginnen, folgen Sie diesen Schritten:

  • Schauen Sie sich das Tutorial zur Einrichtung der Umgebung für ESP8266 in der Arduino IDE an, falls dies Ihr erster Einsatz mit ESP8266 ist.
  • Verbinden Sie die Komponenten wie in der Abbildung gezeigt.
  • Schließen Sie das ESP8266-Board mit einem USB-Kabel an Ihren Computer an.
  • Öffnen Sie die Arduino-IDE auf Ihrem Computer.
  • Wählen Sie das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E Module), und seinen jeweiligen COM-Port.
  • Schließen Sie ein USB-Kabel zwischen dem ESP8266 und dem PC an.
  • Öffnen Sie die Arduino-IDE, wählen Sie das richtige Board und den Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suchen Sie nach “keypad” und finden Sie die keypad-Bibliothek, die von Mark Stanley und Alexander Brevig erstellt wurde.
  • Drücken Sie dann den Installieren-Button, um die Installation der keypad-Bibliothek abzuschließen.
ESP8266 NodeMCU-Keypad-Bibliothek
  • Kopiere den obigen Code und öffne ihn mit der Arduino-IDE.
  • Klicke auf die Upload-Schaltfläche in der Arduino-IDE, um den Code an den ESP8266 zu senden.
  • Öffne den seriellen Monitor.
  • Drücke die Tasten 12345, gefolgt vom Symbol #.
  • Dann drücke die Tasten 1234ABC, gefolgt vom Symbol #.
  • Überprüfe den Zustand der Schlosszunge 20 Sekunden lang.
  • Überprüfe das Ergebnis im seriellen Monitor.
COM6
Send
The incorrect password! try again The correct password! Unlocking the door in 20 seconds
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code-Erklärung

Die gültigen Passwörter sind im ESP8266-Code vordefiniert. Eine Zeichenkette wird verwendet, um das vom Benutzer eingegebene Passwort zu speichern, bezeichnet als Eingabezeichenfolge. Am Tastenfeld (Keypad) werden zwei Tasten (* und #) für besondere Zwecke verwendet: Passwort löschen und das Passwort beenden. Das System funktioniert wie folgt:

  • Abgesehen von zwei Sondertasten wird jeder andere Tastendruck zum Eingabestring hinzugefügt
  • Wenn * gedrückt wird, wird der Eingabestring gelöscht. Sie können ihn verwenden, um die Passworteingabe zu starten oder neu zu beginnen
  • Wenn # gedrückt wird:
    • Der ESP8266 vergleicht den Eingabestring mit den vordefinierten Passwörtern. Wenn er mit einem der vordefinierten Passwörter übereinstimmt, steuert der ESP8266 das Relais, um die Tür zu entriegeln.
    • Unabhängig davon, ob das Passwort korrekt ist oder nicht, löscht der ESP8266 den Eingabestring für die nächste Eingabe.

ESP8266-Code - Mehrere Tasten

/* * 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-keypad-door-lock */ #include <Keypad.h> #define RELAY_PIN D0 // The ESP8266 pin connected to the IN pin of relay #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234ABC"; // change your password here const String password_2 = "5642CD"; // change your password here const String password_3 = "4545B"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // lock the door } void loop() { char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // reset the input password } else if(key == '#') { if(input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The correct password! Unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // lock the door } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Piepton hinzufügen, wenn das Tastenfeld gedrückt wird.

Wir können das Türschloss reaktionsschnell erscheinen lassen, indem wir einen Piezo-Buzzer hinzufügen, der bei jedem Drücken einer Taste am Tastenfeld einen kurzen Piepton erzeugt.

Es ist ganz einfach, es hinzuzufügen. Also überlassen wir diesen Teil deiner Kreativität. Sie können sich das ESP8266 - Keypad Beep Tutorial für weitere Hinweise ansehen.

Hinzufügen eines Türsensors zum Keypad-Türschloss

Im zuvor erwähnten Code verriegelt der ESP8266 die Tür nach Ablauf eines Zeitlimits seit dem Entsperren. In der Praxis wird dem System jedoch üblicherweise ein Türsensor hinzugefügt. Wenn der ESP8266 erkennt, dass die Tür geschlossen ist, verriegelt er die Tür sofort, statt auf das Timeout zu warten.

Um dich nicht zu überfordern, haben wir den Türsensor nicht in das Verdrahtungsdiagramm und den Code aufgenommen. Stattdessen überlassen wir diesen Teil deiner Kreativität. Du kannst dir die Tutorials ESP8266 - Türsensor und ESP8266 - Türsensor-Steuer-Relais für weitere Hinweise ansehen.

Verwaltung und Speicherung gültiger Passwörter im EEPROM

Der obige Code enthält gültige Passwörter (UID), die im ESP8266-Code hartkodiert sind. Das bedeutet, dass Sie Passwörter hinzufügen oder entfernen möchten und dafür Änderungen am Code vornehmen sowie ihn erneut auf den ESP8266 hochladen müssen, was unpraktisch ist.

In der Praxis ist es notwendig, Passwörter zu verwalten, ohne jedes Mal den Code ändern und hochladen zu müssen. Um dies zu erreichen, können die Passwörter im EEPROM gespeichert werden, statt sie hartkodiert zu hinterlegen. Daraus ergibt sich die Notwendigkeit einer Methode, mit der die Passwörter einfach vom EEPROM aus verwaltet werden können.

Zwei Methoden stehen zur Verwaltung von Passwörtern im EEPROM zur Verfügung:

  • Masterpasswörter verwenden
    • Indem ein Passwort als ADD-Masterpasswort verwendet wird, können dem System neue Passwörter hinzugefügt werden. Sobald der ESP8266 das ADD-Masterpasswort erkennt, wechselt er zwischen ADD-Modus und Betriebsmodus.
    • Während des ADD-Modus speichert der ESP8266 alle neu erkannten Passwörter in den EEPROM.
    • Ein ähnlicher Ansatz wird auch für das DELETE-Masterpasswort und den DELETE-Modus verwendet.
  • ADD-/DELETE-Befehle über Serial/Bluetooth/IR verwenden
    • Befehle werden über Serial/Bluetooth/IR übertragen und verwenden Werkzeuge wie den Serial Monitor, die Bluetooth-App oder den IR-Controller.
    • Die Befehle bestehen aus einer Anweisung (ADD/DELETE) und dem Passwort.

    Um eine der beiden oben genannten Methoden zu nutzen, muss eine beträchtliche Menge ESP8266-Code hinzugefügt werden. Für Personen, die noch neu im Programmieren sind, kann dies eine anspruchsvolle Aufgabe sein. Daher zielt dieses Tutorial darauf ab, ein grundlegendes Verständnis des Türschloss-System zu vermitteln, ohne Anfänger mit komplexem Code zu überfordern. Wenn Sie dieses System aus praktischen Gründen implementieren möchten, kontaktieren Sie uns bitte über unseren kostenpflichtigen Programmierdienst.

Speicherung der Zugriffshistorie auf SD-Karte

Um den Zugriffsverlauf nachzuverfolgen, kann es erforderlich sein, den Zugriffsstatus (GRANTED/DENIED) sowie Datum und Uhrzeit zu speichern. Da der EEPROM nicht über ausreichende Kapazität verfügt, um die gesamte Historie zu speichern, kann stattdessen eine SD-Karte verwendet werden. Eine Anleitung dazu finden Sie in diesem Tutorial ESP8266 - Log Data with Timestamp to SD Card.

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.

※ 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!