Forum: HF, Funk und Felder Microcontroller über 433Mhz verbinden


von Andi (Gast)


Lesenswert?

Hallo zusammen,
Ich habe zwei mc (c-control) mit einem 433mhz Sende/Empfänger-Pärchen 
verbunden.
An Tx bzw Rx hängt jeweils die serielle Schnittstelle.
Es soll lediglich ein Byte übertragen werden.
Das Ganze haut auch schon hin aber sehr unzuverlässig.
Meie Frage ist nun wie man eine sichere Übertragung hinbekmmt.
Ich mein beim 10-Euro-Garagentorsender gehts ja auch.
Ich sende das Byte übrigens direkt als solches per mc über den 
Tx-Ausgang zum Sender unf dann durch die Luft zum Empfänger.

Ein Buch zu mc und funkübertragung suche ich vergeblich.

Also brauch ich Euch als Experten.
Dank Euch

von Tip (Gast)


Lesenswert?

Andi schrieb:
> Meie Frage ist nun wie man eine sichere Übertragung hinbekmmt.

Verwende z.B. einen Code mit Hemming-Abstand > 1, so dass du auf der 
Empfängerseite Übertragungsfehler erkennen und korrigieren kannst. Eine 
andere Möglichkeit bei einer bidirektionalen Funkstrecke ist die 
Übertragung einer Prüfsumme, so dass die Empfangsstation bei 
Übertragungsfehlern die Daten erneut anfordern kann. Burst-Störungen 
läßt sich durch zeitversetzter Mehrfachübertragung aus dem Weg gehen.

mfg

von Andi (Gast)


Lesenswert?

Tip schrieb:
> Verwende z.B. einen Code mit Hemming-Abstand > 1,

Hallo,

ich kenne mich leider mit der Codierung überhaupt nicht aus.
MIr sagt das nichts. Ich weiß auch nicht wie ich so eine Codierung 
programmtechnisch realisiere.

Wie beschrieben übertrage ich momentan den Befehl als Byte. Also zum 
Beispiel wird lediglich die Zahl "9" mit put 9 übertragen und am 
Empfänger mit input [Variable] ausgewertet.

Beides über die seriellen Schnittstellen des MC.

Sollte ich wohl lieber bitweise übertragen, also z. B. "00010101"???

von Wolfgang M. (womai)


Lesenswert?

Hallo,

ich nehme mal an, dein TX/RX-Paar ist eines von diesen billigen 
433-MHz-Modulen ohne spezielle Codierung etc.? Dann sieh Dir mal den 
folgenden Thread von mir an:

http://www.picaxeforum.co.uk/showthread.php?t=11531

Ist zwar fuer Picaxe geschrieben, aber sehr einfach auf beliebige 
Mikrocontroller zu uebertragen.

Diese 433-MHz-Dinger haben automatisches Gain und einen DC-Block und 
muessen erst mal mit einer sogenannten Preamble "aufgeweckt" werden; 
eigentlich sollten im Datenstrom imme genauso viele Einsen wie Nullen 
sein (damit der DC-Level nicht wieder wegdriftet!), z.B. mit sog. 
Manchester-Codierung kann man das machen, aber wenn man das nur bei der 
Preamble macht und dann bloss ein paar Bytes uebetraegt geht das schon 
auch. Wichtig ist auch, irgendeine Kennung (z.B. "ABC") in den 
Datenstrom einzubauen damit der Empfaenger feststellen kann, wann die 
eigentlichen Daten anfangen. Was ich (siehe obiger Link) auch entdeckt 
habe, es ist notwendig, zwischen Preamble und Kennung+Nutzdaten eine 
Pause von etwas mehr als einem Byte einzufuegen, damit sich der 
Empfaenger nicht auf das falsche Bit synchronisiert.

Richtig verwendet habe ich mit diesen Dingern schon tagelang ueber 
ordentliche Entfernungen fehlerfrei Daten uebertragen.

Hoffe, das hilft mal ein bisschen

Wolfgang

von Andi (Gast)


Lesenswert?

