Moin zusammen, die SuFu hatte nicht so ganz zum Ziel geführt, daher hin mal meine Frage. Ich habe vom Chinamann 433 MHz Funkmodule gekauft und will damit ganz einfache Daten wie Status, Zahlenwerte etc übertragen. Das ganze darf sehr langsam sein. Nun die Frage, wie sollte ich in der Software eine Fehlererkennung aufbauen, einfach zB je 2 Zeichen am Ende und Anfang setzen, die der Empfänger uC kennt oder eine Checksumme bilden? Ich dachte da nur an paar Zahlen übertragen, die dann am Empfänger eine Funktion auslöst, mehr soll es nicht sein. (Vernetzte Wegbeleuchtung und sowas :-) ) Ich dachte da an 1200Bd und ohne Rückkanal. Daher entweder ständig übertragen oder mit Paketen, mit der Hoffnung, dass das nach zB 10x auch verstanden wurde? Ich suche hier keine fertige Lösung, aber Ideen wie das gut umsetzen könnte. (mit ATMega88 oder Tiny25) Für Tipps besten Dank. Edit: Ich möchte nur Steuerbefehle übertragen, zB wenn die Gegenstelle 11xxxxyy (yy Prüfsumme z.B.) empfängt, wird was geschaltet. Wobei xxxx der Gegenstelle bekannt ist, was dann zu tun ist. Nein, ich füttere keine Trolle, alle anderen Danke für Ideen.
:
Bearbeitet durch User
Oliver _. schrieb: > Nun die Frage, wie sollte ich in der Software eine Fehlererkennung > aufbauen Indem du dir erstmal selber deine Anforderungen klarmachst. > Checksumme bilden? CRC-Checksumme ist schonmal mittelgut. Es gibt schlechteres aber auch wesentlich besseres. > Ich dachte da an 1200Bd und ohne Rückkanal. Ohne Rückkanal heißt: Es muß das genügen, was fehlerfrei durchkommt oder sich korrigieren läßt. Damit fällt alles aus, was ganz oder zum Teil darauf beruht, Daten erneut anzufordern. Die Tendenz bei solchen Lösungen ist definitiv immer, den ohnehin arg gebeutelten Kanal mit weit überwiegend völlig nutzlosem Traffic noch weiter zuzustopfen. Außerdem: die beteiligten Geräte zu weit überwiegend unnützem Stromverbrauch zu zwingen. Funk ohne Rückkanal ist meistens nur genau eins: kompletter Schwachsinn.
Oliver _. schrieb: > Nun die Frage, wie sollte ich in der Software eine Fehlererkennung > aufbauen Bevor du Fehler erkennen kannst, brauchst du eine Kodierung deines Signals, dass die Erkennung überhaupt erlaubt. Du kannst zum Beispiel von deinem Datenblock eine Prüfsumme berechnen, die du zusätzlich überträgst und beim Empfänger mit der dort für die empfangenen Daten berechneten Prüfsumme vergleichst. http://www.zlib.net/crc_v3.txt
c-hater schrieb: > Funk ohne Rückkanal ist meistens nur genau eins: kompletter Schwachsinn. Bei Broadcast stehst du immer genau vor diesem Problem. FEC ist dafür gängige Praxis. Um Einzelsymbol abzusichern, kann man eine Kodierung mit z.B. Hammingabstand drei zwischen den übertragenen Symbolen wählen, was die Koorektur einzelner Bitfehler und die Erkennung von Doppelfehlern erlaubt. Mehrfachübertragung mit ausreichend zeitlichem Abstand erlaubt, trotz Burst-Fehlern die Daten heil rüber zu bekommen.
Mike schrieb: > Du kannst zum Beispiel > von deinem Datenblock eine Prüfsumme berechnen, die du zusätzlich > überträgst und beim Empfänger mit der dort für die empfangenen Daten > berechneten Prüfsumme vergleichst. So in der Art dachte ich mir sowas, evt würde ich in einem Byte mit 11 beginnen, dann 4 bit Nutzdaten und die letzten beiden Prüfbits. Es sollen ja nur Steuerbefehle angenommen werden, und das recht simpel ohne Rückkanal.
Oliver _. schrieb: > Viel reden, aber nichts sagen leider auch... Wenn du selbst eine derart drastisch formulierte Kernaussage nicht als Aussage erkennen kannst, dann ist bei deiner Wahrnehmung irgendetwas ganz schwer gestört...
Du kannst auch einfach ein Byte übertragen und danach das mit 0xFF verXORrte nochmal. Im Empfänger XORst du das erste mit dem zweiten Byte und wenn da nicht null rauskommt, wirfst du beide Bytes weg. Ist wegen der doppelten Bytezahl nicht so effektiv, aber hilft, wenn da nur ein Byte gestört wird, die anderen kommen durch.
Mike schrieb: > Bei Broadcast stehst du immer genau vor diesem Problem. FEC ist dafür > gängige Praxis. Jepp. Allerdings recht hoher Programmieraufwand und großer Overhead für die Redundanz. Sprich: Es stopft den Kanal zu. Weil die Redundanz eben so hoch gewählt werden muß, daß sie auch unter schlechtesten Bedingungen noch ausreichend ist. Genau deswegen ist jeder bidirektionale Ansatz i.d.R. vorzuziehen. Der fordert Redundanz nämlich nur in dem Maße, wie die aktuellen Bedingungen des Kanals es erfordern. Das geht eben nur dann nicht, wenn ein Broadcast funktional erforderlich ist.
c-hater schrieb: > Funk ohne Rückkanal ist meistens nur genau eins: kompletter Schwachsinn. Deine Aussage ist ziemlicher Schwachsinn. Beschäftige dich einfach mal mit Übertragungstechnik und der Theorie dahinter.
c-hater schrieb: > Genau deswegen ist jeder bidirektionale Ansatz i.d.R. vorzuziehen. Der > fordert Redundanz nämlich nur in dem Maße, wie die aktuellen Bedingungen > des Kanals es erfordern. Natürlich ist man mit bidirektionaler Übertragung in Bezug auf Kanalauslastung und Redundanz günstiger dran. Aber optimale Übertragungsrate ist hier offensichtlich nicht das Problem und die Zielrichtung der Frage. Gegenüber Einzelsymbol Absicherung wäre eine Blocksicherung mit deutlich weniger Redundanz verbunden. Bei unidirektionaler Übertragung kann es natürlich vorkommen, dass der Kanal völlig dich ist. Dagegen helfen dann nur redundante Übertragungswege (z.B. Verwendung mehrerer Funkkanäle oder besser noch Funkkanäle auf verschiedenen Frequenzbändern).
Mike schrieb: > Aber optimale > Übertragungsrate ist hier offensichtlich nicht das Problem und die > Zielrichtung der Frage. Man erkennt eben sofort, wer die Fragestellung verstanden hat und wer nur mangels Privatleben die Zeit totschlagen muss. Jedenfalls hat Matthias Sch. eine gute Lösung aufgezeigt und werde das auch so machen. Ich werde einfach testen, ob 10 Pakete mit zB 1 Sekunde Versatz in meiner Umgebung ausreichen oder nicht. Wenn ja, wird die Sendung bis zur nächsten Steuermeldung eingestellt. Signale mit über 1µV habe ich hier an der Rundstrahlantenne selten gemessen, eher im Bereich von 0,08µV, was dann schon weiter entfernte Sender sind und somit für mein Nahfeld reichen sollte. Die Module senden mit 10dBm, je nach Antenne schon ein guter Wert.
Mike schrieb: > c-hater schrieb: >> Funk ohne Rückkanal ist meistens nur genau eins: kompletter Schwachsinn. > > Deine Aussage ist ziemlicher Schwachsinn. Beschäftige dich einfach mal > mit Übertragungstechnik und der Theorie dahinter. Das solltest du dann wohl auch den Entwicklern aller üblichen Funktechnologien empfehlen: GMS, UMTS, LTE, BT, WIFI usw. usf. Alle diese Technologien arbeiten (wann immer möglich) mit bidirektionalem Schlagabtausch. Und der Kram funktioniert... Haben die alle sich deiner Meinung nach nicht hinreichend mit "Übertragungstechnik und der Theorie dahinter" beschäftigt? Dann stellt sich allerdings die Frage, warum du mit deiner Lösung nicht längst den Weltmarkt beherrschst... An der mangelnden Nachfrage nach spektraler Effizienz bei Lösungen zur Kommunikation per Funk kann es wohl jedenfalls nicht liegen...
c-hater schrieb: >Das solltest du dann wohl auch den Entwicklern aller üblichen >Funktechnologien empfehlen: GMS, UMTS, LTE, BT, WIFI usw. usf. Alle >diese Technologien arbeiten (wann immer möglich) mit bidirektionalem >Schlagabtausch. Und der Kram funktioniert... Naja, wenn sich die Kommunikationspartner auch gegenseitig etwas zu sagen haben, dann ist ein Rückkanal wohl zwingend notwendig. Aber wenn es nur Einen gibt, der ansagt, dann kann man sich den Rückkanal wohl sparen und die Übertragung mit einer weitaus kostengünstigeren Fehlererkennung ausrüsten.
>Fehlererkennung
oder noch besser natürlich: Fehlerkorrektur.
Wie wär's wenn man die Daten mit dem Hamming Code codiert und falls Bündelfehler wahrscheinlicher sind auch noch interleaved?
Sorry für den doppelpost, man könnte die Daten aber auch faltungscodieren.
soo, habe zwar noch nicht viel gemacht, aber der Sender ist fertig und werden am Empfänger mit Logic Analyzer sauber decodiert, dass ganze mit 300bd. Man muss nur vorher ein Byte mit 0 senden, damit der Sender einschwingen kann, sonst fehlen ein paar bits. Selbst im Keller noch 5µV gemessen, da sollte das Signal draußen mit anderen Teilnehmern klar kommen, ist aber recht wenig los hier. Ohne Daten bzw. Input auf Masse geht der Sender nach ca 300ms aus, was ja besser für den Rest der Umgebung ist. Zum Hintergrund, ich habe mit LEDs (3W und 10W) den Weg zur Tür und Carport beleuchtet, mit IR Meldern vom China-Mann und etwas AVR-Technik. Da noch Platz ist, will ich je ein 433MHz Rx nachrüsten und einen kleinen Handsender, der dann eine Bewegung simuliert.
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.