434MHz Sende-Modul am Arduino

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.

434 MHz Sendemodul, daneben Empfängermodul

434 MHz Sendemodul, daneben Empfängermodul

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.

Beschaltung RF Link Transmitter

Beschaltung RF Link Transmitter

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert