Low cost Funksteckdosen + Arduino
Für die billige Haus-Automatisierung möchte ich hier heute meine frisch geschriebene Arduino Libary für “433MHz Baumarkt Funksteckdosen” vorstellen. Weil Conrad aber näher als Max Bahr ist und ich auch lieber bei Conrad shoppe, habe ich für knapp 10 EUR die hier gekauft.
In der Fernbedienung schlummert ein SC5262 Chip (Datenblatt), welcher je nach gedrücktem Knopf ein digitales Datentelegram erzeugt und an den eigentlichen Funksender weitergibt. Nach intensivem Studium des Datenblatts und verschiedenen anderen Quellen (1) (2) (3) mit ähnlichen Projekten habe ich es auch tatsächlich auch wie folgt geschafft, die Steckdose mit einem einzigen Datenkabel am Arduino zu steuern.
Theorie
Wenn man weiss wie die Datentelegramme aussehen müssen, kann man die auch selbst mit dem Mikrocontroller erzeugen und somit auf den Encoderchip aus der Fernbedienung verzichten. Im Datenblatt steht folgendes:
Ein Code Bit besteht aus zwei An/Aus-Zuständen, wichtig ist hierbei die zeitliche Länge dieser Zustände, kann man sich so ähnlich vorstellen wie Morsezeichen. Es gibt insgesamt drei mögliche Code Bits, nämlich “0″, “1″ und “F”. Darüber hinaus gibt es noch ein Sync. Bit (ich nenn’ es mal “S”).
"0" Bit => 1/8 Taktlänge An, 3/8 Taktlängen Aus, 1/8 Taktlänge An, 3/8 Taktlängen Aus -...-... "1" Bit => 3/8 Taktlängen An, 1/8 Taktlänge Aus, 3/8 Taktlängen An, 1/8 Taktlänge Aus ---.---. "F" Bit => 1/8 Taktlänge An, 3/8 Taktlängen Aus, 3/8 Taktlängen An, 1/8 Taktlänge Aus -...---. "S" Bit => 1/8 Taktlänge An, 31/8 Taktlängen Aus -...............................
Ein Code Word besteht aus 9 Adress Code Bits, 3 Data Code Bits und einem Sync Bit und repräsentiert quasi den Befehl welche Steckdose (Adress Bits) was machen soll (Daten Bits).
Ein Code Frame besteht aus 4 Code Words, also im Grunde genommen wird jeder Befehl 4x wiederholt.
Die Conrad Steckdosen sind dabei folgendermaßen Codiert:
4 Bits Gruppenadresse + 4 Bits Steckdosenadresse + 1 ungenutzter Adress Bit + 1 ungenutzer Daten Bit + 2 Daten/Befehls Bits + 1 Sync Bit
Gruppenadresse I = "0FFF"
Gruppenadresse II = "F0FF"
Gruppenadresse III = "FF0F"
Gruppenadresse IV = "FFF0"
Steckdose 1 = “0FFF”
Steckdose 2 = “F0FF”
Steckdose 3 = “FF0F”
Steckdose 4 = “FFF0″
Ungenutze Datenbits = egal, also “F” oder “0″
Befehl An = “FF”
Befehl Aus = “F0″
Wenn ich also die 3. Steckdose aus der 4. Gruppe ausschalten möchte, muss ich ein “FF0FFFF0FFF0S” senden.
Hardware / Fernbedienung anzapfen
Fernbedienung öffnen, am DOUT Pin ein Kabel und zwei weitere für die Stromversorgung anlöten. DOUT kann an jeden beliebigen I/O Pin vom Arduino, den Strom kann man auch vom Arduino abzapfen (5V und GND), denn obwohl da eigentlich eine 12V Batterie drin war funktioniert das ganze auch wunderbar mit 5V.
Software
RCSwitch.zip runterladen und im Arduino/Libaries Verzeichnis entpacken. Der folgende Sketch ist eigentlich selbsterklärend
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch(11); // Sender is connected to Pin #11
void setup() {
}
void loop() {
mySwitch.switchOn(1, 1); // Switch 1st socket on
delay(1000);
mySwitch.switchOff(1, 1); // Switch 1st socket off
delay(1000);
}
Updates
- Die Libary liegt jetzt bei Google Code
- Steckdosen mit DIP-Switches (in der Regel mt HX2262 oder PT2262 Encoder in der Original Fernbedienung) können auch angesteuert werden (Anleitung).
- Billiger: Bei Praktiker gibt es 3er Sets mit etwas Glück für 6,99 EUR im Sonderangebot (thx @ Reinhard); ich persönlich habe inzwischen zur Erweiterung die Steckdosen von Pollin (9,99 EUR 3er Set)genommen.
- Version 0.7 kann jetzt auch Codes einer Fernbedienung empfangen und decodieren
- Einfacher: Wer nicht löten möchte, sollte sich ein fertiges Modul kaufen. Gibt es ab 5 EUR. Am billigsten inclusive Versand von Händlern aus Hong Kong/China bei eBay (Suche nach “433 Arduino” oder “RF Link”). Ansonsten hier eine Liste mit Bezugsquellen.
- Unterstützung von Intertechno Steckdosen (thx @ Holger)



