433MHz Empfänger empfängt nicht die Daten der Funkfernbedienung

Hallo in die Runde, ich weiß das es zu diesem Thema mit den 433MHz Empfänger und Sender einige Threads hier gibt.

Leider stehe ich aktuell vor einem Rätsel und habe keinen bestehenden Beitrag dazu finden können.

Verwendete Bauteile:

  • Arduino Mega
    -LED
  • 2k-Ohm Widerstand
  • Brennenstuhl Funkschalt-Set RCS 1000 N Comfort, 2er Funksteckdosen Set (Funksteckdose raspberry pi mit Handsender und erhöhtem Berührungsschutz) weiß.
  • 433MHz Sender und Empfänger Module

Ich versuche wie viele Andere vor mir, das Signal meiner Brennenstuhl Funkfernbedienung auszulesen. Dies versuche ich mittels des Beispiel Sketches der RC-Switch Bibliothek mit folgendem Aufbau.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Leider gab hierbei der serielle Monitor keine Daten aus...

Also habe ich zum testen des 433MHz Empfängers, diesen wie folgt angeschlossen

GND->GND (Arduino Mega)
VCC -> 5V
Data-> Widerstand mit LED

,um mir anzeigen zu lassen, ob der Empfänger überhaupt Daten von der 433MHz Funkfernbedienung empfängt.

Wenn ich nun Spannung anlege blink die LED in verschiedenen Stärken und Rhythmen ohne das ich eine Taste auf der Fernbedienung betätige. Dies könnte ja ein Signalrauschen sein, aber wie bekomme ich dies los oder gibt es noch weitere Fehlerquellen?

Ich habe auch aus der RC-Switch Bibliothek das Beispiel für Funksteckdosen mit DIP Schaltern und dem Sender getestet, da es sich bei diesen Funksteckdosen um genau solche handelt. Ich habe die DIP Schalter wie im Sketch programmiert eingestellt nach der Anleitung im RC-Switch Wiki.
( HowTo_OperateLowCostOutlets - rc-switch - Simplest way to just switch power outlets on and off. - Arduino library to operate low cost 315 MHz / 433 MHz remote control devices - Google Project Hosting (archive.org))

#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 5 DIP switches. 
  // 
  // The second parameter represents the setting of the last 5 DIP switches. 

  mySwitch.switchOn("11100", "1000");

  // Wait a second
  delay(1000);
  
  // Switch off
  mySwitch.switchOff("11100", "1000");
  
  // Wait another second
  delay(1000);
  
}

Leider ebenfalls ohne Erfolg.

Freue mich über jede Antwort, Danke im Voraus !

You have posted in the english forum.
Please translate your post into english or have it moved to german department. To do so: press the flag below your post to ask help from a moderator to move your post.

I wrote to a moderator thanks for your advice.

Topic moved

Did you buy the sender and receiver as a set?
Did you test them as a set?
They need to send and receive at exactly the same frequency. 433MHz is a band where sending is allowed without any license. It is not an exact frequency

Yes, I bought them as a set.
I also test them as a set and they worked fine. Send signals with a button and the LED at the receiver lighted up when ever I pressed the button.

The controll remote I want to get tthe data from works with the same frequency and is offen used in such projects.


Deutsch:
Ja ich habe den Sender und Empfänger als Set gekauft und auch getestet. Im Test hat die LED zwar auch ohne das drücken des Knopfes geflackert, aber ich denke das könnte Signalrauschen sein.

Die Led am Empfängerausgang ist eine schlechte bis falsche Lösung.
Diese zeigt nur das Rauschen des Empfängers an. Du musst schon den Aufbau mit dem Mega komplett machen.
Ich empfehle dir auch einen besseren Empfänger zu verwenden.

Ach und zum Empfangen solltest du auch die Empfangsbeispiele verwenden. Das funktioniert mit deiner FB bestimmt. Am besten "ReceiveDemo advanced".

Erstmal danke fürs das Empfehlen eines anderen Empfängers.
Ich habe mit der LED am Empfänger Ausgang sowohl das Rauschen als auch die Signale durchs Taster drücken sehen können. Es kann sein das dies eine schlechte bis falsche Lösung ist, allerdings habe ich vermehrt diese zum Testen der Module gefunden,

