DIY: Erstellen eines SmartLock für Ihr Zuhause, das nur mit Ihrem Smartphone geöffnet werden kann

Heutzutage gibt es auf dem Markt so viele Schlösser, dass zum Öffnen ein Passwort erforderlich ist. Diese Schlösser sind sehr effizient, aber sehr kostspielig. Wenn wir ein Schloss für einen kleinen Zweck erstellen müssen, das automatisiert und ohne Passwort, aber mit einem Smartphone entsperrt oder gesperrt wird, können wir es mithilfe einiger Komponenten herstellen, die auf dem Markt leicht verfügbar sind.



Dieses Schloss ist sehr kostengünstig und funktioniert im kleinen Maßstab perfekt. Ein Android-Anwendung wird benötigt, um dieses Schloss zu bedienen. Lassen Sie uns nun den ESP32 einrichten, die erforderlichen Pakete darauf installieren und bestimmte Hardwareänderungen vornehmen!

Automatische Türverriegelung



Lassen Sie uns ohne Zeitverlust wichtige Konzepte studieren und an diesem Projekt arbeiten.



Wie mache ich Android betrieben SmartLock?

Schritt 1: Sammeln der Komponenten

Wenn Sie vor dem Start eines Projekts befürchten, dass Sie mitten im Projekt stecken bleiben und Zeit verschwenden, gibt es einen hervorragenden Ansatz, um dies zu vermeiden. Erstellen Sie eine vollständige Liste aller Komponenten, die Sie für das Projekt benötigen, und kaufen Sie sie zunächst. Im Folgenden finden Sie eine vollständige Liste aller Komponenten, die wir in diesem Projekt verwenden werden. Alle diese Komponenten sind auf dem Markt leicht erhältlich.



  • ESP32
  • Überbrückungsdrähte
  • Servomotor
  • Schrauben
  • Sperren
  • Bohrmaschine

Schritt 2: Erstellen der App

Da wir ein intelligentes Schloss erstellen wollen, das von einem Mobiltelefon bedient wird, müssen wir eine Android-App entwickeln, die eine Schaltfläche enthält. Durch Drücken dieser Taste können wir das Smart Lock öffnen oder schließen. Zuvor haben wir mehrere entwickelt Android-Anwendungen. Wir haben bereits eine Anwendung entwickelt, die nur aus einer Schaltfläche besteht. Mit dieser Schaltfläche werden Daten in die Datenbank gesendet. Wenn '1' in die Firebase-Datenbank gedrückt wird, wird die Schaltersperre geöffnet, und wenn '0' in diese Datenbank gedrückt wird, wird die Sperre geschlossen.

Bitte beachten Sie unseren Artikel mit dem Namen Erstellen eines drahtlosen Ein / Aus-Schalters für Ihren PC um Hilfe bei der Entwicklung Ihrer eigenen Android-Anwendung zu erhalten, mit der das Smart Lock betrieben wird.

Schritt 3: Zusammenbau der Komponenten

Da wir eine vollständige Liste aller Komponenten haben, die wir für die Fertigstellung dieses Projekts benötigen, gehen wir einen Schritt weiter und bauen alle Komponenten zusammen.



Nehmen Sie den Servomotor und verbinden Sie Vcc und Masse mit Vcc und Masse der ESP-Karte. Verbinden Sie den PWM-Pin Ihres Servomotors mit dem Pin 34 Ihres ESP32-Karte . Stellen Sie nun sicher, dass sich an einem Servomotor ein Zahnradknopf befindet. Nehmen Sie den Griff des Schlosses durch Drehen heraus und befestigen Sie den Knopf des Getriebemotors mit Hilfe einiger Klebstoffe im Schloss.

Bohren Sie nun mit Hilfe der Bohrmaschine einige Löcher in die Tür, in der Sie dieses intelligente Schloss platzieren möchten. Stellen Sie sicher, dass Sie die Löcher so bohren, dass die Löcher des Schlosses die Löcher in der Tür überlappen und die Schraube einrastet.

Schritt 4: Arbeiten

Da wir jetzt die Hauptidee hinter diesem Projekt kennen, lassen Sie uns verstehen, wie dieses Projekt funktionieren wird.

ESP32 ist das Herzstück dieses Projekts. An diese Karte ist ein Servomotor angeschlossen, und dieser Mikrocontroller hat eine Verbindung zur Firebase-Datenbank. Wenn die Schaltfläche in der App gedrückt wird, um das Schloss zu öffnen, wird '1' in die Firebase-Datenbank gedrückt, und wenn die Schaltfläche gedrückt wird, um das Schloss zu schließen, wird '0' in die Firebase-Datenbank gedrückt. Die ESP-Karte liest diesen Wert kontinuierlich in der Firebase-Datenbank. Solange 0 vorhanden ist, weist der ESP32 den Servomotor an, in seiner Ausgangsposition zu bleiben. Sobald 1 in die Feuerbasis kommt, liest die ESP-Karte diese und weist den Servomotor an, eine Drehung durchzuführen, die das Schloss öffnet.

