montebaur.tech

This is the website's legacy version. Access the current one here.
Arduino und Funksteckdosen
Dezember 2013
Viele Leute haben zu Hause Funksteckdosen. Warum auch nicht? Sie sind echt praktisch, besonders für faule Menschen und sind heutzutage sehr billig zu bekommen. Die beiliegende Fernbedienung hat aber nur wenige Kanäle und wenn man mehrere Funksteckdosen hat, schleppt man immer mehrere Fernbedienungen mit sich rum. Deshalb werden wir im folgenden mit einem Arduino und einigen anderen Bauteilen eine Fernbedienung für diese Funksteckdosen bauen, die nicht nur sehr viele Funksteckdosen schalten kann, sondern auch ein Display hat um den Steckdosen Namen zu geben.

Ich verwende Funksteckdosen der Firma Intertechno. Bisher habe ich mit den Produkten nur positive Erfahrungen gemacht und das Angebot ist gross. Es gibt die normalen Funksteckdosen, unter anderem auch für den Aussenbereich, aber auch unterputz Geräte zum schalten und dimmen von Lampen, oder zum betätigen von Rollläden.


Das Signal der Fernbedienung entschlsseln

Um das Signal mit unserem Arduino zu versenden, welches die Funksteckdosen ein- und ausschaltet, müssen wir es empfangen und dann verstehen, wie es aufgebaut ist. Um das Signal zu empfangen brauchen wir einen Empfänger, der auf dieser Frequenz funktioniert. Meine Funksteckdosen nutzen eine 433,92 MHz Frequenz. Solche Empfänger und Sender gibt es bei eBay für nicht einmal 5 Euro. Einfach mal bei eBay nach „Arduino 433Mhz rf” suchen.

Um die Frequenzen zu entschlüsseln müssen wir sie für uns sichtbar machen. Das geht sehr gut mit dem Freeware Programm „Audacitiy”, welches für Windows und Mac OS erhältlich ist. Den Empfänger schliessen wir mit +5V und GND an eine Spannungsversorgung an (z.B. den Arduino) und die Datenleitung schliessen wir an den vorderen Teil eines Kopfhöreranschlusses an. Ja, richtig: Ein Kopfhöreranschluss, also ein ganz normaler 3,5mm Klinkenstecker. Den unteren Teil des Kopfhöreranschlusses verbinden wir mit der gleichen GND-Leitung, wie den 433,92 MHz Empfänger. Wenn wir jetzt den Kopfhöreranschluss in den Mikrofonanschluss von unserem Computer stecken und bei Audacity auf Aufnahme klicken, sollten wir sehr starke Ausschläge angezeigt bekommen. Solange man nun aber einen Knopf auf der Fernbedienung der Funksteckdosen drückt, sollte aus diesem Durcheinander ein geregeltes Signal werden. Nun können wir die Aufnahme beenden. Die Teile, in denen wir kein Signal von dem Sender empfangen haben, können wir löschen, denn für uns sind nur die Teile des Signals interessant, die zeigen was passiert, wenn wir auch wirklich einen Knopf drücken.
Auf der linken Seite des grünen Strichs im Bild oben sieht man, was was der Empfänger normalerweise empfängt. Sobald man eine Taste auf der Fernbedienung drückt, sollte das Signal ungefähr so aussehen, wie das auf der rechten Seite. Die obere Spur ist wirklich das, was der Empfänger ausgibt. Da wir den mittleren Kontakt (untere Spur) des Audiosteckers nicht angeschlossen haben, kann er als Antenne für die Spannungsschwankungen in der oberen Spur des Audiosteckers fungieren. Man sieht, dass das Signal der Fernbedienung aus vielen gleichen Signalblöcken besteht. Wenn man in Audacity näher an das Signal heranzoomt (Windows: Strg + Mausrad) (Mac OS: Cmd + Mausrad), sollte man etwas erkennen, das ungefähr so aussieht:
In den Bereichen zwischen den grünen Balken ist immer eine Information abgebildet. Diese Informationen setzen sich aus Nullen und Einsen zusammen, also Binärcode. Wenn wir auf der oberen Audiospur einen Ausschlag nach unten haben, wird von der Fernbedienung eine Eins gesendet (Spannung: +5V, oder Arduino-Pin- Zustand: HIGH). Haben wir keinen Ausschlag, wird eine Null gesendet (Spannung: 0V, oder Arduino-Pin-Zustand: LOW).

Die Informationen zwischen den grünen Balken setzen sich also aus Signalen aus Nullen und Einsen zusammen, die unterschiedlich lange gesendet wurden. Noch offensichtlicher kann man dies auf der unteren Spur beobachten.

Wenn wir nun noch weiter in die Aufnahme hereinzoomen kann man sich das Signal, welches als Eins oder Null gewertet wird, noch genauer ansehen.
Die Signale, auf die die Funksteckdose reagiert, setzten sich also aus folgenden Informationen zusammen:
1: Kurzer Ausschlag, lange Pause, langer Ausschlag, kurze Pause
0: Kurzer Ausschlag, lange Pause, kurzer Ausschlag, lange Pause
Am Ende von jedem Signalblock kommt noch einmal ein kurzer Ausschlag, gefolgt von einem Synchronisationssignal (lange Pause).

