Calliope mini - eindeutige IDs für Kommunikation
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, da der Kommunikationskanal für alle Geräte gleich und statisch ist. 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), die sich selbstständig eindeutige IDs zuweisen.
Statt einen festen Funkkanal zu nutzen, verhandeln Controller und Teilnehmer während der Kommunikation eigene Kanäle auf Basis dieser IDs.
Die Vorteile:
-
Geräte müssen nicht vorab manuell konfiguriert werden.
-
Alle Teilnehmer sind eindeutig identifizierbar und 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-Beschreibung.
Vorbereitung
-
Jeder Calliope vergibt sich selbstständig eine zufällige ID zwischen 10 und 100.
-
Alle Geräte verwenden zunächst denselben allgemeinen Funkkanal zur Kommunikation.
Schritt 1: Teilnehmer aktivieren
-
Die Teilnehmer (Calliopes 2 bis n) werden durch Drücken der Taste B in den Empfangsmodus versetzt.
-
Sie hören 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 einen Kanal mit der Nummer seiner 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.
Schritt 4: Auswahl eines Teilnehmers
-
Der Controller empfängt die erste Antwort von einem der Teilnehmer.
-
Er sendet diese empfangene Teilnehmer-ID als Bestätigung zurück in seinen Kanal.
Schritt 5: Reaktion des ausgewählten Teilnehmers
-
Der Teilnehmer, dessen ID bestätigt wurde, erkennt seine eigene ID in der Antwort.
-
Er:
-
wechselt in seinen eigenen Kanal (T-ID),
-
sendet dort die C-ID des Controllers,
-
und bleibt im Empfangsmodus, um weitere Nachrichten zu empfangen.
-
Schritt 6: Bestätigung durch den Controller und Reset der übrigen Teilnehmer
-
Der Controller empfängt seine eigene ID (C-ID) im Kanal des Teilnehmers.
-
Damit ist der Austausch bestätigt.
-
Erst jetzt sendet der Controller ein Reset-Signal („RESET“) im ursprünglichen Controller-Kanal (C-ID), um alle übrigen Teilnehmer aufzufordern, ihr Programm zu beenden.
Schritt 7: Reaktion der übrigen Teilnehmer
-
Die Teilnehmer, die nicht ausgewählt wurden, erkennen die
"RESET"
-Nachricht im Kanal des Controllers (C-ID). -
Sie beenden daraufhin kontrolliert ihr Programm.
Ergebnis
-
Der Controller kennt nun die eindeutige ID eines Teilnehmers.
-
Der ausgewählte Teilnehmer kennt die ID des Controllers.
-
Alle übrigen Teilnehmer erhalten das Reset-Signal und beenden ihr Programm gezielt.
Hinweis zur Eindeutigkeit
Wenn zwei oder mehr Teilnehmer zufällig die gleiche ID gewählt haben, können sie gleichzeitig erfolgreich eingerichtet werden.Da die möglichen IDs im Bereich von 10–100 liegen, ist die Wahrscheinlichkeit einer Kollision jedoch sehr gering.
Programm | Code | Beschreibung |
UID zuweisen |
|
|