Die Ansteuerung von Funksteckdosen

Im Januar 2006 konnte ich das nebenstehende Funkfernschalter-Set für 9,99 Euro erwerben. Das Set besteht aus drei Funksteckdosen und einem Handsender mit dem bis zu 5 verschiedene Funksteckdosen ferngesteuert werden können. Baugleiche Teile werden auch von anderen Importeuren angeboten.
Die Funkfernsteuerung arbeitet im 433 MHz ISM-Bereich. Rechtliche Details lassen sich der Konformitätserklärung des Importeurs entnehmen.
Nachtrag: Nachdem der Importeur das Produkt vom Markt genommen hat, steht die Konformitätserklärung nicht mehr in Internet.

Die Funksteckdosen sollen über einen Webserver ferngesteuert bedient werden. Eine Lösung findet sich bereits im Netz. In dieser Anleitung werden die Eingänge des Encoders mit einem Microcontroller verbunden, um so die Fernbedienung über einen Rechner steuern zu können. Diese Lösung erfordert insgesamt 14 Leitungsverbindungen zwischen Controller und Fernbedienung und erschien damit zu aufwendig. Die Ansteuerung sollte deutlich vereinfacht werden. In der folgenden Lösung wurden die Leitungsverbindungen zwischen Rechner und Fernsteuerung auf zwei Leitungen reduziert.

Warnung

Die Funksteckdosen gibt es in einigen Varianten unter verschiedensten Handelsbezeichnungen. Das europäische Verbraucherzentrum warnt vor dem Einsatz der Funksteckdosen und hat verschiedene Rückrufe veranlaßt. Die Stiftung Warentest berichtet vom Rückruf der Funkschalter von Toom, Penny und Zack. Die Bundesanstalt für Arbeitsschutz und Arbeitsmedizin warnt hier und hier vor den Funksteckdosen.
Es gibt erhebliche Probleme bei der Kontaktgabe des Netzsteckers und insbesondere des Schutzleiteranschlusses. Daneben gibt es Varianten, bei denen an Stelle der Schmelzsicherung eine Verringerung des Leiterbahnquerschnittes vorgesehen wurde. Das verwendete Leiterplattenmaterial ist in einigen Fällen brennbar.

Analyse der Fernbedienung

Die Fernbedienung wird mit einer 12V-Batterie versorgt. Über der Batterie befindet sich ein Kodierschalter, mit dem eine von 32 möglichen Steckdosengruppen festgelegt wird. Mit den Schaltern A bis E kann jeweils eine Steckdose ein- bzw. ausgeschaltet werden. Die rote LED leuchtet, wenn der Sender in Betrieb ist.

Im Sender befindet sich ein integrierter Encoder, HX2262 von Hai Xiang Electronics Limited. Der Baustein entspricht dem PT2262, zu dem bei Princeton das Datenblatt erhältlich ist.

Der Encoder HX2262 und der Sender sind ständig mit der 12V-Batterie verbunden. Der Encoder erzeugt ein Datentelegramm mit dem der Sender moduliert wird. Das Telegramm gibt die Stellung der 12 Eingangsleitungen wieder, bei denen der Encoder drei verschiedene Zustände (Vss, Vcc und Floating) abfragt. Das Modulationssignal wird vom Encoder über einen 15 kOhm Widerstand auf den Sender gegeben. Im Ruhezustand liegt das Modulationssignal auf low-Pegel und es wird nicht gesendet. Wenn gesendet wird, leuchtet die LED durch den Betriebsstrom des Senders auf.
Beim Betätigen einer Taste wird über eine Diode eine der Steckdosen A bis E kodiert, in dem der entsprechende Encoder-Eingang auf low gelegt wird. Eine zweite Diode kodiert das Ein- oder Ausschaltsignal. Wenn die Encodereingänge D0 (Aus) oder D1 (Ein) auf Masse gelegt werden, wird das /TE-Signal am Encoder über Dioden ausgelöst und der Encoder sendet ein oder mehrere Datentelegramme.

Der Oszillator des Encoders ist mit einem 3,3 MOhm Widerstand beschaltet. Die Frequenz sollte dann gemäß Datenblatt 10 kHz betragen. Ein Encodertakt dauert vier Oszillatorschwingungen = 400 µs. Ein Telegramm besteht aus 128 Takten und dauert 51,2 ms. Eine Messung ergibt eine Taktdauer von 370 µs und eine Telegrammdauer von 47,5 ms.
Der Sender ist ein integrierter Oszillator mit SAW-Resonator der im CW-Betrieb (Ein/Aus-Tastung) arbeitet. Die typische Einschwingzeit liegt bei solchen Oszillatoren in der Größenordnung von 30 µs. Zum Senden wird Ub=12V auf den Modulationseingang geschaltet. Da die Spannung am Modulationseingang die Betriebsspannung des AVR übersteigt, wird eine Spannungsanpassungsstufe erforderlich. Die Fernbedienung wird vom Mikrocontroller gesteuert, indem das im Controller erzeugte Modulationssignal über die Schaltstufe auf den Sender gegeben wird. Die Fernbedienungsfunktion bleibt dabei erhalten. Es müssen nur zwei Leitungen (GND und Sender) vom Controller zur Fernbedienung geführt werden. Am Controller wird dazu eine Ausgangsleitung benötigt.

Aufbau des Datentelegramms

