433 MHz Empfänger geht nicht

Hallo zusammen
ich habe mir ein 433 MHz Empfänger + Sendermodul bestellt.
Beim auslesen der Signale zweier 433 MHz Fernbedienungen zeigt mir mein Arduino keine ausgelesenen Codes an. Einmal nach mehrstündigem Herumprobieren hatte ich zwei Signale abgefangen. Habe die RC Switch Bibliothek installiert und auch den Mustercode verwendet.
Folgende Module habe ich:
https://www.amazon.de/BQLZR-433Mhz-Wireless-Transmitter-Empf%C3%A4ngermodul/dp/B00EQ1U5XQ/ref=sr_1_1?dib=eyJ2IjoiMSJ9.Laxqcq8YUGz9hNuYhQwg2ymkVMuFg0EXrBwhDQmQCCw2PKHTqBtY7saJI6SfNyVu6c2o7G2k4-AB87a8FcrAOk3btKHtuTt1RJUWv3JdM4TvNUwJutDSVsdLfu2C5mnwmWz_yRo-CVYMiMvmGyy6tFcKJv-wrhgGLTInowXN4pN2IA5Avy27oV3VBCVwqmOHvEB2FOb9jQfWgfbKNmO0W06RKd3C9dbxorXMuQy3yNr2TxYHIdL8jb4C3-COragnQTUN2Dcc9pg10JVDRqUq_Uiapaf_IUSpgLpxQP93Qj4.s2snv3SLHzxeEgfVVCoETC2Yye4Ra_cxP-dxLS2eb9Y&dib_tag=se&keywords=BQLZR+1+Set+433Mhz+Transmitter+und+Empf%C3%A4ngermodul+Gr%C3%BCn+PCB&qid=1709670344&sr=8-1)

Angeschlossen habe ich wie folgt:
VCC auf 5 V
GND auf GND
RXD auf den Pin2

Der Sender ist ok, möchte aber 12V für volle Leistung.

Der Empfänger ist fast Mist. Sollte aber ein bisschen funktionieren.

Stimmt deine Antennenlänge?

Was tun die Dinger?
Wirklich OOK Modulierung?
Oder FM, oder gar rolling Code?

Dann zeig mal den Code den du verwendest
Und zeige einen Link der Fernbedienung.

Ja habe eine 17,4 cm Antenne angelötet.
Ich bin da leider nicht so vom Fach, ich hatte ganz normalen Binärcode mit dem Beispielsketch.

#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();
  }
}

https://www.unitec-elektro.de/haustechnik/funkfernschalter/215/unitec-funkfernschalter-set-2-1-fuer-den-aussenbereich

Beim Verwenden der "RF433any"Bibliothek erhalte ich einen Output aktuell. Dieser sieht wie folgt aus:
Received 10 bits (x1): 02 4b

Verstehe nun aber nicht wie ich diesen verwenden kann.
Bei dem Beispielsketch von RC Switch ist es verständlicher für mich aber wie gesagt dort erhalte ich keine Ergebnisse.

Die

kenne ich nicht, da muss ich mich erst einlesen.
Wichtig ist aber, du darfst in der Nähe des Empfängers keinen PC, Monitor oder andere größere elektronische Geräte haben. Auch keine größere Metallfläche. Das alles stört den Empfänger.

Dankeschön für die Info.
Kann es sein, dass durch das Verwenden von passenden Funksteckdosen mit Fernbedienung wie z.B. https://www.amazon.de/dp/B07CGBRS7T?tag=bre08-21&linkCode=ogi&th=1&smid=A3JWKAKR8XB7XF
die RCSwitch Bibliothek funktionieren sollte da diese richtig ausgewertet werden können?
Falls dies der Fall sein sollte investiere ich in diese und starte einen erneuten Versuch.

Hast du einen alten DVBT Stick?
Dann könntest du evtl. mit SDRSharp das Signal analysieren.

Ja, das ist korrekt.
Und die verlinkte von Brennenstuhl setze ich selber ein. Die funktioniert mit RCSwitch.

Allerdings solltest du dir einen besseren Empfänger zulegen. Wie schon geschrieben wurde, der ist Müll. Ich empfehle dir diesen Empfänger.

1 Like

