Sichere Funkverbindung

Hallo, ich erstelle gerade ein Strom Messgerät mit zwei Calliope mini. Der Erste misst den Wert, wandelt ihn geeignet und übertragt ihn per Funk auf den Zweiten.
Bei den verschiedenen Testversuchen habe ich festgestellt, das:
a) die Telegramme nicht ankommen
b) Unsinn gelesen wird
Daher hatte ich versucht ein ACK / NAK System aufzubauen, was aber auch gescheitert ist. Das Einzige - was halbwegs funktioniert - ist eine neue Aufforderung des Empfängers in Richtung Sender, wieder neu zu messen. Manchmal wird dies 4 - 10 mal versucht !!
Daher kam ich auf die Idee den gemessenen Wert mit einer Quersumme zu versehen und diese im Empfänger zu verifizieren. Durch geeignete Wandlungen vom Typ ZAHL in Typ Zeichenkette und schrittweise ASCII Charakterwandlung habe ich eine Quersumme erzeugt und war auch in der Lage die an den Wert anzuhängen. GEHT !!
Nun meine Frage: Wie kann ich die Anzahl der Stellen einer Variablen festlegen? Ich muss ja irgendwie im Empfänger die beiden Ketten trennen um die Quersumme neu zu berechnen und mit der Empfangenen vergleichen.
Hat da jemand eine Idee? Ich würde mich freuen.
Ich arbeite nur mit NEPO.
Gruß BotU

Hallo BotU,

Du könntest auch eine FEC (Forward Error Correction) nutzen, dann entfiele der Vergleich und Berechnung von Quersummen auf Empfänger- und Senderseite. Je nach Aufwand in der FEC hättest Du die Aussage einer richtig oder falschen Übertragung bis hin zur Korrekturmöglichkeit einzelner oder mehrerer Bits auf Empfängerseite.

Der Microbit, bzw. Calliope, bietet eine 32Bit Architektur. Damit wäre dann ein 32Bit Integer möglich in den Du alles, inklusive FEC, reinpacken kannst. Wie groß ist der Wertebereich des A/D Wandlers, bzw. Dein gemessener Wertebereich?

Viele Grüße
Alexander

Danke dir Alexander, das mit der FEC war mir klar ( bin nen „alter“ HW Entwicklungsingenieur für schnelle, digitale Funkgeräte / in Rente ) - aber ich wollte nicht den mathematischen Aufwand treiben. Ich dachte es geht ruck - zuck; dem war aber nicht so.
Hast du ne Lösung für die Frage nach den Stellen der Variablen?
Gruß
BotU

Hallo BotU,

gestern Abend habe ich mich nochmal damit beschäftigt. Die Blockprogrammierung mit MakeCode und NEPO (Open Roberta) sind relativ eingeschränkt in der Programmierung von logischen Verknüpfungen. MakeCode bietet die Möglichkeit über Javascript oder Python. NEPO über die Programmierung von den entsprechenden Programmblöcken.

An die entsprechenden Stellen der Variable käme man über eine Bitmaskierung, wofür eine Und-Verknüpfung benötigt wird. Jedoch sehe ich dafür keine Möglichkeit über die Blockprogrammierung mit dem was sie aktuell bietet. Mein Vorschlag fiele damit auch ins Wasser.

Was relativ einfach möglich ist, ist eine Fehlererkennung durch die Vergrößerung der Hamming Distanz. Der Messwert wird dafür zweimal hintereinander übertragen (Hammingdistanz 2) und im Anschluss die beiden empfangenen Werte miteinander verglichen. Bei Übereinstimmung der Werte, nimmt man eine korrekte Übertragung des Wertes an, wenn nicht, dann war die Übertragung fehlerhaft.

Grüße
Alexander

Mensch Alexander, gute Idee - dies wäre wirklich eine einfache Lösung und NUR ein Vergleich. Ich habe mich so in die Sicherung versteift, das ich nicht an die grundlegenden, mathematischen Bedingungen gedacht habe :frowning:
Ich werde es mal versuchen zusammen zu stricken und melde das Ergebnis.
Danke
BotU

@Alexander, geht wirklich gut :slight_smile: sende den Wert jetzt zweimal hintereinander. Musste aber eine kleine Pause einfügen. Vergleiche die beiden Werte logisch und wenn „false“, frage ich ihn wieder an, läuft seit Stunden
nochmals Danke
Botu

Ergänzung:
1.) wenn NICHTS empfangen werden kann, steht NULL im Buffer. Habe dem Wert beim Sender etwas addiert und ziehe es im Empfänger wieder ab. Vergleiche jetzt auf NULL und wenn ja - fordere einen neuen Wert an.
2.) es scheint einen Empfngsbuffer zu geben. Wie tief der ist - konnte ich bisher nicht herausfinden.
3.) wenn der Wert negativ wird, wird ein Minuszeichen mit übertragen
4.) bei mir wird KEIN Komma übertragen

Habe aber jetzt eine saubere Funkverbindung, welche sich auch wieder erholt - wenn sie massive gestört wurde.
BotU