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:
Vielleicht können wir uns ja da mal dran machen ...?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.
[TRAUM]Schwarmintelligenz[/TRAUM]







Zitieren

Lesezeichen