Problem mit Kommunikation von 5 Funkmodulen RFM24W

Hallo Zusammen, ich hänge derzeit an einem Problem und wäre für jede Hilfe,Tipps oder Ideen sehr dankbar.

Ich arbeite aktuell an einem Projekt bei dem ich 4 Arduino Nano(jeweils mit dem Funkmodul RFM24W, dem RTC DS3231 und dem Sensor MS5803-07BA verkabelt) mit einem Arduino Nano(der nur mit dem Funkmodul und einem Schalter verkabelt ist) kommunizieren lassen möchte.

Die Idee dahinter ist einfach nur, dass die vier Sensoren Messwerte aufnehmen und diese sekündlich an die Zentraleinheit senden sollen, welche am PC verbunden ist und wo die Daten mit Matlab weiterverarbeitet werden. Anschlüsse, verkabelung etc. sollte soweit (eigentlich) alles passen. Und das ganze System funktioniert "meistens" auch ohne Probleme. An einigen Tagen läuft jedoch etwas schief, was ich einfach nicht verstehe. Undzwar hindert dann einer der vier Einheiten, die anderen oder einen anderen Daten zu senden. Ich versuche es mal am Beispiel zu erklären: Z = Zentraleinheit; A,B,C,D = Mobileinheiten; D = Die Einheit mit dem Fehler

A,B,C,D sind ausgeschaltet --> Z bekommt keine Daten A wird angeschaltet --> Z bekommt Daten von A B wird angeschaltet --> Z bekommt Daten von A und B C wird angeschaltet --> Z bekommt Daten von A, B und C D wird angeschaltet --> Z bekommt Daten von nur A oder A und B oder A,B und C (schon alle Fälle vorgekommen) D wird ausgeschaltet --> Z bekommt wieder Daten von A,B und C D wird angeschaltet und A,B,C werden ausgeschaltet--> Z bekommt Daten von D A wird angeschaltet --> Z bekommt Daten von A (Also Daten von D kommen nur an wenn kein anderer an ist)

Das seltsame an der ganzen Geschichte ist, dass dieses Problem nicht immer da ist sondern wirklich nur an einzelnen tagen, dann aber auch wirklich den ganzen Tag, egal wie ich an und ausschalte und resete etc. und am nächsten Tag ist alles wieder normal und funktioniert. Und es ist auch nicht immer der gleiche mit dem Fehler(hier im Beispiel D) sondern es kann jedes mal einen anderen Treffen.

Zum senden benutze ich die standart voreingestellten 434 MHz. Alle 4 senden sekündlich Daten wobei B mit einer Verzögerung zu A von 250 ms sendet, C mit 500 ms Versögerung zu A usw.

Ich hoffe ich konnte mein Problem klar machen und freue mich über jede Lösungsidee oder Hinweis woran es liegen könnte. Gerne kann ich bei Bedarf auch noch weitere Informationen geben bezüglich Code, Logik, Hardware oder was auch immer.

Danke im Voraus.

Gruß Sam

Wenn du sekündlich sendest, wie synchronisierst du die Sender denn ? Oder laufen die frei, also senden die wann sie lustig sind ?

Hallo, damit wir uns richtig verstehen… Du hast als Einheit einen Nano mit RTC, RFM und Sensor? Diese Einheit verarbeitet und sendet alle Sekunde die Daten des Sensor.

Von dieser Einheit hast Du vier Stück in Betrieb- die alle zur gleichen Zeit in Betrieb sind?

Dann hast Du einen Nano mit RFM und Schalter? Was hat der denn für eine Aufgabe zu erledigen?

Was für ein "Teil" ist denn Deine "Zentraleinheit"?

Gruß und Spaß Andreas

Software umkonfigurieren und als Master / Slave (genauer 4 Slaves) betreiben. Der Master (Zentrale) sendet eine Datenanforderung an Slave x, welcher anschließend antwortet - ggf. mit timeout.

Danke euch allen für die Antworten.

