Ich verwende bei mir billige Funksteckdosen aus dem Baumarkt. Bei diesen kann man auch keine Einstellungen über DIP-Schalter oder ähnliches setzen.

Ich habe vor langer Zeit schon einmal versucht, diese über das Raspberry Pi zu steuern und mir deshalb 433MHz Sender und Empfänger gekauft. Das Projekt ist damals allerdings kläglich gescheitert.

Da ich nun aber stolzer Besitzer von drei Arduino UNO's bin, wollte ich das Ganze noch einmal probieren und siehe da, nach 15 Minuten konnte ich meine Funksteckdosen problemlos ein- und ausschalten.

Benötigte Teile

Zuerst einmal benötigt Ihr natürlich einen 433MHz Sender (hier links) und Empfänger (rechts, achtung liegt auf dem Kopf!) Zusätzlich habe ich noch eine Antenne angelötet. 433MHz Sender und Empfänger Diese bekommt Ihr, zum Beispiel bei Ebay, für ca. 4€.

Als nächstes Benötigt Ihr die Library https://github.com/sui77/rc-switch, welche die Kommunikation vom Arduino zum Sender und Empfänger übernimmt.

Ich benutze bei mir ein Arduino UNO R3.

Aufbau

Sender und Empfänger Verkabelung

Funksteckdose ansprechen

Als erstes müsst Ihr die Codes eurer Fernbedienung auslesen. Dafür benötigt Ihr den 433MHz Empfänger. Wenn Ihr die Codes einmal ausgelesen habt, könnt Ihr den Empfänger wieder abbauen.

Flashed dazu zuerst das Beispiel ReceiveDemo_Advanced.ino auf euer Arduino und started den seriellen Monitor.

Ich habe Funksteckdosen von zwei verschiedenen Herstellern, weshalb ich dies nun unterteile.

Tri-State

Drückt nun eine Taste auf eurer Fernbedienung, zum Beispiel 1 an und dann 1 aus.

Im seriellen Monitor sollten jetzt die empfangenen Codes stehen: Tri-State Kopiert die komplette Ausgabe in einen Texteditor. Wichtig sind hier nachher folgende Werte:

  • Tri-State: FFF0FFF10001
  • PulseLength: 187 microseconds
  • Protocol: 1

Mit dem Folgenden Code, kann ich nun diese Funksteckdose für eine Sekunde einschalten und danach wieder ausschalten:

/*
  Example for different sending methods

  https://github.com/sui77/rc-switch/

*/

#include <RCSwitch.h>
RCSwitch sender = RCSwitch();

void setup() {
  Serial.begin(9600);
  sender.enableTransmit(3);  // An Pin 3

  sender.setProtocol(1);
  sender.setPulseLength(187);

  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {


      digitalWrite(LED_BUILTIN, HIGH);
      sender.sendTriState("FFF0FFF10001");

      delay(1000);

      digitalWrite(LED_BUILTIN, LOW);
      sender.sendTriState("FFF0FFF10010");

      delay(1000);
}

Binary

Bei einem anderen Modell von Funksteckdosen, dass ich habe, konnte der Tri-State nicht ausgelesen werden. Binary Codes Hier sende ich nun also direkt die binären Werte. Wieder habe ich die Tasten 1 an und 1 aus aufgenommen und mir die Ausgabe in einen Editor kopiert.

  • Binary: 111101111011101101011100
  • PulseLength: 505 microseconds
  • Protocol: 5
/*
  Example for different sending methods

  https://github.com/sui77/rc-switch/

*/

#include <RCSwitch.h>
RCSwitch sender = RCSwitch();

void setup() {
  Serial.begin(9600);
  sender.enableTransmit(3);  // An Pin 3

  sender.setProtocol(5);
  sender.setPulseLength(505);

  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {


      digitalWrite(LED_BUILTIN, HIGH);
      sender.send("111101111011101101011100");

      delay(1000);

      digitalWrite(LED_BUILTIN, LOW);
      sender.send("111100101111010010001100");

      delay(1000);
}

Viel Erfolg!