Schritt 5: Erste Schritte mit ESP32

Wenn Sie zuvor noch nicht an der Arduino IDE gearbeitet haben, machen Sie sich keine Sorgen, da unten eine schrittweise Anleitung zum Einrichten der Arduino IDE aufgeführt ist.

  1. Laden Sie die neueste Version von Arduino IDE von herunter Arduino.
  2. Schließen Sie Ihr Arduino-Board an den PC an und öffnen Sie die Systemsteuerung. Klicke auf Hardware und Sound. Jetzt offen Geräte und Drucker und suchen Sie den Port, an den Ihre Karte angeschlossen ist. In meinem Fall ist es COM14 aber es ist in verschiedenen Computern unterschiedlich.

    Port finden

  3. Klicken Sie auf Datei und dann auf Einstellungen. Kopieren Sie den folgenden Link in die Zusätzliche Board Manager-URL. „ https://dl.espressif.com/dl/package_esp32_index.json '

    Einstellungen

  4. Um ESP32 mit Arduino IDE verwenden zu können, müssen spezielle Bibliotheken importiert werden, mit denen wir Code auf ESP32 brennen und verwenden können. Diese beiden Bibliotheken sind unter dem unten angegebenen Link angehängt. Um die Bibliothek einzuschließen, gehe zu Skizze> Bibliothek einschließen> ZIP-Bibliothek hinzufügen . Ein Feld wird angezeigt. Suchen Sie den ZIP-Ordner auf Ihrem Computer und klicken Sie auf OK, um die Ordner einzuschließen.

    Bibliothek einschließen

  5. Nun gehe Skizze> Bibliothek einschließen> Bibliotheken verwalten.

    Bibliotheken verwalten

  6. Ein Menü wird geöffnet. Geben Sie in die Suchleiste ein Arduino JSON. Eine Liste wird angezeigt. Installieren Arduino JSON von Benoit Blanchon.

    Arduino JSON

  7. Klicken Sie nun auf die Werkzeuge. Ein Dropdown-Menü wird angezeigt. Stellen Sie die Platine auf ESP Dev Module.

    Board einstellen

  8. Klicken Sie erneut auf das Menü Tool und stellen Sie den Port ein, den Sie zuvor in der Systemsteuerung beobachtet haben.

    Port einstellen

  9. Laden Sie nun den im obigen Link angehängten Code hoch und klicken Sie auf die Schaltfläche zum Hochladen, um den Code auf dem ESP32-Mikrocontroller zu brennen.

    Hochladen

Wenn Sie nun den Code hochladen, kann ein Fehler auftreten. Dies ist der häufigste Fehler, der auftreten kann, wenn Sie eine neue Version der Arduino IDE und des Arduino JSON verwenden. Im Folgenden sind die Fehler aufgeführt, die möglicherweise auf dem Bildschirm angezeigt werden.

In der Datei aus C:  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0 aus C:  Benutzer  Pro  Desktop  smartHome  code  code.ino: 2: C. :  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: Fehler: StaticJsonBuffer ist eine Klasse von ArduinoJson 5. Weitere Informationen zum Aktualisieren Ihres Programms auf ArduinoJson finden Sie unter arduinojson.org/upgrade Version 6 StaticJsonBuffer jsonBuffer; ^ In der Datei aus C:  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0 aus C:  Benutzer  Pro  Desktop  smartHome  code  code.ino: 2: C:  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: Fehler: StaticJsonBuffer ist eine Klasse von ArduinoJson 5. Weitere Informationen zum Aktualisieren Ihres Programms finden Sie unter arduinojson.org/upgrade ArduinoJson Version 6 return StaticJsonBuffer (). ParseObject (_data); ^ Für 'WiFi.h' wurden mehrere Bibliotheken gefunden. Verwendet: C:  Benutzer  Pro  AppData  Local  Arduino15  Pakete  esp32  Hardware  esp32  1.0.2  Bibliotheken  WiFi Nicht verwendet: C:  Programme ( x86)  Arduino  library  WiFi Verwenden von Library WiFi in Version 1.0 im Ordner: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  library  WiFi Verwenden der Bibliothek IOXhop_FirebaseESP32-master im Ordner: C:  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  IOXhop_FirebaseESP32-master (Legacy) Verwenden der Bibliothek HTTPClient in Version 1.2 im Ordner: C:  Benutzer  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0 Version 6.12.0 im Ordner: C:  Benutzer  Pro  Dokumente  Arduino  Bibliotheken  ArduinoJson-Exit-Status 1 Fehler beim Kompilieren für das ESP32-Dev-Modul der Karte.

