Liebe Forengemeinde, ich stehe derzeit etwas auf dem Schlauch und benötige Euren Rat: Ich versuche, mit einem RFM12 meine Elro-Funksteckdose anzusteuern. Dazu verwende ich : - 2x Funk-Evaluationsboards von Pollin - Atmega8 (12 MHz) samt jeweils aufgelötetem - RFM12B (468MHz) Beide Boards funktionieren und Funkverbindungen zwischen den Boards mit Benedikts Beispielprogrammen tun's ebenfalls. (ich glaube, es war das hier: Beitrag "Re: Beispielprogramm für RFM12 433MHz Funk-Module"). Sodann habe mit Hilfe des in den Datenblättern undokumentierten OOK-Tricks mein Empfänger-Board auf ASK (oftmals auch OOK genannt) umgestellt. Die Initialisierungsparameter sind diejenigen von jeelabs: http://jeelabs.net/projects/cafe/wiki/Receiving_OOKASK_with_a_modified_RFM12B Funksignale meines Elro-Senders konnte ich danach mit meinem RFM12B Empfänger wunderbar empfangen und mitschneiden (siehe 1. Bild im Anhang). Anschließend habe ich wiederum mit den jeelabs-Parametern meinen Sender aufgesetzt und per schnödem Ein-/Ausschalten in den TX/RX-Mode das Signal so genau wie irgend möglich (von Hand) nachgetuned. Ich finde, es ist mir gut gelungen (siehe 2. Bild im Anhang). Nur leider findet das die Funksteckdose nicht und sagt keinen Pieps. Ich bin momentan etwas ratlos. Habt Ihr irgendwelche Ideen? Viele Grüße Igel1
Den Link kannte ich schon - der verwendete leider auch nur die RFM12-Initialisierungen von jeelab (so jedenfalls meine Erinnerung). Und ARM-Code wird auf meinem Atmega etwas holpern. Trotzdem Danke für den Hinweis. Habt Ihr noch weitere Tipps (oder besser: eigene (Erfolgs)erfahrungen) ?
Ohne jetzt den Code der Elros zu kennen (ich schlage mich z.Z. mit dem alten ELV FS10 rum): Die Low-Zeiten im 2. Bild kommen mir noch etwas kurz vor, sofern in beiden Bildern die gleiche Zeitbasis verwandt wurde. Kannst du das Signal auch direkt in der Funksteckdose messen? Ist wg. fehlender Netztrennung ja nicht ganz trivial, aber könnte evtl. noch weiterhelfen.
Ich würde auch sagen die Low Zeiten sind zu kurz. Verwendest du die gleiche Programmlogik (Laufzeit) für die Erzeugung der High und Low Signale ? Holger PS: Wiederholst du das Signal auch mindestens 2 mal ? Die Funksteckdosen schalten est wenn es 2 mal hintereinander fehlerfrei empfangen wurde.
Andreas S. schrieb: > Ich finde, es ist mir gut gelungen (siehe 2. Bild im Anhang). Wenn man sich die untere Linie des LA ansieht, finde ich das nicht. Stellt ja wohl den Flankenwechsel von Low nach High dar. Da ist auffällig, dass viel mehr Spikes im zweiten Bild zu sehen sind, also finden evtl. zusätzliche Flankenwechsel statt.
Ich schätze mal, der Code ist falsch. Selbst Der, der empfangen wurde passt nicht. Du müßtest 12 Daten mit je 0, 1 oder F bekommen. Die sehe ich nicht....den Synchronimpuls am Ende sehe ich auch nicht... Gruß Helmut PS: Welche Elro's hast Du da? Anbei von den HE-Typen.
Meine ELROs steuer ich so an: 12 Bit S = Systemcode F = Adresse A-D xx 10 für aus, 01 für an // 8421 8421 8421 Sync // SSSS SFFF FFxx Adresse A-D wird so aufgelöst: 'A': 01111 'B': 10111 'C': 11011 'D': 11101 Bit 0 --> / Null ausgeben -___-___ 1000 1000 Bit 1 --> / Floatzeichen -___---_ 1000 1110 Sync --> / -______________________ 1:31 Ich baue alles in einem int zusammen, gebe die 12 Bits aus und danach ein Sync, dann Wartezeit 10ms, dann wiederholen.
Ist Das nicht Intertechno in Elro-Format? Anbei eine Übersicht, beachte die untere Bewerkung:
Zunächst einmal: vielen Dank für Eure Anregungen und Tipps. ---- @ Matthias: Okay - die Low-Zeiten werde ich mal etwas verlängern und dann hier wieder berichten. Allerdings meine ich gelesen zu haben, daß das, was man mit dem RFM12 empfängt wegen Empfänger-Übersteuerung sowieso nicht 100% der Realität entspricht. Ob das stimmt weiß ich nicht. Mein Ansatz war daher: wenn ich mit meinem RFM12-Sender ein Signal erzeuge, welches am RFM12-Empfänger genauso aussieht wie das Original-Signal des Elro-Senders, so sollten auch die Sendesignale von RFM12-Sender und Elro-Originalsender übereinstimmen - ganz egal, wie deren Timings in Wirklichkeit sind. Daher habe ich quasi "blind" versucht, das "Original-Signal" (so, wie ich es im RFM12-Empfänger angezeigt bekommen) mit dem RFM12-Sender nachzubauen. Ist dieser Ansatz schon falsch? Die Idee mit dem direkten Abgreifen an der Steckdose hatte ich auch schon, ist mir aber derzeit noch zu heikel. Ich werde das nur "in letzter Instanz" probieren - wenn alle anderen Optionen ausgeschöpft sind. (Hoffentlich wird das dann für mich nicht auch die "letzte Instanz" :-) ---- @ Holger: Meine Programmlogik ist brutal einfach (Achtung: die Bezeichnungen "bit0" und "bit1" und "sync" sind willkürlich - nur nicht dadurch verwirren lassen):
1 | void sendOOK(void) |
2 | { |
3 | bit0(); |
4 | bit0(); |
5 | bit0(); |
6 | bit1(); |
7 | bit1(); |
8 | bit0(); |
9 | bit0(); |
10 | bit1(); |
11 | bit1(); |
12 | bit1(); |
13 | bit0(); |
14 | bit0(); |
15 | bit1(); |
16 | bit1(); |
17 | bit0(); |
18 | bit0(); |
19 | bit1(); |
20 | sync(); |
21 | } |
22 | |
23 | |
24 | void bit0(void) |
25 | { |
26 | rf12_trans(0x8238); // TX on |
27 | _delay_us(420); |
28 | rf12_trans(0x8208); // TX off |
29 | _delay_us(840); |
30 | } |
31 | |
32 | |
33 | void bit1(void) |
34 | { |
35 | rf12_trans(0x8238); // TX on |
36 | _delay_us(1630); |
37 | rf12_trans(0x8208); // TX off |
38 | _delay_us(910); |
39 | } |
40 | |
41 | |
42 | void sync(void) |
43 | {; |
44 | rf12_trans(0x8208); // TX off |
45 | _delay_us(9000); |
46 | } |
"sendOOK()" wird aus einer Endlosschleife heraus aufgerufen - das Signal wird also mehr als 2x ausgestrahlt. Der Vollständigkeithalber habe ich den kompletten Code ebenfalls angehängt. Relevant sind für Euch vermutlich nur die Teile main.c und rf12.c ---- @Helmut > Ich schätze mal, der Code ist falsch. Selbst Der, der empfangen wurde > passt nicht. > Du müßtest 12 Daten mit je 0, 1 oder F bekommen. Die sehe ich > nicht....den Synchronimpuls am Ende sehe ich auch nicht... > > Gruß Helmut > > PS: Welche Elro's hast Du da? Anbei von den HE-Typen. Die Bezeichnung der Elro-Dosen lautet: - AB440S Die Dosen-Switches meiner Testdose, die auf Taste "C" hört, sind wie folgt gesetzt: System-Code | uit code 1 2 3 4 5 A B C D E -------------------------- 1 0 0 1 0 0 0 1 0 0 # 1=ON 0=OFF Der Abgebildete Code aus meinem ersten Posting stammt vom Einschalten dieser "C"-Dose. Bei Bedarf kann ich hier gerne weitere Bildchen einstellen. ---- Geben Euch diese Zusatzinfos weitere Anhaltspunkte, wo bei mir "der Hund begraben" liegt? Viele Grüße Igel1
Hier mal mein Code für die Ab440S, ist zwar für PIC sollte aber dank C leicht umzusetzen sein. Holger
Fall du oder ein anderer es testen will,mit steckdose(0x18,'A',1); wird die Funksteckdose mit dem Code (Mäuseklavier) 00111 10000 eingeschaltet (1=on) Fernbedienung: 00111 (1=on)
Würdest Du uns den Hexcode und den Prozessortyp/Quarz geben? Wird es über RS232 übergeben? LG Sven
@Sven: Falls du mich meinst das ist eine Routine die nichts weiter macht als den Steckdosencode ausgibt, da braucht es noch rundherum Software. Prozessor ist ein 18F, lässt sich aber auf alle gängigen µC anpassen
So - ich habe nun also schön brav die LOW-Zeiten verlängert, aber meine Steckdose sagt noch immer keinen Pieps. Im Anhang findet Ihr alle 8 Signale, die ich meinem Elro-Sender entlocken kann. Habe mir außerdem mal das Datenblatt vom HX2262 Chip angeschaut - meine Signalformen sehen dem leider so gar nicht ähnlich. Ich glaube, ich benötige doch noch ein paar Worte (oder gute Links) zur Codierung ... Viele Grüße Igel1 PS: Danke für den Code und all die anderen Bemühungen. Vor allem Holger hat mir Mut gemacht. Wenn er die AB440S ans Fliegen gebracht hat, so werde ich das (hoffentlich) auch irgendwann schaffen.
meine Routinen entstanden mit den Informationen von dieser Seite: http://avr.börke.de/Funksteckdosen.htm Holger
@Holger: mein Signal scheint eine völlig andere Codierung zu haben - die von Dir zitierte Börke-Website (Danke dafür) paßt leider gar nicht. Und Du hast wirklich auch die AB440S im Einsatz? Und die Codierung war wirklich so, wie auf der Börke-Seite angegeben? -------------- Sodann habe ich soeben nochmals 2h investiert, um mein Signal so exakt wie irgend möglich an das Originalsignal anzupassen. Das Ergebnis seht Ihr im Anhang: Oben ist das Original-Signal des Elro-Senders AB440S abgebildet. Unten ist mein Signalnachbau, den mein RFM12 erzeugt, abgebildet. Beide Signale habe ich mit demselben RFM12-Empfänger empfangen und aufgezeichnet. Sieht doch wirklich schön aus, oder? Funktioniert aber trotzdem nicht: die Funksteckdose schweigt. Ich gebe zu: absolute Genauigkeit ist mit dem RFM12 nicht zu erreichen, da sich die Pulslängen immer wieder minimal verändern (warum auch immer?). Das Originalsignal fluktuiert aber ebenfalls ein wenig. Ich weiß nun echt nicht mehr weiter. Als nächstes werde ich nun Holgers PIC-Programm analysieren - insbesondere die Initialisierung des RFM12-Senders. Habe allerdings wenig Hoffnung. Langsam kommt Frust auf. Viele Grüße Igel1
Ich hab hier liegen, ELRO AB440R als Handsender, AB440S als Empfänger. Davon laufen ca. 8 Stück hier mit dem Programm im Anhang oben. Die Initialisierung des RFM12 ist
1 | RFM12_init( 4, 1, 4, // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm |
2 | RF12FREQ(433.92), // Sende/Empfangsfrequenz auf 433,92MHz einstellen (Berechnung im #define Macro!) |
3 | 4800, // Baudrate |
4 | 0, 6 // 1mW Ausgangangsleistung, 120kHz Frequenzshift |
5 | ); |
Das wird schon !
Hallo zusammen, ich stecke nach wie vor fest und benötige Eure Hilfe. Folgende Fragen stellen sich mir: - Wie genau muß ich das Timing des Senders nachbilden? - Warum passen meine mitgeschnittenen Signale offenbar so gar nicht zu der von Holger zitierten Börke-Seite? (ich habe z.B. nur 17 Signalperioden [1 Periode = High-Low-Folge], auf der Börke-Seite werden 12 Zeichen mit 24 Perioden + 1 Sync übertragen) Viele Grüße Igel1
@Holger: Könntest Du mir netterweise Deinen kompletten Code zusenden oder hier einstellen? Ich benötige doch etwas mehr als die reinen Funktionsaufrufe, um die genaue Initialisierung bzw. das Timing zu rekonstruieren. Viele Grüße Igel1
PN ist unterwegs, wenn es dann bei dir funktioniert können wir ja hier berichten an was es gelegen hat. Holger
Hallo Nachtschwärmer, Holger hat mir den entscheidenden Denkanstoß gegeben, indem er so beharrlich darauf bestanden hat, daß das Signale bzgl. der Anzahl der Perioden exakt dem entspricht, was auf der Börke-Seite dokumentiert ist: http://avr.börke.de/Funksteckdosen.htm Ich hab's so lange nicht geglaubt, bis er mir sogar sein Programm geschickt hat (@Holger: sehr sauber geschrieben - Chapeau und Kompliment!). Das hat letztlich dazu geführt, daß ich meine eigene Frage aus meinem vorletzten Posting beantworten konnte, die da lautete: - Warum passen meine mitgeschnittenen Signale offenbar so gar nicht zu der von Holger zitierten Börke-Seite? Ich selber habe z.B. nur 17 Signalperioden [1 Periode = High-Low-Folge], auf der Börke-Seite werden 12 Zeichen mit 24 Perioden + 1 Sync übertragen. Des Rätsels Lösung: Offenbar ist mein RFM12 Empfänger zu träge: er folgt einfach den Flanken nicht schnell genug. Das führt dazu, daß kurze Low-Gräben verschluckt werden und ich ein umso längeres High Signal angezeigt bekomme. Ein Bild sagt mehr als 1000 Worte: Schaut Euch das Bild im Anhang an und Ihr versteht, was ich meine ... Kaum fügt man die besagten "Low-Gräben" in den Signalverlauf ein (siehe rote Linien im unteren Teil des Bildes), schon stimmt das Ergebnis exakt mit der Börke-Seite überein. Bitte beachten: meine weiter oben zitierte Dosen-Codierung, die an den DIP-Schaltern eingestellt ist, ist nach der "Börke" Nomenklatur invertiert zu lesen ist, nämlich: System-Code | uit code 1 2 3 4 5 A B C D E -------------------------- 0 1 1 0 1 1 1 0 1 1 # 0=Dip-Schalter: ON 1=Dip-Schalter: OFF Genau diese Dosencodierung finde ich auch im korrigierten Signal wieder (wobei eine "0" als "00" und eine "1" als "01" im Signal abgebildet ist). Und somit paßt das Ergebnis exakt zur Börke-Seite und ich schöpfe Hoffnung, daß ich nun auch in der Lage bin, das Signal meines Senders richtig zu "designen". Mann-oh-Mann - das war für mich ein langer Weg bis zu dieser Erkenntnis. Leider ist's schon so spät, daß ich Euch das Ergebnis - sprich: ob das korrigierte Signal die Dose schaltet oder nicht - vermutlich erst morgen oder in ein paar Tagen präsentieren kann. Viele Grüße (und nochmals vielen Dank an Holger!) Igel1
Einfacher wäre ein stink normaler 433 Sender gewesen, darf ich fragen warum gerade der RFM12?
Helmut H. schrieb: > Einfacher wäre ein stink normaler 433 Sender gewesen, darf ich fragen > warum gerade der RFM12? Ich hatte mich seinerzeit einige Stunden / Tage in dieses Funkmodul eingearbeitet, weil der RFM12: - sehr billig ist - bei gängigen Versandhändlern verfügbar ist - es viele Beiträge dazu im Forum gibt Aber ich gebe Dir, Helmut, vollkommen Recht: Die Module sind für den oben genannten Einsatzzweck definitiv nicht optimal geeignet. Inzwischen weiß ich auch, daß die RFM12-Herstellerdoku wirklich grauenhaft ist. Lediglich der verbaute Chip ist einigermaßen dokumentiert (meine persönliche Bewertung: eher so lala bis schwach). Wie dem auch sei: wo ich mich nun schon einmal in den RFM12 eingelesen hatte, da packte mich halt der Ehrgeiz, es mit dem RFM12 und den Funksteckdosen auch irgendwie "hinzubiegen". Insgesamt hast Du aber Recht: ein zweites Mal würde ich mir eine solche "Kante" vielleicht doch nicht geben. Viele Grüße Igel1
Heureka - es hat geklappt !! Mit der Erkenntnis aus meinem vorletzten Posting (das mit der korrigierten Signalform im angehängten Bildchen), bin ich nun endlich zum Ziel gekommen: Ich konnte soeben erfolgreich mit meinem Funk-Evaluationsboard von Pollin samt aufgelötetem RFM12 eine Funksteckdose vom Typ Elro AB440S schalten. Ein dickes Dankeschön an alle Helfer - insbesondere an Holger für die moralische Unterstützung und die netten Code-Beigaben. Selbstverständlich werde ich Euch alle nicht enttäuschen und meinen Code in den nächsten Tagen hier einstellen (er ist derzeit noch sehr "struppig" und ich muß morgen früh raus, da reicht's nicht mehr zum Beautyfy'en ...). Viele Grüße Igel1
Andreas S. schrieb: > Inzwischen weiß ich auch, daß die RFM12-Herstellerdoku wirklich > grauenhaft ist. Das ist schon wahr, wenn man sich nur die Doku von HopeRF anschaut. Die Waschzettel von SiliconLabs in Verbindung mit den HopeRF Blättern allerdings haben mir zumindest bei den RFM01/02 sehr geholfen. > Ich konnte soeben erfolgreich mit meinem Funk-Evaluationsboard von > Pollin samt aufgelötetem RFM12 eine Funksteckdose vom Typ Elro AB440S > schalten. Gratuliere! Nur wäre es mir als Verschwendung vorgekommen, einen schönen Datentranceiver lediglich als 433MHz OOK Sender zu benutzen. Ich habe mir deswegen diese Dinger zugelegt und statt dem HS1527 einen ATTiny montiert: http://www.pollin.de/shop/dt/NDY0OTQ0OTk-/Haustechnik/Installationsmaterial/Schalter_Steckdosen/Ersatz_Fernbedienung_fuer_Funk_Dimmer_Schalter.html
Liebe Forengemeinde, ich löse hiermit mein gestriges Versprechen ein: Ihr findet anbei meinen Code, der meine Elro AB440S Funksteckdose ansteuert. Er ist vermutlich für zahlreiche weitere, ähnliche Funksteckdosen geeignet. Der Code ist eine reine Machbarkeitsstudie und zeigt lediglich das Prinzip auf: der Code ist daher jedes Mal minimal anzupassen, sobald eine andere als die fest codierte Steuersequenz gesendet werden soll (z.B. Ausschalt-Sequenz statt Einschalt-Sequenz). Möchte man alle Steckdosen A ... E einer Elro-Gruppe mit diesem Code ein- oder ausschalten und diesen Vorgang z.B. via I2C oder RS232 steuern, so ist der Code entsprechend zu erweitern. Selbstverständlich ist der Code nur für Versuchszwecke geeignet und entspricht ggf. nicht den gängigen/aktuellen Funkrichtlinien und Gesetzen – jeder, der den Code einsetzt, sollte sich vorab mit diesen Richtlinien/Gesetzen vertraut machen (inklusive ich selbst ...). Viel Spaß beim Funken und Schalten Igel1
1 | /********************************************************************************************************* |
2 | * |
3 | * Description: |
4 | * Very basic program that sends a control sequence to a remote control outlet |
5 | * Sehr einfaches Programm, das eine Steuersequenz an eine Funksteckdose sendet |
6 | * |
7 | * This program is just a feasibility study that demonstrates how to employ an RFM12 |
8 | * module to switch a remote control outlet using OOK modulation (On-/Off keying) |
9 | * |
10 | * Das Programm ist lediglich eine Machbarkeitsstudie, die aufzeigt, wie man |
11 | * RFM12-Module verwendet, um per OOK-Modulation (On-/Off keying) Funksteck- |
12 | * dosen zu schalten. |
13 | * |
14 | * Hardware: |
15 | * AVR Funkevaluationsboard v1.20 from Pollin |
16 | * Atmega8L using a 12MHz external crystal osc., |
17 | * RFM12 radio module (433 MHz - version) |
18 | * |
19 | * Software |
20 | * IDE: AVR Studio 4.19 Build 716, |
21 | * using external gcc compiler from WinAVR |
22 | * |
23 | * Readings: |
24 | * http://www.mikrocontroller.net/topic/298868 # program was first published here |
25 | * http://avr.börke.de/Funksteckdosen.htm # explains coding sequence schema |
26 | * http://www.firefly-power.de/ARM/RFM12.html # good init-sequence for rfm12 |
27 | * |
28 | * http://www.mikrocontroller.net/articles/RFM12 # RFM12 basics |
29 | * http://www.mikrocontroller.net/topic/65984 # part of this code is based on benedikt's code |
30 | * |
31 | **********************************************************************************************************/ |
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.