Ich habe mal noch meinen ESP32 dazu genommen, um es auf eine evtl. bessere Weise zu testen.

Der Sender hängt am ESP32 NodeMCU Development Board
GND->GND
VCC-> 5V
Data-> G4

Mit dem Code:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  Serial.begin(9600);
  
  // Transmitter is connected to Arduino Pin #10  
  mySwitch.enableTransmit(4);
  
  // Optional set protocol (default is 1, will work for most outlets)
  // mySwitch.setProtocol(2);

  // Optional set pulse length.
  // mySwitch.setPulseLength(320);
  
  // Optional set number of transmission repetitions.
  // mySwitch.setRepeatTransmit(15);
  
}

void loop() {

  /* See Example: TypeA_WithDIPSwitches */
  mySwitch.switchOn("11111", "00010");
  delay(1000);
  mySwitch.switchOff("11111", "00010");
  delay(1000);

  /* Same switch as above, but using decimal code */
  mySwitch.send(5393, 24);
  delay(1000);  
  mySwitch.send(5396, 24);
  delay(1000);  

  /* Same switch as above, but using binary code */
  mySwitch.send("000000000001010100010001");
  delay(1000);  
  mySwitch.send("000000000001010100010100");
  delay(1000);

  /* Same switch as above, but tri-state code */ 
  mySwitch.sendTriState("00000FFF0F0F");
  delay(1000);  
  mySwitch.sendTriState("00000FFF0FF0");
  delay(1000);

  delay(20000);
}

Der Empfänger hängt am Arduino Mega:
GND->GND
VCC->5V
Data-> Pin 2

Mit dem Code:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Ich habe jeweils die Demo Receive bzw. Send aus der RC-Switch Bibliothek in die Mikrokontroller geladen, ohne Erfolg. Der serielle Monitor beim Empfänger gibt leider nix aus.

Es könnte sein das eins der Module defekt ist bzw. einfach Müll, aber dies würd ich gern rausfinden.

Warum bleibst du nicht bei einem Board, dann ist es einfacher dir zu helfen. So wird es unübersichtlich. Zum testen würde ich immer erst die FB verwenden. Da weißt du, die funktioniert.

Am Arduino ist es für den Empfang der Pin 2 und am ESP musst du den richtigen Pin als GPIO angeben.

Erst wenn du Daten der FB empfangen kannst, solltest du auf einen anderen Sender (ESP) wechseln.
Wenn du de ESP als Empfänger einsetzen möchtest, kannst du jeden beliebigen digitalen Pin für die Daten verwenden. Die sind alle als IRQ möglich.

Erstmal vielen Dank für deine Mühe.

Ich habe nun um es dir leichter zu machen den Empfänger wie dargestellt an den Arduino Mega angeschlossen und den "ReceiveDemo advanced" Code hochgeladen.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

Die output.ino ist auch dabei, wenn wer den Code braucht kann ich diesen auch noch hier rein kopieren.

Wenn ich nun eine Taste auf der Funkfernbedienung betätige bekomme ich keine Ausgabe im seriellen Monitor.

Aber ich kann versichern das die Fernbedienung bei den dafür vorgesehenen Funksteckdosen funktioniert. Auch habe ich geschaut, ob die Fernbedienung und Dosen für die RC-Switch Bibliothek geeignet sind und laut dem Wiki-Eintrag isst das auch der Fall.
List_KnownDevices · sui77/rc-switch Wiki · GitHub

Leider finde ich meinen Fehler nicht.

Deshalb hab ich versucht, den zu dem Empfänger gesendeten Sender-Modul (FS1000A) an den ESP32 anzuschließen, um zu schauen ob der Empfänger überhaupt gewillt ist etwas zu empfangen.
Eigtl. wollte ich den ESP32 nur benutzen, da ich in diesem Forum mal gelesen habe, das es nur mit einem Arduino nicht möglich ist, da sich das Senden und Empfängerprogram gegenseitig blockieren würden.

Tut mir Leid ich bin in diesem Gebiet noch Neuling....

