Günstige Home Automation mit Wireless-Outlet-Module

6 Schritt:Schritt 1: Was Sie benötigen, um weiter ... Schritt 2: Schauen Sie Kumpel, ich bin ein Reverse Engineering! Schritt 3: Re-Implementierung des Protokolls auf dem Mikrocontroller Schritt 4: Prüfung 1 ... 2 ... 3 ... Schritt 5: [! New] Erhöhen Sie die Reichweite! Schritt 6: Computer Coding - Kontrollieren Sie Ihre Lampen aus dem Internet!

Günstige Home Automation mit Wireless-Outlet-Module

Günstige Home Automation mit Wireless-Outlet-Module

Es ist die Zeit des Jahres wieder, wenn die Geschäfte sind voll von Weihnachtsschmuck und Accessoires. Weihnachten kann noch Monate entfernt, aber nie die Macht von Hacking saisonale Urlaub Zubehör unterschätzen, ist ein Accessoire vor allem unglaublich nützlich ganzjährig in Hausautomationssysteme. Dies ist, natürlich, drahtlose ferngesteuerte Steckdosen. Das sind kleine Kästchen, die in die Wand mit einem Auslass an denen, die als Schalter wirken stecken. Eingeschlossen ist eine drahtlose Fernbedienung mit Ein / Aus-Tasten für eine oder mehrere Austrittsmodulen. Diese kommunizieren oft auf Hacker freundliche Funkfrequenzen mit einfachen Protokollen, die einfach konstruiert sind umzukehren. Durch die Kombination dieser drahtlose Steckdose Module mit einem einfachen Sendeschaltung, können Sie AC Lampen und Geräte zu einem computergesteuerten Home-Automation-Netzwerk anzuschließen.

Ich hatte zuvor erworbenen 5-pack von drahtlosen DBTech Stellen von Amazon und umgekehrt ihr Protokoll, fand aber, dass sie nur ein Signal, das eine umschaltbare Befehls angeboten wurde. Das ist nicht ideal für Home-Automation, wo wir explizit senden an oder aus, um Probleme durch verpasste Sendungen zu vermeiden möchten. Zum Glück fand ich eine 3-pack von "Ferienzeit" Stellen bei Walmart für € 15, ziemlich gutes Geschäft für das, was man mit ihnen machen kann, und diese haben auf und neben Tasten auf der Fernbedienung.

Schritt 1: Was Sie benötigen, um weiter ...

  1. Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Wenn Sie genau die gleichen Verkaufsstellen habe ich gekauft, die Sie nicht brauchen, um Reverse Engineering sie wie ich die Arbeit für Sie. Allerdings sind Sie wahrscheinlich nicht exakt die gleichen wie diejenigen, mich zu bekommen, und es gibt Tonnen von Marken gibt. Sie sind alle ähnlich, aber Sie müssen wahrscheinlich Ihr eigenes Reverse-Engineering-Tools und Fähigkeiten, um das Protokoll zu knacken.

    Zunächst holen Sie sich eine Reihe von Radio-Sendern und Empfängern von SparkFun. Holen Sie sich sowohl die 315 MHz und 434 MHz Versionen von jedem, da diese Ausgänge können entweder Frequenz verwenden (meine 5-pack Satz verwendet 434, diese verwenden 315). Sie müssen den Empfänger, um das Protokoll zu entschlüsseln, wenn Sie zu zerlegen die Fernbedienung und die Sonde um in ihm wollen. Ich würde noch empfehlen, die Empfänger zur Bestätigung Ihrer Sender sendet. Wenn Sie den Receiver verwenden, müssen Sie nicht einmal zu riskieren Garantie ausgeschlossen durch die Öffnung der Fernbedienung.

    315MHz Transmitter: https://www.sparkfun.com/products/10535
    315MHz Empfänger: https://www.sparkfun.com/products/10533
    434MHz Transmitter: https://www.sparkfun.com/products/10534
    434MHz Empfänger: https://www.sparkfun.com/products/10532

    Sie wollen auch einen Mikrocontroller von einer Art, habe ich aber keine ATTiny2313 AVR, PIC, Arduino oder ähnlichen tun sollten. Sie müssen wissen, wie sie ihre Mikrosekunde und Millisekunde Verzögerung Funktionen nutzen zu können oder schreib eine Verzögerungsschleifen. Sie wollen auch einen Mikrocontroller, eine serielle Schnittstelle verfügt, so können Sie mit dem Computer sprechen.

    Für das Reverse Engineering wird auch benötigen Sie entweder ein Oszilloskop oder einen Logikanalysator. Diese können bei höheren Geschwindigkeiten laufen so ein DIY-Analysator aus einem Arduino möglicherweise nicht schnell genug für Mikro angelegte Impulse sein. Meine Rigol DS1052E 100MHz Umfang wirkt Wunder für diese.

