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)
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?
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.
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?
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.
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.
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?
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.
Eine eigene Frage?
Dieser Thread ist über 13 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.