Und dann habe ich noch folgendes gefunde:
I²C-Funk-Interface 868MHz - Devantech von http://www.roboter-teile.de/Shop/pd1...m?categoryId=6
Ist das Teil gut? Das gute Stück hat nämlich TWI und das ist für mich ein Pluspunkt...
Hio. Also ich habe gerade ein kleines neues Nebenprojekt und da brauch ich natürlich ein klein wenig Unterstützung von euch.
Also, es geht darum (der Rest ist eigentlich egal) etwas sehr Zeitabhängiges zu realisieren. Stellt euch ganz abstrakt zwei Menschen etwa in Entfernung von 100 Meter vor. Diese stehen auf einer komplett geraden Ebene und haben dadurch logischerweise Sichtkontakt miteinander, können sich aber nicht höhren, also nicht miteinander reden (warum ist egal). Jetzt will der eine dem anderen aber ganz schnell ein Startbefehl mitteilen, damit der andere dann sofort was anfängt zu machen was sehr zeitkritisch ist und in Verbindung mit dem Sender (also dem, der den Startbefehl so schnell wie möglich zu übertragen versucht) steht. Und was macht der gelehrte Experte? Er greift zu einer Funklösung. Soweit ungefähr was ich vorhabe. Es geht einfach darum, eine Art kurzen Startbefehl zu via Funk zu übermitteln welcher extrem schnell beim Empfänger da ist (also ohne Verzögerung dazwischen) damit der Empfänger dann was zeitkritisches sofort startet.
Jetzt hab ich mal im dem Webshop www.robotikhardware.de nachgeschaut und folgendes gefunden:
- RN-Funk 1.0
- RT868F4 (868MHz-FM-Mehrkanal-Transceiver)
Meine ersten Gedanken: Das ist die Lösung. Zwar net ganz billig aber noch bezahlbar. Funk ist ja extrem schnell (Lichtgeschwindigkeit) und deswegen ja eigentlich bestens geeignet. Aber dann der Schreck: Funk-Datenverzögerung 20 ms! Das wäre bei meinem Projekt doch eine zu hohe Verzögerung. Ich habe weiter geforscht und dann folgende Zeilen im Datenblatt des Mehrkanal-Transceiver gefunden:
Wenn ich das jetzt richtig verstanden habe, dauert das Senden eines Bytes genau 20 ms?! Wenn ja, währe das ganze ja nicht so schlimm. Wenn wir uns das Szenario mit den zwei Menschen noch mal vorstellen, und die Empfänger-Person wüsste dass das übertragen des Startbefehls immer 20 ms dauert (also der Startbefehl, wenn er bei ihm ankommt schon vor 20 ms war) könnte er bei seiner zeitkritischen Aktion die er dann ausführen muss diese Zahl ja miteinbeziehen, oder etwa nicht? Die Antwort auf die Frage ist mir sehr wichtig.Latenzzeit (Echtzeit-Verzögerung):
Für sogenannte Echtzeit-Anwendungen ist die Information wesentlich, wie lange ein Signal von der Auslösung zur
Reaktion am Empfänger benötigt.
Das Funkmodul verzögert ein gesendetes Byte, unabhängig von der eingestellten Baudrate, um ca. 20ms. Die
Zeitdifferenz des Startbits am Sender zum Startbit am Empfänger beträgt demnach genau diese ca. 20ms.
Die Ursache dieser Verzögerung liegt in der internen Aufbereitung der seriellen Daten für das Funkprotokoll.
Des weiteren interessiert mich sehr wie störanfällig das ganze ist. Reicht da schon ein anderer der durch die Gegend funkt und mein kurzer Startbefehl (nur ein Byte, also ein Buchstabe) ist schon dahin?? Ich hab irgendwo gelesen, das es per Gesetz gereglt einige Kanäle im 868 Mhz Band gibt, auf denen nur extrem kurz was gesendet werden darf?! Kann mir da vielleicht jemand mehr sagen? Auch diese Antwort auf diese Frage ist mir äußerst wichtig.
Und dann würde ich noch gerne wissen, wie lange es dann dauert bis der Empfänger einen Interrupt bekommt, weil ein Zeichen empfangen wurde (der USART muss das ja auch noch erst auswerten). Oder ist diese minimale Zeitspanne unrelevant? Ich würde einen Atmega8L einsetzen mit einem einem Takt von 7.3728 Mhz. Das müsste eigentlich schnell genug sein.
Und dann noch ne Frage. Gibts
Viele liebe Grüße und nen schönen Abend
Lutz
P.S.: Sorry, aber mir ist einfach kein besserer Titel eingefallen ...
Und dann habe ich noch folgendes gefunde:
I²C-Funk-Interface 868MHz - Devantech von http://www.roboter-teile.de/Shop/pd1...m?categoryId=6
Ist das Teil gut? Das gute Stück hat nämlich TWI und das ist für mich ein Pluspunkt...
kannst du mir mal erklären, warum ich mit meinem Funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
mfg pebisoft
wenn Sichtkontakt besteht, warum nehmt ihr dann nicht einen Laser. Läßt sich vielleicht besser regeln als Funk. Sollte aber ein Auto im Weg sein, dann geht es natürlich auch nicht. Und der Laserstrahl muß natürlich so eingestellt werden, dass er genau auf den Empfanger trifft. Bei 100m brauch man vielleicht ne genaue Mechanik dafür.
Aber wenn man keine Daten (An/Aus) per Funk senden will, dann gibt es bestimmt auch Schaltungen die von den 20ms verzögerung nicht betroffen sind.
Die Sache ist einfacher, wenn der Sender schon vorher weiß, daß ein Signal zu senden sein wird, denn dann könnte er ja die Laufzeiten berücksichtigen. Oder wenigstens eine Art Fenster.
Es dauert immer länger, aus dem Nichts eine halbwegs sichere Verbindung aufzubauen.
Kannst du Näheres über das Problem sagen ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Die Latenzzeit beträgt also ca. 20ms. Für präzide Messungen ist das natürlich zu ungenau.
Was ist damit:
Der Sender sendet den Startbefehl mit einem Zeitcode. Der Empfänger kann ja dann zum Sender seinen Zeitcode (den mit dem exakten Startzeitpunkt) zurücksenden. Okay, dafür müssen die Funkmodule bidirektional arbeiten. Wenn beide Uhren (Sender und Empfänger) zueinander synchron laufen, dann ist der exakte Zeitpunkt des Ereignisses bekannt und die Zeitmessung kann sehr genau erfolgen.
Dafür müssen sich die Uhren regelmäßig synchronisieren. Das läßt sich über regelmäßige Sendungen der Zeitcodes realisieren.
a) Es gibt keine dummen Fragen, nur dumme Antworten
b) Fehler macht man um aus ihnen zu lernen
c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt
Hio. Also danke erstmal für die ganzen Antworten!
Laser kommt bei mir nicht in Frage. Das wär mir zu abgedreht und außerdem geht das in meinem Fall auch nicht. Ich hab nicht immer Sichtkontakt...
Nee, kann ich nich. Vielleicht klärst du uns ja auf...kannst du mir mal erklären, warum ich mit meinem Funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
mfg pebisoft
Es handelt sich in meinem Fall um nur eine Messung. So präzise muss die jetzt auch nicht mehr sein. +/- 100 ms ist maximal an Ungenauigkeit drin.Die Latenzzeit beträgt also ca. 20ms. Für präzide Messungen ist das natürlich zu ungenau.
Also, es soll so ne Art Stoppuhr werden. Mehr kann ich nicht sagen. Und diese Stoppuhr besteht eben aus (bis jetzt natürlich nur in der Theorie) zwei Platinen mit AVR drauf. Die eine muss beim Start der Stoppuhr der anderen via Funk sagen: "So jetzt geht's los". Die die das empfängt startet dann nen Timer und wartet bis ein Stoppsiganl eintrifft (kommt nicht via Funk, sondern anders, wie ist egal) um dann die Uhr zu stoppen. Ich hab halt gedacht, dass wenn man die Latenzzeiten weiß (beim RT868F4 ja 20 ms) man die ja einfach, wenn der Timer später gestoppt wurde, diese Zeit einfach aufrechnet...Kannst du Näheres über das Problem sagen ?
Jetzt nochmal die Frage:
Leider hab ich da null mit Latenzen gefunden. UND man kann anscheinened keine Kanäle selber auswählen. Ist das schlimm? UND ist das gute Stück eigentlich einigermaßen Störsicher?Und dann habe ich noch folgendes gefunde:
I²C-Funk-Interface 868MHz - Devantech von http://www.roboter-teile.de/Shop/pd1...m?categoryId=6
Ist das Teil gut? Das gute Stück hat nämlich TWI und das ist für mich ein Pluspunkt...
EDIT: Vielleicht ne komische Frage, aber: Beim I²C-Funk-Interface 868MHz - Devantech. So wie ich das verstanden habe, schließt man das direkt an I²C an und kann dann sofort senden und empfangen. Und ein EasyRadio-Modul ist schon drauf. Nur welches?
Dürfte eigentlich nicht gehen.kannst du mir mal erklären, warum ich mit meinem Funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
Die Bandbreite von standard Funkmodulen reicht dafür nicht aus.
Bei 5 KHz Bandbreite kannst du max. 9600 BpS erreichen.
(Bei Biphase Signalen 4800 BpS)
Ich nehme mal an, daß dein Funkmodul einen Buffer eingebaut hat, der die Daten zwischenspeichert und dann mit 9600 BpS weitersendet.
Der Empfänger setzt die Daten dann wieder auf die ursprüngliche Baudrate rauf.
Deshalb auch die Verzögerung, da erst der Buffer gefüllt wird.
So ist es bei vielen Funkmodulen mit "Intelligenz" gelöst.
Ohne buffer geht das wesentlich schneller, wenn man nur 2-3 Bytes sendet.
Man muß ja auch nicht unbedingt serielle Daten senden, man kann ja auch Töne senden und die auswerten.
Ganz interessante Doku zum Thema serielle Funkübertragung
http://hmradio.de/Dokumente/Infos/applicationnote.pdf
Du hast bei deiner Berechnung übrigens die Start und Stoppbits vergessen..
Gruß
Christopher
Hallo Lutz,
nun also der zweite Anlauf
Die controllerbasierten Funkmodule (egal ob Easyradio oder andere) haben eine Firmware, die die gesendeten Zeichen in einen Fifo schreiben und erst mit einer bestimmten Verzögerung tatsächlich senden. Bei den easyradio-Modulen wird hierbei so lange in den Fifo geschaufelt, bis eine kurze Pause im Eingabedatenstrom erkannt wird.
Überhaupt liegt das Augenmerk bei dieser Art von Funkmodulen darin, dem Benutzer eine transparente serielle RS232 Schnittstelle zu bieten und von den ganzen Funkthemen (Modulation, CRC, Sende-Empfangsumschaltung usw.) zu entlasten. Das führt aber dazu, das dies Module nicht mehr synchron arbeiten, also an das Modul geschickte Daten werden nicht mehr sofort über Funk übertragen.
Damit ist dieses Modul bzw. diese Art von Modulen für die Aufgabenstellung eher nicht geeignet.
Es gibt doch nach wie vor die controllerlosen Module von C oder ELV, damit könnte man sicher so etwas machen. Man hat zumindest im Rahmen der Möglichkeiten dieser Module alle Freiheiten, sich das für die Applikation zurechtzubiegen.
Die EasyRadios übertragen die Daten übrigens generell mit 19200bps, egal welche Geschwindigkeit am Interface eingestellt ist.
Beim RF04 wird das Easyradio Modul (ER400TRS oder ER900TRS) durch eine FTDI USB-Serial Bridge ergänzt. Im PC bekommt man über einen Treiber einen virtuellen COMport, der letztendlich an das Funkmodul durchgereicht wird.
Das CM02 (I2C-Modul) geht einen etwas anderen Weg. Hier wird das Easyradio ergänzt mit einem Controller, der über ein serielles Protokoll eine I2C-Schnittstelle bedienen kann. Dabei ist dieser Controller auf dem CM02 immer der I2C-Master. Gehandelt wird das ganze von der Gegenstelle (PC mit RF04 oder Controller mit ERxxx). Man schreibt also über die serielle Funkschnittstelle Daten zum I2C-Device, oder holt Daten von einem I2C-Device ab. Das I2C-Device kann von sich aus nicht selbst aktiv werden und Daten übertragen. Das CM02 ist funk- und protokolltechnisch immer ein Slave. Ein gegenseitiger Betrieb von 2 CM02 ist daher ebenfalls nicht möglich.
Ich hoffe etwas weitergeholfen zu haben.
Viele Grüße
Jörg
"Nee, kann ich nich. Vielleicht klärst du uns ja auf..."
deine aussage ist die aufgeschnappte theorie.
mein test ist die praxis, das ist der unterschied.
fazit: glaube nicht alles , was dir untergeschoben wird an gerüchten.
mfg pebisoft
Lesezeichen