ESP32 S3 - Tastenfeld - Elektromagnetisches Schloss

Zu lernen, wie man ein Tastenfeld, ein Relais und ein elektromagnetisches Schloss mit dem ESP32 S3 kombiniert, ist eine hervorragende Möglichkeit, reale Zugangskontrollsysteme zu bauen. Dieses Tutorial zeigt Ihnen, wie Sie ein Passwort über ein 3x4-Tastenfeld einlesen und damit ein elektromagnetisches Schloss über ein Relais steuern – einschließlich einer Variante mit zeitgesteuerter Entriegelung, die die Tür für eine feste Zeit freigibt, ohne die Codeausführung zu blockieren.

Was Sie umsetzen werden:

  1. Eine Schaltung, die ein 3x4-Tastenfeld und ein elektromagnetisches Schloss (über ein Relais) mit dem ESP32 S3 verbindet
  2. Code, der das eingegebene Passwort prüft und die Tür entriegelt, wenn es mit einem der vordefinierten Codes übereinstimmt
  3. Eine erweiterte Version, die die Tür 5 Sekunden lang entriegelt lässt und dann automatisch wieder verriegelt
  4. Eine Ausgabe im seriellen Monitor, die anzeigt, ob jeder Passwortversuch erfolgreich war oder nicht
ESP32 S3 - Tastenfeld - Elektromagnetisches Schloss

Erforderliche Hardware

1×ESP32 S3 WROOM N16R8
1×(Alternativ) ESP32 S3 SuperMini Dev Module
1×(Alternativ) ESP32 S3 Uno-form Board
1×(Alternativ) ESP32 S3 Camera Board
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
1×Relais
1×Verbindungskabel
1×Elektromagnetisches Schloss
1×12V Netzteil
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Screw Terminal Expansion Board for ESP32 S3
1×(Empfohlen) Breakout Expansion Board for ESP32 S3
1×(Empfohlen) Power Splitter for ESP32 S3

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten)
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.

Überblick über Keypad and Electromagnetic Lock

Mit einem 3x4-Matrix-Tastenfeld können Benutzer numerische Codes über ein kompaktes Layout mit 12 Tasten eingeben, während ein elektromagnetisches Schloss (Magnetverschluss) eine Tür mit Magnetkraft geschlossen hält, solange Strom anliegt. Zusammen mit einem Relais, das die 12-V-Versorgung des Schlosses schaltet, bilden diese Komponenten ein vollständiges passwortgesteuertes Zugangssystem, das der ESP32 S3 vollständig per Software verwalten kann.

Wichtige Spezifikationen

Sie kennen das Tastenfeld oder das elektromagnetische Schloss noch nicht und wissen nicht, wie man sie einzeln verdrahtet und programmiert? Lesen Sie zuerst die folgenden Tutorials:

Verdrahtungsdiagramm

Verbinden Sie die Reihen- und Spalten-Pins des 3x4-Tastenfelds mit verfügbaren GPIO-Pins des ESP32 S3 und den Signal-Pin des Relais mit einem separaten GPIO. Das elektromagnetische Schloss wird an die Schließerkontakte (NO) des Relais angeschlossen und über das 12-V-Netzteil versorgt, sodass der Hochspannungs-Schlosskreis von der Logik des ESP32 S3 getrennt bleibt.

Sicherheitshinweise

Das elektromagnetische Schloss arbeitet mit 12 V und zieht im aktivierten Zustand erheblichen Strom – verwenden Sie immer das Relais, um die Versorgung des Schlosses zu schalten, und verbinden Sie die Schlosskabel niemals direkt mit einem GPIO-Pin des ESP32 S3. Stellen Sie sicher, dass das 12-V-Netzteil mindestens für die auf Ihrem elektromagnetischen Schloss angegebene Stromaufnahme ausgelegt ist, und prüfen Sie, dass die gesamte Hochspannungsverkabelung vollständig isoliert ist, bevor Sie das System einschalten.

ESP32 S3 Tastenfeld elektromagnetisches Schloss Schaltplan

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

Komponenten-Pin ESP32-S3-Pin Hinweise
Tastenfeld Reihe 1 GPIO17 Erste Reihe des 3x4-Tastenfelds
Tastenfeld Reihe 2 GPIO16 Zweite Reihe
Tastenfeld Reihe 3 GPIO15 Dritte Reihe
Tastenfeld Reihe 4 GPIO7 Vierte Reihe
Tastenfeld Spalte 1 GPIO6 Erste Spalte
Tastenfeld Spalte 2 GPIO5 Zweite Spalte
Tastenfeld Spalte 3 GPIO4 Dritte Spalte
Relais-Signal (IN) GPIO18 Schaltet das Relais ein/aus
Relais VCC 5V Versorgt das Relaismodul
Relais GND GND Gemeinsame Masse
Relais COM 12V Plus + Vom Netzteil
Relais NO EM-Schloss Kabel 1 Schließerkontakt (normalerweise offen)
EM-Schloss Kabel 2 12V Minus - Schließt den Stromkreis