Du brauchst was um das Signal zu visualisieren, ein billiger Logikanalyser ist da optimal.
Da klemmst du den Empfänger an. Die billigen Empfänger sind dafür gut zu gebrauchen, da du ja keine Entfernung hast, dann hast du auch nicht soviel Funkmüll.
Das Problem mit RC-Switch ist, das die lib nur das erkennt was in der Tabelle in der cpp drin steht.
Bei Brennenstuhl ist das noch etwas anders, meine Brennenstuhl FB senden 4 x 24 bit und 4x 32 bit Signal. Das 32bit Signal wurde von RC Switch erkannt damit reagieren aber die Dosen nicht. Ich hab dann das 24 bit Signal gesendet und das war es. https://www.amazon.de/Brennenstuhl-Funkschalt-Set-Funksteckdosen-Innenbereich-Kindersicherung/dp/B073W52CS8/ref=asc_df_B073W52CS8/?tag=googshopde-21&linkCode=df0&hvadid=231877237116&hvpos=&hvnetw=g&hvrand=10086956876461770833&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9044679&hvtargid=pla-371084577499&mcid=dbb96675f15036d28cae1e11cc59bd31&th=1
Mit dem billig Empfänger am Logikanalyser kannst du das Signal sehen, und hast die Signaltimings zum Senden. Das Signal beginnt mit einem kurzen high und einem längeren low als Start, anschließend dann die 24 bit. Am Anfang das eigentlichen Signals steht immer eine 1.
den Rest kannst du dann einfach auszählen.

Die Fernbedienung sendet 2 unterschiedliche Signale beim 1. und 2. Tastendruck
Das Signal sieht dann etwa so aus.

  uint32_t A1on  = 0b101000000000111101101100; // 10489708 //bin und dec. Wert des Signals
  uint32_t A2on  = 0b101011001110001110101100; // 11330476

Senden tu ich das Signal hiermit

// RC-Signal senden Brennenstuhl Funksteckdosen
void Std_Schalt(uint32_t DSchalt[], uint8_t size) { 
  uint8_t Data1,Data2,Data3;
  for (uint8_t i = 0; i < size; i++) { //hier wird der long in 3 byte zerlegt zum senden
    Data3=(DSchalt[i])&0xff;
    Data2=((DSchalt[i])>>8)&0xff;
    Data1=((DSchalt[i])>>16)&0xff;
    
   for (uint8_t k = 0; k < 8; k++) { //8 x senden
      starter();
      sendserial(Data1, 7); 
      sendserial(Data2, 7);
      sendserial(Data3, 7);
   }
   digitalWrite(sendpin, LOW); //alles ausknipsen
  }    
}

//bitweise Senden von 0 + 1 und Startimpuls
void sendserial(uint8_t data, byte bytecount) { 
  for (int j = bytecount; j >= 0; j--) { 
    ((data & (1 << j))? one() : zero() );
  }
}

void starter () { //starter senden
  digitalWrite(sendpin, HIGH);
  delayMicroseconds(300);                             //timing high
  digitalWrite(sendpin, LOW);
  delayMicroseconds(2300);                          //timing low
}

void one () {//1 
  digitalWrite(sendpin, HIGH);
  delayMicroseconds(1050);
  digitalWrite(sendpin, LOW);
  delayMicroseconds(450);
}

void zero () { //0 
  digitalWrite(sendpin, HIGH);
  delayMicroseconds(300);
  digitalWrite(sendpin, LOW);
  delayMicroseconds(1200);
}

Unten werden die Timings eingesetzt.

2 Likes

Das mag für die RCS4001 so sein. Bei der RCS1000 (obiger Link vom TO) ist das einfacher. Der Code, der von RCSwitch erkannt wird, kann auch verwendet werden. Die 1000 ist noch eine die zur RCSwitch direkt kompatibel ist.

Für die RCS4001 lässt sich das Signal auch mit RC-Switch senden, aber du musst ja erstmal das Signal einlesen können, und da tut sich die lib sehr schwer mit. Es findet halt nur das 32bit und nicht das vorher gesendete 24bit Signal mit dem du schalten musst. Was schmeißt denn die RCS1000 FB für ein Signal raus, immer gleiches Signal paarmal hintereinander?
Für die 4001 hab ich diese Einstellung gefunden für das 24bit Signal mit RC-Switch.

{ 360, {  1,  6 }, {  1,  3 }, {  3,  1 }, false },    // protocol 7 (brennenstuhl optimiert)
{ 200, {  1,  2 }, {  1,  3 }, {  3,  1 }, false },    // protocol 9 (brennenstuhl)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.