- Schaltplan für die von Google Assistant gesteuerte Heimautomation
- Einrichten der Blynk-Anwendung
- Einrichten von IFTTT mit Google Assistant und Blynk zum Lesen von Zeichenfolgen
- Programmieren von Arduino für Blynk Home Automation
- Herstellung von Leiterplatten mit PCBGoGo
- Montage der Leiterplatte
- Anschließen der Karte an AC-Netzteile / Erweiterungskarten
Mit der Weiterentwicklung virtueller Assistenten wie Google Assistant und Alexa werden Heimautomation und sprachgesteuerte Anwendungen normal. Jetzt haben wir selbst viele Hausautomationsprojekte erstellt, von einfachen automatischen Treppenlichtern bis hin zu webbasierter IoT-basierter Hausautomation mit Raspberry Pi. Aber dieses Projekt hier ist anders. Die Idee hier ist, eine praktische Hausautomationsplatine zu schaffen, die in unsere Wechselstromaggregate an unseren Wänden passt und darin verborgen bleibt. Die Platine sollte die normale Funktion unserer Netzschalter nicht unterbrechen, dh sie sollte auch mit manuellen Schaltern ein- oder ausgeschaltet werden. Und ohne es zu sagen, sollte es auch in der Lage sein, die gleiche Last mit Sprache mit Google Assistant zu steuern und einen Timer einzustellen, damit jede Last während einer voreingestellten Tageszeit automatisch ein- oder ausgeschaltet werden kann.
Dieses Projekt ist unserem ESP8266 Smart Wi-Fi-Stecker sehr ähnlich, aber da wir ESP12 verwenden werden, werden wir mehr GPIO-Pins haben, mit denen wir vier Wechselstromlasten gleichzeitig steuern können. Da wir Blynk und Google Assistant integriert haben, wird das Projekt auch interessant und praktisch. Für dieses Projekt haben wir die Leiterplatten mit dem PCBGOGO PCB Manufacturing Service gebaut. Im späteren Abschnitt des Artikels haben wir die für die Schaltung vorgesehene Gerber-Datei bereitgestellt und auch das vollständige Verfahren zum Bestellen der Leiterplatten bei PCBGOGO erläutert.
Warnung: Bei diesem Projekt wird mit der Netzspannung gearbeitet. Beachten Sie, dass beim Arbeiten mit hohen Wechselspannungen äußerste Vorsicht geboten ist. Stellen Sie sicher, dass Sie von einer erfahrenen Person beaufsichtigt werden, wenn Sie neu sind.
Schaltplan für die von Google Assistant gesteuerte Heimautomation
Das vollständige Schaltbild für die Hausautomation finden Sie weiter unten.
Wie Sie sehen können, ist die Schaltung sehr einfach. Beginnen wir die Erklärung mit dem ESP12E-WLAN-Modul. Sie können sich auch das Video unten ansehen, um eine detaillierte Projekterklärung zu erhalten. Das Modul kann genau wie NodeMCU-Entwicklungsplatinen programmiert werden und reduziert viel Platz. Standardmäßig wechselt der ESP12E beim Einschalten in den Betriebsmodus. Um es zu programmieren, müssen wir die Reset- und Flash-Taste verwenden. Das heißt, Sie müssen den ESP12 in den Programmiermodus versetzen, die Reset- und die Flash-Taste gedrückt halten und dann die Reset-Taste loslassen. Dadurch wird der ESP12E bei gedrückter Flash-Taste gestartet. Lassen Sie nun die Flash-Taste los und der ESP12E wechselt in den Programmiermodus. Nach dem Programmieren müssen Sie die Reset-Taste erneut drücken, um den ESP12E im normalen Betriebsmodus zu starten und das hochgeladene Programm auszuführen. Die Programmierstifte Rx, Rx,und Masse werden erweitert, um eine Verbindung mit einer FTDI-Karte oder einem USB-TTL-Konverter herstellen zu können. Stellen Sie sicher, dass der Tx-Pin des ESP12 mit dem Rx-Pin des Programmiergeräts verbunden ist und umgekehrt.
Die anderen Flaggenstifte I1 bis I4 und R1 bis R4 dienen zum Verbinden der Schalter und Relais. Die Pins I1 bis I4 stehen für Input Pins. Alle diese Pins unterstützen den internen Pull-Up-Widerstand, sodass wir nur die Schalter an der Erweiterungsbox über einen Pull-Down-Widerstand mit unserem Eingangspin verbinden müssen, wie unten gezeigt.
In ähnlicher Weise werden die Relaisausgangspins R1 bis R4 zur Steuerung der Relais verwendet. Wir haben eine Standard-Relaistreiberschaltung mit BC547- und IN4007-Diode verwendet, wie unten gezeigt. Beachten Sie, dass die Relais mit 5 V ausgelöst werden sollten, die ESP12E-Ausgangspins jedoch nur 3,3 V betragen. Es ist daher zwingend erforderlich, einen Transistor zum Ansteuern der Relais zu verwenden. Wir haben auch eine LED im Basispfad des Transistors platziert, damit die LED bei jedem Auslösen des Transistors ebenfalls aufleuchtet.
Um alle unsere Schaltkreise mit Strom zu versorgen, haben wir den Hi-Link AC / DC-Wandler verwendet, um unsere 220 V AC in 5 V DC umzuwandeln. Diese 5 V DC werden dann unter Verwendung eines Spannungsreglers AMS117-3,3 V in 3,3 V umgewandelt. Die 5 V werden zum Auslösen der Relais und 3,3 V zum Versorgen des ESP21-WLAN-Moduls verwendet.
Einrichten der Blynk-Anwendung
Wir haben bereits viele Blynk-Projekte wie den Wi-Fi-gesteuerten Arduino-Roboter erstellt, sodass wir uns nicht mit den Details der Einrichtung der Blynk-Anwendung befassen werden. Um es einfach auszudrücken: Installieren Sie einfach die Anwendung, erstellen Sie ein neues Projekt für NodeMCU und platzieren Sie Ihre Widgets wie unten gezeigt.
Ich habe die virtuellen Pins V1 bis V4 verwendet, um die Relais 1 bis 4 in unserem Projekt zu steuern. Stellen Sie sicher, dass Sie den Typ der zu wechselnden Taste ändern. Die Timer-Option kann auch verwendet werden, um die virtuellen Pins automatisch für die eingestellte Zeit auszulösen, selbst wenn das Telefon ausgeschaltet ist. Ich habe hier zum Beispiel einen Timer nur für den virtuellen Pin V1 verwendet, aber Sie können ihn bei Bedarf für alle vier Pins verwenden.
Stellen Sie sicher, dass Sie Ihren Blynk-Auth-Token-Wert von Ihrer Projektseite erhalten. Klicken Sie einfach auf das Muttersymbol (im obigen Bild rot eingekreist) und kopieren Sie das Authentifizierungstoken mit der Option "Alle kopieren" und fügen Sie es an einem sicheren Ort ein, den wir beim Programmieren der Arduino-Karte benötigen.
Einrichten von IFTTT mit Google Assistant und Blynk zum Lesen von Zeichenfolgen
Der einfachste Weg, Google Assistant für die Heimautomation zu verwenden, ist die Verwendung von IFTTT. Wir haben bereits viele IFTTT-Projekte mit NodeMCU und Raspberry Pi erstellt. In diesem Projekt verwenden wir die Blynk- App, um mit dem Google-Assistenten einen Webhook auszulösen. Es ist unserem sprachgesteuerten Hausautomations- und sprachgesteuerten FM-Radio-Projekt sehr ähnlich. Außer, hier werden wir blynk mit IFTTT verwenden, um Zeichenfolgen zu senden, was es viel einfacher und interessanter macht.
Grundsätzlich werden wir die virtuellen Pins V5 und V6 auf blynk verwenden, um den Triggerbefehl zu senden. V5 wird für Einschaltbefehle und V6 für Ausschaltbefehle verwendet. Wenn wir zum Beispiel sagen, schalten Sie den Fernseher und die Lampe ein. Der String-Befehl hier "TV and Lamp" wird über eine API an NodeMCU gesendet. Die Syntax der API lautet wie folgt.
http://188.166.206.43//update/V5?value=TV und Lampe
Jetzt müssen wir in IFTTT nur noch den Google-Assistenten als IF und die Webhooks als DAS verwenden. Warten Sie also auf diesen Befehl und senden Sie die Informationen mithilfe der oben genannten API an NodeMCU. Das gleiche Applet zum Einschalten ist unten dargestellt.
Beachten Sie, dass Sie beim Erstellen eines Rezepts für Google Assistant die Option " Phrase mit Textzutat" auswählen müssen. Ebenso müssen Sie dasselbe für den virtuellen Pin V6 wiederholen, um die Relais auszuschalten. Sie können das Video unten auf dieser Seite für detaillierte Informationen überprüfen.
Programmieren von Arduino für Blynk Home Automation
Den vollständigen Arduino-Code für dieses Projekt finden Sie unten auf dieser Seite. Die Erklärung dafür ist wie folgt. Stellen Sie vorher sicher, dass Sie Blynk und Program NodeMCU von Arduino IDE verwenden können. Wenn nicht, folgen Sie dem Artikel Erste Schritte mit ESP12. Fügen Sie außerdem die Blynk-Bibliothek mithilfe des Board-Managers zur Arduino IDE hinzu.
Wie immer beginnen wir unseren Code mit der Definition der Eingangs- und Ausgangspins. Hier erfolgt der Eingang von Schaltern und der Ausgang von Relais. Wir haben die Pin-Namen für alle vier Schalter als sw und Relais als rel definiert, wie Sie unten sehen können.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
In der nächsten Phase müssen Sie einige Anmeldeinformationen wie das Blynk-Authentifizierungstoken sowie den Benutzernamen und das Kennwort für den WLAN-Router eingeben, mit dem Ihre NodeMCU verbunden sein soll. Das Blinkauthentifizierungstoken kann von der blynk-Anwendung bezogen werden. Weitere Informationen hierzu finden Sie im Abschnitt zum Einrichten der Blynk-Anwendung.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // von der blynk-Anwendung abrufen char ssid = "home_wifi"; char pass = "fakepass123";
Als nächstes haben wir die Definition für eine Funktion namens read_switch_toggle () angegeben . In dieser Funktion vergleichen wir den aktuellen und den vorherigen Status unserer Schalter. Wenn der Schalter ein- oder ausgeschaltet wurde, dh wenn der Schalter umgeschaltet wurde. Der Status des Schalters ändert sich. Die Funktion überwacht diese Änderung und gibt die Schalternummer zurück. Wenn keine Änderung festgestellt wird, wird 0 zurückgegeben.
int read_switch_toggle () {int result = 0; // Alle vorherigen Werte für (int i = 0; i <= 3; i ++) notieren. Pvs_state = crnt_state; // Den aktuellen Status der Schalter lesen crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // aktuellen und pvs-Status vergleichen für (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // Wenn ein Schalter umgeschaltet ist, erhalten wir die Schalternummer als Ergebnis. return result; } else result = 0; // wenn kein Änderungsergebnis 0} return result; // Ergebnis zurückgeben}
Als nächstes haben wir den Code für die Blynk-Anwendung. Wir werden den virtuellen Pin V1 bis V6 verwenden, um unsere Smart Junction Box zu steuern. Die Pins V1 bis V4 werden verwendet, um die Relais 1 bis 4 direkt von der Blynk-Anwendung aus zu steuern. Der folgende Code zeigt, was passiert, wenn V1 von einer blynk-Anwendung ausgelöst wird. Wir lesen einfach den Status (HIGH oder LOW) und steuern das Relais entsprechend.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }}
In ähnlicher Weise können die virtuellen Pins auch zum Lesen einer Zeichenfolge aus einer Blynk-Anwendung verwendet werden. Wir werden später lernen, wie Sie eine Zeichenfolge von Google Assistant mithilfe von IFTTT und Google Assistant an NodeMCU senden. Lassen Sie uns jedoch zunächst sehen, wie der NodeMCU-Code diese Zeichenfolge liest, nach einem bestimmten Schlüsselwort sucht und das Relay entsprechend auslöst.
Im folgenden Code können Sie sehen, dass beim Auslösen des virtuellen Pins V5 die von ihm übergebene Zeichenfolge an eine Zeichenfolgenvariable mit dem Namen ON_message übergeben wird . Dann suchen wir mit dieser String-Variablen und der inderOf-Methode, ob Schlüsselwörter wie "Lampe", "LED", "Musik", "TV" vorhanden sind. Wenn ja, schalten wir diese bestimmte Last ein. Wenn das Schlüsselwort "alles" erkannt wird, aktivieren wir alles. Das gleiche kann auch für V6 gemacht werden, um die Relais auszuschalten. Wir werden mehr darüber verstehen, wenn wir in den IFTTT-Abschnitt kommen.
BLYNK_WRITE (V5) {String ON_message = param.asStr (); Serial.println (ON_message); if (ON_message.indexOf ("Lampe")> = 0) digitalWrite (rel1, HIGH); if (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); if (ON_message.indexOf ("music")> = 0) digitalWrite (rel3, HIGH); if (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); if (ON_message.indexOf ("alles")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
Schließlich müssen wir innerhalb der Schleifenfunktion nur prüfen, ob sich die Schalterposition der Tasten geändert hat. Wenn ja, verwenden wir ein Schaltergehäuse wie unten gezeigt, um die Position dieses bestimmten Relais umzuschalten.
switch (toggle_pin) {case 0: break; Fall 1: Serial.println ("Relais 1 umschalten"); digitalWrite (rel1, relay_state); Unterbrechung; Fall 2: Serial.println ("Relais 2 umschalten"); digitalWrite (rel2, relay_state); Unterbrechung; Fall 3: Serial.println ("Relais 3 umschalten"); digitalWrite (rel3, relay_state); Unterbrechung; Fall 4: Serial.println ("Relais 4 umschalten"); digitalWrite (rel4, relay_state); Unterbrechung; }}
Herstellung von Leiterplatten mit PCBGoGo
Nachdem wir verstanden haben, wie die Schaltpläne funktionieren, können wir mit dem Aufbau der Leiterplatte für unser Hausautomationsprojekt fortfahren. Das PCB-Layout für die obige Schaltung kann auch als Gerber über den Link heruntergeladen werden.
- Laden Sie GERBER for Voice Controlled Home Automation mit Google Assistant herunter
Jetzt ist unser Design fertig, es ist Zeit, sie mithilfe der Gerber-Datei herzustellen. Befolgen Sie einfach die nachstehenden Schritte, um die Leiterplatte mit PCBGOGO fertigzustellen.
Schritt 1: Gehen Sie zu www.pcbgogo.com und melden Sie sich an, wenn Sie zum ersten Mal hier sind. Geben Sie dann auf der Registerkarte PCB Prototype die Abmessungen Ihrer Leiterplatte, die Anzahl der Schichten und die Anzahl der benötigten Leiterplatten ein. Angenommen, die Leiterplatte ist 80 cm × 80 cm groß, können Sie die Abmessungen wie unten gezeigt einstellen.
Schritt 2: Klicken Sie auf die Schaltfläche Jetzt zitieren. Sie werden zu einer Seite weitergeleitet, auf der Sie bei Bedarf einige zusätzliche Parameter wie den verwendeten Spurabstand usw. festlegen können. Meistens funktionieren die Standardwerte jedoch einwandfrei. Das einzige, was wir hier berücksichtigen müssen, ist der Preis und die Zeit. Wie Sie sehen können, beträgt die Bauzeit nur 2-3 Tage und kostet nur 5 US-Dollar für unsere Leiterplatte. Sie können dann eine bevorzugte Versandart auswählen, die Ihren Anforderungen entspricht.
Schritt 3: Der letzte Schritt besteht darin, die Gerber-Datei hochzuladen und mit der Zahlung fortzufahren. Um einen reibungslosen Ablauf zu gewährleisten, überprüft PCBGOGO, ob Ihre Gerber-Datei gültig ist, bevor Sie mit der Zahlung fortfahren. Auf diese Weise können Sie sicher sein, dass Ihre Leiterplatte herstellungsfreundlich ist und Sie als engagiert erreicht.
Montage der Leiterplatte
Nachdem das Board bestellt worden war, erreichte es mich nach einigen Tagen per Kurier in einer ordentlich etikettierten, gut verpackten Schachtel, und wie immer war die Qualität der Platine fantastisch. Die von mir empfangene Leiterplatte ist unten dargestellt. Wie Sie sehen, haben sich sowohl die obere als auch die untere Ebene wie erwartet entwickelt.
Die Durchkontaktierungen und Pads hatten alle die richtige Größe. Ich brauchte ungefähr 15 Minuten, um die Leiterplatte zusammenzubauen und einen funktionierenden Schaltkreis zu erhalten. Die zusammengebaute Platine ist unten dargestellt.
Anschließen der Karte an AC-Netzteile / Erweiterungskarten
Die Platine kann in den Wechselstromsteckdosen unserer Häuser befestigt werden. Für dieses Projekt werden wir jedoch eine Erweiterungsbox verwenden. Wenn Sie eine dauerhaftere Lösung wünschen, verdrahten Sie diese in Ihren Wechselstromsteckdosen, wie Sie unten sehen können. Die Länge der Leiterplatte ist kompakt genug, um in eine Wechselstromsteckdose gesteckt zu werden.
Stellen Sie sicher, dass Sie die Sicherheitsvorkehrungen befolgen, wenn Sie mit Wechselstrom arbeiten. Befolgen Sie den nachstehenden Schaltplan, um zu verstehen, wie Sie Ihre Relais und Schalter an unsere Leiterplatte anschließen.
Das Verbindungsdiagramm ist nur für ein Relais und einen Schalter nicht verfügbar, aber Sie können es auch für die verbleibenden drei Relais replizieren. Sobald die Verbindungen hergestellt sind, sollte Ihr Board so aussehen
Stellen Sie nach dem Herstellen der Verbindungen sicher, dass Sie sie fest mit Schraubklemmen gesichert haben, und verwenden Sie für zusätzliche Sicherheit Heißkleber. Packen Sie alles wieder in die Schachtel und wir sollten bereit zum Testen sein. Die vollständige Arbeitsweise dieses Projekts finden Sie im folgenden Video.
Ich hoffe, Ihnen hat der Artikel gefallen und Sie haben etwas Nützliches gelernt. Wenn Sie Fragen haben, lassen Sie diese bitte im Kommentarbereich unten oder nutzen Sie unsere Foren.