Forum: HF, Funk und Felder Mit 433Mhz XY-MK-5V REV Funksteckdosen schalten


von Artata (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe mir bei Ebay diese Module geleistet und wollte damit bißchen 
rumspielen. Als erstes wollte ich mit meinem Usbee Logic Analyzer die 
Daten anschauen. Habe die Module an die Versorgungsspannung und Logic 
Analyzer angeschlossen. Leider werden gar keine Daten angezeigt, wenn 
ich auf der REV Fernbedienung die Knöpfe drücke. In der Fernbedienung 
ist folgernder Chip verbaut: 
http://pdf1.alldatasheet.com/datasheet-pdf/view/103035/ETC/HS2260A.html 
und soll ein Derivat eines PT2260 sein. Dazu gibt es folgendes 
Datenblatt: http://www.spelektroniikka.fi/kuvat/PT2260.pdf

Ach ja, eine 17.3 cm Antenne ist auch dran und ich sitze mit der 
Fernbedienung direkt davor, dabei werden die Funksteckdosen im 
Nebenzimmer geschaltet. Jemand eine Idee warum man nichts mit dem 
XY-MK-5V empfangen kann? Ich habe 3 x RX+TX Paare von dem Modul keiner 
der Module empfängt was. Zumindest ist mein Logic analyser der Meinung

von Artata (Gast)


Lesenswert?

Ok, schlauer geworden. Halte ich die Fernbedienung ganz nah ran, 
empfängt die Schaltung was. Das sind aber gerade mal 20cm...
Habe Arduino mal aufgesetzt und mit der RCSwitch Lib gehorcht was die 
Fernbedienung überträgt. Soweit alles ok. Nun bleibt die Frage über die 
Reichweite. Auf +/-1mm kommt es doch bei der Antenne nicht an.

von Artata (Gast)


Lesenswert?

PS: Die Spannungsversorgung beträgt exakt 4.4V.

von Artata (Gast)


Lesenswert?

Update: Also, nach dem ich mit dem Arduino ausgelesen habe, was die 
Fernbedienung sendet, habe ich TX Modul aqusprobiert. Hier bin ich mehr 
als zufrieden. Sogar ohne Antenne schafft das Teil locker 10M bit zur 
Steckdose. Mit einer Antenne geht es quer durch die ganze Wohnung mit 
der Spannungsversorgung vom Arduino. Die Antenne muss ebenfalls 17.3cm 
sein. Habe diese zu einer kurzen Spirale gewickelt, geht auch wunderbar.

Ich poste Mal Arduino Code, um die 3 Steckdosen Marke REV von Bauhaus zu 
schalten:
1
#include <RCSwitch.h>
2
3
#define BAUHAUS_REV_PACKET_LENGTH 24
4
#define BAUHAUS_REV_1_ON   7721996
5
#define BAUHAUS_REV_1_OFF  7721987
6
   
7
#define BAUHAUS_REV_2_ON   7697420
8
#define BAUHAUS_REV_2_OFF  7697411
9
   
10
#define BAUHAUS_REV_3_ON   7691267
11
#define BAUHAUS_REV_3_OFF  7691276
12
13
#define FS1000A_TX_PIN    10 // Digital pin of Arduino
14
15
RCSwitch mySwitch = RCSwitch();
16
17
//#define SENDMODE  1
18
19
20
void setup() {
21
 
22
  Serial.begin(9600);
23
  mySwitch.enableReceive(0); // 0 Pin -> IR 2
24
  mySwitch.enableTransmit(FS1000A_TX_PIN);  
25
  mySwitch.setPulseLength(360);
26
  Serial.print("Ready to go");
27
  
28
}
29
30
void loop() {
31
 
32
  #ifdef SENDMODE
33
    mySwitch.send(BAUHAUS_REV_1_ON, BAUHAUS_REV_PACKET_LENGTH);
34
    delay(1000);
35
    mySwitch.send(BAUHAUS_REV_1_OFF, BAUHAUS_REV_PACKET_LENGTH);
36
    delay(1000);
37
    
38
    mySwitch.send(BAUHAUS_REV_2_ON, BAUHAUS_REV_PACKET_LENGTH);
39
    delay(1000);
40
    mySwitch.send(BAUHAUS_REV_2_OFF, BAUHAUS_REV_PACKET_LENGTH);
41
    delay(1000);
42
  
43
    mySwitch.send(BAUHAUS_REV_3_ON, BAUHAUS_REV_PACKET_LENGTH);
44
    delay(1000);
45
    mySwitch.send(BAUHAUS_REV_3_OFF, BAUHAUS_REV_PACKET_LENGTH);
46
    delay(1000);
47
    
48
    
49
50
  #else
51
    if (mySwitch.available()) {
52
      int value = mySwitch.getReceivedValue();
53
      if (value == 0) {
54
        Serial.print("Unknown encoding");
55
      } else {
56
        Serial.print("Received ");
57
        Serial.print( mySwitch.getReceivedValue() );
58
        Serial.print(" / ");
59
        Serial.print( mySwitch.getReceivedBitlength() );
60
        Serial.print("bit ");
61
        Serial.print("Protocol: ");
62
        Serial.println( mySwitch.getReceivedProtocol() );
63
      }
64
      
65
      mySwitch.resetAvailable();
66
    }
67
    #endif
68
}

Gute Nacht

von Artata (Gast)


Lesenswert?

Update: Heute auf Arbeit mit einem Kollegen das RX Modul am Logic 
Analyzer angeschaut. Das Ding hat ein breitbandiges Rauschen bei 
Frequenzen von 350-450MZh. Ich glaube, mir wurden B-Ware Empfänger 
geliefert, da ich online über Reichweiten von 30-50 Meter/Indoor lese. 
Ich werde mal ein Pärchen vom anderen Zulieferer kaufen und dann noch in 
mal schauen, wie der Empfang ist.

von NorbertL (Gast)


Angehängte Dateien:

Lesenswert?

Nachdem ich diese ebay-Module auch mal ausprobiert hatte (Stichworte: 
Arduino, UART, VirtualWire, etc...), sah ich mir den "ATAD"-Ausgang ;-) 
des Empfängers mal am Oszi an: keine einzige "1" noch "0" vom Sender! 
(Stichwort: "Blink-LED") - stattdessen nichts wie chaotische Einsen und 
Nullen als "Rausch"-(Müll)-Verstärkung!

