Raspberry Pi mit 433Mhz Funksender fernsteuern

Wer eine Hausautomatisierung o.ä. anstrebt, wird sich früher oder später bestimmt auch Gedanken über eine kabellose Bedienung machen. Dazu bietet sich die 433Mhz Frequenz an, denn es gibt viele günstige Sender und Empfänger sowie eine breite Masse an verfügbaren Bibliotheken und Skripten.

In diesem Tutorial möchte ich zeigen, wie man mittels einem kleinen Handsender und einem Empfänger GPIOs auf dem Pi (de)aktivieren kann.

Zubehör

Um eine kleine Testschaltung zu bauen, habe ich folgende Komponenten benutzt:

Falls du eine Funkfernbedienung hast, kannst du auch diese benutzen, allerdings wird dann wohl das ursprünglich gedachte Objekt auch aktiviert 😉
Bei den Clones sollte man noch beachten, dass sie oftmals (nicht alle Modelle) erst ein Signal kopieren müssen, um eines zu senden.

Aufbau

Die Widerstände vor den Transistor Basen sind 10kΩ groß, jene bei den LEDs 330Ω groß.

Der Aufbau ist für das Raspberry Pi 2 Model B/B+, aber ist auch auf allen anderen Modellen ausführbar (ggf. WiringPi Pinbelegung beachten).433mhz_Steckplatine

 

Software

Als Grundlage habe ich dieses Repository genommen, welches ich bereits in einem vorherigen Tutorial benutzt habe.

Als erstes sollten wir den Code laden:

wget http://tutorials-raspberrypi.de/wp-content/uploads/scripts/433control.zip
unzip 433control.zip
cd 433control

Wir kompilieren nun, um gleich den Code des Empfängers auslesen zu können (falls du einen anderen Pin verwendest, ändere die RFSniffer.cpp Datei und kompiliere danach).

make sniff

 

Um die Codes jetzt auszulesen starten wir die kompilierte Datei

sudo ./sniff

und drücken die Tasten auf der Funkfernbedienung.
Meine Codes sind: 11734380, 12269868, 12365029 und 11854229. Da du andere Codes haben wirst, muss die Datei RFSniffer.cpp bearbeitet werden.

sudo nano RFSniffer.cpp

Ab Zeile 46 findest du die verschiedenen Codes, die durch deine ersetzt. Falls du andere Pins für die LEDs genommen hast, kannst du dies auch hier ändern (Achtung: WiringPi Belegung).

Als nächstes muss die Datei kompiliert werden:

make RFSniffer

Anschließend wird gestartet:

sudo ./RFSniffer

Wenn du anschließend die Tasten auf der Fernbedienung drückst sollten die LEDs angehen. Falls die LEDs flackern, liegt das daran, dass das Signal nicht dauerhaft gesendet wird und sobald keines empfangen wird, die LEDs automatisch ausgeschaltet werden. Du kannst den Code aber natürlich deinen Wünschen nach anpassen.

Denkbar sind hier unterschiedliche Szenarien, wie den Nutzen bei der Heimautomatisierung.

138 Kommentare

  1. Guten Abend,

    vielen dank für das einfache Tutorial. 🙂 Ich möchte mir einen Funk Tür Alarmkontakt holen und diesen in meinen Briefkasten verbauen. Dieser sendet 433 mhz Signale welche ich dann mit dem Pi abfragen will, kein Problem bis hier. Doch wie kann ich das in der RFSniffer.cpp datei so ändern dass nicht ein GPIO geschaltet wird sondern eine datei (.sh) ausgeführt wird?

    Antworten
    • Du könntest es mit system("pfad/zur/datei.sh -parameterXY") versuchen. Damit führst du ein Kommandozeilenargument aus. Eine Erklärung gibt es hier.

      Antworten
      • WoW das ging schnell! Wie ist denn die Pin belegung bei dem „B“ ? Bei deinem Schaltbild geht der DATA ja auf PIN 9, welcher in beiden fällen GNG ist, hab ich was übersehen?

      • Meinst du Model B? Da ist der Pin Header einfach kürzer, aber ich habe sowieso keinen der zusätzlichen Pins des B+ genommen.

  2. Ach und noch ein komisches phänomen… Ich habe den Empfänger gar nicht dran, nur den Sender, wenn ich die ./sniff starte und per „PowerPi“ meine Funksteckdosen schalte wird mir trotzdem „Received xxxcodexxx“ angezeigt, wenn ich die 433 mhz Fernbedienung drücke jedoch nix

    Antworten