Die Daten sollen zwischen allen AVR's ausgetauscht werden.
Das Projekt soll wenn es fertig ist aus folgenden Modulen bestehen:
- Eine Alarmanlage in einem Gartenhaus
- LED – Uhr auf der Terrasse
- Laderegler für die Solaranlage, Notladung im Winter vom Stromnetz
- SMS/Email-Versand
Zum Beispiel brauchen bei der Uhr die LED's nicht leuchten, wenn keiner da ist. Die Uhr wird dann über die serielle Leitung von der Alarmanlage informiert. Oder der Laderegler meldet einmal täglich die Gesamtladezeit vom Stromnetz zum Versand per SMS oder Email.
Ich habe noch einmal nachgedacht und folgende Lösung:
Die Ringleitung über UART soll so aussehen:
Tx von AVR1 zu Rx von AVR2
Tx von AVR2 zu Rx von AVR3
u.s.w.
bis Tx vom letzten AVR wieder an AVR1 ankommt.
Jeder AVR hat per Software eine Variable „Senderecht“ , die zunächst bei allen „0“ ist, d.h. keiner darf senden.
Nun möchte z.B. die Alarmanlage mit der Kennung „3“ der Uhr mitteilen, dass die Tür verschlossen, keiner anwesend und scharfgeschaltet ist .
Die Alarmanlage sendet ihre Kennung „3“. Die „3“ wird von jedem AVR nacheinander empfangen und in den Ring weitergeleitet. Jeder AVR erkennt, dass die „3“ senden möchte. Ist nun die „3“ wieder bei der Alarmanlage angekommen, erkennt diese dass alle anderen AVR informiert wurden. Sollte z.B. eine „2“ ankommen, dann war ein anderer AVR schneller und dieser erhält zunächst das Senderecht.
Jetzt kann die Alarmanlage die Daten, die für die Uhr bestimmt sind senden, die wiederum durch den gesamten Ring weitergeleitet werden.
Die Uhr erkennt, den Inhalt und schaltet die LED's aus, sendet aber die Daten auch weiter bis sie wieder bei der Alarmanlage als Bestätigung der erfolgreichen Übermittlung ankommen.
Nun sendet die Alarmanlage eine „0“ und andere AVR's können wiederum ein Senderecht „beantragen“.
Was sagt Ihr dazu ???
Lesezeichen