Forum: HF, Funk und Felder 433Hz funk Basics


von Michael H. (michael_h25)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin noch blutiger Anfänger beim elektronik-Basteln und bin dazu über 
den Arduino gekommen, da ich ganz gut programmieren kann.

Ich habe mir nun ein billiges 433Mhz RF link kit für 4.90 $ besorgt und 
wollte damit etwas rumspielen.

Mein Frage lautet nun: Kann ich auf den Data-Eingang des Senders einfach 
eine Dauerspannung legen und die kommt als Dauerspannung beim 
Data-Ausgang des Receivers an? So dass das ganze als eine Art 
Funkschalter funktioniert. Ich will im ersten Ansatz keine Daten 
versenden, sondern nur An/Aus.

Hab meinen Aufbau (mit ATtiny) mal angehängt. Der ATtiny schalten den 
Ausgang auf HIGH für eine Sekunde, dann auf LOW und den den LED-Ausgang 
auf HIGH. Die gelbe LED dinet nur als Test, ob der ATtiny tut was er 
soll. die grüne LED am Empfänger leuchtet leider nie.

Was mache ich falsch (vorausgesetzt das Kit funktioniert)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Normalerweise ist der Empfänger die aufwendigere Platine, so das ich 
glaube, du hast Sender und Empfänger verwechselt.
Es sind übrigens 433 MHz :-)

von Michael H. (michael_h25)


Lesenswert?

Uff - gute Anmerkung. In der Beschreibung hatte ich das anders 
verstanden:
http://www.seeedstudio.com/wiki/index.php?title=433Mhz_RF_link_kit

Hab's umgedreht, nun geht es - SUPER!!! Danke!

von Michael H. (michael_h25)


Lesenswert?

Hmmm - ich dachte es klappt. Scheint aber nicht ganz so zu sein.

Die Übertragungsrichtung ist nun richtig. Wenn ich den Dateneingang auf 
HIGH (~5V) schalte, dann wird die bereits leuchtende Empfänger-LED kurz 
heller und dann wieder normal. Wenn ich den Dateneingang auf LOW 
schalte, dann geht die Empfänger-LED kurz aus und fängt dann langsam 
wieder an zu leuchten.

Kann es sein, dass der Empfänger/Sender nur mit Signalflanken arbeitet?

Gibt es dzu irgendwo eine Beschreibung?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Michael H. schrieb:
> Kann es sein, dass der Empfänger/Sender nur mit Signalflanken arbeitet?

Ja, bzw. mit Datentelegrammen, also einer folge von 0 und 1. Was du 
genau verwendest, spielt nicht so eine Rolle, aber prinzipbedingt gehen 
Dauersignale nicht gut, da der Empfänger i.A. eine Regelung hat, die bei 
einem Dauersignal runterdreht.

Michael H. schrieb:
> Gibt es dzu irgendwo eine Beschreibung?

Konsultiere als erstes mal den mitgelieferten Waschzettel. Als nächstes 
kannst du dann z.B. die UART TX Leitung mit dem Sender verbinden und 
schauen, ob gesendete Bytes am Empfänger ankommen, entweder mit einem 
2ten MC oder auch über ein und denselben, an der UART RX angeschlossen.

Ansonsten musst du natürlich immer mit Störungen auf der Funkstrecke 
rechnen, da du ja nicht der einzige bist, der da sendet. Es wird später 
also Zeit, sich über ein fehlererkennendes, bzw. fehlertolerierendes 
Protokoll Gedanken zu machen. Wenn du z.B. nur ein einziges Zeichen 
(Byte) übertragen willst, ist es nicht die dümmste Idee, das Byte 
zweimal zu übertragen, einmal in der Normalform und einmal mit 0xFF 
ge'Xor'ed, so dass aus jeder 0 eine 1 wird und umgekehrt. Der empfänger 
XORed die beiden empfangenen Bytes wieder und lässt die Daten nur dann 
zu, wenn bei XORen wieder 0xFF rausgekommen ist.

von Michael H. (michael_h25)


Lesenswert?

