Funksteckdosen Steuern mit Arduino
Ich habe mir schon
vor geraumer Zeit kleine 433MHz Sender-
und Empfänger-Module bestellt, mit dem Ziel, meine kaputte
Funksteckdosenfernbedienung zu ersetzen. Nun habe ich die Module
wiederentdeckt
und mich an einen neuen Versuch gewagt. Ich muss sagen ich war sehr
überrascht,
dass alles auf Anhieb funktioniert hat.
Das von mir verwendetet Funkmodul trägt den Namen
XD-FST
und ist besonders günstig. Auf
dieser Seite sind die wenigen zu bekommenden Informationen
zusammengengefasst:
http://forum.hobbycomponents.com/viewtopic.php?f=39&t=1324
Steuern wollte ich Funksteckdosen vom
Typ ME FLS 100 die ich vor einiger
Zeit bei
Reichelt bestellt hatte:
Als Controller habe ich einen Arduino
Uno verwendet. Der
Aufbau ist sehr simpel:
Der Grund warum das Projekt so
einfach war, lag vor allem an
der guten Library, die einem fast alle Arbeit abnimmt. Gefunden habe
ich Sie
unter
https://code.google.com/p/rc-switch/
Das Beispiel TypeB_WithRotaryOrSlidingSwitches
entsprach genau dem Protokoll der von mir verwendeten Funksteckdosen.
Die
einzigen Anpassungen musste ich bei den beiden Parametern in dem
SiwtchON/OFF Aufruf
machen. Nach dem Einspielen hat alles auf anhieb funktioniert. Das
erlebt man
wirklich nicht alle Tage!
Zum Schluss noch der Quelltext zum
erwähnten Beispiel:
/*
Example for outlets which
are configured with
two rotary/sliding switches.
http://code.google.com/p/rc-switch/
*/
#include
<RCSwitch.h>
RCSwitch
mySwitch =
RCSwitch();
void
setup() {
// Transmitter is
connected to Arduino Pin
#10
mySwitch.enableTransmit(10);
// Optional set pulse
length.
//
mySwitch.setPulseLength(320);
}
void
loop() {
// Switch on:
// The first parameter
represents the setting
of the first rotary switch.
// In this example it's
switched to
"1" or "A" or "I".
//
// The second parameter
represents the
setting of the second rotary switch.
// In this example it's
switched to
"4" or "D" or "IV".
mySwitch.switchOn(1,4);
// Wait a second
delay(1000);
// Switch off
mySwitch.switchOff(1, 4);
// Wait another second
delay(1000);
}
. 2