WLAN-Türschloss mit Arduino & ESP8266 – Per Smartphone entsperren
Komponenten und Zubehör
| Bauteil | Anzahl | Hinweis |
|---|---|---|
| Arduino UNO R3 | 1 | Hauptcontroller |
| ESP8266 WiFi-Modul (z. B. ESP-01) | 1 | Mit PCB-Antenne |
| Darlington-Leistungstransistor (z. B. TIP120) | 1 | Für Solenoid-Ansteuerung |
| Tür-Solenoid (12 V, Hub ~35 mm) | 1 | Schlossmechanismus |
| Widerstände, Jumper-Kabel, Steckbrett | nach Bedarf |
Benötigte Software
- Arduino IDE (mit ESP8266-Board-Paket)
Projektbeschreibung
Dieses Tutorial zeigt, wie man ein Arduino-basiertes Smart-Türschloss baut, das per Smartphone entsperrt wird. Ein QR-Code an der Tür führt zu einer Web-Login-Seite, die vom ESP8266 gehostet wird. Nach korrekter Passworteingabe aktiviert der Arduino das Solenoid-Schloss.

Vorteile dieses Ansatzes
- Kein Tastenfeld, keine mechanischen Schlösser, kein Fingerabdrucksensor nötig
- Einfacher Aufbau: Arduino + ESP8266 + Solenoid-Treiber
- Zugang per QR-Code – ideal für Büros, WGs, Lagerräume
- Erweiterbar: Zeitbasierte Berechtigungen, Mehrbenutzer-Verwaltung
Schaltung

Wichtige Verbindungen:
- ESP8266 TX → Arduino RX (Pin 0), ESP8266 RX → Arduino TX (Pin 1) – Spannungsteiler für ESP RX empfohlen!
- Arduino Pin 9 → Basis des Darlington-Transistors (via 220 Ω)
- Solenoid: Eine Seite an 12 V, andere an Kollektor; Emitter an GND
- Freilaufdiode (1N4007) parallel zum Solenoid (Kathode an 12 V)
- GND von Arduino, ESP8266 und 12-V-Netzteil verbinden
Programmierung
1. Arduino-Code (Solenoid-Steuerung)
Empfängt Passwort per Serial vom ESP8266, prüft es und schaltet Pin 9 für 300 ms HIGH.
String inputString = "";
bool stringComplete = false;
void setup() {
Serial.begin(115200);
inputString.reserve(200);
pinMode(9, OUTPUT);
}
void loop() {
if (stringComplete) {
if (inputString == "your_password") { // Passwort hier anpassen!
digitalWrite(9, HIGH);
delay(300);
digitalWrite(9, LOW);
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') stringComplete = true;
}
}
2. ESP8266-Code (Webserver & Login-Seite)
Hostet eine einfache HTML-Seite mit Passwortfeld. Bei Klick auf „Log In“ wird das Passwort per GET an /save gesendet und per Serial an den Arduino weitergeleitet.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "YourSSID";
const char* password = "YourPASSWORD";
ESP8266WebServer server(80);
char htmlResponse[3000];
void handleRoot() {
snprintf(htmlResponse, 3000,
"<!DOCTYPE html><html><head>"
"<style>body{background:#a00035;}h3,p,div{color:white;text-align:center;}"
"input{text-align:center;}</style>"
"<meta charset='utf-8'><meta name='viewport' content='width=device-width, initial-scale=1'>"
"</head><body>"
"<h3>Electropeak Smart Security Door</h3>"
"<p>Please type your ID</p>"
"<div>ID: <input type='text' name='pass_word' id='pass_word' size=10 autofocus></div>"
"<div><br><button id='save_button'>Log In</button></div>"
"<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js'></script>"
"<script>"
"$('#save_button').click(function(e){"
" e.preventDefault();"
" var pass = $('#pass_word').val();"
" $.get('/save?pass=' + pass);"
"});"
"</script></body></html>");
server.send(200, "text/html", htmlResponse);
}
void handleSave() {
if (server.arg("pass") != "") {
Serial.println(server.arg("pass")); // An Arduino senden
}
}
void setup() {
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print(".");
}
Serial.println("\nWiFi connected");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.on("/save", handleSave);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
ESP8266 in Arduino IDE einrichten
- Datei → Voreinstellungen → Zusätzliche Boardverwalter-URLs:
https://arduino.esp8266.com/stable/package_esp8266com_index.json - Werkzeuge → Board → Boardverwalter → „esp8266“ installieren
- Board: „Generic ESP8266 Module“ wählen
- USB-zu-TTL-Converter anschließen, richtigen COM-Port wählen, hochladen
Inbetriebnahme
- Beide Codes hochladen (Arduino per USB, ESP8266 per TTL-Converter)
- Seriellen Monitor der Arduino IDE öffnen (115200 Baud)
- IP-Adresse des ESP8266 notieren (wird beim Start ausgegeben)
- Im Browser IP eingeben → Login-Seite erscheint
- Passwort eingeben → Solenoid aktiviert sich für 300 ms

QR-Code erstellen
- Online-QR-Generator nutzen (z. B. qr-code-generator.com)
- IP-Adresse des ESP8266 (z. B.
https://192.168.1.42) eingeben - QR-Code erstellen, ausdrucken, an der Tür anbringen

Nutzung: Besucher verbindet sich mit dem WLAN, scannt QR-Code, gibt Passwort ein → Tür öffnet sich.
Weiterentwicklungsideen
- Professionelles UI für Login-Seite (CSS-Framework, Responsives Design)
- Mehrere Benutzer mit unterschiedlichen Berechtigungen
- Zeitgesteuerte Zutrittsrechte (z. B. nur Mo–Fr 8–18 Uhr)
- Logging: Wer wann geöffnet hat (SD-Karte oder Cloud)
- Türstatus-Sensor (Reed-Kontakt) für „Tür offen“-Alarm
Quelle
Original-Tutorial auf ElectroPeak – weitere Projekte dort verfügbar.
Herstellungsprozess
- Banktresore: Geschichte, Design und Zukunft der Sicherheit
- WLAN-gesteuerter Raspberry Pi Roboter mit Python bauen – Schritt-für-Schritt
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- Sicheres Arduino RFID-Schloss bauen – Schritt-für-Schritt-Anleitung
- Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
- Arduino UNO WiFi Webserver: LED per Browser steuern
- WLAN-Türschloss mit Arduino & ESP8266 – Per Smartphone entsperren