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