Funksteckdosen mir Arduino steuern
Funksteckdosen sind im Baumarkt für ca. zehn Euro zu bekommen. Dazu gibt es eine Fernbedienung, mit der sich die Steckdosen an und aus schalten lassen.
Heute zeige ich Dir am Beispiel einer Lichtorgel, wie man so eine Fernbedienung hackt und an Arduino anschließt.

Als Erstes nimmst Du die Batterie aus der Fernbedienung und schraubst sie auf. Auf der Platine meiner Fernbedienung sind jeweils zwei Microtaster pro Kanal angebaut, die aber die gleiche Funktion haben. Wieso es zwei sind, weiß ich wirklich nicht.
Ich konzentriere mich auf drei der Microtaster. Alle drei Taster sind mit einer Seite mit einander verbunden. Ich habe es hier mit der blauen Linie hervorgehoben. Microtaster haben vier Beinchen, wobei jeweils zwei mit einander verbunden sind. An der verbundenen Seite der Taster liegt ein Minus-Pol an (GND). Wenn man also möchte, dass die Platine denkt, dass der Taster gedrückt wird, muss man also nur an sein andere Ende einen GND schalten.
Dazu benutze ich Transistoren, die das Signal weiter schalten. Wenn Dir das zu kompliziert klinkt, bau einfach die Schaltung auf dem Breadboard nach. Es sind drei Transistoren (NPN) und jeweils ein Vorwiderstand von 100 Ω. Der Vorwiderstand ist an der Basis des Transistors (mittleres Beinchen) und an einem DigitalOut-Kanal vom Arduinoboard (hier 3,7,10) angeschlossen. Am unteren Beinchen des Transistors liegt ein GND an, am oberen das Kabel, das an den jeweiligen Taster angelötet ist.

Der GND der Platine (Klar, da wo die Batterie den Minus-Pol hat) und der GND des Arduinoboards müssen! verbunden werden.
Jetzt habe ich noch ein Potentiometer in die Analogen Eingänge von Arduino gesteckt (1,3,5) und dazu gibt es jetzt noch ein bisschen Arduino-Code für meine Lichtorgel, die über das Potentiometer schneller oder langsamer gemacht werden kann:
int pins[3]={3,7,10};
int potiplus=15;
int poti=17;
int potiminus=19;
int potimin=450;
int schaltzeit=500;
int rand_nr;
void setup(){
// Pin 13
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
// Pins der Schaltkanäle
for (int i=0;i<3;i++){
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
// Potiinitialisierung
pinMode(potiplus,OUTPUT);
pinMode(potiminus,OUTPUT);
pinMode(poti,OUTPUT);
digitalWrite(potiplus,HIGH);
digitalWrite(potiminus,LOW);
// Seriale Ausgabe initialisieren
Serial.begin(9600);
}
void loop(){
rand_nr=random(4);
if (rand_nr==1) {
digitalWrite(pins[0],HIGH);
delay(schaltzeit);
digitalWrite(pins[0],LOW);
}
if (rand_nr==2) {
digitalWrite(pins[1],HIGH);
delay(schaltzeit);
digitalWrite(pins[1],LOW);
}
if (rand_nr==3) {
digitalWrite(pins[2],HIGH);
delay(schaltzeit);
digitalWrite(pins[2],LOW);
}
delay(1000+(analogRead(poti)-potimin)*4);
}
Montag, 31. März 2008 0:30
Hi Stefan,
ich habe das gleiche vor wie Du, habe auch die Funkschalter schon liegen. Meine Fernbedienung benutzt eine kleine 12V Batterie. Deine auch? Kannst Du sie trotzdem über den Arduino mit 5V versorgen?
Ach, und Deine Blumenwiese ist cool. Schöne Idee und super umgesetzt.
Viele Grüße,
Alex
Montag, 31. März 2008 6:20
Hallo Alex,
meine Fernbedienung hat auch diese komische 12V Batterie. Man könnte sie sicherlich ersetzen, indem man die Widerstände in der Fernbedienung anpasst, aber da es recht viele sind, habe ich mich dagegen entschieden und sie einfach drin gelassen. Also:
Ja, Du kannst sie trotzdem mit Arduino steuern. Wichtig dafür ist nur, dass Du den Minus-Pol der Fernbedienung mit dem GND des Arduino-Boards verbindest. Dann fließt der Strom der Batterie durch die Transistoren, die die Taster schalten.
Liebe Grüße
Stefan :)