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
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.
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
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.
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.
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 | }
|
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 | }
|
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).
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).
Hallo Norbert, kannst du vielleicht herausfinden, ob der Empfänger des Sets die Signalstärke (RSSI) irgendwo abgreifbar hat? Viele Grüße, Simon
Top Anleitung von dir! Danke für die Info mit der Spannung. Sebastian (xxlxx)
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!!!
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
Hallo, mir ist da leider ein kleiner Fehler unterlaufen. Das beste Empfangsmodul war mit das RXB8 sondern das RXB6. Grüsse Willi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.