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=en535761http://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