Forum: Mikrocontroller und Digitale Elektronik Pollin Funk-Sender/Empfänger Fehlerkorrektur


von Kalle K. (kalledk)


Lesenswert?

Hi,

habe mir von Pollin das Funk-Sender/Empfänger-Set 868 MHz bestellt.
(http://www.pollin.de/shop/dt/NDQyOTQ0OTk-/Bausaetze_Module/Module/Funk_Sender_Empfaenger_Set_868_MHz.html)

Die Übertragung mit UART funktioniert auch schon ganz gut, allerdings 
empfange ich mit dem Empfänger auch noch ziemlich viel Müll.

Kann mir vielleicht jemand Tipps geben zur Fehlerkompensation?
Ich hatte mir schon überlegt einfach ein zeichen öfter zu senden und 
beim Empfänger dann zu schauen, welches Zeichen am meisten vorkommt.
Es gibt da aber wahrscheinlich noch bessere Verfahren :)

Vielen Dank schonmal

Gruß

von Patrick W. (pawi777)


Lesenswert?

Präambel, Addresse und vorallem CRC. So machen es alle intelligenten 
Funkmodule. Wenn du eine preiswerte und einfache Lösung willst nimm 2 
NRF2401+ Module. Im 10er Pack aus China für 13$. Also pro Paar nicht mal 
halb so teuer wie für den Pollin-Mist. Ausser es geht dir darum, zu 
lernen wie man auch mit deinen Modulen eine sichere Verbindung 
hinbekommt. Dann nur zu.

Gruss Patrick

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


Lesenswert?

Ein ganz simples Verfahren wäre, nach jedem gesendeten Byte seinen 
Kehrwert zu senden (also z.B. nach 0xAA ein 0x55) senden. Der Empfänger 
speichert das erste empfangene Byte und eXored es mit dem 2. Byte. Wenn 
0xff rauskommt, war die Übertragung gültig.
Wenn du immer Datenpakete sendest, kannst du beliebig entweder eine 
Prüfsumme hinterher schicken oder eine CRC.
Bedenke auch, das du nicht alleine im 868Mhz Band sendest. Wenn dein 
Empfänger was anderes aufschnappt, sollte er das zumindest als 
Fremdsendung erkennen.

von Wolfgang (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Der Empfänger speichert das erste empfangene Byte und eXored es mit dem
> 2. Byte.

Das wird kaum funktionieren, weil dem Empfänger damit immer noch die 
Präambel zur Synchronisation auf den Anfang des ersten Bytes fehlt.

von Patrick W. (pawi777)


Lesenswert?

Wolfgang schrieb:
> Matthias Sch. schrieb:
>> Der Empfänger speichert das erste empfangene Byte und eXored es mit dem
>> 2. Byte.
>
> Das wird kaum funktionieren, weil dem Empfänger damit immer noch die
> Präambel zur Synchronisation auf den Anfang des ersten Bytes fehlt.

Es wäre trotzdem möglich, aber sehr aufwendig, da man durchprobieren 
müsste. Natürlich ist und bleibt es ohne Präambel unsinn. Mit einer 
Präambel könnte es gehen, die Frage bleibt dann, ob das erste oder das 
zweite Byte falsch empfangen wurde. Eine Fehlerkorrektur bleibt somit 
unmöglich und da die Verbindung unidirektional ist, hat der Empfänger 
keine Chance eine erneute Übertragung anzufordern. Je nach dem Fall kann 
es auch ein Problem sein, dass mit diesem Verfahren die mögliche 
Datenrate halbiert wird.

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


Lesenswert?

Wolfgang schrieb:
> Das wird kaum funktionieren, weil dem Empfänger damit immer noch die
> Präambel zur Synchronisation auf den Anfang des ersten Bytes fehlt.

Nun, es bleibt natürlich das Startbit. Das das nichts mit sicherer 
Übertreagung zu tun hat, wissen wir alle, das geht nicht ohne 
vernünftige Header und mit diesen Modulen nur mit erheblichen Aufwand 
bei Sende- und Empfangsaufbereitung per MC. Es sind halt simple Module 
mit OOK Tastung und Komparatorausgang.

Patrick W. schrieb:
> Je nach dem Fall kann
> es auch ein Problem sein, dass mit diesem Verfahren die mögliche
> Datenrate halbiert wird.

Da wir nicht wissen, wozu die Dinger benutzt werden sollen, ist jegliche 
Spekulation über Datenraten und Prüfsummen sinnlos. Wenn mehr als ein 
Byte übertragen werden soll, sind effektivere Verfahren sicher 
angebracht. Aber der TE ist nun mal Anfänger.
Für meine Wireless DMX Systeme nehme ich eine Kombination aus XOR und 
CRC, was sich als sehr robust herausgestellt hat. Selbst wenn ein 
Kanalpaket gestört ist, kann ein anderer Kanal sauber übertragen werden. 
Bei mir läuft das auf den RFM01/02 Modulen.

von Wolfgang (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Nun, es bleibt natürlich das Startbit.
Nein, das hilft da wenig, weil der Empfänger in Sendepausen dauernd 
irgendwelches Rauschen als Startbit interpretiert. Das führt dann dazu, 
dass er sich während des echten Startbits meist mitten in einer 
Zeichenübertragung wähnt und nicht auf ein Startbit wartet.

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.