Schritt 2: Schauen Sie Kumpel, ich bin ein Reverse Engineering!

  1. Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Jetzt ist es Zeit zu beginnen Umkehrung der Protokoll. Schalten Sie Ihren 315MHz und 434MHz Empfänger-Module in ein Steckbrett, legen Antennendrähte für jeden, und legen Sie Ihren Rahmen / Analysator zu einem der beiden Empfänger. Sie sollten Zufallsrauschen zu sehen. Das ist normal.

    Um das Signal der Sender sendet zu sehen, setzen Sie Ihren Analysator auf Auto-Modus oder Bilder aufzunehmen, drücken und halten Sie eine der Tasten auf der Fernbedienung. Unterbrechen Sie Ihre Analysator vor dem Loslassen der Taste, um sicherzustellen, dass Sie die Probe eingefangen haben. Diese Fernbedienungen senden Sie eine kurze Nachricht, wiederholt kontinuierlich, solange Sie die Taste gedrückt halten sind. Sie lassen in der Regel eine 5-10ms Lücke zwischen Übertragungen, die es leicht, die Nachricht in dem aufgenommenen Wellenform zu lokalisieren lässt.

    Die für diese Module verwendet Konvention ist in der Regel kurzen Pulsen und lange Impulse. Ich bin mir nicht sicher, welche angeblich 0 oder 1 darstellen wird, so dass ich sie nannte S (kurz) und L (lang), um den Überblick zu behalten. Verwenden Sie den Cursor Funktionalität Ihres Analysator, sowohl die hohen und niedrigen Zeiten sowie die Gesamtimpulsperiode zu messen. Dadurch wird beim Schreiben der Code, der diese Impulse erzeugt werden.

    Notieren Sie sich auch die Sequenzen unter Verwendung von S und L (oder 1 und 0, wenn Sie sie zuweisen möchten). Wiederholen Sie diesen Vorgang für jede Taste auf der Fernbedienung, um alle Code zu erhalten. In der Regel gibt es einen Code für ON und einer für OFF-Code für jeden Ausgang Modul sein. Einige Verkaufsstellen, wie ich schon sagte, nur ein Code, der den Ausgang schaltet. Vermeiden Sie diese, wenn Sie können.

    Wenn Sie alle Codes Taste nach unten haben, legen Sie sie und schauen hinunter die Spalten, um Spalten, die alle gleich sind zu finden. Sie finden wahrscheinlich eine Reihe von Bits am Anfang und am Ende, die gleich sind, mit den Veränderungen in der Mitte. Mark diese unveränderlichen Bits sowohl am Anfang und Ende als Präambel und Endsequenz sind.

