mikrocontroller.net

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


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.