Wie erstelle ich ein Smart Home-Automatisierungssystem mit dem ESP32-Modul?
In dieser modernen Zeit wächst das Konzept der Hausautomation mit großer Geschwindigkeit. An fast jedem Ort werden intelligente Systeme installiert. Smart Home Systems ist ein Konzept, bei dem alle Elektrogeräte oder Geräte mit einer einzigen Fernbedienung gesteuert werden. In diesen Systemen ist die Fernbedienung meistens eine mobile Anwendung. Da ein Android-Handy unter den Menschen am häufigsten vorkommt, ist eine Android-Anwendung die beste Option, um all diese Geräte zu steuern.
In diesem Projekt werden wir einige der Elektrogeräte des Hauses an das Relaismodul anschließen und es über den ESP32-Mikrocontroller steuern. Wir werden eine Firebase-Echtzeitdatenbank erstellen und diese über die Android-App verbinden. Diese Android-App sendet die Daten an die Cloud und anschließend an den Mikrocontroller, um das Elektrogerät ein- oder auszuschalten. Das Beste daran ist, dass Sie von überall auf der Welt die volle Kontrolle über das Umschalten Ihrer Geräte haben können. Sie benötigen lediglich eine Internetverbindung, um die Android-Anwendung zu betreiben.
Wie steuere ich Haushaltsgeräte über WLAN?
Hausautomationssysteme, die bereits auf dem Markt erhältlich sind, sind sehr kostspielig. Wir können eine ESP32-Karte verwenden, um verschiedene Haushaltsgeräte anzuschließen und sie mit einer Android-App zu steuern. Dies ist sehr kostengünstig und eine effiziente Möglichkeit, das Haus zu automatisieren. Lassen Sie uns nun einen Schritt voraus sein und Informationen sammeln, um das Projekt zu starten.
Schritt 1: Sammeln der Komponenten
Der beste Ansatz, um ein Projekt zu starten, besteht darin, eine Liste der Komponenten zu erstellen und diese Komponenten kurz zu untersuchen, da niemand nur wegen einer fehlenden Komponente in der Mitte eines Projekts bleiben möchte. Eine Liste der Komponenten, die wir in diesem Projekt verwenden werden, finden Sie unten:
Schritt 2: Studieren der Komponenten
Nachdem wir nun die Zusammenfassung dieses Projekts kennen, gehen wir einen Schritt weiter und gehen eine kurze Studie über die Funktionsweise der Hauptkomponenten durch, die wir verwenden werden.
ESP32ist eine stromsparende und kostengünstige Mikrocontroller-Karte mit integriertem WLAN und einem Dual-Mode-Bluetooth-Modul. Diese Mikrocontroller-Karte wurde von erstellt und entwickelt von Espressif Systems. Diese Karte verfügt über eingebaute Leistungsverstärker, Low-Nice-Receive-Verstärker, Filter und Antennenschalter. Es wird von einem Android-Datenkabel gespeist und kann bis zu 3,3 V am Ausgang liefern. ESP32 führt TCP / IP, die vollständige 802.11 b / g / n / e / I-WLAN-MAC-Konvention und insbesondere Wi-Fi Direct aus. Dies impliziert, dass ESP 32 einen großen Teil der WLAN-Router da draußen adressieren kann, wenn es im Stationsmodus (Client-Modus) verwendet wird. Ebenso kann ein Access Point mit vollem 802.11 b / g / n / e / I erstellt werden. ESP32 unterstützt nicht nur das neueste BLE Bluetooth 4.2, sondern unterstützt auch großartiges Bluetooth. Grundsätzlich bedeutet dies, dass alte und neue Bluetooth-Telefone / -Tische angesprochen werden können. Wenn Sie kein ESP32-Modul haben, können Sie auch ESP8266 oder eine Node-MCU verwenden. Diese Karten können verwendet werden, um dieselbe Aufgabe auszuführen, wenn sie mit WiFi verbunden sind.
Ein Relaismodul ist ein Schaltgerät. Es funktioniert in zwei Modi: Normalerweise geöffnet (NEIN) und Normalerweise Geschlossen (NC). Im NO-Modus ist der Stromkreis immer unterbrochen, es sei denn, Sie senden über Arduino ein HIGH-Signal an das Relais. Der NC-Modus arbeitet umgekehrt. Der Stromkreis ist immer vollständig, es sei denn, Sie schalten das Relaismodul ein. Stellen Sie sicher, dass Sie das Pluskabel Ihres Elektrogeräts wie unten gezeigt an das Relaismodul anschließen.
Schritt 3: Blockdiagramm
Im obigen Blockdiagramm ist der Ablauf dieses Projekts dargestellt. Die Relais werden an die elektrischen Geräte oder Geräte des Hauses angeschlossen. Eine mobile Anwendung sendet eine Auf oder AUS Befehl an die Datenbank. Diese Cloud ist über WLAN mit der ESP32-Mikrocontroller-Karte verbunden. Um das elektronische Gerät einzuschalten, senden wir eine „1“ in der Datenbank und um es auszuschalten, senden wir eine „0“ in der Datenbank. Dieser Befehl wird dann vom Mikrocontroller abgerufen, da er auch mit der Datenbank verbunden ist. Basierend auf dieser 0 oder 1 schaltet der Mikrocontroller das Relaismodul ein oder aus, was letztendlich zum Schalten der Elektrogeräte führt.
In diesem Artikel werde ich zwei Relaismodule verwenden, um Ihnen den gesamten Vorgang zu zeigen. Sie können jedoch die Anzahl der Relais erhöhen und Ihrem Programm denselben Codeabschnitt hinzufügen, wenn Sie eine größere Anzahl elektrischer Haushaltsgeräte steuern möchten.
Schritt 4: Zusammenbau der Komponenten
Jetzt, da wir eine klare Vorstellung davon haben, was wir in diesem Projekt tun möchten, sollten wir keine Zeit mehr verschwenden und mit dem Zusammenbau der Komponenten beginnen.
- Nehmen Sie ein Steckbrett und befestigen Sie den ESP32-Mikrocontroller darin. Nehmen Sie nun die beiden Relaismodule und verbinden Sie Vcc und Masse der Module parallel mit Vin und Masse der ESP32-Mikrocontroller-Karte. Verbinden Sie die In-Pin der Relaismodule an Pin34 und Pin35 der ESP32-Karte. Sie werden sehen, dass die Relais jetzt eingeschaltet sind.
- Schließen Sie die Haushaltsgeräte an das Relaismodul an. Stellen Sie sicher, dass Ihre Verbindungen mit den in der Abbildung in Schritt 2 gezeigten Verbindungen übereinstimmen.
Jetzt haben wir den Hardware-Teil unseres Systems angeschlossen. Wir werden eine Android-Anwendung entwickeln, die mit der Firebase-Datenbank verbunden wird. Wir werden die Datenbank und die Android-Anwendung in Teil 2 dieses Artikels erstellen.
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.
- Laden Sie die neueste Version von Arduino IDE von Arduino herunter.
- 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.
- 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 ”
- 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.
- Nun gehe Skizze> Bibliothek einschließen> Bibliotheken verwalten.
- Ein Menü wird geöffnet. Geben Sie in die Suchleiste ein Arduino JSON.Eine Liste wird angezeigt. Installieren Arduino JSON von Benoit Blanchon.
- Klicken Sie nun auf die Werkzeuge.Ein Dropdown-Menü wird angezeigt. Stellen Sie die Platine auf ESP Dev Module.
- Klicken Sie erneut auf das Menü Tool und stellen Sie den Port ein, den Sie zuvor in der Systemsteuerung beobachtet haben.
- 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 StaticJsonBufferjsonBuffer; ^ 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: Den Code verstehen
Der Code dieses Projekts ist sehr einfach und gut kommentiert. Trotzdem wird der Code unten kurz erklärt.
1. Zu Beginn sind Bibliotheken enthalten, damit die ESP32-Karte zu Hause oder im Büro mit der lokalen WLAN-Verbindung verbunden werden kann. Danach werden ein Link zu Ihrem Firebase-Projekt und die Authentifizierung Ihres Firebase-Projekts definiert. Anschließend werden der Name und das Kennwort Ihrer lokalen WLAN-Verbindung definiert, damit der ESP32 mit dem WLAN verbunden werden kann. Einige Pins von ESP32 sind so definiert, dass sie mit den Relaismodulen verbunden werden. und schließlich wird eine Variable deklariert, die einige temporäre Daten speichert, die aus der Firebase-Cloud stammen.
#einschließen// Bibliothek einschließen, um eine Verbindung zur lokalen Wifi-Verbindung herzustellen #include // Bibliothek einschließen, um eine Verbindung zur Firebase-Datenbank herzustellen #define FIREBASE_HOST "coma-patient.firebaseio.com" // den Link Ihres Firebase-Projekts einschließen #define FIREBASE_AUTH "UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf" "// der Name der WiFi-Verbindung Ihres Hauses oder Büros #define WIFI_PASSWORD" abcd "// Passwort der WiFi-Verbindung Ihres Hauses oder Büros int r1 = 34; // Pin zum Anschließen von Relais 1 int r2 = 35; // Pin zum Anschließen von Relais 2 int temp; // variabe um Daten zu übertragen
2. void setup ()ist eine Funktion, in der wir die INPUT- oder OUTPUT-Pins initialisieren. Diese Funktion stellt auch die Baudrate mithilfe von ein Serial.begin () Befehl. Die Baudrate ist die Kommunikationsgeschwindigkeit des Mikrocontrollers. Hier werden einige Codezeilen hinzugefügt, um den ESP32 mit der lokalen WLAN-Verbindung zu verbinden. Die Karte versucht, eine Verbindung zur lokalen WLAN-Verbindung herzustellen, und gibt "Verbindung" aus. im seriellen Monitor. Es wird "Verbunden" gedruckt, wenn die Verbindung hergestellt wird. Um dies zu überwachen, ist es besser, den seriellen Monitor zu öffnen und dort seinen Zustand zu überprüfen.
void setup () {Serial.begin (115200); // Einstellen der Baudrate // Verbindung zum WLAN 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 wiederholt in einer Schleife ausgeführt wird. In dieser Schleife schreiben wir einen Code, der der Mikrocontroller-Karte mitteilt, welche Aufgaben wie ausgeführt werden sollen. Wir haben die Daten gegen abgerufen Licht und ACaus der Datenbank und in den beiden temporären Variablen gespeichert. Dann werden vier Bedingungen angewendet, um die zwei Appliances gemäß der aus der Datenbank abgerufenen 0 oder 1 zu wechseln.
void loop () {// Wert abrufen temp1 = Serial.println (Firebase.getFloat ("light")); // erhalte den Wert für das Umschalten des Lichts temp2 = Serial.println (Firebase.getFloat ("AC")); // erhalte den Wert für das Umschalten der Lüfterverzögerung (1000); if (temp1 == 1 && temp2 == 1) {// Licht einschalten und digitalWrite (r1, HIGH) lüften; digitalWrite (r2, HIGH); } if (temp1 == 0 && temp2 == 1) {// Zum Einschalten des Lüfters und zum Ausschalten des Lichts digitalWrite (r1, LOW); digitalWrite (r2, HIGH); } if (temp1 == 1 && temp2 == 0) {// Lüfter ausschalten und Licht einschalten digitalWrite (r1, HIGH); digitalWrite (r2, LOW); } if (temp1 == 0 && temp2 == 0) {// Zum Ausschalten des Lüfters und zum Ausschalten des Lichts digitalWrite (r1, LOW); digitalWrite (r2, LOW); }}
Dies war Teil eins der "Wie erstelle ich ein Smart Home-System mit ESP32?". Sie können weitere Relaismodule hinzufügen, wenn Sie weitere Haushaltsgeräte steuern möchten. Sie müssen lediglich Daten aus der Firebase lesen und weitere Bedingungen für das Umschalten hinzufügen. Im nächsten Artikel werde ich erklären, wie man eine Android-Anwendung und eine Firebase-Datenbank entwickelt. Ich werde Schritt für Schritt erklären, wie die Android-App mit der Firebase verbunden und Daten an diese gesendet werden.
Um zum nächsten Tutorial zu gelangenKlicken Sie hier