Hallo Leute, Schon seit längerem habe ich hier zwei Funkmodule (Linx Technologies TXM-433-LR und RXM-433-LR) rumliegen, die ich letztes Wochenende mal zum Leben erweckt habe. Datenblatt: http://www.linxtechnologies.com/Documents/TXM-xxx-LR_Data_Guide.pdf Nachdem der in den Appnotes beschriebene Rauschfilter nicht funktioniert hat, hab ich einfach den analogen RSSI-Ausgang des Empfängers angezapft, durch einen Komperator durch - schon hab ich ein wunderschönes Digitales Signal. Das ist aber soweit kein Problem, Datenübertragung von UART zu UART funktioniert! Aber: nur auf einer Distanz Luftlinie von ca. 100m (mit 10mW Sendeleistung). Darüber hinaus kommt nurnoch Müll am Empfänger an. Jetzt erst bin ich im Datenblatt der Funkmodule darauf gestossen, dass diese keine interne Fehlerkorrektur/Modulation haben - was vorne reinkommt, kommt hinten wieder raus... Nun bin ich über die Mikrocontroller.net Seite zum Thema "Funkübertragung 433MHz" gestossen - wo berichtet wird dass man mit billigen Aurel-Funkmodulen Distanzen von 1km überbrücken kann... Das hat mich dann doch sehr verwundert, das müsste mit meinen Modulen doch auch möglich sein... Mein Problem ist aber, wie verpacke ich die Daten richtig? Ich hab was gelesen von Manchester-Kodierung, die kann ich in MikroBasic auch mit wenigen Zeilen realisieren, das Ergebnis ist aber immernoch Müll. Wie würdet ihr so ein Problem angehen? im Forum habe ich nicht viel zu dem Thema gefunden, ausserdem bin ich Funktechnisch nicht so sehr erfahren... Ziel ist, ein Mikrocontroller soll alle 2 Stunden Messwerte über Software-UART entgegennehmen, diese "verpacken" und dann über ein Pin auf den Funksender geben. Die Gegenstelle empfängt diese Daten wieder, und schickt sie über UART an den Computer. Könnt ihr mir dabei helfen, diese Protokolle (Manchester, Hamming, etc... ich blick da nicht ganz durch) zu verstehen/zu nutzen? LG, Manuel
Moinsen, Manuel M. schrieb: > Könnt ihr mir dabei helfen, diese Protokolle (Manchester, Hamming, > etc... ich blick da nicht ganz durch) zu verstehen/zu nutzen? Sicher, mit welchem Compiler/Sprache arbeitest du denn? Benedikt hat ja für die RFM-12 Module mal was geschrieben, such im forum mal nach "RS232 Funkbrücke" war glaub in C Manuel M. schrieb: > Das hat mich dann doch sehr verwundert, das müsste mit meinen Modulen > doch auch möglich sein... Da ist garantiert mehr drin! Kenne zwar deine Module nicht, aber laut dem Datenblatt vom Sender kann der ja bis zu 500mW. Ich hoffe aber doch, du hast dein Modul ordentlich auf 10mW begrenzt, oder? Eben, auf die Richtige Modulation/Übertragung kommt es an! Probier mal für den Anfang, jedes Bit zweimal zu senden, einmal normal, und einmal invertiert, hinten drann dann noch den CRC. Im Empfänger einfach die Bits wieder richtig zusammenbauen. Eine Empfangs-/Prüfroutine (mithilfe vom CRC) solltest du eigentlich recht einfach zusammengeschustert bekommen... Ist natürlich nicht perfekt, aber probier mal ob du damit mehr Reichweite hinbekommst. Ansonsten schau dir einfach mal Benedikts Routinen für das RFM12 an, oder kuck mal den Source auf der Seite "Funkübertragung mit 433MHZ" nach, da war (glaub ich) auch ein source (leider in ASM). Hoffe das hilft dir! peterli
Ok, Danke klingt ja schon mal gut. Werde ich morgen auf Arbeit mal ausprobieren, da hab ich auch ein besseres Oszi ;-) Ist diese art der Fehlerkorrektur eine Alternative zum Hamming-Code? Kann diese Methode überhaupt etwas korrigieren? Manchester-Code verwende ich jetzt, verhindert immerhin die Störungen beim Anfang des Sendens... Kann mir nicht irgendjemand Tipps dazu geben? LG, Manuel
Der Manchester-Code sorgt dafür, das deine Daten gleichspannugsfrei sind. Dafür ist die Bitrate dabei doppelt so hoch wie die Datenrate. Für die Sicherheit der Datenübertragung bringt das IMO nicht sonderlich viel. Bei den Hamming-Codes werden Zusatzbits hinzugefügt, so dass sich größere Symbolabstände ergeben (grob: gesendete Zeichen unterscheiden sich um mehr als ein Bit). Durch diese Redundanz können viele Fehler erkannt und in Grenzen auch korrigiert werden. Gruß Rainer
Rainer schrieb: > die Sicherheit der Datenübertragung bringt das IMO nicht sonderlich Man kann beweise das ein Wiederholungscode keine Verbesserung bringt. Bei den RFM Modulen bringt aber eine Kodierung auch nicht soviel, hatte damals etwas mit Benedikt darüber gechattet, Ergebnis war, das entweder das Byte korrekt ankommt, oder garnicht, scheint also intern schon eine Fehlerkorrektur vorzunehmen. Um den Gleichspannungsanteil gering zu halten kann man auch einfach ein Bitstuffing durchführen, was all diese Maßnahmen bringen hängt aber sehr stark vom Modul ab, am besten wäre es das Analoge Signal zu erhalten dann kann man sehr viel mehr rausholen.
Läubi .. schrieb: > am besten wäre es das Analoge Signal zu erhalten Sowas in der Richtung hatte ich auch versucht... Allerdings fehlt mir nurnoch ein Sehr schneller ADC dafür, dann wär da sicher mehr drin oder? ;-) Derzeit tut es einfach ein LM324 als Komperator mit nem Poti um die "Empfindlichkeit" einzustellen... Läubi .. schrieb: > Um den Gleichspannungsanteil gering zu halten Den halte ich derzeit mithilfe des Manchester-Codes ziemlich klein ;-) Kostet mich in MikroBasic nur wenige Code-Zeilen und hat zumindest das Problem mit den bei Sendeanfang zerstückelten Bits behoben. Läubi .. schrieb: > Man kann beweise das ein Wiederholungscode keine Verbesserung bringt. Heisst das, es ist nicht unbedingt sinnvoll, sich soviel Gedanken mit Hamming-Code und co zu machen, sondern lieber die Daten einfach auf gut Glück mehrfach senden, in der Hoffnung der Empfänger kriegt von den 10-100 Wiederholungen eine korrekte Version? Vielen Dank schonmal für eure Hilfe!
Läubi .. schrieb: > ..., scheint also intern schon eine > Fehlerkorrektur vorzunehmen. Die RXM-xxx-LR/TXM-xxx-LR Module von Linx machen gar nichts digitales mit den Daten, d.h. beim Sender wird einfach der Träger mit dem digitalen Eingangssignal moduliert. Beim Empfänger wird es demoduliert und über einen Schmidt-Trigger ausgegeben. Gruß Rainer
Manuel M. schrieb: > Heisst das, es ist nicht unbedingt sinnvoll, sich soviel Gedanken mit > Hamming-Code und co zu machen, sondern lieber die Daten einfach auf gut > Glück mehrfach senden, NEIN! genau umgekehrt ;) Wobei, wenn du es dir leisten kannst eine derart viel Bandbreite zu verschwenden, kann man mit einem passendem Code noch etwas rausholen, wiederholen bringt nur was wenn die Daten verloren gingen. Rainer schrieb: > beim Sender wird einfach der Träger mit dem > digitalen Eingangssignal moduliert puh... na dann muß man wirklich etwas mehr Aufwand treiben. Manuel M. schrieb: > Allerdings fehlt mir nurnoch ein Sehr schneller ADC > dafür, dann wär da sicher mehr drin oder? "Mehr drin" bezieht sich eigentlich immer darauf, das man mit weniger "Zusatzbits" eine bessere Fehlerkorrektur erreicht, ein bischen was findest du z.B. hier: http://www14.informatik.tu-muenchen.de/konferenzen/Jass05/courses/4/papers/Pavol_Hanus.pdf Wenn dir die Datenrate egal ist, und du nur eine hohe Fehlerkorrektur haben möchtest ist es erstmal egal, der Kanal sollte aber eine Fehlerwahrscheinlichkeit < 0.5 haben ;P Oder man steigt auf andere Finkmodule um, die schon alles "an Board" haben, den auch wenn das Thema Kanalkodierung äußerst spannend ist, so steckt der Teufel doch häufig im Detail, und ich denke dein Hauptziel ist ja nicht die feinheiten der Datenübertragung zu ergründen ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.