Im Telegramm gibt es zwei unterschiedliche Datenlemente.
Beide Datenelemente beginnen mit einem "H"-Pegel und enden mit einem "L"-Pegel. Das erste Datenelement, nachfolgend als Datenelement "0" bezeichnet, besteht aus einem Takt "H" und drei Takten "L". Das Zweite, nachfolgend als Datenelement "1" bezeichnet, besteht aus drei Takten "H" und einem Takt "L".
Die Darstellung des Pegels jeder Eingangsleitung wird aus zwei Datenelementen zusammengesetzt.
Wenn die Eingangsleitung auf Vss liegt, wird die Datenelementfolge "00" gesendet, bei Vcc wird "11" und bei einem floatenden Eingang wird "01" gesendet.
Am Ende des Telegramms wird ein Synchronisationssignal angehängt. Das Signal besteht aus einem Datenelement "0" und einer Pause, mit der die Dauer des Synchronisationssignals auf insgesamt 32 Takte verlängert wird.

Ein vollständiges Telegramm besteht aus 12 Signalen für die 12 Eingangsleitungen und dem Synchronsignal, damit also aus 25 Pulsen die in 128 Takten ausgesendet werden.
Damit der Dekoder einen Schaltvorgang auslöst müssen zwei korrekte, aufeinander folgende Telegramme empfangen werden.
Das nebenstehende Oszillogramm eines Datensignals findet sich in diesem Forumsbeitrag.

Der oszillografierte Code lautet: 1FFFFF0F0000
("0" steht für Vss, "1" für Vcc und "F" für Float)

Das für die Steckdosen genutzte Codierschema

Eingang	Funktion	Pegel
A0	Systemcode 1	On=0, Off=Float
A1	Systemcode 2	On=0, Off=Float
A2	Systemcode 3	On=0, Off=Float
A3	Systemcode 4	On=0, Off=Float
A4	Systemcode 5	On=0, Off=Float
A5	Empfänger A	On=0, Off=Float
A6	Empfänger B	On=0, Off=Float
A7	Empfänger C	On=0, Off=Float
A8	Empfänger D	On=0, Off=Float
A9	Empfänger E	On=0, Off=Float
D1	Ausschalten	On=0, Off=Float
D0	Einschalten	On=0, Off=Float
Zur Ansteuerung der Funksteckdosen wird das nebenstehende Codierschema genutzt. Zuerst wird A0 gesendet. Wenn der Schalter auf "On" steht, wird der Code für Vss gesendet, andernfalls der Code für Float. Wenn die fünf Adressbits (=10 Sendebits) gesendet wurden, folgt die Steckdosenkennung, die in der Fernbedienung für die Tasten fest verschaltet ist. Zum Abschluß folgt das Signal zum Ein- oder zum Ausschalten.

Die Codierung

Wenn alle Codierungsmöglichkeiten des Chips genutzt werden, ergeben sich 3 hoch 12 = 531441 verschiedene Codes. Der Informationsinhalt eines Telegramms beträgt dabei 19,02 bit. Abhängig vom Typ des Dekoders können einige der 12 Eingangsleitungen zur Datenübertragung benutzt werden. In der vorliegenden Applikation werden 2 Anschlüsse als Datenbits genutzt. Dadurch verbleiben noch 10 Anschlüsse mit 3 hoch 10 = 59049 Möglichkeiten zur Adressierung. In der vorliegenden Schaltung werden bei jedem Anschluß nur zwei Zustände (0 und Float) benutzt. Fünf Anschlüsse (A0 .. A4) dienen zur "Gruppenkodierung" und ermöglichen das Ansteuern von 32 verschiedenen Steckdosengruppen. Die Fünf verbleibenden Anschlüsse (A5 .. A9) werden zur Steckdosenauswahl innerhalb der Gruppe genutzt. Eine der Datenleitungen schaltet dann die selektierte Steckdose ein bzw. aus. So lassen sich 5 verschiedene Steckdosen in bis zu 32 Gruppen schalten. Insgesamt werden so nur 160 von 59049 möglichen Codes (32 Gruppen * 5 Steckdosen) benutzt.
Auf der Rückseite der Funksteckdose läßt sich eine Abdeckung des Gehäuses öffnen. Hier wird die Codierung der Steckdose eingestellt.
Mit den Schaltern 1 bis 5 wird der aus 5 Bit bestehende Systemcode eingestellt. Der gleiche Code muß im Fernsteuersender eingestellt werden.
Mit einem der Schalter 6 bis 10 wird eine der Steckdosen A bis E ausgewählt. Die Bezeichnung der Steckdose (A .. E) entspricht der Aufschrift auf der Fernbedienung. Die dazu erforderliche Verschaltung ist in der Fernbedienung enthalten.

Auf den Bildern wurde die Steckdose C gewählt.
Das Einschalten der Steckdose C erfolgt mit der Kodierung: 0F000FF0FF0F
Das Ausschalten der Steckdose C erfolgt mit der Kodierung: 0F000FF0FFF0

Die Software

Zur Abbildung des Telegramms im Speicher könnte man die 128 Takte in 16 Bytes ablegen. Jedes zu sendende Datenelement würde dabei 8 bit belegen. In der Senderoutine wäre dann das Datenfeld Takt für Takt abzuarbeiten.
Kompakter ist die hier gewählte Speicherung der Datenelemente in zwei Bits. So lassen sich alle 12 Datenelemente in 24 Bit bzw. 3 Byte ablegen.
Eine weitere Reduzierung der Information auf die verwendeten 160 Steckdosencodes erscheint nicht sinnvoll, da das Programm dann nicht mehr universell einsetzbar ist.
zurück