HotSystems: Wenn du sekündlich sendest, wie synchronisierst du die Sender denn ? Oder laufen die frei, also senden die wann sie lustig sind ?

Wie gesagt die Sender haben eine Real-Time-Clock. Dadurch kann ich die in meinem gewünschten Zeitraum jede Sekunde "aufwecken", den Sensor lesen und die Daten senden. Und das machen alle vier, wie gesagt in einem Abstand von 250 ms.

SkobyMobil: Hallo, damit wir uns richtig verstehen… Du hast als Einheit einen Nano mit RTC, RFM und Sensor? Diese Einheit verarbeitet und sendet alle Sekunde die Daten des Sensor.

Von dieser Einheit hast Du vier Stück in Betrieb- die alle zur gleichen Zeit in Betrieb sind?

Dann hast Du einen Nano mit RFM und Schalter? Was hat der denn für eine Aufgabe zu erledigen?

Was für ein "Teil" ist denn Deine "Zentraleinheit"?

Gruß und Spaß Andreas

Ja genau, fast alles richtig. Mein Nano mit RFM und Schalter ist ja die "Zentraleinheit". Also hier in der "Zentrale"(per USB mit dem Laptop verbunden) kommen die Daten von den 4 Sendeeinheiten an, wenn alles richtig läuft vier verschiedene pro sekunde wobei jeder seine "ID" mitsendet wodurch ich die unterscheiden kann. Aber wie gesagt, manchmal taucht dieser oben beschriebene Fehler auf, was ich mir nicht erklären kann.

hajos118: Software umkonfigurieren und als Master / Slave (genauer 4 Slaves) betreiben. Der Master (Zentrale) sendet eine Datenanforderung an Slave x, welcher anschließend antwortet - ggf. mit timeout.

Was genau meinst du mit als "Master/Slave betreiben"? Deine Beschreibung ist genau meine Vorgehensweise. Meine Zentraleinheit besitzt einen Schalter mit zwei Positionen. Auf einer Position sendet die Zentraleinheit eine Aufforderung zum senden an alle vier Messeinheiten. Wenn der Schalter nun umgelegt wird erhält er die Daten von den 4 Einheiten.

Meinst du ich soll jedem einzeln die Aufforderung senden und dann Daten von ihm verlangen? Wichtig ist für mich, dass ich Echtzeitmessung betreiben kann und wirklich sekündlich Daten bekomme. Wäre das denn so möglich? Ich meine der hat offensichtlich schon Probleme bei 4 Datenpaketen im Abstand von 250ms sekunden, wenn ich es pro Messeinheit mache, müsste ich innerhalb von einer Sekunde viermal nacheinander mit der Zentraleinheit Daten senden und empfangen?!

Gruß Sam

Der hat Probleme, wenn 2 gleichzeitig senden. Die Synchronisation über die frei laufenden RTC auf 250ms würde ich stark in Zweifel ziehen.

Ja, alle 4 einzeln zum Senden auffordern, wie hajos118 schreibt ist der sicherere Weg.

Gruß Tommy

SammySam: Wie gesagt die Sender haben eine Real-Time-Clock. Dadurch kann ich die in meinem gewünschten Zeitraum jede Sekunde "aufwecken", den Sensor lesen und die Daten senden. Und das machen alle vier, wie gesagt in einem Abstand von 250 ms.

Ok, könnte so funktionieren, jedoch sind die 250 ms sehr kurz angesetzt.

Allerdings ist die gewählte Frequenz total ungünstig für dein Vorhaben. Auf 433,92 MHz (ist die genaue Frequenz) tummeln sich noch viele andere Betreiber rum. Die könnten dein Ergebnis stören und den Aussetzen verursachen.

HotSystems: Ok, könnte so funktionieren, jedoch sind die 250 ms sehr kurz angesetzt.

Allerdings ist die gewählte Frequenz total ungünstig für dein Vorhaben. Auf 433,92 MHz (ist die genaue Frequenz) tummeln sich noch viele andere Betreiber rum. Die könnten dein Ergebnis stören und den Aussetzen verursachen.

