Skip to main content

UUID - so finden sich die CalliBots von ganz allein

Einleitung

In vielen Calliope-Projekten wird der Funkkanal, über den Geräte miteinander kommunizieren, fest im Programmcode vorgegeben. Das funktioniert zwar in einfachen Szenarien, stößt aber an Grenzen, sobald mehrere Geräte flexibel miteinander interagieren sollen – zum Beispiel in wechselnden Gruppen oder wenn Geräte dynamisch hinzukommen.

Das zentrale Problem:
Die Geräte können nicht eindeutig identifiziert oder gezielt angesprochen werden. Eine skalierbare, individuelle Kommunikation ist auf diese Weise nicht möglich.

Die Lösung ist ein dynamisches Verfahren zur Funkverbindung:
Ein zentraler Controller (Sendegerät) erkennt zur Laufzeit individuelle Teilnehmer (Empfangsgeräte) einer Gruppe und weisst Ihnen eindeutige IDs zu. Statt einen festen Funkkanal zu nutzen, handeln Controller und Teilnehmer während der Kommunikation dynamische Kanäle aus.

Die Vorteile:

  • Geräte müssen nicht vorab manuell konfiguriert werden.

  • Alle Teilnehmer sind individuell ansprechbar.

  • Das System ist skalierbar, flexibel und ideal für offene oder sich ändernde Gerätegruppen, z. B. im Unterricht oder bei Projekten mit mehreren Teams.

👉 Wie dieses Verfahren genau abläuft, zeigt die folgende Schritt-für-Schritt-Anleitung.


Vorbereitung

  • Jeder Calliope vergibt sich selbstständig eine zufällige ID zwischen 10 und 100.

  • Alle Geräte verwenden zunächst denselben allgemeinen Funkkanal am Anfang der Kommunikation (bspw. 9).


Schritt 1: Teilnehmer aktivieren

  • Die Teilnehmer (Calliopes 2 bis n) werden durch Drücken der Taste B in den Empfangsmodus versetzt.

  • Sie warten nun auf dem allgemeinen Kanal auf Nachrichten.


Schritt 2: Controller aktivieren

  • Der zentrale Controller (Calliope 1) wird durch Drücken der Taste A in den Sendemodus versetzt.

  • Er sendet seine eigene ID (C-ID) über den allgemeinen Kanal.

  • Danach wechselt der Controller in seinen eigenen Kommunikationskanal (C-ID) und wartet dort auf Antworten.


Schritt 3: Antwort der Teilnehmer

  • Die Teilnehmer empfangen die C-ID des Controllers im allgemeinen Kanal.

  • Sie wechseln nun in den Kanal des Controllers (C-ID) und senden dort ihre eigene ID (T-ID).

  • Anschließend warten sie auf eine Antwort vom Controller.

  • Wichtig: Da der Controller nicht alle Antworten der Teilnehmer zeitgleich empfangen kann, machen die Teilnehmer vor dem Senden eine kurze Pause, deren Länge zwischen 100 und 1000 ms ist. 


Schritt 4: Bestätigung der Teilnehmer

  • Der Controller empfängt die T-IDs der Teilnehmer und trägt diese in eine Teilnehmerliste 

  • Er wartet bis er alle Antworten erhalten hat.

  • Zur Bestätigung sendet er alle T-IDs von seiner Teilnehmerliste nacheinander zurück an die Teilnehmer.
  • Im letzten Schritt sendet er ein ENDE Signal auf seinem Kanal

Schritt 5: Reaktion der ausgewählten Teilnehmer

  • Alle Teilnehmer, die Ihre T-ID auf dem Kanal des Controllers empfangen haben, wurden vom Controller bestätigt. Diese Teilnehmer wechseln in Ihren eigenen Kommunikationskanal (T-ID) und warten auf weitere Nachrichten vom Controller 

  • Alle anderen Teilnehmer empfangen das ENDE Signal. Dadurch ist klar, dass die Bestätigung durch den Controller nicht geklappt hat. Diese Teilnehmen versuchen es erneut und springen zurück zu Schritt 1 und warten auf Nachrichten vom Controller.


Schritt 6: Übermittlung der UUID 

  • Der Controller sende jedem Teilnehmern auf der Teilnehmerliste eine eindeutige ID auf dem Kanal des jeweiligen Empfängers. 

  • Die Teilnehmer, empfangen die UUID auf Ihrem Kanal und zeigen diese an.


Ergebnis

  • Die Teilnehmer haben nun eine eindeutige ID und sind von 1 bis n durchnummeriert.  


Eindeutigkeit: Wenn zwei oder mehr Teilnehmer zufällig die gleiche ID gewählt haben, dann werden sie dennoch erfolgreich eingerichtet. Da die möglichen IDs im Bereich von 10–100 liegen, ist die Wahrscheinlichkeit einer Kollision jedoch sehr gering. Das Verfahren kann im Schritt 4 - Bestätigung der Teilnehmer entsprechen erweitert werden, dass nur T-IDs angenommen werden, die eindeutig sind. 

Beispielimplementierung

Programm Code Beschreibung
UID zuweisen

uid_fuer_callibots7.xml

 

uid_fuer_callibots7.hex

Das Programm auf alle Geräte der Gruppe spielen und die Empfänger (Callibots) starten.

Nach 5s erscheint auf allen Callibots ein Herz.

Danach den Controller starten und die Taste A drücken. 

Der Controller und die Callibots zählen die Synchronisationsschritte bis auf 1 runter und stellen dann die UUID auf dem Display da. 

Durch Drücken der Taste A am Controller wird die Empängerliste (UUIDs - T-IDs Pärchen) angezeigt.  

Durch Drücken der Taste A am Empänger wird die Eingen UUID und T-ID angezeigt.