Ja, ich weiss,- da steht schon einiges im RN-Wissen! (Den Morsecode über IRCOMM habe ich ja selbst verbockt...)
Der Thread von radbruch ist auch Klasse,- aber soweit ich mich erinnere, ging es um die IR-UART-Kommunikation zwischen RP6 und Asuro/PC?
Woran ich eher dachte ist die IR-Kommunikation im puren RC5-Code als Kommando-/Telemetrielösung ohne UART. Das gab es recht gut durchdacht mal beim CCRP5. Hier die "alte" Beschreibung:
Code:
'VEREINBARUNGEN ZUR NUTZUNG DES SUBSYSTEMS:
' IR-KOMMUNIKATION (IR-COMM, siehe "9_EINFÜHRUNG_IR_COMM.bas"):
' Der Prozessor übernimmt die Codierung der Daten in die gebräuchlichen
' Formate REC80 und RC5, sodass der C-Control Computer von dieser Aufgabe
' entlastet ist. Das Signal wird über zwei IR-LEDs abgestrahlt und ist
' in geschlossenen Raumen bis ca. 100qm überall zu empfangen (Reflektion an der Decke).
' Benutzen Sie diese Kommunikationseinrichtung zur Kommunikation von mehreren
' Robotern untereinander, zum Senden von Telemetriedaten, oder wenn Sie den Roboter
' fernsteuern wollen.
' Wie das ACS ist auch IR-COMM interruptfähig und kann einen Interrupt auslösen, wenn
' Daten empfangen wurden, siehe "9_EINFÜHRUNG_IR_COMM_INT.bas"!
'
' Beim Zugriff auf IR-COMM gelten folgende Vereinbarungen:
' 1) Der Zugriff wird bis zu 20ms verzögert ausgeführt, wenn IR-COMM gerade ein IR-Signal
' empfängt oder sendet.
' 2) Zu anderer Zeit wird der Zugriff sofort ausgeführt und ist nach 3ms beendet. In
' dieser Zeit kann kein IR-Signal empfangen werden und geht evtl. verloren.
' 3) Ein gültiger IR-Code kann mit gosub GET_IRDATA direkt abgefragt werden. Ist jedoch
' das ACS in Betrieb (und damit häufige Zugriffe mit sys COMNAV_STATUS auf das Subsystem
' notwendig), ist es besser, das Flag IR_F in SYSTEM_STATUS auszuwerten und den
' empfangenen Code nur im Bedarfsfall aufzurufen.
'
' FERNSTEUERUNG mit IR-COMM (siehe "9_EINFÜHRUNG_REMOTE_CONTROL2.bas"):
' Die Fernsteuerkommandos sind für die als Zubehör erhältliche IR-Fernbedienung CV100
' (Best.-Nr. 349127) oder CV150-2 (Best.-Nr. 350381, Geräte-Code: 169) zugeschnitten,
' können aber natürlich beliebig geändert werden.
' Folgende Kommandos sind vereinbart:
' 12 - LED ANZEIGEMODUS UMSCHALTEN (EIN/AUS)
' 13 - STOP (MUTE)
' 32 - VORWÄRTS (LED1) (P+)
' 33 - RÜCKWÄRTS (LED2) (P-)
' 17 - LINKS (LED3) (V-)
' 16 - RECHTS (LED4) (V+)
'
' Damit sich der Roboter schöner steuern lässt, wurden weitere Vereinbarungen getroffen:
' - Beim Druck auf die VORWÄRTS-Taste erhöht sich laufend die Geschwindigkeit, wenn
' der Roboter vorwärts fährt. Fährt er rückwärts, dann wird die Rückwärtsfahrt langsam
' gebremst.
' - Beim Druck auf die RÜCKWÄRTS-Taste erhöht sich laufend die Geschwindigkeit, wenn
' der Roboter rückwärts fährt. Fährt er vorwärts, dann wird die Vorwärtswärtsfahrt langsam
' gebremst.
'
' TELEMETRIE mit IR-COMM (siehe "9_EINFÜHRUNG TELEMETRIE1.bas"):
' Obwohl das verwendete RC5 Format von der Industrie zur Steuerung von Geräten der
' Unterhaltungselektronik entworfen wurde, lassen sich, wenn man sparsam damit umgeht
' (20ms für einen Datenrahmen!), durchaus auch Messwerte übertragen, entweder zu
' Informationszwecken für den Anwender oder für den Datenaustausch mehrerer
' Roboter untereinander.
' Formatierung der Daten:
' Wenn man sich die Datenformate ansieht, stellt man fest, dass weder in die ADRESSE,
' noch in das KOMMANDO ein ganzes Byte passt.
'
' 13-12-11-10-09-08-07-06-05-04-03-02-01-00 DATA BIT
' S S T a4 a3 a2 a1 a0 c5 c4 c3 c2 c1 c0 RC5
' S a5 a4 a3 a2 a1 a0 c6 c5 c4 c3 c2 c1 c0 REC 80
'
' In dieser Vereinbarung formatieren wir unsere Telemetriedaten so, dass das Datenbyte auf
' c0 bis a1 verteilt ist (RC5). In a2 bis a4 und T codieren wir den Messkanal, damit man
' mehrere Datenkanäle übertragen kann (bis zu 16 Kanäle).
'
' Das sieht dann so aus:
' S S T a4 a3 a2 a1 a0 c5 c4 c3 c2 c1 c0 RC5
' <-KANAL-> <------ DATEN -------->
' Telemetrie SENDEN:
' sys SEND_TLM erwartet den Messkanal in HBYTE (0-15), die Daten in LBYTE.
' Die Daten werden entsprechend dieser Vereinbarung formatiert und gesendet.
' Telemetrie EMPFANGEN:
' Wenn die Daten im Empfänger ausgewertet werden sollen, rufen Sie die empfangenen Daten
' mit gosub GET_TLM ab. Damit wird gleichzeitig die Umcodierung vorgenommen, damit der
' Messkanal wieder in HBYTE (0-15), die Daten in LBYTE stehen.
'
' TELEMETRIE-KANÄLE (siehe "9_EINFÜHRUNG TELEMETRIE2.bas"):
' Folgende Zuweisungen bezüglich der Kanäle und Sensoren sind zu empfehlen, die Sie
' natürlich beliebig ändern können:
' CHANNEL 0: SYSTEM (b0,b1=ACS b2=IR_DATA b3,b4=DIR b5,b6=ACS-PWR)
' CHANNEL 1: SYSTEM VOLTS
' CHANNEL 2: SYSTEM CURRENT
' CHANNEL 3: SYSTEM CHARGE CURRENT
' CHANNEL 4: LIGHT LEFT
' CHANNEL 5: LIGHT RIGHT
' CHANNEL 6: -MIC
' CHANNEL 7: PLM LEFT
' CHANNEL 8: PLM RIGHT
' CHANNEL 9: DISTANCE HI LEFT
' CHANNEL 10: DISTANCE LO RIGHT
' CHANNEL 11: SYS SECONDS
' CHANNEL 12: SYS MINUTES
' CHANNEL 13: LIGHT LEVEL
' CHANNEL 14: MAX DISTANCE
' CHANNEL 15: PGM ID
'
' NETWORKING mit IR-COMM (siehe "10_EINFÜHRUNG_NETWORKING.bas"):
' Mit dem Kommunikationssystem können Telemetrie-/Telekommando-Anwendungen realisiert
' werden (s.o.!). Das geht in dieser Form aber nur, wenn nur 1 Roboter in Betrieb
' ist, da sonst die Telemetriesendung des einen von einem anderen als Kommando
' interpretiert wird.
' Um mehrere Roboter miteinander kommunizieren zu lassen und auf Telemetrie nicht zu
' verzichten, treffen wir die Vereinbarungen:
'
' 1) Telemetrie ist immer RC5 Format S S T a4 a3 a2 a1 a0 c5 c4 c3 c2 c1 c0 RC5
' <-KANAL-> <------ DATEN -------->
'
' Telemetrie wird nur auf Anforderung von aussen verschickt, Kanal ist immer 0.
'
' 2) Telekommando ist immer RC5 Format S S T a4 a3 a2 a1 a0 c5 c4 c3 c2 c1 c0 RC5
' <-ADDR -> <------ DATEN -------->
' Die Adresse kann 1 bis 15 sein.
' Eine Telemetrieanforderung (hier CMD 0 bis 4) wird mit dem Senden des Telemetriekanals
' bestätigt.
' Alle anderen Telekommandos (hier CMD 5,6) werden mit einem einheitlichen Kommando (hier
' CMD 7) bestätigt.
Vielleicht können wir uns ja da mal dran machen ...?
[TRAUM]Schwarmintelligenz[/TRAUM]
Lesezeichen