Oje, ich habe befürchtet, dass das nicht ganz einfach wird. Gut, ich 
mache mir mal über ein Protokoll Gedanken.

Welche Reichweite kann man eigentlich von so einem Modul erwarten. Im 
Haus vom Keller in die 2te Etage? Oder eher von der Couch bis zum 
Fernseher?

Scheint bei mir eher letzteres zu sein, ich habe aber nicht mit der 
vollen Leistung gearbeitert.

Gibt es irgendwo bezahlbare Kits die leistungsfähiger sind?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mit RFM Modulen habe ich auf 868 MHz schon locker 300m im Freifeld 
überbrückt, allerdings nur mit 9600 bps. Im Gegensatz zu deinen Modulen 
müssen diese aber zwingend mit einem MC initialisiert und mit Daten 
beschickt werden, da diese ein SPI Schnittstelle haben. Teuer sind sie 
aber nicht.
http://www.pollin.de/shop/suchergebnis.html?S_TEXT=Funkmodul+RFM12-433+Sende-%2FEmpfangsmodul&log=internal&recommend=true

Ich sehe auf deinem Modulen keine vernünftige Antenne, die werden also 
eher eine bescheidene Reichweite haben. Zum Ausprobieren und Einarbeiten 
in die Materie sind sie geeignet, zumal die Investition ja nicht so 
gross war.

von Michael H. (michael_h25)


Lesenswert?

Danke, die Module von Pollin sind ja auch erschwinglich. Wenn ich genau 
verstanden habe wie alles funktioniert, schaue ich mir die auch mal an.

Nochmals vielen Dank für deine Hilfe.

von Michael H. (michael_h25)


Lesenswert?

Kleiner Nachtrag,

es funktioniert inzwischen sehr gut. Ich schicke mit einem ATtiny 
definierte Impulse à la 20ms HIGH, 20 ms LOW, 30ms HIGH, 20ms LOW, 40ms 
HIGH, 20ms LOW usw.

Auf der anderen Seite lese ich das momentan mit einem Aruino aus und 
versuche das Muster zu erkennen. Klappt mit einer gewissen 
Fehlerhäufigkeit relativ gut.

Die Reichweite ist bei 9V auf dem Sender und 5V auf dem Empfänger so 
gut, dass ich quer durch unser Haus bis in den Keller komme - also gut 
genug, um damit sinnvoll zu arbeiten (trotz nur $4,90 für das Set).

Nun muss ich mich mal mit der sicheren und störungsfreien Übertragung 
von Signalen per Funk beschäftigen, da ich im Moment noch keine 
Vorstellung habe, wie ich "echte" Informationen übertrage. Mein 
Impulsmuster (s.o.) ist realtiv robust und ich wiederhole es einfach 4 
Mal und erkenne es 3 bis 4 mal auf der anderen Seite. Wenn ich Zahlen 
(binär??) schicken würde, würde wahrscheinlich einiges verrauschen. 
Kennt jemand eine gute Informationsquelle, wie man sowas macht?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du brauchst einen fehlererkennenden Code. Da gibt es viele 
Möglichkeiten, angefangen von einer simplen Prüfsumme bis zu CRC 
Polynomen. Das wiederholte senden ist auf jeden Fall schon mal gut. Wenn 
der Empfänger von vorneherein weiss, wieviele Bytes in einem Datensatz 
enthalten sein müssen, nimmt er z.B. das letzte als Prüfsumme und 
vergleicht das mit dem, was er selber während des Empfangs aufsummiert 
hat. Wenns nicht stimmt, verwirft er den Empfang.
Wenn die Länge des Telegrammes nicht festgelegt ist, brauchst du eine 
Art 'Ende' Marker, der dann z.B. von einer Prüfsumme abgeschlossen wird.
Oder du nimmst z.B. das o.a. XOR Verfahren.

Es ist nicht die schlechteste Idee, erstmal die UART des Arduino als 
Empfänger zu nehmen, du musst dir halt eine Software UART Senderoutine 
im Tiny zusammenbauen.

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.