DIY: Erstellen Sie ein SmartLock für Ihr Zuhause, das sich nur mit Ihrem Smartphone öffnet

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!

Beginnen wir ohne Zeitverlust damit, wichtige Konzepte zu studieren und an diesem Projekt zu 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.

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. Ein Servomotor ist an diese Karte 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 Arduino herunter.
  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 COM14aber es ist bei verschiedenen Computern unterschiedlich.
  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 ”
  4. Um ESP32 mit Arduino IDE zu verwenden, müssen wir spezielle Bibliotheken importieren, 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 Sketch > 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.
  5. Nun gehe Skizze> Bibliothek einschließen> 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.
  7. Klicken Sie nun auf die Werkzeuge.Ein Dropdown-Menü wird angezeigt. Stellen Sie die Platine auf ESP Dev Module.
  8. Klicken Sie erneut auf das Menü Tool und stellen Sie den Port ein, den Sie zuvor in der Systemsteuerung beobachtet haben.
  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.

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 gibt StaticJsonBuffer zurück() .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.2 \ Bibliotheken \ HTTPClient Verwenden der Bibliothek WiFiClientSecure in Version 1.0 im Ordner: C: \ Benutzer \ Pro \ AppData \ Local \ Arduino15 \ Pakete \ esp32 \ Hardware \ esp32 \ 1.0.2 \ Bibliotheken \ WiFiClientSecure Verwenden der Bibliothek ArduinoJson unter Version 6.12.0 im Ordner: C: \ Benutzer \ Pro \ Dokumente \ Arduino \ Bibliotheken \ ArduinoJson-Exit-Status 1 Fehler beim Kompilieren für das Board ESP32 Dev Module.

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 nachArduino JSON von Benoit Blanchondass 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.

Klicken Sie hier, um den Code herunterzuladen.

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.

#einschließen                  // Bibliothek einschließen, um WiFi #include zu verwenden                 // Bibliothek für Servomotor einschließen #include  // Bibliothek einschließen, um eine Verbindung zu Firebase herzustellen #define FIREBASE_HOST "xxxxxxxxxx" // xxxxxxxxxx durch Ihren Firebase-Host hier ersetzen #define FIREBASE_AUTH "xxxxxxxxxxx" // xxxxxxxxxxx durch Ihre Firebase-Authentifizierung hier ersetzen #xx " xxxxxxxxxx durch den Namen unserer Wifi-Verbindung #define WIFI_PASSWORD "xxxxxxxxxx" // Ersetze xxxxxxxxxx durch dein Wifi-Passwort Servo myservo; // 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 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")); // lese die Daten aus der Firebase // wenn der Zustand '0' ist, schaltet sich der Gleichstrommotor aus if (state == '0') {myservo.write (8); // Position der Servomotorverzögerung einstellen (1000); // warte auf eine zweite Serial.println ("Tür verschlossen"); } 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); 
Facebook Twitter Google Plus Pinterest