Skip to main content

Calliope mini - eindeutige IDs für Kommunikation

Verfahren zu Vergabe von eindeutigen IDsEinleitung

UmIn 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 CalliopeGeräte flexibel miteinander interagieren sollen – zum Beispiel in einerwechselnden GruppeGruppen oder wenn Geräte dynamisch hinzukommen.

Das zentrale Problem:
Die Geräte können nicht eindeutig identifiziert oder gezielt ansprechenangesprochen zuwerden, können,da benötigender dieseKommunikationskanal eindeutige IDs. Da die Calliopes diese nicht zur Laufzeit aus einem lokalen Speicher auslesen können, wird ein Verfahren zur Vergabe von eindeutigen IDs benötigt. Dieses ist im folgenden beschrieben. 

Mehrere Calliope mini verbinden sich per Funk. Dabei handelt es sich um ein einfaches Kommunikationsprotokoll, bei dem ein zentraler Sender (Master) und mehrere Empfänger (Slaves) miteinander kommunizieren. Ziel ist es, dass sichfür alle Geräte gegenseitiggleich überund 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 identifizierenzuweisen.
Statt können.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.


PhaseSchritt 1: EmpfängerTeilnehmer aktivieren

  • Die EmpfängerTeilnehmer (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.


PhaseSchritt 2: SenderController aktivieren

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

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

  • Danach wechselt der SenderController in einen Kanal mit der Nummer seiner S-C-ID und wartet dort auf Antworten.


PhaseSchritt 3: Antwort der EmpfängerTeilnehmer

  • Die EmpfängerTeilnehmer empfangen die S-C-ID des SendersControllers im allgemeinen Kanal.

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

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


PhaseSchritt 4: Auswahl eines EmpfängersTeilnehmers

  • Der SenderController empfängt die erste Antwort von einem der Empfänger.Teilnehmer.

  • Er schicktsendet diese empfangene Empfänger-Teilnehmer-ID als Bestätigung zurück in seinen Kanal.

  • Danach sendet der Sender zusätzlich ein Reset-Signal (z. B. "RESET") an alle übrigen Empfänger in diesem Kanal, um ihnen mitzuteilen, dass sie nicht ausgewählt wurden.


PhaseSchritt 5: Reaktion der Empfänger

Die Empfänger, die die Nachricht des Sendersausgewählten erhalten, prüfen den Inhalt:

Teilnehmers
  • Wenn die Nachricht „RESET“ ist:
    Der EmpfängerTeilnehmer, wurdedessen nichtID ausgewählt.bestätigt Daswurde, Programmerkennt wirdseine gezielteigene beendet.ID in der Antwort.

  • Wenn die Nachricht der eigenen ID entspricht:
    → Der Empfänger wurde ausgewählt.
    Er:

    • wechselt in seinen eigenen Kanal (E-T-ID),

    • sendet dort die S-C-ID des Senders,Controllers,

    • und bleibt im Empfangsmodus,Empfangsmodus, um weitere Nachrichten zu erhalten.empfangen.


PhaseSchritt 6: AbschlussBestätigung durch den SenderController und Reset der übrigen Teilnehmer

  • Der SenderController empfängt seine eigene ID (S-C-ID) im Kanal des Empfängers.Teilnehmers.

  • Damit ist der Austausch bestätigt.

  • DerErst Senderjetzt kannsendet nunder direktController mitein demReset-Signal Empfänger(„RESET“) im ursprünglichen Controller-Kanal (C-ID), um alle überbrigen dessenTeilnehmer aufzufordern, ihr Programm zu beenden.


Schritt 7: Reaktion der übrigen Teilnehmer

  • Die Teilnehmer, die nicht ausgewählt wurden, erkennen die "RESET"-Nachricht im Kanal kommunizieren.des Controllers (C-ID).

  • Sie beenden daraufhin kontrolliert ihr Programm.


Ergebnis

  • Der SenderController kennt nun die eindeutige ID eines Empfängers.Teilnehmers.

  • Der ausgewählte EmpfängerTeilnehmer kennt die ID des Senders.Controllers.

  • Alle anderenübrigen EmpfängerTeilnehmer erhalten eindas Reset-Signal und beenden ihr Programm gezielt.


Hinweis zur Eindeutigkeit

Wenn zwei oder mehr EmpfängerTeilnehmer 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

uid_fuer_callibots.xml

uid_fuer_callibots.hex