Forum: HF, Funk und Felder Drahtlose Kommunikation mit NUCLEO-H723ZG


von Simon (hacs)


Lesenswert?

Hallo zusammen,

Ich arbeite an einem Projekt, bei dem ich ein Impulssignal alle 0,2s 
drahtlos von einem Empfänger zu einem Sender übertragen möchte – 
allerdings nicht optisch. Die Übertragung sollte möglichst geringe 
Latenz und wenig Jitter aufweisen. Als Hardware verwende ich ein 
NUCLEO-H723ZG sowohl für den Sender als auch für den Empfänger. Die 
beiden Boards können bis zu 10 Meter voneinander entfernt sein.

Bei meinen Recherchen bin ich auf BLE 5.3 gestoßen, bin mir aber 
unsicher, ob Bluetooth für meine Anforderungen optimal ist. Außerdem 
habe ich die Module nRF24L01 und nRF52840 gefunden:
nRF24L01 wird nicht mehr für Neuentwicklungen empfohlen und
nRF52840 scheint leistungsfähig, aber vermutlich sehr komplex in der 
Implementierung.

Da ich bisher keine Erfahrung mit drahtloser Kommunikation habe, hoffe 
ich auf eure Expertise. Meine Fragen:

-Welche drahtlose Kommunikationstechnik wäre am besten geeignet (geringe 
Latenz, geringer Jitter, einfache Implementierung)?

-Gibt es ein passendes Modul, das sich einfach mit dem NUCLEO-H723ZG 
verbinden lässt?

-Kennt jemand ein ähnliches Projekt, das als Inspiration dienen könnte?

Ich freue mich auf eure Tipps und Erfahrungen!
Viele Grüsse

von Uwe (uhi)


Lesenswert?

Das "möglichst gering" für Latenz und Jitter heißt wieviel Millisekunden 
oder Mikrosekunden oder noch weniger?
Sollen Daten übertragen werden, oder nur ein Impuls? Daten vom Empfänger 
zum Sender zu übertragen klingt verdreht.
Welche Zuverlässigkeit ist notwendig?
Eine einfache aber störanfällige Lösung wären 433MHz on/off keying (OOK) 
Module.

von Simon (hacs)


Lesenswert?

Uwe schrieb:
> Das "möglichst gering" für Latenz und Jitter heißt wieviel Millisekunden
> oder Mikrosekunden oder noch weniger?

So wenig wie möglich. Aber denke Mikro/Nano Bereich ist i.O.

> Sollen Daten übertragen werden, oder nur ein Impuls? Daten vom Empfänger
> zum Sender zu übertragen klingt verdreht.

Es müssen keine Daten gesendet werden nur ein Impuls. Ohh ja klar 
entschuldige, natürlich vom Sender zum Empfänger.

> Welche Zuverlässigkeit ist notwendig?
Schon eine hohe Zuverlässigkeit. Die Anwendung findet in Innenräumen 
statt, weshalb Störungen durch andere Funkquellen auftreten könnten.

> Eine einfache aber störanfällige Lösung wären 433MHz on/off keying (OOK)
> Module.

Gucke ich mir mal an. Danke

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Simon schrieb:
> -Gibt es ein passendes Modul, das sich einfach mit dem NUCLEO-H723ZG
> verbinden lässt?

Die NUCLEO-WL33CC1, NUCLEO-WL55JC, NUCLEO-WBxxx können direkt selbst 
funken ohne zusätzliche Module, mit den jeweiligen diversen 
Funktechnologien.

Die ESP32 unterstützen auch Bluetooth / BLE. All diesen ICs, inkl. auch 
nRF52840, enthalten einen Mikrocontroller, sodass du eben keinen 
externen Controller brauchst. Zum Programmieren gibt es jeweils 
umfangreiche Bibliotheken.

Simon schrieb:
> Aber denke Mikro/Nano Bereich ist i.O.

Dürfte so gut wie unmöglich sein. Bei Lichtgeschwindigkeit sind auf 10m 
schon 33ns Delay. Wenn man eine Funktechnik mit 1 MBit/s nutzt braucht 
ein Bit 1µs. Pro Paket müssen viele Bits übertragen werden. Alleine 
schon die Präambel, damit der Empfänger sich auf den Bittakt 
synchronisieren kann. Dazu kommt natürlich die Verarbeitung in Software 
usw. Klar gibt's schnelleres wie WiFi, aber auch hier sind die Pakete 
lang. Systeme, welche nur "Pulse" senden (ohne Pakete, also die 
typischen extrem primitiven OOK-Sender/Empfänger) sind wohl nicht auf 
solche Latenzen ausgelegt.

Vielleicht ließe sich UWB TOF dafür zweckentfremden. Wird auf jeden Fall 
ziemlich aufwendig.

: Bearbeitet durch User
von Simon (hacs)


Lesenswert?