Schritt 3: Re-Implementierung des Protokolls auf dem Mikrocontroller

  1. Günstige Home Automation mit Wireless-Outlet-Module
    Sobald Sie die vom Remote-Protokoll extrahiert hat, sind Sie nun bereit, neu zu implementieren Sie es auf Ihrem Mikrocontroller. Beachten Sie zunächst, welche Ihnen die Daten von bekam Empfänger. Verwenden Sie diese Frequenzsender in Ihrer Schaltung. Verdrahten Sie es auf Ihrem Mikrocontroller einem verfügbaren GPIO-Pin und merken, welche Pin es ist. Achten Sie außerdem darauf Ihres Mikrocontroller Programmierer verbunden ist, und beachten Sie die Taktfrequenz Ihrer Mikrocontroller, der als Grundlage für die genaue Verzögerungen verwendet wird.

    Beginnen Sie mit dem Schreiben von Funktionen für lange und kurze Impulse. Nachfolgend finden Sie einige Pseudocode für den Einstieg können einzelne Implementierungen variieren.

    Leere bit_long ()
    {
    set_pin_high ();
    Verzögerung (HIGH_TIME_LONG);
    set_pin_low ();
    Verzögerung (LOW_TIME_LONG);
    }

    Leere bit_short ()
    {
    set_pin_high ();
    Verzögerung (HIGH_TIME_SHORT);
    set_pin_low ();
    Verzögerung (LOW_TIME_SHORT);
    }

    Sie erhalten die Zeitkonstanten durch die Messung der Pulsbreiten mit Ihrem Analysator oder Cursorfunktionen Oszilloskops. Verwenden Sie die entsprechende Verzögerungsfunktion (Mikrosekunden / Millisekunden), um am besten passen die gemessene Breite. Auf AVR sind _delay_us () und _delay_ms (), die beide von der <util / delay.h> Bibliothek.

    Starten Sie dann die Umsetzung Ihrer Übertragungen. Beginnen Sie, indem Sie eine Funktion für den Oberbegriff und eine Funktion für die Endsequenz, dann stellen Funktionen für die interne Daten jeder einzelnen Taste. Sie können entweder einen Funktion für jede Taste, oder wenn Sie herausfinden, was das Protokoll tut, können Sie eine Funktion, die die entsprechende Meldung aus der Steckdose, Anzahl und on / off-Eingänge baut schreiben. Ich wählte das erstere, wie das Protokoll offenbar nicht Ausgangsnummer direkt korrelieren und Ein / Aus-Zustand in seine Daten, sondern es war nur ein langer Impuls für die gedrückte Taste. Beispielsweise:

    Leere send_preamble ()
    {
    bit_short ();
    bit_long ();
    bit_long ();
    bit_short ();
    bit_long ();
    bit_short ();
    }

    Schließlich verwenden Sie diese Funktionen in einer for-Schleife sie etwa 10-20 mal zu senden, mit der entsprechenden Verzögerung zwischen Übertragungen (Sie können diese Verzögerung mit der Reichweite oder Analysator messen). Beispielsweise:

    for (int i = 0; i <10; i ++)
    {
    send_preamble ();
    send_outlet_1_on ();
    send_end_sequence ();
    _delay_ms (10);
    }

    Dann bauen eine switch / case oder Kaskadierung if / else-Anweisung mit einem dieser Blöcke für jede Taste mit Ausgangsnummer und Schaltzustand als if / else Bedingungen.

    Schließlich importieren Sie eine serielle Bibliothek oder schreib eine serielle Schnittstelle Interrupt-Routine. In diesem Interrupt-Routine, stellen sowohl die Ausgangsnummer und den Schaltzustand von empfangenen Daten. Verwenden flüchtigen Variablen, so dass sie innerhalb einer ISR geändert werden, so dass die Hauptschleife kann bis auf den eingestellten Variablen holen und führen Sie die gewünschten Übertragungs. Vergessen Sie nicht Ihre serielle Schnittstelle initialisiert und stellen Sie Ihre Baud-Rate, bevor Sie Ihren Hauptschleife!

Schritt 4: Prüfung 1 ... 2 ... 3 ...

  1. Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Schließen Sie eine serielle Pegelumsetzer oder FTDI-Chip, verbinden Sie es mit Ihrem Computer, und starten Sie ein Terminalprogramm, das die Daten in dem Format, das Sie wählten senden. Ich bevorzuge Realterm, wie es können beliebige Byte Eingangs- als hex oder dezimal senden. Stecken Sie in Ihre Steckdose Modul und stecken Sie etwas, beispielsweise eine Lampe hinein. Dann senden Sie Ihre ON-Paket für die Steckdose. Mit etwas Glück wird Ihre Lampe an und klicken Sie auf hell leuchten, was Ihr Code ist ein Erfolg. Ansonsten ist es Zeit, den Tastkopf auf Dateneingang des Senders und überprüfen bleiben, um sicherzustellen, was du bist Ausgabe ist das gleiche wie das, was Sie zuvor notiert. Eventuell müssen Sie den Zeitpunkt, als das, was Sie Ausgang kann nicht genau das gleiche wie das, was der Sender sein anpassen. Stellen Sie sicher, Ihre Übertragungen übereinstimmen und dass Ihre Zeiten korrekt sind. Passen Sie Ihre Antennendraht ggf. und versuchen, Quellen elektrischer oder Radio verursachen (Programmierer, Empfänger, Umfang, Analysator) durch die Beseitigung unnötiger Komponenten von Ihrem Steckbrett und Ausschalten Geräte zu eliminieren. Mit etwas Diagnostik, sollten Sie in der Lage, Ihren Code in Arbeitszustand ziemlich leicht zu zwicken.

    Wenn es funktioniert, testen Sie alle Kombinationen aus ein- und ausgeschaltet, um sicherzustellen, dass alle Ihre Codes korrekt sind. Wenn alles gut ist, ist es Zeit, für die Integration zu bewegen auf dem Computer an Seite in einem vernetzten System oder Home-Automation-Setup.