Das Problem ist die RC_Switch, die empfängt und sendet nur das was sie kennt.
In der RC_Switch.cpp ist eine Tabelle dazu. Die kannst du auch anpassen. Mit einem der vorhandenen Protokolle sollten die Dosen aber funktionieren.
Beim Senden musst du auch das passende Protokoll auswählen (durchprobieren) da gibt es einiges im Netz und hier im Forum zu den Brennenstuhldosen.
Das Signal besteht nicht nur aus dem Signal für die Dose selber (zb. 12 oder 24 Bit) da kommt am Anfang ein Startsignal kurzes high und langes low. Das gesamte Signal wird mehrmals hintereinander gesendet. Das ist sehr nervig nicht zu sehen was da abgeht, ich lese IR und Funksignale mit einem billigen Logikanalyser ein, den Empfänger direkt an den Analyser geklemmt. Dann hab ich die exakten Timings des Signals.
Wenn man nix hat zum Visualisieren tappt nur im dunkeln rum.
Ich kann dir da nicht viel weiterhelfen, da ich die 4000er von Brennenstuhl benutze.
Der Empfänger den du da hast reicht für den Schreibtisch zum probieren, aber sonst ist der Müll. Besorg dir zb. einen RXB6 die haben gute Reichweite für spätere Anwendungen.
Der Sender ist wenn die richtige Antenne dran ist gut. Mit der Versorgungsspannung wird die Reichweite größer max. ist 12VDC.

Sorry, deine Bilder haben mich irritiert.
Du zeigst einen Uno und keine Mega. Sieh dir dazu das Pinout des Mega an.
Wenn du einen Mega hast, dann ist der Interrupt 0 tatsächlich auf dem Pin D21.
Somit muss der Datenpin des Empfängers auf den Pin D21.

Viele Dank für das Pinout, ich habe jetzt nach deinem Hinweis die Schaltung wie folgt aufgebaut:

Und den Code so gelassen mit Interrupt 0, da ja nicht direkt die Pin-Nummer sondern der Interrupt angegeben werden muss.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

Leider weiterhin keine Ausgabe im seriellen Monitor, langsam glaube ich wirklich, dass der Empfänger nicht will.

Und Entschuldigung für die Verwirrung.

Ok, diese Empfänger können funktionieren, sind aber aus meiner Sicht Müll. Die verwendete Technik ist total veraltert. Stand von 1927 und daher durchaus mit besseren Empfängern zu ersetzen.
Grundsätzlich sollte das funktionieren. Die Funksteckdosen von Brennenstuhl habe ich auch verwendet und da sind keine Probleme belannt.

Mich wundert allerdings, dass du nichts auf dem seriellen Monitor sehen kannst. Das sieht für mich nach einem tatsächlichen defekt aus.
Steht auf dem Empfänger irgendwas drauf ?

Ich sehe im ganzen Thread keine einzige Antenne!
Was habe ich übersehen?

Sicherlich nicht...aber auch ohne die Antenne, sollte über kurze Distanz etwas zu sehen sein.
Und ja, grundsätzlich muss da eine Antenne ran. :wink:

Ich habe jetzt mal einen Probeaufbau vorgenommen und das an einem Uno (Pin 2) getestet.
Die Daten der Fernbedienung des Brennenstuhl RCS1000N wird mir fehlerfrei angezeigt.
Allerdings verwende ich einen RXB8 als Empfänger, deiner sollte aber auch zum Test funktionieren.
Versuche es mal mit einer Antennen. Evtl. wird der Empfänger ja tatsächlich durch die fehlende Antenne total verstimmt und kann nicht richtig funktionieren. Das ist bei der alten Technik durchaus drin.

Ich habe eine Antenne dran gemacht und auf der Rückseite steht folgendes:
image

Ich weiß auf Fotos sieht mans immer schlecht, aber ich habe es auch so verdrahtet wie oben gezeigt mit PIN 21.


Habe auch den Beispielcode genommen und leider ist Totenstille im seriellen Monitor.

Ich habe es auch noch Einmal mit meinem anderen billig Empfänger (s. Bild) versucht aber auch ohne Erfolg.

image

Hast du den auf 3,3V oder 5V gesteckt? Sieht so aus wie 3,3V. Der sollte 5V bekommen.
Das einer mal Müll ist, aber direkt beide ist seltsam.

Steckt an 5V. Ich kann mir nur mal einen besseren Empfänger wie dien RXB8 holen und schauen ob es dann funktioniert. Vielleicht hab ich ja mit beiden Modulen wirklich Pech gehabt.