Gast
#801776
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