RC-Switch bzw. RF-Modul Probleme

Hallo Community,
ich habe mir vor ein paar Tagen solche RF-Module gekauft. Die Reichweite ist trotz angelöteter Antennen zwar ziemlich schlecht, aber das ist nicht wirklich mein Problem. Lege ich Empfänger und Sender nebeneinander, funktioniert die Übertragung. Allerdings nur mit der VirtualWire Library. Nutze ich die RC-Switch Library, die ich benutzen muss, da ich wirklich den Code erhalten muss und nicht nur, dass er überhaupt einen Code erhalten hat, passiert nichts. Kann mir evtl jemand weiter helfen? Die Codes schreibe ich unten rein.

VirtualWire - Sender

#include <VirtualWire.h>

void setup() {

  Serial.begin(9600);
  vw_set_tx_pin(13);
  vw_setup(1000);

}

void loop() {

  vw_send("test", 1);
  Serial.println("gesendet");
  vw_wait_tx(); 
  delay(1000);  
   
}

VirtualWire - Receiver

#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN;

void setup() {
  
  Serial.begin(9600);
  vw_set_rx_pin(13);
  vw_setup(1000);
  vw_rx_start();
  
}

void loop() {
  
  if (vw_get_message(message, &messageLength)) {
    
    Serial.println("erhalten");
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);

  }

}

RC-Switch - Sender

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  Serial.begin(9600);

  mySwitch.enableTransmit(8);

}

void loop() {

  mySwitch.send(1234, 24);

  Serial.print("gesendet: ");
  Serial.println("1234");

  delay(1000);

}

RC-Switch - Receiver

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  Serial.begin(9600);

  mySwitch.enableReceive(13);

}

void loop() {

  int msg = mySwitch.getReceivedValue();

    if (mySwitch.available()) {

             digitalWrite(5, HIGH);
             Serial.print("erhalten: ");
             Serial.println( mySwitch.getReceivedValue() );
             delay(100);
             digitalWrite(5, LOW);
             mySwitch.resetAvailable();

        }


}

Moin, und herzlich willkommen.

Kannst Du das mal besser ausformulieren?

noideaforusername:
solche RF-Module gekauft.

Hm. was?
...

Nutze ich die RC-Switch Library, die ich benutzen muss, da ich wirklich den Code erhalten muss und nicht nur, dass er überhaupt einen Code erhalten hat, passiert nichts.

???

Hm. was?

Es sind einmal ein 433Mhz Sender und einmal ein 433Mhz Empfänger. Ich habe auch schon gehört, dass sie nicht so toll sein sollen. Aber die Distanz ist ja gerade nicht mein Problem. Es sind halt diese hier: https://www.ebay.de/itm/433-Mhz-Sender-Empfaenger-RF-Funk-Modul-FS1000A-xy-mk-5v-Arduino-Raspberry-Pi-/252713874815

???

Soweit ich weiß, kann man bei der VirtualWire Library, nicht überprüfen, was genau empfangen wird, sondern nur ob überhaupt was empfangen wird. Ich möchte zum Beispiel Temperaturen von einem DHT11 per Funk übertragen.

Die vier Codes oben sind übrigens nicht die Codes, die ich zum Übertragen etc. verwenden möchte. Sie dienen nur zur Demonstration, ich wollte mit den Codes eben nur überprüfen, warum die Hauptcodes nicht funktionieren.

Ich benutze dieses Forum übrigens seit gerade eben erst, deswegen kenne ich mich noch nicht so gut mit den Funktionen aus.

noideaforusername:
Ich benutze dieses Forum übrigens seit gerade eben erst,

Alles gut!
Nichs, was Dich abschrecken muss.
Ich bin nur drüber gestolpert, das Du schreibst: "diese Module" und nicht rauszulesen ist, was Du verwendest.
Und ich habe Deinen letzten Satz mit den/dem "erhalten" wirklich nicht verstanden.

Aber da kommt sicher noch was...

Ich habe bisher noch nie solche Module verwendet.
Ich habe in die Doku vonVirtual wire reingeschaut da steht

Why not just use the Arduino UART connected directly to the transmitter/receiver? As discussed in the RFM documentation, ASK receivers require a burst of training pulses to synchronize the transmitter and receiver, and also requires good balance between 0s and 1s in the message stream in order to maintain the DC balance of the message. UARTs do not provide these. They work a bit with ASK wireless, but not as well as this code.

virtual wire funktioniert mit Modulen die nach dem ASK-Verfahren senden.
Das bedeutet die Nullen und Einsen die einzelne Bits darstellen werden als Signal Senden oder "Kein Signal senden" übertragen. Der egnlische Text sagt, dass solche ASK-Module eine gewisse Anzahl an Impulsen brauchen die nur dazu dienen Sender und Empfänger zu synchronisieren.

RC Switch erzeugt einen Bit-Datenstrom der den marktüblichen kodierungs-chips entspricht.
Meine Vermutung:
Wenn RC-switch direkt vom ersten Signal an diesen Bit-Datenstrom erwartet die ASK-Module aber erst einmal ein paar Synchroniserungs-Signale senden wollen dann stimmt der am Empfänger ausgegebene Datenstrom wegen mangelhafter Synchronisierung nicht.
Wie gesagt das ist meine Vermutung.
Vielleicht kann jemand der sich mehr mit den Modulen auskennt auch mal zu Wort melden.

Nach dem ich jetzt bei der weiteren Recherche dieses Video gefunden habe

denke ich es müsste gehen. Die RC-Switch-library liefert verschiedene Programme mit mit denen man erst einmal analysieren kann welches Protokoll genau benutzt wird.
Das Snifferprogramm würde ich benutzen um zu analysiren was denn auf der Empfängerseite ankommt.

Was willste den insgesamt machen? Wenn man die Gesamtanwendung kennt gibt es vielleicht noch andere Ideen wie man diese Funktionen realisieren kann.
vgs

noideaforusername:
Es sind einmal ein 433Mhz Sender und einmal ein 433Mhz Empfänger. Ich habe auch schon gehört, dass sie nicht so toll sein sollen. Aber die Distanz ist ja gerade nicht mein Problem. Es sind halt diese hier:

In der Tat sind das sehr schlechte Empfänger, die ich mal verwendet habe und am selben Tag in den Müll geschmissen habe. Die verwendete Technik ist vom Stand 1927 und total überholt.

Soweit ich weiß, kann man bei der VirtualWire Library, nicht überprüfen, was genau empfangen wird, sondern nur ob überhaupt was empfangen wird. Ich möchte zum Beispiel Temperaturen von einem DHT11 per Funk übertragen.

Wie kommst du da drauf ? Auch mit der VirtualWire kannst du das empfangene Signal überprüfen.
In meinem Projekt sende ich mit der Library Temperaturen und den Tankinhalt einer Zisterne und das schon etliche Jahre problemlos. Also zum Übertragen von Daten ist die VirtualWire sehr gut geeignet.

Sieh dir einfach mal die Beispiele in der VirtualWire-Library an.

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