Ich habe es versucht nachzubauen, weil ich die Idee genial finde und habe mir auch die gleichen Steckdosen im Conrad gekauft, die Kabel angelötet, und deine Klasse benutzt, jeddoch scheint es nicht zu funktionieren. Ich habe ein Arduino Uno.. Die LED auf der Fernbedienung fängt auch an zu blinken, jeddoch keine Reaktion von den Steckdosen.
Oh, das ist blöd. Mögliche Ansätze:
- Könnte ein Timingproblem sein. Die gesendeten Bits haben eine Länge von 8*469 Mikrosekunden, wobei ich die 469 bei mir gemessen und nur an einer einzigen Steckdose ausprobiert habe – vieleicht war das ja ein Messfehler und eine besonders tolerante Steckdose…
Die Länge kann man optional im Konstruktor ändern. Kannst Du vieleicht mal folgendes durchtesten?
RCSwitch mySwitch = RCSwitch(11, 300);
RCSwitch mySwitch = RCSwitch(11, 320);
RCSwitch mySwitch = RCSwitch(11, 330);
[...]
RCSwitch mySwitch = RCSwitch(11, 440);
- Ich hatte bei mir im Laufe des Rumexperimentierens das Kabel nicht nur einfach rangelötet, sondern auch den Pin vom SC5262 tatsächlich getrennt (wobei ich mir ziemlich sicher bin, dass es auch verbunden ging).
Also ich habe den Pin schon getrennt, weil ich mir vllt. dachte, dass es hätte daran liegen können. Hatte da schonmal rumprobiert, aber in anderen Schritten. Es werden auch Daten gesendet: wenn alles verbunden ist, dann blinkt die LED auch wie bei einem normalen Tastendruck. Feedback folgt.
PS: geiles und wirklich nützliches Projekt
Also es funktioniert jetzt
Waren 2 Fehler:
1) ungenau gelötet => hab es jetzt an den out-Pin vom Chip direkt gelötet, da war mehr Platz ^^ und du hattest Recht, es geht auch mit verbundenem Chip
2) bei mir springt die Steckdose bei ~680 Mikrosekunden auf das Signal an
Danke
LG Dennis
Hi,
I’ve just completed a similar project – I had looked for other other solutions when I started, but I didn’t see yours.
http://arduino.cc/forum/index.php/topic,60669.0.html
Hallo,
habe nach deiner Anleitung eine Beschaltung für ein Funksteckdosenset vom Praktiker (im Sonderangebot für 6,99 !! für 3 Steckdosen mit Sender) vorgenommen. In der Fernbedienung ist ein HX2262 im Einsatz, der kompatibel mit dem SC5262 ist. In meiner Beschaltung musste ich den Ausgangspin des HX2262 vom Rest der Schaltung trennen. Da ich mit 5V statt 12V arbeite, habe ich den Serienwiderstand zwischen Chip und Oszillator von 20k auf 8,2k verkleinert. Die optimale Einstellung für die Delay ist in meinem Fall 320us.
Nachdem alles mit meinem Arduino Mega lief, habe ich eine Variante mit einem Attiny13 aufgebaut als Temperaturregler. Die Temperatur wird gemessen über einen KTY81 und die Steckdose wird bei definierten Temperaturwerten aus- und mit Hysterese wieder eingeschaltet. Das Programm dafür ist keine 700 Byte groß.
Vielen Dank für deine super Anleitung.
Gruß aus Köln
Reinhard
Auf so elektrotechnische Details bin ich als Programmierer ja (noch) so gar nicht sensibilisiert
Der neue Widerstand müsste nach dem Ohmschen Gesetz R(neu) = U(neu) * R(alt) / U(alt) berechnet werden, oder? Ich werd’ das bei Gelegenheit in die Anleitung aufnehmen. Danke
Hallo Reinhard,
genau das Funksteckdosen-Set habe ich auch.
Mein Problem ist die kurze Reichweite.
Meine Elektronikkentnisse sind dermassen rudimentär bis nicht vorhanden, sodass ich gern wüsste, welchen Serienwiderstand du wo und wie verkleinert hast?
Danke schomal!
@sui: tolles Projekt und super Anleitung, danke dafür!
Viele Grüße
Michael
Hallo Michael,
die Reichweite habe ich bisher nicht ausgetestet, ca. 3m ging problemlos. Der Serienwiderstand ist zwischen PIN17 (Ausgang) des IC HX2262 und dem Oszillator Baustein. In der Schaltung ist ein 27k verbaut. Die Einkopplung vom Arduino über den 8k Widerstand erfolgte direkt in die Leitung zwischen vorhandenem 27k SMD Widerstang und dem Oszillator, praktischerweise ist in der Leiterbahn eine Durchkontaktierung. Ich habe mal zwei Fotos online gestellt, die das ganz gut zeigen.
Trennung der Leiterbahn zwischen IC und R05 (27k)
https://picasaweb.google.com/lh/photo/YTTqC-zmgEXGs4rU3HFqXeY8FFpXEnArDrXfgj7Zm44?feat=directlink
Von Arduino
Einkopplung des Signals über 8k Widerstand
https://picasaweb.google.com/lh/photo/4vHgDowxGfPgy3XJSWJn0OY8FFpXEnArDrXfgj7Zm44?feat=directlink
Von Arduino
Gruß Reinhard
Hallo Reinhard,
danke für die ausführliche Beschreibung, ich werde schauen, ob ich das mit meinen Fähigkeiten gebacken bekomme
Gruß
Michael
Inzwischen kann ich statt der Fernbedienung eine andere Variante empfehlen. Mit dem Schaltkreis http://www.watterott.com/de/RF-Link-Sender-434MHz direkt am Arduino Ausgang funktionierts hervorragend. So braucht man die Fernbedienung nicht umzubauen und kann sie weiter zusätzlich nutzen.
Das wäre der oberhammer! Danke für den Tip!
Hallo,
funktioniert die Variante von Reinhard jetzt? Wie gut ist die Reichweite? Habe auch einen HX 2262 aber kann nur über eine Entfernung von weniger als 2 cm senden…
Hallo Patrick,
geht mir genauso, reichweite < 2cm.
Die lösung, die Reinhard oben gepostet hat, habe ich leider noch nicht probiert.
Aber es wird ja auch gesagt, dass die fernbedienung ohne die modifikationen an der fernbedienung (widerstände raus/ leitungen brücken) ca. 3m reichweite hat.
Sobald du die Variante von Reinhard probiert hast gib mir bitte bescheid….Ich bin mit meinem Latein am Ende, hab keinen Plan wie ich das lösen soll…
Grüße
Hi,
ich habe die Variante von Reinhard mit der 10€ Baumarktschaltung und HX2262 gerade zum laufen gebracht. Funktioniert toll, übrigens auch mit einem 10k Widerstand, kleinere hatte ich gerade nicht da. Eine tolle Anleitung.
Hi,
benutze die Steckdosen von von Intertechno samt Fernbedienung. Leider funktionieren diese nicht mit deiner Library. Hab keine Ahnung ob die ne andere Codierung der Signale verwenden, habe leider keinen Empfänger zur Hand. Vielleicht hat ja jemand Ahnung wie ich die Intertechno Dosen zum funktionieren überreden kann??
Ah, cool. Das Intertechno Protokoll ist wohl ziemlich ähnlich, aber da ich selber keine besitze, kann ich das auch nicht unter Garantie sagen. Sag’ bescheid wenn folgendes funktioniert, dann würde ich nämlich gerne noch eine einfach zu benutzende Methode für die Intertechno Steckdosen in die Libary packen.
Aus Familiencode + Gerätegruppe + Gerätenummer + An/Aus-Befehl musst du einen 12 Bit String basteln, dann jeden einzelnen Bit doppelt schreiben (also statt 1 => 11, statt 0 => 00) und mit dem jetzt 24 Bit Code sollten die Dosen gesteuert werden können:
[edit: war fehlerhaft, richtige codierung siehe etwas weiter unten]
Hmm,
funktioniert leider nicht bei mir. Habe beide Möglichkeiten für An ausprobiert. Nichts. Was kann ich noch ausprobieren?
Hab´s rausbekommen…
Genau spiegelverkehrte binäre schreibweise (von rechts nach links schreiben) des Codes:
Familiencode:
a = 0000
b = 1000
c = 0100
d = 1100
e = 0010
f = 1010
g = 0110
h = 1110
i = 0001
j = 1001
k = 0101
l = 1101
m = 0011
n = 1011
o = 0111
p = 1111
Gruppe / Gerät:
1 / 1 = 0000
1 / 2 = 1000
1 / 3 = 0100
1 / 4 = 1100
2 / 1 = 0010
2 / 2 = 1010
2 / 3 = 0110
2 / 4 = 1110
3 / 1 = 0001
3 / 2 = 1001
3 / 3 = 0101
3 / 4 = 1101
4 / 1 = 0011
4 / 2 = 1011
4 / 3 = 0111
4 / 4 = 1111
Befehl:
An = 0111
Aus = 0110
Beispiel:
Familie b (1000), Gruppe 3 / Gerät 2 (1001) / An (0111) = 100010010111
Da die einzelnen Bits immer hinter einer 0 gesendet werden = 010000000100000100010101
mySwitch.send(„010000000100000100010101″);
Hier noch der link wo ich Informationen zur Codierung gefunden habe:
http://www.mikrocontroller.net/topic/124084
speziell die Beschreibung in der pdf:
http://www.mikrocontroller.net/attachment/92084/avr.zip
Grüße
Holger
Großartig
Werde das im laufe der naechsten Tage in eine eigene Funktion packen.
Moin Holger,
kannst Du das bitte mal mit der aktualisierten Library testen?
http://code.google.com/p/rc-switch/downloads/detail?name=RCSwitch_rc1.zip
Beispielaufruf: Familie b, Gruppe 3, Gerät 2:
mySwitch.switchOn(‘b’, 3, 2);
mySwitch.switchOff(‘b’, 3, 2);
Hi,
gerade getestet, geht aber leider nicht. sicher, dass du die richtige codierung verwendest? Geschrieben jeweils von links nach rechts!
Familiencode:
a = 0000 =>gesendet werden muss 00000000
b = 1000 =>01000000
c = 0100 =>00010000
d = 1100 =>01010000
e = 0010 =>00000100
f = 1010 =>01000100
g = 0110 =>00010100
h = 1110 =>01010100
i = 0001 =>00000001
j = 1001=>01000001
k = 0101=> 00010001
l = 1101=>01010001
m = 0011=>00000101
n = 1011=>01000101
o = 0111=>00010101
p = 1111=>01010101
Gruppe / Gerät:
1 / 1 = 0000 => entspricht 1 auf der Steckdose
1 / 2 = 1000 => 2
1 / 3 = 0100 => 3
1 / 4 = 1100 => 4
2 / 1 = 0010 => 5
2 / 2 = 1010 => 6
2 / 3 = 0110 => 7
2 / 4 = 1110 => 8
3 / 1 = 0001 => 9
3 / 2 = 1001=> 10
3 / 3 = 0101=> 11
3 / 4 = 1101=> 12
4 / 1 = 0011=> 13
4 / 2 = 1011=> 14
4 / 3 = 0111=> 15
4 / 4 = 1111=> 16
Gruppe / Gerät:
1 / 1 = 0000 =>gesendet werden muss 00000000
1 / 2 = 1000 =>01000000
1 / 3 = 0100 =>00010000
1 / 4 = 1100 =>01010000
2 / 1 = 0010 =>00000100
2 / 2 = 1010 =>01000100
2 / 3 = 0110 =>00010100
2 / 4 = 1110 =>01010100
3 / 1 = 0001 =>00000001
3 / 2 = 1001=>01000001
3 / 3 = 0101=> 00010001
3 / 4 = 1101=>01010001
4 / 1 = 0011=>00000101
4 / 2 = 1011=>01000101
4 / 3 = 0111=>00010101
4 / 4 = 1111=>01010101
An:0111=> 00010101
Aus:0101=> 00010001
Ah, hab für die 1en 11 statt 01 gemacht. Hier der nächste Versuch:
http://code.google.com/p/rc-switch/downloads/detail?name=RCSwitch_rc1.1.zip
Jetzt geht es ohne Probleme, hab mal querdurch getestet! Super Arbeit.
Vielen Dank
Holger
Cool
Danke Dir für Research + Testen
Wo finde ich eigentlich den wiederstand in der Conrad Vernbedienung denn ich anpassen muss damit die Reichweit erhöht wird.
Irgendwie blick ich das nicht so ganz.Hab hier noch einen der dann ja passende müsste mit 8,2kOhm rumliegen.
Wäre sehr erfreut wenn mir jemand helfen könnte ?
Der DOut Pin am Chip ist der zweite von rechts oben (siehe Pfeil auf Foto im Blogeintrag). Folge der Leiterbahn an dem Pin, die sollte irgendwo an einem Widerstand enden (der andere Pfeil auf dem Foto, ich hab’ das Kabel an der Stelle angelötet weil ich nicht am Chip rumlöten wollte). Wenn Du den Widerstand ersetzen möchtest, musst Du den neuen natürlich am Lötpunkt auf der anderen Seite als abgebildet anlöten. Der neue Widerstand sollte folgenden Wert haben:
R(neu) = U(neu) * R(alt) / U(alt)
Danke für deine Antwort.
Nur zum verständniss WENN ich einen neuen Wiederstand einlöten würde könnte ich ihn hinter das element mit der nummer 334(auf dem foto oben zu sehen) löten, und vor diesen wiederstand das signal kael vom arduino richtig ?
Deute ich deine antwort so das ich das kabel auch erst einfach mal an die selbe stelle wie du anlöten soll und es so testen kann?
Ja, so ist das. Wobei ich zugeben muss, dass ich von Elektrotechnik nicht soo die Ahnung habe, weshalb ich das selbst tatsächlich ohne Austauschwiderstand einfach nur links rangelötet habe, was bei mir auch wunderbar funktioniert hat.
Edit: an meiner fernbedienung ist garkein weißes kabel dran ob wohl es die selbe von Conrad ist , hast du dieses Kabel dort angebracht ?
Das war dran, eine Seite des Kabels hängt in der Luft => ist die Antenne.
Ich werde es heute abend mal testen. Werde dann hier mal bescheid geben wie es mit reichweite und Co. aussieht.
Übrings: Super Blog , gut geschrieben nette Software ^^ finde ich echt nicht schlecht weiter so !
Hab es gestern mal aufgebaut.
Ohne den neuen Wiederstand geht gar nix ( max. reichweite <2cm) mit wieder stand war alles super
Vielen dank noch mal
Mmh, kann das sein, dass bei neuen Modellen die Antenne fehlt?
Ich habe auch kein weißes kabel. Die Platine sieht aber identisch aus.
Könntest du freundlicherweise ein foto von der rückseite mit reinstellen, falls du eines zur verfügung hast?
Die abgebildete Fernbedienung hat leider das Zeitliche gesegnet als ich sie auch praktisch in zwei Hälften sägen wollte… Bei anderen Sendern wird oft auch eine Leiterbahn mit entsprechender Länge auf dem PCB als Antenne verwendet.
Hallo,
wie funktioniert das den mit dem RF link Sender? Einfach an den Arduino anschließen und schon gehts? Wirklich so einfach?
Gruß Patrick
Ich habe die gleiche Platiene wie Reinhard (https://picasaweb.google.com/lh/photo/4vHgDowxGfPgy3XJSWJn0OY8FFpXEnArDrXfgj7Zm44?feat=directlink). Da es nicht vor dem Widerstand ging bin ich ohne Widerstand an den gleichen Punkt gegangen. Funktionierte aber nur mit 12V Batterieversorgung.
Reichweite ist gut (ca. 7m Plus 2 Wände ohne Problem)
Das mit dem RF link Sender funktioniert einwandfrei, auch mit 5 Volt ist die Rechweite > 20 Meter. einfach an den Arduino-Ausgang hängen und fertig.
Grüße Patrick
du glaubst gar nicht wie sehr du machinaex.de den arsch gerettet hast mit diesem tutorial und der library. dankeschön!!!
Hallo, ich hab da nochmal ne Verständnisfrage:
Ich bastel seit kurzen mit der Fernbedienung (Modell ganz oben wie sui77 (Conrad))rum.
Ziel ist es die Fernbedinung wieder mit 12V zu betreiben (Batterie oder Netzteil), aber die Daten (grünes Kabel) vom Arduino zu senden. Kann ich einfach den Plus-u.Minuspol an 12V anstöpseln und die Daten weiterhin vom Arduino steuern (grünes Kabel an Arduino, rot u. schwarz an Batterie oder externes Netzteil)? Oder himmelt da irgendetwas?
Ich würd’s nicht machen, das könnte unter Umständen Deinen Arduino schrotten.
Hi, ich hab’s tatsächlich hinbekommen. Der Widerstand an dem grünen Kabel hat 117k. Einfach wie oben beschrieben neu berechnet (48k) u. ersetzt. Schon stimmt die Reichweite wieder.
Wirklich toller Blog, der auch Newbies wie mir hilft! Danke nochmal.
Kann ich dieses Projekt auch mit einem RFM12b als Sender realisieren?
Würde mich auch interessieren, sind ja unheimlich günstig die Teile.
Hallo,
erstmal ein fettes Lob für diese geniale Bastelanleitung!!
Mit der RSL366T Fernbedienung von Conrad (oben im Bild) habe ich die Erfahrung emacht, daß dort ein 330K Widerstand zwischen DOUT und dem Oszillator verbaut war. Funktioniert hat es erst, nachdem ich einen 220K Widerstand parallel eingelötet hatte.
hallo guenter, ich glaub isch stell mich zu glatt an, kannst du mal nen foto posten wo du welchen widerstand eingeloetet hast?
Funktioniert hervorragend mit diesem Sender von eBay für 1,88 EUR inkl. Versand aus Hong Kong: http://www.ebay.de/itm/251074244515 (“1Pcs New 433Mhz RF transmitter and receiver link kit for ARM/MCU WL”)
Und ein 13 cm Draht als Antenne erhöht die Reichweite ungemein! Mit dem Hong Kong Modul reichen so 3,3V, um im ganzen Haus zu schalten.
Ich versteh es nicht. Bei mir funktioniert gar nichts. Habe es genauso gemacht, wie in dem Video hier: http://www.youtube.com/watch?v=KMdVuv3pGKc&feature=youtube_gdata_player
Ich habe nämlich die selbe Fernbedienung.
Die LED blinkt schön, aber es passiert gar nichts. Wenn ich wieder alles abstöppsel und die Batterie nehme, geht es per Hand.
Lötstellen sind super in Ordnung, Dip-Einstellungen stimmen mit denen im Code überein… Passt alles.
Habt ihr eine Ahnung, was das sein kann?
Basti, nimm am besten so ein Hongkongmodul, funktioniert geil und ist kein Gefummel. Der Originalfernbedienung reichen die 5V vom Arduino nicht, beim Hongkongmodul reichen sogar schon 3,3V …
Klingt gut. Es war nämlich tatsächlich die Spannung, die für die Outdoor Variante des Steckdosen Sets nicht gereicht hatte … Wo bekomme ich denn diese Hongkongmodule?
wie oben erwähnt hier: Hong Kong: http://www.ebay.de/itm/251074244515 (
Wo kommt denn die “Antenne” dran?
Danke für den Blog.
Okay. Hab’ jetzt ein entsprechendes Foto gefunden für den Sender.
Erledigt.
Hi,
I just read your post because i’m actually trying to send data over the SC5262 Chip, exactly as you did.
But i currently only can receive data (with the ReceiveData_demo project for the Arduino IDE), i dunno how to send it to switch on a light.
I used this code, using the informations that the receiveDemo_Advanced project gave me :
#include
RCSwitch mySwitch = RCSwitch();
void setup () {
Serial.begin(9600);
mySwitch.enableTransmit(2);
mySwitch.setRepeatTransmit(20);
delay(700);
}
void loop () {
mySwitch.send(5526871, 24); // i used the “decimal” output from the ReceiveDemo_Advanced project
delay(1000);
}
What is wrong with this code ?
I hope you could help me
By the way i connected the 2nd pin of my Arduino UNO to the DOUT pin, i dunno if it is correct.
Hallo,
wenn ich die Version 0.7 überpfrüfe erscheinen beim kompilieren Fehlermeldungen. Ich bin noch recht neu in diesem Thema. Ich möchte mit einer Funksender über Arduino meine Rolladen steuern. Um die Fernbedienung auszulesen, habe ich eine Empfänger an dem Arduino angeschlossen. Folgende Meldungen werden ausgegebn:
In file included from ReceiveDemo.cpp:1:
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:22:22: error: WProgram.h: No such file or directory
In file included from ReceiveDemo.cpp:1:
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:35: error: ‘String’ has not been declared
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:35: error: ‘void RCSwitch::switchOn(int, int)’ cannot be overloaded
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:33: error: with ‘void RCSwitch::switchOn(int, int)’
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:36: error: ‘String’ has not been declared
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:36: error: ‘void RCSwitch::switchOff(int, int)’ cannot be overloaded
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:34: error: with ‘void RCSwitch::switchOff(int, int)’
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:38: error: ‘String’ has not been declared
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:47: error: ‘String’ does not name a type
D:arduino-1.0.1librariesRCSwitchdecodier/RCSwitch.h:48: error: ‘String’ does not name a type
Ist dieser Sktech überhaupt für alle Fernbedienungen gedacht. Danke schon mal für deine Hilfe.
Den Fehler mit WProgram.h habe ich gelöst
Jetzt erscheint:
core.a(main.cpp.o): In function `main’:
D:arduino-1.0.1hardwarearduinocoresarduino/main.cpp:11: undefined reference to `setup’
D:arduino-1.0.1hardwarearduinocoresarduino/main.cpp:14: undefined reference to `loop’
Entschuldige bitte falschen Sketch geladen. Die akutelle Ausgabe von RecieveDemo:
sketch_aug03a:3: error: no matching function for call to ‘RCSwitch::RCSwitch(int)’
D:arduino-1.0.1librariesRCSwitch/RCSwitch.h:42: note: candidates are: RCSwitch::RCSwitch()
D:arduino-1.0.1librariesRCSwitch/RCSwitch.h:39: note: RCSwitch::RCSwitch(const RCSwitch&)
sketch_aug03a.cpp: In function ‘void setup()’:
sketch_aug03a:7: error: no matching function for call to ‘RCSwitch::enableReceive(int, void (&)(long unsigned int, unsigned int, unsigned int, unsigned int*))’
D:arduino-1.0.1librariesRCSwitch/RCSwitch.h:55: note: candidates are: void RCSwitch::enableReceive(int)
D:arduino-1.0.1librariesRCSwitch/RCSwitch.h:56: note: void RCSwitch::enableReceive()
Schlechte Fehlerzeile: -1
hy leute erstmals gibts großen Respekt an euch alle, die so super Projekte ins Internet bringen und testen!!! So mein Problem hab auch den HX2262, ersten 5 Dipschalter (ON ON ON ON ON) die zweiten 5(ON OFF OFF OFF OFF) hab die Versorgung an die 9V des Arduinos gelegt und den Data-Pin auf die 11
Quellcode:
#include
RCSwitch mySwitch = RCSwitch();
void setup() {
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(11);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
}
void loop() {
// Switch on:
// The first parameter represents the setting of the first 5 DIP switches.
// In this example it’s ON-ON-OFF-OFF-ON.
//
// The second parameter represents the setting of the last 5 DIP switches.
// As only one of these must be ON, it’s the number of the DIP switch which
// is ON. In this example the last 5 DIP switches are OFF-ON-OFF-OFF-OFF.
mySwitch.switchOn(“11111″, 1);
// Wait a second
delay(1000);
// Switch off
mySwitch.switchOff(“11111″, 1);
// Wait another second
delay(1000);
}
was mach ich falsch bitte um eure Hilfe
LG
Hallo,
Ich habe als Sender einen 433 von Ebay genommen und würde gerne jetzt mit dem Arduino und der Fernbedienung arbeiten, aber irgendwie geht die Fernbedienung nicht mehr wenn der Arduino Strom hat. Irgendeine Lösungsidee?
Probiere schon ewig mit dem Modul aber leider ohne Erfolg. Könntest Du mal ein Beispiel posten?
Danke,
Stefan.
Hey super Sache dein Projekt!
Eine Frage:
Ich bin ein ziemlicher Elektrotechniknoob, will dieses Projekt aber unbedingt verwirklichen. Habe mir ein RF Link Set von Ebay gekauft.
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=110916849186
Der Transmitter hat aber nur 3 Beinchen, wo muss ich diese im Unterschied zu den Transmittern mit 4 Beinen am Arduino anschließen?
Zur Steigerung der Reichweite möchte ich außerdem eine Antenne anlöten. Weißt du, an welchem Punkt des Moduls dies möglich ist?
VIelen Dank und frohe Weihnachten
Franz
Bei den Sendern mit vier Beinchen ist noch einer für eine externe Antenne. Ich würde sagen:
ATAD = Datenpin, also der Pin der im Sketch mit mySwitch.enableTransmit(10); definiert wird.
VCC = 5V
GND = GND
Danke für die schnelle Antwort!
Vielen Dank für diese super Library.
Ich hab nur mal eine Frage, ich habe nämlich die Intertechno Steckdosen, die sind ja nicht mehr per Dip Switch einzustellen. Zumindest habe ich keinen gefunden.
Geh ich recht in der Annahme das ich meine FB erst einmal mit einem Empfänger am Arduino “belauschen” muss um die Daten zu schalten meiner Steckdosen zu bekommen?
hallo,
möchte die intertechno itr-1500 per arduino steuern…
wo zapfe ich fernbedinung dafür an (:
hier ein bild :
http://s7.directupload.net/images/121229/5otgs2w4.jpg
http://s14.directupload.net/images/121229/h3r7sv9o.jpg
hallo,
ich hab mir diese fernbedienung von conrad geholt ein kabel an den doutpin gelötet und den code auf das arduino geladen doch als ich es am arduino angeschlossen hatte passierte garnichts! danach hatte ich probiert ob die fernbedienug manuell noch bedienbar währe doch dies wahr auch nicht der fall.was kann ich falsch gemacht haben ich hab alles so wie auf dem bild gelötet.
quellcode:
/*
Example for outlets which are configured with a 10 pole DIP switch.
http://code.google.com/p/rc-switch/
*/
#include
RCSwitch mySwitch = RCSwitch();
void setup() {
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
}
void loop() {
// Switch on:
// The first parameter represents the setting of the first 5 DIP switches.
// In this example it’s ON-ON-OFF-OFF-ON.
//
// The second parameter represents the setting of the last 5 DIP switches.
// In this example the last 5 DIP switches are OFF-ON-OFF-ON-OFF.
mySwitch.switchOn(“11001″, “01010″);
// Wait a second
delay(1000);
// Switch off
mySwitch.switchOff(“11001″, “01010″);
// Wait another second
delay(1000);
}
Hallo
Ich habe ihr Programm nach dem herunterladen in arduino geöfnet.
Wenn ich es nun kompelieren will Zeigt es folgene Fehlermeldung an :
sketch_jan02a:4: error: ‘RCSwitch’ does not name a type
sketch_jan02a.ino: In function ‘void setup()’:
sketch_jan02a:10: error: ‘mySwitch’ was not declared in this scope
sketch_jan02a.ino: In function ‘void loop()’:
sketch_jan02a:16: error: ‘mySwitch’ was not declared in this scope
Das ist das Programm:
#include ;
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(10);
}
void loop() {
mySwitch.switchOn(“11111″, “00010″);
delay(1000);
mySwitch.switchOn(“11111″, “00010″);
delay(1000);
mySwitch.send(5393, 24);
delay(1000);
mySwitch.send(5396, 24);
delay(1000);
mySwitch.send(“000000000001010100010001″);
delay(1000);
mySwitch.send(“000000000001010100010100″);
delay(1000);
mySwitch.sendTriState(“00000FFF0F0F”);
delay(1000);
mySwitch.sendTriState(“00000FFF0FF0″);
delay(1000);
delay(20000);
}
Ich würde mich über Hilfe sehr freuen
kann mir irgendjemand helfen? die funksteckdosen springen nicht an aber die fernebdinug funktioniert! hat vieleicht jemand eine lösung?
den code den ich verwende:
/*
Example for outlets which are configured with two rotary/sliding switches.
http://code.google.com/p/rc-switch/
*/
#include
RCSwitch mySwitch = RCSwitch();
void setup() {
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(13);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
}
void loop() {
// Switch on:
// The first parameter represents the setting of the first rotary switch.
// In this example it’s switched to “1″ or “A” or “I”.
//
// The second parameter represents the setting of the second rotary switch.
// In this example it’s switched to “4″ or “D” or “IV”.
mySwitch.switchOn(1, 4);
// Wait a second
delay(1000);
// Switch off
mySwitch.switchOff(1, 4);
// Wait another second
delay(1000);
}
ich freue mich über jede hilfe!
D
Ich möchte ein “Conrad Funkschalter-Set RS 202 Nr. 613002″ schalten. Hat jemand Erfahrung mit dem Set?
In der Fernbedienung ist der Chip unter einem Epoxy-Fleck versteckt.
https://plus.google.com/u/0/107344171403657182162/posts/CAoBCftn66y
Was mich vor allem irritiert, ist, dass man bei dem Modell an der Fernbedienung nach Einlegen der Batterie einen vierstelligen Code mit Ziffern von 1-4 einstellen muss und anschließend die Steckdose per Fernbedienung auf diesen Code und einen von vier “Kanälen” per Fernbedienung programmiert.
Ist die Library mit so einem Set kompatibel?
Danke für das tolle Projekt.
Ich habe es mit einer ELRO Wireless Home Control für 8.95 EUR von OBI und einem Arduino Uno bzw. einem Diavolino hinbekommen.
Die Versorgungsspannung für die Fernbedienung nehme ich vom 5V (Arduino Uno) bzw. Vcc (Diavolino). Ich gehe über einen 10k Ohm-Widerstand an den Sender, die Leitung zum PIN 17 des Chips auf der Fernbedienung habe ich mit einem Schraubenzieher durchgeschabt.
Die Reichweite ist mehrere Meter, auch durch Mauerwerk.
https://plus.google.com/u/0/107344171403657182162/posts/2U7FJWpRNmK
Hi Leute,
ich hab mir eine Funksteckdose von Polin einen Arduino UNO und einen RF Link 434 mhz bestellt. Nun hab ich alles daheim rumliegen und weiß irgendwie nichtmehr weiter. Software hab ich runtergeladen aber keine ahnung was ich machen muss. Wäre super wenn mir jemand helfen könnte. Lg Tom
Ich hab mir bei eBay jetzt mal nen 433Mhz Sender gekauft, weil ich mein HX2262 gegrillt habe und ungern eine neue Fernbedinung bestellen will. Wie steuer ich den Sender denn aber jetzt eigentlich an ? Die Steckdosen haben DIP Schalter 1-5 und A-E.
Am Sender habe ich 4 Pins: Antenne, +, -, Daten
Hast Du da Infos ? Danke!
hey s
vielen dank für deine super library! funktioniert mit arduino + china rf433 sender hervorragend.
ich will jetzt die library mal auf einem atmega ohne arduino ausprobieren. dazu habe ich einfach die RCSwitch:transmit funktion geändert:
digitalWrite(…, HIGH) zu PORTB |= (1 << …)
digitalWrite(…, LOW) zu PORTB &= ~(1 << …)
sowie eine delayMicroseconds funktion implementiert:
void delayMicroseconds(uint8_t x) {
uint8_t i;
for (i = 0; i<x; i++) {
_delay_us(1);
}
}
die receive funktionen benötige ich nicht, daher hab ich einfach RCSwitchDisbaleReceiving definiert.
allerdings funktioniert es so leider nicht, hab ich irgendetwas übersehen?
lg
malli
Hallo Malli,
Ich bin auch gerade dabei das ganze auf einem Atmega umzusetzen und heute hatte ich endlich die ersten Erfolge!
Das Problem war bei mir das die Sache mit den Delays irgendwie zu ungenau war ich hatte im schnitt immer 200us Pulslänge mehr.
Mit einem Logicanalyzer nachgeschaut waren es bei meiner Fernbedienung genau 495us wenn ich nun ein delay von 300us benutze funktioniert alles wie es soll
Ich Benutze übrigens folgendes Modul: “RF Link Transmitter – 434MHz. WRL-08946″