Schönen guten Tag, (Folgendes ist nur ein Gedankenspiel über die Realisierbarkeit) Also der Plan ist, mehrere AVRs mit Funk zu vernetzten, geplant ist so ~8 bis 10 Stück. Gedacht habe ich mir Folgendes: Avrs haben intern eine Tabelle, in der Zeitstempel, Adresse des (ursprünglichen) Senders und die Datei drin sind. Der AVR updated ledigtlich seine Zeile (um Daten zu senden), sendet jedoch die komplette Tabelle. Im Empfangsmodus "hört" er nur was gesendet wird, und schaut ob er Daten mit neuem Zeitstempel empfängt (also neue Daten) und schreibt sie dann natürlich in seine Tabelle. Mein Problem ist jedoch, wie mache ich das die sich nicht stören, sprich Daten durcheinander kommen, falls 2 AVRS auf die Idee kommen gleichzeitig zu senden. Seid mir nicht böse, ich habe schon ein Weilchen gesucht, und bis auf Funkmodule im Preispereich 170€ (was eindeutig zu viel für mich ist) habe ich nichts brauchbares gefunden. Wäre es Möglich das ganze mit : http://www.pollin.de/shop/dt/NDg4OTgxOTk-/Bausaetze_Module/Module/Funkmodul_RFM12BP_433_Sende_Empfangsmodul.html oder http://www.dealextreme.com/p/nrf905-wireless-rf-module-w-antenna-141705?item=6 zu realisieren? Ich möchte jetzt nicht zu einer Lösung kommen, ich suche ledigtlich ein "ja, gibts schon", "ja, aber nicht mit den Funk-Chips" oder, "nein gehst du vollkommen falsch an, vielleicht so:", da ich das Projekt wohl eher in "mittelferner Zukunft" starte... oder auch nicht.
also, hab mich mal ganz kurz etwas "schlau" gemacht... Man nutzt das "Chanel-Prinzip" schickt ein Datenbit auf diesem Chanel und hört sofort ob danach nix kommt. Falls doch wird eine zufällige Zeit gewartet, und gleichzeitig gehört ob jemand senden möchte. Wenn nicht, starte ich die Prozedur neu und "hoffe" dass nicht nocheinmal die selbe Zeit gewartet wurde. Da mehr-Chanel Empfänger wohl recht teuer sein sollten muss ich mich wohl mit einem Channel begnügen. Habe ich das so richtig verstanden?
ok, dann noch das Hidden-Base-Problem A möchte nach B senden, C möchte zu D senden, B ist in reichweite von A und C also sendet A zu B "möchte senden" B antwortet "ok kannst" C kapiert das und ist ruhig. dann müssen aber alle gleichzeitig das senden, und dann kommt nen Datengewusel durch.. man könnte natürlich auch jedem der Peers entsprechend seiner Adresse nen kleines "delay" auferlegen... aber delays sind mist.. hab ich mal gehört.. ^^
Definiere eines der Module als Basis, die reihum die anderen Module abfragt. Jedes dieser Module sendet nur auf eine solche Anfrage hin - somit ist gleichzeitiges senden ausgeschlossen. Das geht ganz wunderbar mit den RFM12 von Pollin, das CSMA Zeug geht damit nicht so wirklich
Wenn die Basis aber nun nicht mehr in Reichweite ist, da die AVRs mobil sein sollen (können), geht das ganze Konzept nicht auf.. (ne Infrastruktur hab ich auch schon gedacht.. aber verworfen wegen dieses Problems) wie wärs an das Signal eine Priorität dran zu hängen, sagen wir 1 ms für Teilnehmer 1 , 2 ms für Teilnehmer 2 usw. dann Senden sie ihr "Senden" Bit, die anderen Antworten mit "Ok" und danach kommt die Datenübertragung...
Wenn die Teilnehmerzahl fest ist und das Datenaufkommen nicht zu hoch ist, kann jeder einen festen Zeitslot bekommen, in dem er senden darf. Zur Synchronisation müssen sich alle regelmäßig melden und/oder über ein genaue Uhr verfügen. Bei variable Teilnehmerzusammensetzung läßt sich die Zeitslotzuteilung auch dynamisch anpassen (SOTDMA)
Dieses Rad ist schon erfunden. Es nennt sich IEEE 802.15.4. Darauf kannst Du verschiedene Protokolle aufsetzen. Eines nennt sich ZigBee und ist relativ komplex, kann aber auch viel, und ist herstellerübergreifend standardisiert. Daneben gibts noch proprietäre Protokolle, die deutlich weniger Ressourcen brauchen, aber vielleicht nicht alles können. Schau hier: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2664¶m=en535761 http://www.atmel.com/devices/ATMEGA128RFA1.aspx Daran, dass Atmel einen Mega128 als Basis verwendet, sieht Du schon, wie groß der vollständige ZigBee Stack ist. IEEE 802.15.4 funkt im 2.4 GHz Band. Das wird auch für viele andere Dinge verwendet (WLAN, Bluetooth,...). Außerdem ist die Reichweite bedingt durch die Dämpfung im Mauerwerk begrenzt. Den proprietären MiWi Stack von Microchip kannst Du auch im 868MHz Band verwenden, das weitaus weniger überlaufen ist und weniger stark durch Mauerwerk und Feuchtigkeit (Wasser) gedämpft wird. Bedenke: In der Mikrowelle wird 2.4 GHz zum Erhitzen von Wasser verwendet... Dafür wirst Du dann aber PICs einsetzen, aus Lizenzgründen. Das ist aber kein Nachteil, denn so ein PIC24 hat auch seine Vorteile. fchk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.