Fancy-Shit. Mit einem günstigen Sendemodul und ’nem Arduino Funksteckdosen schalten. Mit der Spannung vom Board des Arduino sind allerdings keine Reichweiten-Rekorde zu brechen. Gefühlt läuft 2-3 Meter ok. Für größere Reichweiten muss das Modul mit höherer Spannung versorgt werden.
Bezugsquellen
Gibt es momentan für ~ 3,40 EUR bei:
Good stuff in the internet
Eine großartige Hilfe war: http://www.dserv01.de/howtos/funksteckdose-fernsteuern-mit-arduino/
Dank dieses Artikels konnte ich mir die ganze Arbeit des Auslesens der Signale sparen und direkt mit der Umsetzung starten. Der Code stammt auch von dort. Weltklasse Tutorial. Kudos an den Authoren.
Basis Code zum Ansprechen des Moduls
tx434 ist der Name für die Variable (Integer) die die Zahl des Pins enthält. Es sollte die IR Schnittstelle des Boards verwendet werden. Beim Arduino UNO ist dies Pin3 beim Arduino Mega ist dies Pin9.
Der Code eignet sich für die meisten 434Mhz basierten Funksteckdosen (generell Funk-Schalt-Dinge).
// // SEND CODE VIA 434 MHz Transmitter // boolean sendCode(char code[]){ for(short z = 0; z<7; z++){ //wiederhole den Code 7x for(short i = 0; i<12; i++){ //ein Code besteht aus 12bits sendByte(code[i]); } sendByte('x'); //da der code immer mit x/sync abschliesst, brauchen wir den nicht im code und haengen es autisch immer hinten ran. } return true; } void sendByte(char i) { //Diese Funktion soll 0,1 oder x senden koennen. Wir speichern die gewuenschte Ausgabe in der Variabel i switch(i){ case '0':{ digitalWrite(tx434,HIGH); wait(1); //da die Pausen x*350us lang sind, machen wir daraus eine Funktion digitalWrite(tx434,LOW); wait(3); digitalWrite(tx434,HIGH); wait(3); digitalWrite(tx434,LOW); wait(1); return; } case '1':{ //Der Code fuer '1' digitalWrite(tx434,HIGH); wait(1); digitalWrite(tx434,LOW); wait(3); digitalWrite(tx434,HIGH); wait(1); digitalWrite(tx434,LOW); wait(3); return; } case 'x':{ //Der Code fuer x(sync) digitalWrite(tx434,HIGH); wait(1); digitalWrite(tx434,LOW); wait(31); } } } void wait(int x) { delayMicroseconds(x*350); //warte x*350us }
Einfach diese Zeilen in euren Sketch werfen. Und die Funktion z.B. so aufrufen:
sendCode("111110010001");
Wie der Code aufgebaut wird, wurde auf dem verlinkten Artikel (siehe oben) echt super erklärt.