Es gibt keinen Grund zur Sorge, da wir diese Fehler durch Befolgen einiger einfacher Schritte beseitigen können. Diese Fehler treten auf, weil die neue Version von Arduino JSON stattdessen eine andere Klasse hat StaticJsonBuffer. Dies ist die Klasse von JSON 5. Wir können diesen Fehler also einfach beseitigen, indem wir die Version von Arduino JSON unserer Arduino IDE herunterstufen. Einfach gehen zu Skizze> Bibliothek einschließen> Bibliotheken verwalten. Suchen nach Arduino JSON von Benoit Blanchon dass Sie zuvor installiert haben. Deinstallieren Sie es zuerst und setzen Sie dann seine Version auf 5.13.5. Nachdem wir eine alte Version von Arduino JSON festgelegt haben, installieren Sie sie erneut und kompilieren Sie den Code neu. Dieses Mal wird Ihr Code erfolgreich kompiliert.

Um den Code herunterzuladen, klicken Hier.

Schritt 6: Code

Der Code dieses Projekts ist sehr einfach, aber einige Teile davon werden unten erklärt.

1. Zu Beginn des Codes werden drei Bibliotheken eingefügt. Die erste besteht darin, Wifi auf der ESP-Karte zu aktivieren, die zweite darin, ESP die Verwendung eines Servomotors zu ermöglichen, und die dritte darin, die ESP-Karte mit der Firebase-Datenbank zu verbinden. Danach fügen wir den Firebase-Host, die Authentifizierung, den Namen unserer lokalen Internetverbindung und das Kennwort in den Code ein. Erstellen Sie anschließend ein Objekt zur Verwendung des Servomotors.

#include // Bibliothek einschließen, um WiFi zu verwenden #include // Bibliothek für Servomotor einschließen #include // Bibliothek einschließen, um eine Verbindung zu Firebase herzustellen #define FIREBASE_HOST 'xxxxxxxxxx' // xxxxxxxxxxx durch Ihren Firebase-Host hier ersetzen #define FIREBASE_AUTH 'xxxxxxxxxxx / Ersetze xxxxxxxxxxx durch deine Firebase-Authentifizierung hier #define WIFI_SSID 'xx code, xxxxxxxx' // ersetze xxxxxxxxxxx durch den Namen unserer Wifi-Verbindung #define WIFI_PASSWORD 'xxxxxxxxxxx' // ersetze xxxxxxxxxxo durch dein Passwort; // Objekt für Servomotor erstellen int pos = 0; // Variable int state erstellen; // Variable erstellen

2. void setup () ist eine Funktion, die in einem Programm nur einmal ausgeführt wird, wenn die Mikrocontroller-Karte eingeschaltet oder die Aktivierungstaste gedrückt wird. Die Baudrate wird in dieser Funktion eingestellt. Die Baudrate ist tatsächlich die Kommunikationsgeschwindigkeit in Bit pro Sekunde, über die der Mikrocontroller mit den externen Geräten kommuniziert. Der Servomotor ist mit dem Pin 34 der ESP-Karte verbunden. In dieser Funktion wird Code geschrieben, um den Mikrocontroller mit der lokalen Internetverbindung zu verbinden.

void setup () {Serial.begin (115200); // Baudrate einstellen myservo.attach (34); // PWM-Pin des Servomotors mit Pin34 von ESP32 verbinden myservo.write (60); Verzögerung (1000); // Verbindung zu WiFi herstellen. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('verbinden'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); Verzögerung (500); } Serial.println (); Serial.print ('verbunden:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }}

3. void loop () ist eine Funktion, die immer wieder in einer Schleife ausgeführt wird. In dieser Funktion teilen wir dem Mikrocontroller mit, welche Operationen wie ausgeführt werden sollen. Hier werden Daten aus der Firebase gelesen und in der genannten Variablen gespeichert Zustand . Wenn der Zustand den Wert '0' enthält, wird die Position des Servomotors auf 8 Grad eingestellt. Wenn der Wert im variablen Zustand gleich '1' ist, wird die Position des Servomotors auf 55 Grad eingestellt.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // Daten aus der Firebase lesen // Wenn der Zustand '0' ist, schaltet sich der Gleichstrommotor aus, wenn (state == '0') {myservo.write (8); // Position der Servomotorverzögerung einstellen (1000); // warte auf eine zweite Serial.println ('Door Locked'); } else if (state == '1') {myservo.write (55); // neue Position der Servomotorverzögerung einstellen (1000); // warte eine Sekunde Serial.println ('Door UnLocked'); } // Fehler behandeln if (Firebase.failed ()) {Serial.print ('Einstellung / Nummer fehlgeschlagen:'); Serial.println (Firebase.error ()); Rückkehr; } delay (1000);