Für ein dauerhaftes Projekt halten Schraubklemmen die Kabel besser als Jumperkabel. Stecken Sie den ESP32 S3 einfach auf ein Schraubklemmen-Board für ESP32 S3. Hier ist dieselbe Schaltung, verdrahtet über das Schraubklemmen-Board:

ESP32 S3 Tastenfeld elektromagnetisches Schloss Schaltplan (Screw Terminal)

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

Eine andere Möglichkeit ist ein GPIO-Breakout-Board für ESP32 S3. Jeder GPIO hat einen Signal-Pin mit einem 3,3V- und einem GND-Pin daneben, wie unten gezeigt:

ESP32 S3 Tastenfeld elektromagnetisches Schloss Schaltplan (GPIO Breakout Board)

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

ESP32-S3-Code - Elektromagnetisches Schloss einschalten, wenn das Passwort richtig ist

Der folgende Code entriegelt das elektromagnetische Schloss, wenn der Benutzer am Tastenfeld ein richtiges Passwort eingibt und die Taste # drückt. Er legt eine Liste gültiger Passwörter fest, sammelt die Tastendrücke in einem Eingabe-String, löscht diesen String beim Drücken von * und vergleicht die vollständige Eingabe beim Drücken von # mit jedem gespeicherten Passwort – bei einer Übereinstimmung wird das Relais aktiviert und das Ergebnis im seriellen Monitor ausgegeben.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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/esp32-s3/esp32-s3-keypad-electromagnetic-lock */ #include <Keypad.h> #define RELAY_PIN 18 // ESP32-S3 pin GPIO18 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {17, 16, 15, 7}; // ESP32-S3 pin: GPIO17, GPIO16, GPIO15, GPIO7 connected to the row pins byte pin_column[COLUMN_NUM] = {6, 5, 4}; // ESP32-S3 pin: GPIO6, GPIO5, GPIO4 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, HIGH); // lock the electromagnetic lock } 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 password is correct => unlock"); digitalWrite(RELAY_PIN, LOW); } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Schnelle Schritte

  1. Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
  2. Verdrahten Sie Tastenfeld, Relais und elektromagnetisches Schloss gemäß dem obigen Schaltplan mit dem ESP32 S3.
  3. Verbinden Sie den ESP32 S3 über ein USB-Type-C-Kabel mit Ihrem Computer.
  4. Öffnen Sie die Arduino IDE auf Ihrem Computer.
  5. Wählen Sie Ihr Board: Wählen Sie das richtige ESP32-S3-Board im Menü Tools > Board.
  6. Wählen Sie Ihren Port: Wählen Sie den richtigen COM-Port im Menü Tools > Port.
  7. Klicken Sie auf das Symbol Libraries in der linken Seitenleiste der Arduino IDE.
  8. Suchen Sie nach "keypad" und finden Sie die Keypad-Bibliothek von DIYables.
  9. Klicken Sie auf die Schaltfläche Install, um die Keypad-Bibliothek zu installieren.
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables_Keypad by DIYables.io
The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima More info
1.0.1
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  2. Klicken Sie in der Arduino IDE auf die Schaltfläche Upload, um den Code auf den ESP32 S3 hochzuladen.
  3. Drücken Sie die Tasten 8123 und dann #.
  4. Drücken Sie die Tasten 1234 und dann #.
  5. Prüfen Sie den seriellen Monitor und beobachten Sie den Zustand des elektromagnetischen Schlosses.
  6. Profi-Tipp: Drücken Sie jederzeit *, um die aktuelle Eingabe zu löschen und neu zu beginnen – nützlich, wenn Sie sich mitten im Passwort vertippen.

Ausgabe im seriellen Monitor

Öffnen Sie nach dem Hochladen den seriellen Monitor mit 115200 Baud und geben Sie Passwörter am Tastenfeld ein. Sie sehen Statusmeldungen ähnlich der folgenden Ausgabe:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:15:04] The password is incorrect, try again [2026-06-16 09:15:21] The password is correct => unlock [2026-06-16 09:15:43] The password is incorrect, try again [2026-06-16 09:16:02] The password is correct => unlock
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Code-Erklärung