Schritt 5: [! New] Erhöhen Sie die Reichweite!

  1. Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Günstige Home Automation mit Wireless-Outlet-Module

    Ich füge diesen neuen Schritt ein Jahr nach dem ersten Projekt, um ein Problem hatte ich mit ihm zu beheben. Die Funktionalität des Wireless-Outlets ist groß, aber ich hatte Probleme, wo Steckdosen in Zimmer weiter vom Server entfernt wurden nicht sehr oft reagiert. Dieser neue Schritt zeigt, wie Sie die Reichweite Ihres Senders für eine optimale Leistung zu erhöhen.

    Sender und Antennenspannung - Der Bereich wird im Wesentlichen durch zwei Dinge bestimmt. Ich habe nicht mit der Berechnung der optimalen Antennenlänge durcheinander, aber ich weiß, dass ein Sender in der Lage, den Betrieb von bis zu 12 V DC wird nicht auftreten wird am besten auf 5V von einem USB-Anschluss. In der Original-Fernbedienung, nutzt der Sender einen 12V Mini-Akku (1,5 V, welche 6 Knopfzellen gestapelt ist) und hat eine große Reichweite. Er schaltet einfach Stellen auf der anderen Seite des Hauses zuverlässig, so dachte ich, ich brauchte, um meine Spannung zu erhöhen.

    Problem. Ich bin mit USB-Stromversorgung durch einen USB-Seriell Platte (Prolific PL2303 basiert) und bietet nur zwei Spannungsausgänge - 5V direkt von USB und 3,3 V geregelt. Ich lasse alles ab von 5V, aber es ist nicht genug. Die Antwort? Verwenden Sie eine Spannungsverdopplungsschaltung, um die 5V bis zu 10V und Power der Sender aus der 10V steigern.

    Ein Spannungsdoppler ist eine einfache Diode und Kondensator-Schaltung, die eine Eingangsspannung unter Verwendung eines auf einem Mikrocontroller PWM Pin verdoppeln kann. Grundsätzlich Sie den Kondensator durch den Antrieb des Pin niedrig ist, dann "Pumpe" die Spannung, indem Sie den Stift hoch und das Hinzufügen von Ladespannung des Kondensators auf Ihre 5V Mikrocontroller Pin. Das Ausgangssignal geht durch eine weitere Diode, einen anderen Kondensator 10V aufzuladen. Ich hatte keine Probleme läuft der Sender so schnell, wie ich brauchte, um aus der Lieferung und schaffte es, rund 8 V unter Last zu erhalten. Nicht schlecht!

    Ich erfuhr von der Technik über Dave Jones 'EEVBlog in diesem Video:

    auf jeden Fall geben, dass eine vollständige Uhren wenn Sie Interesse an der Theorie dahinter sind.

Schritt 6: Computer Coding - Kontrollieren Sie Ihre Lampen aus dem Internet!

  1. Günstige Home Automation mit Wireless-Outlet-Module
    Für den Anfang, schreiben Sie eine einfache Kommandozeilen-Dienstprogramm, das die serielle Schnittstelle an der entsprechenden Baudrate öffnet, bildet ein Paket basierend auf Ausgangsnummer und Schaltzustand, und überträgt sie an den Mikrocontroller. Das gibt Ihnen ein Befehlszeilen-Dienstprogramm, um Ihre Lichter ein- und ausschalten. Sie können es in Skripte oder rufen Sie es von anderen Versorgungsunternehmen. Hier ist mein;

    #include <cstdlib>
    #include "serial_port.h"

    using namespace std;

    int main (int argc, char * argv [])
    {
    if (argc! = 3)
    {
    return 0;
    }

    serial_port Port ("/ dev / ttyUSB0", 38400);

    char pkt [] = {0x00, (char) atoi (argv [1]), 0xAA, (char) atoi (argv [2]), 0xFF};
    port.serial_write (pkt, 5);
    port.serial_close ();
    return 0;
    }

    Das ist alles dort ist zu ihm! Wir haben jetzt eine Befehlszeilen-Dienstprogramm, lampctl, um die Lampen ein- und ausschalten von der Kommandozeile aktivieren. Als Test remoted ich auf meinem Android-Handy und war in der Lage, um die Lampen ein- und ausschalten von meinem Handy einzuschalten. Wie genial ist das!

    Ich habe nicht zu größeren Home-Automation-Setups sah noch nicht, aber ich möchte wirklich. Diese Instructable ist nur ein kleiner Teil dessen, was könnte eine viel größere eingerichtet werden. Wenn ich nicht mehr kühlen Home Automation Sachen zu finden Ich werde mehr Instructables darauf zu machen. Es wird Spaß machen Drehen meinem Wohnzimmer Lichter an und aus zur Hälfte aus dem ganzen Land in dieser Woche!

    Befestigt sind die Codedateien für dieses Projekt. Die OutletControl.c, fanbus.c und fanbus.h Dateien sind die Dateien, mit AVR AVR-GCC oder AVR Studio zusammenstellen, während die lampctl.cpp, serial_port.cpp und serial_port.h Dateien sind die PC-Code für den Befehl lampctl Zeilenprogramm. Beachten Sie, dass meine serial_port Funktion ist nicht die Baudrate richtig eingestellt ist, so stellen Sie diesen mit stty -F / dev / ttyX 38400 ttyX wo ist Ihre serielle Schnittstelle (USB0 für mich).