Forum: Compiler & IDEs Datenaustausch per Funk: Wie planen?


von Christian (Gast)


Lesenswert?

Hallo,

ich möchte per Funk (rfm12) mehrere AVRs vernetzen (atmega16).
Im Moment habe ich absolut keine Ahnung, wie ich die Funkübertragung 
programmieren soll.


Das Ganze soll eine Art Mini-Hausbus werden, über den simple Dinge 
gemessen und gesteuert werden.

Hier mal das grobe Konzept:
Es soll ein Hauptgerät mit Funkuhr geben, über das die Kommunikation 
läuft.
Eine Kommunikation zwischen den Clients ist im Moment nicht vorgesehen, 
aber wenn das nicht zu schwer zu realisieren ist, will ich mir das offen 
halten...
Auch eine Lösung ohne Master wäre natürlich denkbar.

Die Clients besitzen Sensoren (Licht, Temperatur), ein LCD und einen 
Drehencoder mit Taster. Außerdem haben Sie eine Uhr (Uhrenquarz) und 
schalten sich in den Powersave-Modus, wenn keine Benutzereingabe 
erfolgt.

Die Uhrzeit soll von Master bezogen werden und z.B. einmal pro Tag 
abgeglichen werden. Außerdem soll der Empfang geprüft werden. Erreicht 
ein Client den Master nicht, soll er auf "offline" gehen und im 
Stundentakt erneut einen Kontakt versuchen. Der Master soll entsprechend 
reagieren.
Ich denke da an die Stichwörter Handshake, registrieren, deregistrieren.

Um Strom zu sparen, wird die rfm12-Platine nur bei Bedarf aktiviert und 
erhält auch ein Zeitfenster für den Empfang.
Das bedeutet, dass der Master anstehende Übertragungen erst dann senden 
darf, wenn der Client auch lauscht.

Der Master hingegen hat ein Netzteil und darf etwas verschwenderischer 
sein.

Übertragen werden sollen Daten wie Temperaturwerte, Datum, Uhrzeit....
Das System soll erweiterbar sein, also skalierbar auf vlt. 8 Clients 
oder größere Datenmengen (z.b. mal einen 50 Byte langen Text, oder 
ähnliches).


Aktueller Stand:
Es gibt das Master-Gerät und ein Client-Gerät, beide mit rfm12 und 
Atmega16 mit internem Takt.
Auf dem Client tickt bereits die Uhr mit Uhrenquarz und der 
Powersavemodus klappt (juhu! 12µA....)


Meine Fragen:
1.) Gibt es einen fertigen Code für die rfm12-Module, der mit 
Hardware-SPI arbeitet bzw. hat jemand einen Link zu dem Beitrag?
Ich fand bisher nur eine Software-Lösung im Forum und den Beitrag zur 
rs232-Emulation....aber ich will ja kein rs232 emulieren....oder würde 
das passen?

2.)Wie sollte man so eine Funkübertragung aufbauen?
Ich stelle es mir recht schwierig vor, z.B. Übertragungen zurück zu 
halten wenn der Master weiß, dass der Client gerade nicht auf Empfang 
ist.
Und was, wenn in der Zwischenzeit ein oder mehrere Clients etwas an den 
Master übertragen?
Und wie sollte eine Übertragung aussehen? Wie funktioniert die 
Auswertung? CRC? Wiederholung der Übertragung, wenn kein "ok" vom 
Empfänger zurück kommt? Wie oft, und was, wenn es nach x Übertragungen 
nicht klappt?
schwindel

Christian

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

IEEE 802.15.4 und ZigBee sind für exakt deinen Anwendungsfall
konzipiert worden, sind aber beide nicht gerade klein in ihren
Netzwerkstacks, und du brauchst Funkmodule, die 802.15.4
sprechen können dafür.  Wenn du die entsprechende Netzwerkschicht
selbst implementieren willst, dann solltest du dich auf wenigstens
ein halbes Mannjahr an Aufwand gefasst machen...

von Christian R. (supachris)


Lesenswert?

Für 802.15.4 braucht man nicht viel Software-Aufwand, Chips wie der 
CC2420 machen das allermeiste in Hardware. Hab die auch im Einsatz, 
Stromverbrauch (3,3V/18mA) zu Bitrate (12 kByte/s Netto) ist sehr gut. 
Software-Stack gabs für den MSP430 und AVR gleich bei TI dazu.

Das gesamte Netz-Management mit Master-Slave Funktion usw. ist 
allerdings unabhängig vom verwendeten Funksystem und erfordert einiges 
an Gehirnschmalz.

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
Noch kein Account? Hier anmelden.