Die berechtigten Passwörter sind im ESP32-S3-Code vordefiniert. Ein String, der Eingabe-String, speichert das vom Benutzer eingegebene Passwort. Zwei Tasten auf dem Tastenfeld (* und #) haben besondere Funktionen – das Löschen der Eingabe und das Abschließen der Eingabe. Wenn eine Taste gedrückt wird:

  • Ist die gedrückte Taste keine der beiden Sondertasten, wird sie an den Eingabe-String angehängt.
  • Ist die gedrückte Taste *, wird der Eingabe-String gelöscht, damit der Benutzer die Eingabe beginnen oder neu starten kann.
  • Ist die gedrückte Taste #:
    • Der Eingabe-String wird mit allen vordefinierten Passwörtern verglichen. Stimmt er mit einem davon überein, wird das elektromagnetische Schloss eingeschaltet.
    • Unabhängig davon, ob das Passwort richtig ist oder nicht, wird der Eingabe-String für den nächsten Versuch gelöscht.

ESP32-S3-Code - Elektromagnetisches Schloss für eine bestimmte Zeit einschalten, wenn das Passwort richtig ist

Der folgende Code erweitert das Grundbeispiel, indem er das elektromagnetische Schloss bei richtiger Passworteingabe 5 Sekunden lang entriegelt und dann automatisch wieder verriegelt. Er verwendet die ezOutput-Bibliothek, um den zeitgesteuerten Ausgang nicht blockierend zu verwalten, sodass das Tastenfeld auch während der Entriegelungszeit weiter reagiert.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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/esp32-s3/esp32-s3-keypad-electromagnetic-lock */ #include <Keypad.h> #include <ezOutput.h> #define UNLOCK_TIME 5000 // in milliseconds #define RELAY_PIN 18 // ESP32-S3 pin GPIO18 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {17, 16, 15, 7}; // ESP32-S3 pin: GPIO17, GPIO16, GPIO15, GPIO7 connected to the row pins byte pin_column[COLUMN_NUM] = {6, 5, 4}; // ESP32-S3 pin: GPIO6, GPIO5, GPIO4 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); ezOutput relay(RELAY_PIN); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed relay.high(); // lock the electromagnetic lock } void loop() { relay.loop(); // MUST call the loop() function first 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 password is correct => unlock"); relay.high(); // set high before making a low pulse relay.pulse(UNLOCK_TIME); // deactivate the electromagnetic lock during UNLOCK_TIME duration } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Bitte beachten Sie, dass der obige Code die ezOutput-Bibliothek verwendet, mit der sich zeitgesteuerte Ausgänge einfach verwalten lassen, ohne die Codeausführung zu blockieren. Installationsanweisungen finden Sie in der Installationsanleitung für die ezOutput-Bibliothek.

Praxisanwendungen

Die Kombination aus Tastenfeld, Relais und elektromagnetischem Schloss mit dem ESP32 S3 eröffnet eine Vielzahl von Sicherheits- und Automatisierungsanwendungen, von einfachen Prototypen bis hin zu produktionsreifen Zugangskontrollsystemen.

  1. Türschloss für Wohnhäuser: Ersetzen Sie ein herkömmliches Schlüsselschloss an der Vorder- oder Hintertür durch ein PIN-basiertes Zugangssystem.
  2. Zugangskontrolle im Büro: Beschränken Sie den Zutritt zu bestimmten Räumen oder Bereichen mit Mitarbeiter-PINs und optionaler Ereignisprotokollierung.
  3. Sicherheit für Labor oder Werkstatt: Verhindern Sie mit einem codegesicherten Magnetverschluss den unbefugten Zugriff auf empfindliche Geräte oder Materialien.
  4. Aufbewahrungsschrank: Sichern Sie einen Aktenschrank oder Werkzeugspind elektronisch mit einer kleineren Kombination aus Relais und Schloss.
  5. Zugang für mehrere Benutzer: Speichern Sie mehrere gültige Passwörter im Sketch, damit verschiedene Benutzer jeweils ihre eigene PIN haben.
  6. IoT-gestützte Sicherheit: Erweitern Sie das System mit dem WLAN des ESP32 S3, um eine Fernentriegelung zu ermöglichen oder Warnungen zu senden, wenn wiederholt ein falsches Passwort eingegeben wird.

Video-Tutorial

Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32-S3-Projekt an.

Fordern Sie sich selbst heraus

Nachdem Ihr per Tastenfeld gesteuertes elektromagnetisches Schloss am ESP32 S3 funktioniert, probieren Sie diese zunehmend anspruchsvollen Erweiterungen aus, um Ihre Kenntnisse in der Zugangskontrolle zu vertiefen.

  1. Anfänger: Ändern Sie eines der vordefinierten Passwörter im Code und bestätigen Sie, dass der neue Code funktioniert und der alte nicht mehr.
  2. Anfänger: Fügen Sie eine LED-Anzeige hinzu, die bei einem richtigen Passwort grün und bei einem falschen rot leuchtet.
  3. Fortgeschritten: Fügen Sie einen Piezo-Summer hinzu, der bei richtiger Eingabe eine kurze Erfolgsmelodie und bei einem Fehler einen anderen Ton spielt.
  4. Fortgeschritten: Implementieren Sie eine Sperre, die die Tastenfeldeingabe nach drei aufeinanderfolgenden falschen Versuchen für 60 Sekunden deaktiviert.
  5. Experte: Speichern Sie die Passwortliste im NVS-Flash, damit sie Stromunterbrechungen übersteht, und fügen Sie einen Admin-Code hinzu, mit dem der Benutzer Passwörter zur Laufzeit ändern kann.
  6. Experte: Integrieren Sie einen RFID-Leser, damit die Tür entweder mit einer Tastenfeld-PIN oder einer RFID-Karte entriegelt werden kann.

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