Niklas G. schrieb:
> Die NUCLEO-WL33CC1, NUCLEO-WL55JC, NUCLEO-WBxxx können direkt selbst
> funken ohne zusätzliche Module, mit den jeweiligen diversen
> Funktechnologien.

Leider muss ich den NUCLEO-H723ZG verwenden.

> Dürfte so gut wie unmöglich sein.

Ohjee ja ich sehe das Problem! Danke für die gute Erklärung. Ich könnte 
25mS Latenz gutheissen, aber der Jitter sollte wirklich so klein wie 
möglich sein. Das System wird zur Positionserkennung verwendet und daher 
muss alles sehr exakt sein und keine grossen Schwankungen haben. Falls 
es etwas gibt, mit sehr konstantem Jitter wäre es auch in Ordnung, da es 
Softwaremässig kompensiert werden könnte

> Vielleicht ließe sich UWB TOF dafür zweckentfremden. Wird auf jeden Fall
> ziemlich aufwendig.

Lieber eher etwas einfaches, da ich nur begrenzt Zeit habe das System 
umzusetzen, dann lieber etwas einfaches auf Kosten der Ungenauigkeit.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Simon schrieb:
> Das System wird zur Positionserkennung verwendet und daher
> muss alles sehr exakt sein und keine grossen Schwankungen haben.

Das ist halt leider eine recht große Herausforderung.

Simon schrieb:
> Lieber eher etwas einfaches, da ich nur begrenzt Zeit habe das System
> umzusetzen, dann lieber etwas einfaches auf Kosten der Ungenauigkeit.

Eine große Herausforderung "einfach" zu lösen ist halt so eine Sache. 
Rein zufällig ist UWB genau für so etwas gemacht, Lokalisierung auf 
Basis von Laufzeit. Eine fertige UWB-Lösung dürfte am Einfachsten zu 
nutzen sein, jedenfalls viel einfacher als das "zu Fuß" mit irgendeinem 
Funkmodul zu machen.

von Uwe (uhi)


Lesenswert?

Die Eckpunkte "10m" und "Positionsbestimmung mittels Funk" klingt so, 
dass du eine Signallaufzeit mit einer Auflösung von weit unter 10ns 
bestimmen möchtest.
WLAN und BT sind da raus, die sind nicht für solche Zeitpräzision 
gemacht  . Die billigen OOK Module wären vielleicht senderseitig stabil 
genug, aber der Empfänger vermutlich stark abhängig vom Pegel, und der 
ändert sich mit jeder Handbewegung in der Nähe der Messstrecke.
Das schon genannte UWB klingt für mich am vernünftigsten.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

PS: NXP hat fertige UWB-Module, genannt "Trimension". So etwas solltest 
du an den Mikrocontroller anbinden können. Sicherlich viel sinnvoller 
als irgendein 0815-Funkmodul dafür zu zweckentfremden und dann 
festzustellen dass die "Genauigkeit" 3km beträgt.

von Simon (hacs)


Lesenswert?

Danke für eure Antworten, tönt sehr spannend und ich werde mich damit 
auseinandersetzen.

> Die Eckpunkte "10m" und "Positionsbestimmung mittels Funk" klingt so

Ehm also ich will das Funksignal nicht zur Positionsbestimmung selbst 
nutzen, es soll nur ein Startimpuls geben, wann ein Lasersweep anfängt 
den Raum zu scannen. Anhand der Zeit Differenz von Startsignal und 
Eintreffen des Laserimpulses auf den Empfänger wird die Position des 
Empfängers bestimmt.


Ich bin gerade auf ESP-Now gestossen, es wird gesagt, dass es sehr 
kleine Latenz und Jitter hat. Kennt ihr das? Und wäre das vielleicht 
eine Anwendung für mich?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Simon schrieb:
> Ehm also ich will das Funksignal nicht zur Positionsbestimmung selbst
> nutzen, es soll nur ein Startimpuls geben, wann ein Lasersweep anfängt
> den Raum zu scannen.

Also wenn du sowieso schon ein Funksignal mit hoher zeitlicher 
Genauigkeit hast brauchst du den Laser nicht mehr. Ein optisches Signal 
mit geringer/definierter Latenz zu empfangen ist auch gar nicht so 
trivial.

Simon schrieb:
> Ich bin gerade auf ESP-Now gestossen, es wird gesagt, dass es sehr
> kleine Latenz und Jitter hat

Basiert auf WiFi-Paketen, ist also immer noch um Größenordnungen zu 
ungenau/langsam bzgl. Jitter/Delay. Ganz davon abgesehen dass die 
ESP-Software nicht gerade echtzeitfähig ist.

von Uwe (uhi)


Lesenswert?

