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
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
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"???
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
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?
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?
:-)
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 :-)
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).
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
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.
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.