Vielen Dank Wolfgang,
leider ist mein Englisch nicht so gut und ich kann mit Begriffen wie 
Preamble und Gain nix anfangen. Richtig ist, das ich mit den billigen 
433mhz-Platinen arbeite.
Kannst Du mir die Begriffe bitte kurz erklären?

von aaaaa (Gast)


Lesenswert?

>Kannst Du mir die Begriffe bitte kurz erklären?
Kannst du vielleicht Google benutzen wenn du schon eindeutige 
Suchbegriffe bekommst!

von Floh (Gast)


Lesenswert?

Andi schrieb:
> Meie Frage ist nun wie man eine sichere Übertragung hinbekmmt.
> Ich mein beim 10-Euro-Garagentorsender gehts ja auch.

Der Funkkanal an sich ist generell erstmal unzuverlässig.
Zuverlässigkeit lässt sich daher nur mit Fehlerkorrektur und geeignete 
Codierung erhöhen.
Beim Garagentor ist das nicht so ein Problem, da gibts nur 2 Befehle 
(Auf und Zu), die durch ein "unnötig" lange Bitmuster repräsentiert 
werden.

Im einfachsten Fall kannst du mit Parity-Bit arbeiten, das ist in der 
seriellen Schnittstelle drin. Ansonsten so Sachen wie Checksummen, 
Datenrahmen,...
Da kann man kreativ bis erfinderisch sein :-)

Allerdings müsstest du mal erzählen, was du alles über die Schnittstelle 
schickst. Kommen nur Zahlen vor? In welchem Bereich bewegen sich die? 
Wie oft sendest du? Lohnt es sich, Pakete zu bilden?
:-)

von Wolfgang M. (womai)


Lesenswert?

Andi schrieb:
> leider ist mein Englisch nicht so gut und ich kann mit Begriffen wie
> Preamble und Gain nix anfangen. Richtig ist, das ich mit den billigen
> 433mhz-Platinen arbeite.

Gain = Verstaerkungsfaktor
Preamble = "Vorwort" oder "Einleitung", im Zusammenhang hier einfach 
eine mehr oder weniger lange Folge von Datenbytes, die dem Empfaenger 
die Moeglichkeit geben zu merken, dass es jetzt was zu empfangen gibt, 
bevor die Kennung und die eigentlichen Nutzdaten kommen.

Ein bisschen Muehe solltest Du Dir aber schon geben und den von mir 
angegebenen Forumslink genau durchlesen, da findest Du wirklich alle 
Details ausfuehlich beschrieben; zur Not gibt's ja im Internet genuegend 
automatische Uebersetzungstools, mit denen man zumindest so eine 
Grobuebersetzung schnell und einfach machen kann. Mangelnde 
Englischkenntnisse lasse ich da nicht ganz gelten - technische Tezxte 
sind von der Komplexitaet und Subtilitaet ja nicht gerade mit 
Existenzphilosophie o.ae. zu vergleichen :-)

von Wolfgang M. (womai)


Lesenswert?

Floh schrieb:
> Der Funkkanal an sich ist generell erstmal unzuverlässig.
> Zuverlässigkeit lässt sich daher nur mit Fehlerkorrektur und geeignete
> Codierung erhöhen.

Na ganz so wuerde ich das nicht unterschreiben. Diese Billigmodule muss 
man schon richtig verwenden, wenn man da Daten uebertragen will - 
Stichwort eben Preamble (damit der Empfaenger "aufwacht", d.h. nicht nur 
hochverstaerktes Rauschen am Ausgang liefert), Pause (damit das naechste 
Startbit im seriellen Datenstrom auch als solche erkannt wird), Signatur 
(eine definierte Bytefolge, and der der empfangenden Mikrokontroller 
erkennen kann, dass die folgenden Daten fuer ihn sind - ansonsten 
koennte er naemlich z.B. faelschlicherweise die Preamble als Nutzdaten 
missverstehen), und zum Schluss die Nutzdaten. Solange letztere nicht 
mehr als ein paar Bytes sind (und somit der DC-Level nicht allzu weit 
wegdriften kann unabhaengig von der Anzahl an Nullen und Einsen darin), 
war's das. Ohne diese Massnahmen hilft Dir aber auch die ausgefeilteste 
Codierung oder Pruefsummen nix (ausser dass Du mit denen zumindest 
nichts Falsches weiterverarbeitest - aber erfolgreich uebertragen wirst 
Du damit nichts).

