Soweit hab ich es nicht getestet und kann daher leider nichts dazu sagen...Zitat:
Zitat von shaun
Druckbare Version
Soweit hab ich es nicht getestet und kann daher leider nichts dazu sagen...Zitat:
Zitat von shaun
Ich hab auch mal mit so einem Projekt begonnen, hab es aber dann nicht zu Ende geführt.
Das erste Problem mit den kleinen Funkmodulen ist, das man einfach nicht an die benötigte Reichweite herankommt.
Das zweite Problem ist eine ausreichende Synchronisation der Uhren im Sender sowie im Empfänger hinzukriegen.
Das dritte Problem sind die Laufzeiten die es bei verschiedenen Funkmodulen gibt.
Das Vierte Problem ist das Fehlerhandling
Meine Lösung war am Ende ein PMR zu verwenden, das eine PTT Funktion auf einem Klinkenstecker hatte.
Damit wäre es möglich bei ausreichender Reichweite ohne lästige Laufzeiten die paar benötigten Bits zu übertragen.
Wenn man die PMR- Geräte zum Umbau nicht öffnen muß, dürfte das Ganze auch legal sein.
Leistungsmäßig dürfte ein ATMEGA 16 für dein Projekt mehr als ausreichend sein.
Ich bastel zur Zeit mit den Funkmodulen von Pollin rum (RFM01, RFM02 von hope rf) und hab auch schon eine Reichweite von ca. 140m erreicht.
Ob da noch mehr drin ist, oder ob die Module Signallaufzeiten haben, kann ich zur Zeit noch nicht beantworten.
Da ich die Dinger für ein Telemetriesystem brauch, sind die Signallaufzeiten für mich auch nicht so interessant.
Im RC-Lineforum ( http://www.rclineforum.de/forum/thre...14a214124cd701 ) bastelt zur Zeit jemand mit den XBEE Modulen rum und hat da schon einige Erfahrung gesammelt - Vieleicht kann er Dir weiterhelfen.
Ich habe gerade entdeckt das es zu meinem easy radio bereits eine 2. generation gibt. Die Reicheite dürfte damit kein Problem mehr darstellen, da es eine Repeater funktion besitzt (hier der Link: http://www.roboter-teile.de/Shop/the...id=47&source=2). Sollte sie also nicht ausreichen, kann ich einfach je nach Ortsage eine Zwischenstation setzen. Das der ATmega 16 ausreicht beruhigt mich schon mal, mit anderen Controllern hab ich zu meinem bedauern noch keine Erfahrung gesammelt. Dieses XBEE Modul hat soweit ich das gelesenhabe laut hersteller nur ca. 100m reichweite, das erscheint mir doch etwas wenig.
Mit dem Easy Radio hätte ich also nur noch 2/4 Problemen, die Reichweite und die Synchronisation fällt weg, weil das doch das easy Radio meines wissens selbst regelt.
Was ist mit den Laufzeiten der verschiedenen Funkmodule gemeint?
Das Fehlerhandling erscheint mir bis jetzt noch das schwerste Problem. Hierführ werde ich ein ausgeklügeltes Übertragungsprotokoll benötigen, also wie bereits von shaun erwähnt mit prüfsumme...
Kurz gesagt: bei jedem Event an einem der Funksender wird ein Timer gestartet, der angibt, wie viele 100us-Inkremente seit dem Event vergangen sind. Wenn die Basis von Gerät x die aktuelle Liste erfragt, beginnt dieses nach Abschluss des Befehlsempfangs die Präambel zu senden und unmittelbar (us-Bereich) die aktuellen Timerwerte zu sichern. Anschliessend werden diese dann mit Prüfsumme gesendet. Am Präambelende ist der Empfänger der Basis eingeschwungen, die Latenz ist ab dann vernachlässigbar und vor allem konstant. Die Timerwerte, die die Zeitdifferenz zwischen Event und Präambelende angeben, werden empfangen, geprüft und gespeichert. Wenn ein Fehler aufgetreten ist, wird die Abfrage wiederholt, ansonsten bestätigt und die Events werden aus der Liste entfernt.
Wenn Du Module mit eingebauter Intelligenz und ggf auch Fehlerkorrektur benutzt, ist die Latenz vermutlich komplett unbestimmbar, daher setze ich auch die "nackten" Transceiver von Aurel bzw funkmodul.com ein.
Bisher reicht die Reichweite, wenn nicht, muss ich wohl über eine Repeater-Funktion der einzelnen Geräte nachdenken...
Hmm, ich versteh das bis jetzt nur zu 90%, das Prinzip ist mir jetzt klar geworden, aber ich wie sieht das dann in der Realität aus, also wie kann man das im Microcontroller realisieren?
Gibts dazu vielleicht eine Nachtlektüre, oder Programmbeispiele?
Ich habe leider keine gefunden. Mein Projekt gibt es in Varianten seit 1998, bisher ist aber noch der Vorgänger von 1996 in diskreter CMOS-Logik im Einsatz. Entsprechend hat sich auch die Software immer wieder gewandelt, die endgültige Version ist noch nicht wirklich als fertig zu bezeichnen, da ich im Moment am Systemmanagment (Akkuüberwachung und -Ladung, Datenübrtragung über die IR-Strecke,...) arbeite.
Vom verstandenen Prinzip zum Programm ist ja nur noch der Schritt des Programmierens zu gehen, da ich nicht weiss, auf welchem Level Du in hardwarenaher Programmierung und uC-Schaltungsdesign bist, kann ich Dir schlecht eine passende Lektüre empfehlen.
Ich werde nun das Funkmodul RT868F5 bestellen. Der erse einblick in das Datenblatt hat mich recht fasziniert :)
Außerdem werde ich einen ATmega 32 verwenden, der mega 16 kostet gerademal 50cent weniger :( Gib es eigentlich beim Prorammieren einen Unterschied zwischen diesen 2 Controllern? Und wo liegen eigentlich die Unterschiede?
Ist es besser wenn ich einen 16MHz Quarz verwenden, oder enstehen da nur mehr Fehler?
Hab ich mir auch angesehen, das Timing ist ja auch einigermaßen beschrieben, aber nur um auszuprobieren, wie es sich bei Übertragungsfehlern verhält und dann doch wieder an einer proprietären Lösung zu kleben war mir der Preis dann doch zu hoch. Ich möchte mein Protokoll schon noch kennen. Was meinst Du mit dem Quarz, besser als was? Ein langsamerer? Hängt davon ab, wieviel Rechenleistung Du brauchst und wie viel Energie Du zur Verfügung hast. Ich habe ATmega16 in den Lichtschranken und takte die Dinger mit 14.318 MHz, aber eher aus traditionellen Gründen.
Was meinst du mit "ich möchte mein Protokoll schon noch kennen", heißt das jetzt, ja das kannst das Modul für diesen Zweck verwenden, oder nein, nimm ein anderes.
Beim Quarz: Biher habe ich nur mit einem 4Mhz Quarz gearbeitet, war bis jetzt auch ausreichen, doch jetzt wo es ja quasi eine Echtzeitanwendung sein sollte, dachte ich mir schnellerer Quarz, schnelleres Programm. Da der ATmega32 allerdings max 16MHz unterstützt, habe ich bedenken, ob dieses Tempo auch ohne Fehler eingehalten werden kann, oder soll ich doch einen langsameren verwenden, denn ich erreiche mit meinen 100us Inkrementen sowieso keine höhere Genauigkeit.
edit: Ich habe gerade im Datenblatt des ATmega32 gelesen das man mit 8Mhz eine Betriebsspannung von 2,7 bis 5,5 verwenden kann, mit 16Mhz allerings 4,5-5,5 Volt. Da das Funkmodul eine Betriebsspannung von 3,3 Volt benötigt, werde ich doch nur einen 8Mhz Quarz verwenden.
Zum Funkmodul, hier habe ich ebenfalls das Datenblatt nochmals gelesen :) und herausgefunden das ich eine Mindestverzögerung von 7ms erhalten werde. Gibt es also schnellere Module?
Da liegt der Hund ja auch begraben: mindestens 7ms. Und wie viel maximal? Vor allem: kann man das bei jeder Übertragung auf 1ms oder besser genau ermitteln? Siehste... Sicher gibt es schnellere Module, alle ohne integrierte Intelligenz sind erstmal schneller, und dadurch, dass man das Ende der sowieso notwendigen Präambel vor der eigentlichen Datenübertragung als Marker benutzt, sollte es schon sehr genau werden. In diesem Moment ist der Sender eingeschwungen, der Empfänger hat seine Verstärkung eingeregelt und die Verzögerung ist minimal und konstant.