Dann kam ich auf die Idee, dass die +5 Volt vom USB und auch die vom 
uC(Arduino) durch digitales Rauschen sicherlich "verschmutzt" sind => 
Verstärkung durch den Empfänger!, (das "Digital"-Rauschen kann man schön 
am Oszi sehen, wenn man in die 5V-Spannung "hineinzoomt"! - habe daher 
den Empfänger ("XY-MK-5V") zuerstmal an den 3,3V-Ausgang des Arduino 
drangehängt - schon besser!
Aber erst, als ich die 3,3V-Spannungsversorgung des Empfängers mit einem 
TL431 (=2,5V-Ref. + NPN-Transistor + Widerstände) UND mit einem 
10uF-Kondensator so weit "geglättet" hatte, dass man im Oszi kaum noch 
"VCC-Rauschen" sah, ging der "0,5s-Blink"-Empfang dann auf wundersame 
Weise bis ins nächste Zimmer!
Eine SEHR glatte Versorgungsspannung des Empfängers ist daher Pflicht! 
Dies kann man sicher auch mit einem 1117-3,3V-LDO machen, aber ich hatte 
im Moment nur den TL431 in der Schublade... (Beispiel-Schaltung: siehe 
Anhang).

Die Länge der Antenne ist zwar überall mit 17,3 cm beschrieben - aber 
die Praxis zeigt dann doch: umso länger, umso besser(?)... (ich hatte 
mit ca. 35cm einen wesentlich besseren Empfang als mit 17,3cm!)

Die Codierung kann man dann noch z.B. mit der "Virtual-Wire" Library 
besorgen, dafür gibt's genug Beispiele, ich tendiere aber zu einer 
eigenen, einfacher ohne UART (der bleibt dann für den PC frei):
3ms HIGH, dann das zu sendende Byte mit HIGH-LOW im 500uS-"Takt" (jedes 
Byte = eine for-Schleife mit 8bits), diese dreimal hintereinender, 
darauf ein #-Zeichen als Abschluß, das müßte dann auch auf Jedem 
Digital-Pin des uC ausgegeben werden können (und empfangen werden auch!)
Den Arduino-Code poste ich demnächst hier.

von NorbertL (Gast)


Lesenswert?

Noch ein Weiteres:
Der Ausgang des Empfängers weist bei einem "HIGH" nur 2V auf, daher 
reicht diese Spannung für einen (5V)-Digital-Eingang nicht. Also mit 
einem vorgeschalteten NPN-Transistor verstärken oder mit einem der 
Analog-Eingänge (OK, die sind beim Arduino möglicherweise zu langsam...) 
oder mit dem Komparator... "empfangen". Da diese 2V beim Analog-Eingang 
mit 1024 bit "nur" ca. 400 "Schritte" ausmachen, ist ein 
"Soft-Fenster-Diskriminator" nötig, um die Einsen und Nullen auf 
TTL-Niveau (=5V) "anzuheben". Dabei wird gleichzeitig ein evtl. noch 
vorhandenes "Grundrauschen" abgeschnitten...

Mit diesem Code hier geht das ganz gut:
1
/* RF Blink - Receiver sketch 
2
 Written by ScottC 17 Jun 2014
3
 Arduino IDE version 1.0.5
4
 Website: http://arduinobasics.blogspot.com
5
 Receiver: XY-MK-5V
6
 Description: A simple sketch used to test RF transmission/receiver. 
7
------------------------------------------------------------------*/
8
9
#define rfReceivePin A0 //RF Receiver pin = Analog pin 0
10
#define ledPin 13 //Onboard LED = digital pin 13
11
12
unsigned int data = 0; // variable used to store received data
13
const unsigned int upperThreshold = 300; //upper threshold value
14
const unsigned int lowerThreshold = 100; //lower threshold value
15
16
void setup()
17
{
18
 pinMode(ledPin, OUTPUT);
19
 Serial.begin(9600);
20
}
21
22
 void loop()
23
{
24
 data=analogRead(rfReceivePin); //listen for data on Analog pin 0
25
26
 if(data>upperThreshold)
27
 {
28
 digitalWrite(ledPin, LOW); //If a LOW signal is received, turn LED OFF
29
 Serial.println(data);
30
 }
31
 
32
 if(data<lowerThreshold)
33
 {
34
 digitalWrite(ledPin, HIGH); //If a HIGH signal is received, turn LED ON
35
 Serial.println(data);
36
 }
37
}

von NorbertL (Gast)


Lesenswert?

Der "Sender" (Test-Code):
1
#define rfTransmitPin 2 //RF Transmitter pin = digital pin 2
2
#define ledPin 13 //Onboard LED = digital pin 13
3
4
void setup()
5
{
6
  pinMode(rfTransmitPin, OUTPUT); 
7
  pinMode(ledPin, OUTPUT); 
8
}
9
10
void loop()
11
{
12
  {
13
  digitalWrite(rfTransmitPin, HIGH); //Transmit a HIGH signal
14
  digitalWrite(ledPin, HIGH); //Turn the LED on
15
  delay(500); //Wait for 0.5 second
16
 
17
  digitalWrite(rfTransmitPin,LOW); //Transmit a LOW signal
18
  digitalWrite(ledPin, LOW); //Turn the LED off
19
  delay(500);
20
  }
21
}

von NorbertL (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein (funktionierendes!) Beispiel eines 20kHz-Dimmers für einen 
Power-LED-Strahler, mit Schaltung und Arduino-Code (Sender incl. 
hex.file - zum Flashen per ISP ohne Bootloader für schnelleren Start).

von NorbertL (Gast)


Angehängte Dateien:

Lesenswert?

Ein weiteres Beispiel zur Ausführung eines Power-LED-Dimmers 
(Flutlichtstrahler), einmal ausgeführt auf Lochrasterplatinen oder auch 
als mögliche DIY-SMD-Layout-Variante - (DIY-Ätzverfahren per 
Direct-Toner) im Archiv anbei.
Das Zip-Archiv enthält auch eine kleine Programm-Korrektur: Der 
Receiver-PWM-Ausgang liegt an D3 anstelle D9... Eile verursacht leicht 
(Flüchtigkeits-)Fehler...
Zur Reichweiten-Verlängerung schlage ich eine Bi-Quad Draht-Antenne für 
den Empfänger vor (DIY). Dazu anbei auch eine Zusammenfassung aus 
Anleitungen zur einfachen Herstellung so einer Cu-Draht-Antenne, hier 
für das 433-MHz-Band (=17,3cm Kantenlänge_x4 x2).

von Simon (Gast)


Lesenswert?

Hallo Norbert,

kannst du vielleicht herausfinden, ob der Empfänger des Sets die 
Signalstärke (RSSI) irgendwo abgreifbar hat?

Viele Grüße,
Simon

von Sebastian (Gast)


Lesenswert?

Top Anleitung von dir! Danke für die Info mit der Spannung.

Sebastian (xxlxx)

von Christian (Gast)


Lesenswert?

Hallo Norbert,

ich hab das dringende Bedürftnis mich zu bedanken!!! Ich hatte aufgrund 
Internetrechergen einen RXB12 als Receiver-Modul benutzt (Projekt FHEM 
Signalduino) und hatte keinen besseren Empfang, als mit dem primär 
eingesetzten XY-MK-5V. Auch eine Verbesserung der Antenne brachte keinen 
nennenswerten Erfolg. Aufgrund dieses Threads habe ich nun gerade einen 
78L05 Voltage Regulator dazwischen gehängt (den hatte ich noch liegen 
und es war der Weg des geringsten Widerstands ;-) ) und schon sieht die 
Welt ganz anders aus: Auf einmal bekomme ich sogar Empfang aus dem 2 
Stockwerke tiefer gelegenen Keller (ok - Holzbalkendecken, aber vorher 
hatte es gereicht, den Sender hinter meinem Rücken zu verstecken und 
schon war Schluss!). Ich bin vollauf zufrieden!

Viele Grüße!!!

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe den XY-MK-5V einmal ausprobiert.
Es gibt bei dem Modul 2 Probleme:
1. Rauschen
Die kurzen Rauschimpulse lassen sich per Software leicht herausfiltern
siehe Beispielsoftware
Zunächst müßt ihr mit einem Scope die die Anzahl der übertragenen Bits 
feststellen. Dann die Länge in usec der Nullen (lange Zeit High) und der 
Einsen (kurze Zeit High).
2. Antenne
Wenn ihr eine Antenne anlötet, wird der Eingangskreis eventuell leicht 
verstimmt, was sich auf die Eingangsempfindlichkeit erheblich auswirkt. 
Dies läßt sich aber durch nachjustieren des Trimmers leicht beheben.
Wenn ihr dass alles berücksichtig, kommt ihr locker 50 Meter (Freifeld) 
weit und durch ca. drei Hauswände.
Beim Test im Freifeld ist zu beachten, die Abstimmung hat einen relativ 
hohen TK, was gerade jetzt im Winter sehr stört.
Wenn ihr aber einen wirklich guten Empfang haben wollt und bis zu 1000 
Meter (Freifeld) weit kommen wollt, dann nehmt den RXB8.
Ich habe getestet: XY-MK-5V, RXB6, RXB8, RX-SYN480, CS01-0-258EQ, 
TDA5210
Grüsse
Willi

von Willi (Gast)


Lesenswert?

Hallo,
mir ist da leider ein kleiner Fehler unterlaufen.
Das beste Empfangsmodul war mit das RXB8 sondern das RXB6.
Grüsse
Willi

von Willi (Gast)


Lesenswert?

Hallo,
mir ist da leider ein kleiner Fehler unterlaufen.
Das beste Empfangsmodul war nicht das RXB8 sondern das RXB6.
Grüsse
Willi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.