Ja, ich habe allerdings leider nicht die Möglichkeit die 250ms zu vergößern, da ich sonst keine 4 Werte pro Sekunde bekomme. Und was die Frequenz angeht, das weiß ich leider aber iwie kann ich die nicht an der Zentraleinheit ändern. Trotz gleicher Hardware und gleicher library etc. kann ich die Frequenz der Messeinheiten ändern aber komischerweise läst sich die Frequenz der Zentraleinheit nicht ändern, die Empfängt weiter die 434 obwohl ich die Frequenz auf einen X beliebigen Wert setze...

Ich probiere es einfach mal mit alle vier einzeln anzusteuern und teile euch dann gerne nochmal mein Ergebnis. Vielen Dank aber an alle soweit!

Gruß Sam

SammySam: ...Und was die Frequenz angeht, das weiß ich leider aber iwie kann ich die nicht an der Zentraleinheit ändern. Trotz gleicher Hardware und gleicher library etc. kann ich die Frequenz der Messeinheiten ändern aber komischerweise läst sich die Frequenz der Zentraleinheit nicht ändern, die Empfängt weiter die 434 obwohl ich die Frequenz auf einen X beliebigen Wert setze...

Bei solchen kritischen Dingen würde ich mich total von 433 MHz verabschieden.

Das wäre mir def. zu kritisch. 868 MHz oder im GHz-Bereich ist das besser aufgehoben.

Hallo, das ZauberWort lautet XBee-PRO® 868 HF-Module.

Ich nutze die selbst. Den größten Teil der Kommunikation regeln die unter sich selbst. Du kannst an jeder "Funk"- und "Datenschraube" drehen. Mit dem Arduino kommt es da zu keinen Fehler. Da gibt es keinen Ärger mit. Am Mac werden die einfach konfiguriert, dann an den Arduino stöpsel- läuft. Gruß und Spaß Andreas

SkobyMobil: Am Mac werden die einfach konfiguriert, dann an den Arduino stöpsel- läuft. Gruß und Spaß Andreas

An welchem Mac, und wo nem ich den her? muss ich mir jetzt extra um solche XBees zu nutzen, nen Mac zulegen, oder wie meinst Du das? Ist aber als ich meinen ersten Uno gekauft habe (JA EIN ORIGINAL!) nicht bei gestanden, dass ich für zubehör Mac brauche.

Dann muss ich wohl auf experimente mit XBee verzichten, denn ich hab kein Geld für Mac.

LG Stefan

Hallo, warum soll ich das Wort DOSe in den Mund nehmen, wenn ich mit einem Macintosh arbeite? Und Geld- das hat man zu haben... Vergnüglichen Abend noch. Gruß Andreas

Deltaflyer: Dann muss ich wohl auf experimente mit XBee verzichten, denn ich hab kein Geld für Mac.

Das kannst du sicher auch an einem PC konfigurieren.

Nicht jeder kann mit einem Microsoft-Rechner umgehen. ;)

SammySam: Was genau meinst du mit als "Master/Slave betreiben"? Deine Beschreibung ist genau meine Vorgehensweise. Meine Zentraleinheit besitzt einen Schalter mit zwei Positionen. Auf einer Position sendet die Zentraleinheit eine Aufforderung zum senden an alle vier Messeinheiten. Wenn der Schalter nun umgelegt wird erhält er die Daten von den 4 Einheiten.

Dann könntest Du auch jedem Empfänger eine andere Verzögerung für die Antwort einbauen. Kriterium ist dann aber der Empfangszeitpunkt am Slave, nicht die RTC. Also z.B. A: keine Verzögerung, B:100ms Verzögerung, C:200ms Verzögerung, D:300ms Verzögerung. ... in 100msec kann ein Arduino ganz schön viel rechnen.... Zeit benötigt dann nur die Kommunikation (seriell?) mit dem übergeordneten PC.