Am Anfang ist es hilfreich, sich einen Überblick über die Anforderungen 
zu schaffen. Ich spekuliere einfach mal. Ein Laserscan über den 
kompletten Bereich dauert 100ms. Man möchte diesen Bereich in 1000 Teile 
aufteilen und messen, in welchem dieser 1000 Teile das Ziel liegt. Dazu 
brauchen wir eine Zeitmessung mit 100 Mikrosekunden Auflösung, und 
deutlich unter 100 Mikrosekunden Jitter.
Wenn wir mittels der OOK-Module ein Asych-Serial Byte übertragen mit zB 
9600 Baud, ist ein Bit ungefähr in dieser zeitlichen Größenordnung. Aus 
Hardwaresicht scheint das Ziel also gut erreichbar zu sein. Muss nur 
noch die Software schnell genug reagieren und stabil genug senden. Und 
der Datenstrom so gestaltet sein, dass der Empfänger gut einregeln kann 
bevor der eigentliche Triggerwert übertragen wird.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Uwe schrieb:
> Ich spekuliere einfach mal. Ein Laserscan über den
> kompletten Bereich dauert 100ms. Man möchte diesen Bereich in 1000 Teile
> aufteilen und messen, in welchem dieser 1000 Teile das Ziel liegt.

Wenn man den Laser hin-und zurück sweepen lässt kann man aus dem 
Zeitlichen Abstand der beiden Empfangsimpulse zueinander simpel die 
Position bestimmen...

von Simon (hacs)


Lesenswert?

Niklas G. schrieb:
> Wenn man den Laser hin-und zurück sweepen lässt kann man aus dem
> Zeitlichen Abstand der beiden Empfangsimpulse zueinander simpel die
> Position bestimmen...

Ja grundsätzlich schon, der Laser dreht sich aber im Kreis also 360 Grad 
mit 5Hz. Sobald sich die Position des Empfängers ändert, kann man aus 
der Zeitliche Differenz die Position nicht mehr genau sagen. Und die 
Anfangsposition müsste bekannt sein. Da ist gedacht, dass der Sync 
Impuls via Funk immer bei z.B. 0 Grad (Startposition) ein Impuls sendet.

> Man möchte diesen Bereich in 1000 Teile
aufteilen und messen, in welchem dieser 1000 Teile das Ziel liegt.

Das ist dann einfach die Genauigkeit mit der man die Position des Objekt 
bestimmen kann oder? Die sollte ja möglichst hoch sein um eine genaue 
Erkennung zu ermöglichen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Simon schrieb:
> Ja grundsätzlich schon, der Laser dreht sich aber im Kreis also 360 Grad
> mit 5Hz.

Wenn du 2 Laser hättest die sich um entgegengesetzter Richtung drehen 
und unterschiedliche Wellenlängen haben sodass du sie unterscheiden 
kannst wäre das Problem auch gelöst.

Oder pack ein Galaxy Tag mit auf das Nucleo-Board und ein UWB-fähiges 
Smartphone in die Mitte, dann kannst du vom Smartphone aus das Tag 
lokalisieren. Es gibt auch industrielle Indoor-Lokalisierungssysteme die 
man für Automatisierung einbinden kann. Natürlich dann in 3 Dimensionen, 
und nicht nur als einzelner Winkel.

Simon schrieb:
> Die sollte ja möglichst hoch sein um eine genaue
> Erkennung zu ermöglichen.

Bei deinem Ziel von 1µs Jitter wären das also 200000 verschiedene 
Bereiche (Kreissektoren), also 0,0018° Abstufung. Das ist so 
erforderlich?

: Bearbeitet durch User
von Simon (hacs)


Lesenswert?

Niklas G. schrieb:

> Wenn du 2 Laser hättest die sich um entgegengesetzter Richtung drehen
> und unterschiedliche Wellenlängen haben sodass du sie unterscheiden
> kannst wäre das Problem auch gelöst.

Genau 2 Laser habe ich, der eine ist 90° nacheilend und die Laserflächen 
sind wie ein X aufgespannt ( \  /). Leider ist eine Unterschiedliche 
Wellenlänge nicht möglich, da die zwei Laser über einen Beam Splitter 
aufgeteilt werden.

> Bei deinem Ziel von 1µs Jitter wären das also 200000 verschiedene
> Bereiche (Kreissektoren), also 0,0018° Abstufung. Das ist so
> erforderlich?

Also Ziel ist es auf 10Meter 3mm Genau die Position des System zu 
erkennen.(Sehe aber mehr und mehr das dies Unrealistisch scheint). Da 
wären es ja arctan(3mm/10m) = 0.017°. Was dann ja etwa 10uS entspricht 
oder, ist das eine realistische Anforderung mit 433 MHz OOK (9600 Baud) 
oder UWB?

von Uwe (uhi)


Lesenswert?

Den Effekt des Jitters der Übertragung kann man deutlich mindern, indem 
man nicht jede Übertragung direkt in die Messung einbezieht, sondern 
über mehrere Perioden mittelt. Unter der Voraussetzung, dass 
Laserdrehzahl und Empfängertakt jeweils stabil genug sind, um einige 
Sekunden lang die geforderte Genauigkeit zu liefern.

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.