Erste Verbesserung ist dann eine Pruefsumme (z.B. einfach alle Bytes mit 
XOR aufaddieren, oder richtiger CRC) und/oder fortlaufende Paketnummern.

Zweite Verbesserung zum oben angegebenen Konzept waere eine 
ausbalanzierte Codierung ("DC balanced"), die sichewrstellt, dass stets 
in jedem kurzen Datenabschnitt gleich viele Bits Null wie Eins sind. 
Manchester-Codierung ist dabei das einfachste (kostet aber die halbe 
Bandbreite).

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Deine Pause zwischen Preambel und Nutzdaten ist aber nicht immer 
notwendig. Das hängt von der Kodierung ab.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Wolfgang M. schrieb:
> Andi schrieb:
>> leider ist mein Englisch nicht so gut und ich kann mit Begriffen wie
>> Preamble und Gain nix anfangen. Richtig ist, das ich mit den billigen
>> 433mhz-Platinen arbeite.
>
> Gain = Verstaerkungsfaktor
> Preamble = "Vorwort" oder "Einleitung", im Zusammenhang hier einfach
> eine mehr oder weniger lange Folge von Datenbytes, die dem Empfaenger
> die Moeglichkeit geben zu merken, dass es jetzt was zu empfangen gibt,
> bevor die Kennung und die eigentlichen Nutzdaten kommen.
>
> Ein bisschen Muehe solltest Du Dir aber schon geben und den von mir
> angegebenen Forumslink genau durchlesen, da findest Du wirklich alle
> Details ausfuehlich beschrieben; zur Not gibt's ja im Internet genuegend
> automatische Uebersetzungstools, mit denen man zumindest so eine
> Grobuebersetzung schnell und einfach machen kann. Mangelnde
> Englischkenntnisse lasse ich da nicht ganz gelten - technische Tezxte
> sind von der Komplexitaet und Subtilitaet ja nicht gerade mit
> Existenzphilosophie o.ae. zu vergleichen :-)

naja,
hier unterscheidet sich der Elektonikbastler schon sehr vom Fachmann. 
Wer ohne grundlegende Englischkenntnisse versuchen will einen englischen 
Text zu lesen wird auch ohne Fachbegriffe oder Philosophische Themen 
schnell auf eine Geduldsprobe gestellt. Programmiersprachen zu erlernen 
ohne englische Grundkenntnisse wird über Basic kaum hinausführen. Genau 
diesen Stand schreibe ich dem TO zu. Und ich sehe darin keinen Makel, 
allerddings sollte er sich wirklich für Elektronik und µC interessieren 
wird er sich wenigstens einen Englisch Grundkurs antun und die 
Fachausdrücke dann dazu lernen müssen.

Namaste

von Andi (Gast)


Lesenswert?

Hallo und vielen Dank für Eure Hilfe.
Durch die vielen Beiträge bin ich schon schlauer.
Leider finde ich absolut kein passendes Buch zu Signalübertragung per 
Funk und MC.

Ich werde jetzt als erstes mal eine Praeamble in die Software einfügen, 
da ich bis jetzt nur das Nutzbyte gesendet habe (Pause zum nächsten 
Nutzbyte 2-5 Sekunden).
Denke mal das de Empfang deshalb nicht immer klappte.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mir ist auch kein abschließendes Buch dazu bekannt. Es ist ein riesiges 
Wissensgebiet und sehr individuell abhängig. Eben was gerade mit welchen 
Bauelementen wie gemacht werden soll. Man kann sich nur diverse Quellen 
erschließen. Guter Ansatz ist die Literatur zum gerade ausgesuchten 
Chip, Projekte von anderen damit.

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.