Ein kurzer Impuls dauert 350 Mikrosekunden, ein langer Impuls 3 * 350 Mikrosekunden und das Synchronisationssignal dauert 31 * 350 Mikrosekunden. Die übermittlung des ganzen Codes nimmt 2,8 Millisekunden in Anspruch.

Meine Fernbedienung ist die ITZ-500 von Intertechno. Sie hat insgesamt 16 Kanäle. Man kann die Fernbedienung auf der Rückseite auf verschiedene Frequenzen einstellen, meine Fernbedienung steht auf Frequenz „D”. Nachdem ich ein paar von den 16 Kanälen untersucht hatte, konnte ich auch schon eine Gesetzmässigkeit feststellen.
Der Code, der von der Fernbedienung gesendet wird, hat insgesamt Zwölf Informationen. Um ein anderes Gerät anzusprechen müssen nicht alle Stellen des Codes geändert werden, lediglich ein paar. Eine Information (also eine Null oder Eins in der Tabelle) ist der Bereich zwischen den grünen Balken in beiden letzten Bildern. Fangen wir mal von hinten an: Die rot, bzw. blau markierte Information des Codes entscheidet darüber, ob der angesprochene Empfänger ein- oder ausgeschaltet werden soll. Die Stellen vier bis sieben bilden einen Binärcode (Siehe gelb markierte Felder). Mit dem kleinen Unterschied, dass wir die Nullen als Einsen werten und umgekehrt. Rechnet man diesen in eine Zahl unseres Dezimalsystems um und addiert das Ergebnis mit Eins, so erhält man die Gerätenummer, unter der man den Code von der ITZ-500 aus senden kann. Nun wissen wir also wie der Code aussieht und was er bedeutet, aber wie können wir ihn mit dem Arduino duplizieren?


Das Signal mit dem Arduino duplizieren

Nachdem wir das Signal aufgenommen und entschlüsselt haben, können wir uns jetzt darum kümmern, das Signal mit dem Arduino zu senden. Dazu benötigen wir nun nichtmehr den Empfänger und den Kopfhöreranschluss, sondern unseren 433,92 MHz Sender und einen beliebigen Arduino. Der Sender wird mit GND und +5V mit dem Arduino verbunden. Die Datenleitung des Senders kommt an einen beliebigen digitalen Pin des Arduino. Ich werde Pin 13 verwenden.
Mein Programm werde ich folgendermassen aufbauen: Ich erstelle zwei zweidimensionale Arrays. In der einen speichere ich die Codes zum anschalten, in der anderen die zum ausschalten. Da diese Codes immer aus Zwölf Informationen bestehen, erstelle ich eine for-Schleife, die Zwölf mal wiederholt wird. In ihr ist eine if-Anweisung, die je nach Information, die aus der Array gelesen wurde, den Datapin des Senders für eine bestimmte Zeit HIGH oder LOW schreibt. Nach der for-Schleife muss jetzt nur noch das Synchronisationssignal gesendet werden. Damit haben wir den Grundaufbau des Programms beendet.

Ich habe mein Programm jedoch um einige andere nützliche Funktionen ergänzt. Alle eben beschriebenen Aktionen werden in verschiedenen Methoden durchgeführt. Dadurch muss ich im loop-Teil des Programms nur eine Methode aufrufen und diese erledigt das Schalten des Geräts für mich. Der Befehl lautet „Schalten(Gerätenummer, Gewünschter Zustand);”.


Ideale Antennenlänge

Um aus unserem Sender die höchstmögliche Reichweite rauszuholen, kann die ideale Antennenlänge berechnet werden.

Frequenz (f) [Hz] = 433,92 MHz = 433,92 * 106 Hz
Lichtgeschwindigkeit (c) [km/s] = 300.000 km/s

Lichtgeschwindigkeit / Frequenz = Wellenlänge
300.000 km/s / 433,92 Hz * 106 = 0,000691 km = 69,1 cm

Wellenlänge (λ (Lambda)) [cm] = 69,1 cm

Wellenlänge / 4 = Antennenlänge
69,1 cm / 4 = 17,2 cm


Erweitern des Projekts

Als Erweiterung habe ich meinem Projekt noch ein 4 x 16 LCD-Display spendiert. Jetzt kann ich den Geräten Namen geben und nicht nur stumpf Nummer 2 anschalten, sonder meine Schreibtischlampe. Das ganze kann ich mit meinem selbstgebauten analogen Schalterpad steuern.


Downloads

Arduino Programme:
- Geräte schalten: hier
- Fernbedienung mit Display: Folgt in Kürze...

Computer Software:
Audacity: Windows oder Mac OS


Quellen

dserv01.de: hier

Marius M.