Programmieren mit dem Calliope - mini
- Einführung
- Grundlagen
- Roboter - Calli:Bot
- Roboter für Calliope mini
- Linefollower
- Linefollower - Parcours entwerfen
- Linefollower - Fang den Calli:Bot !
- Fernbedienung
- Calli:Bot Farben
- UUID - so finden sich die CalliBots von ganz allein
- Programme
- Fortgeschritten
Einführung
Erste Schritte
Start
|
1. Programmierumgebung aufrufen |
Um mit dem Calliope-mini programmieren zu können, benötigst Du eine Programmierumgebung, in der Du dem Calliope mit einem Programm versorgen kannst. Diese Umgebung heißt Open Roberta Lab und Du findest Sie hier: |
|
|
|
Grundlagen
Daumenkino
Idee
Vorüberlegungen
| Folien | Lernkarte_Grundlagen_V01.00.pptx |
Umsetzung
| Anleitung | |
| Daumkino Vorlagen |
Programm
| Daumenkino_Smiley.hex | |
Zufallszahlen
Übersicht
Zufall bedeutet, dass etwas passiert, ohne dass man genau weiß, was passieren wird. Zum Beispiel, wenn du einen Würfel wirfst, kannst du nicht sagen, welche Zahl oben liegen wird. Es kann eine 1, 2, 3, 4, 5 oder 6 sein – das ist Zufall. Zufall ist also, wenn etwas ganz überraschend oder ungeplant passiert.
Der Calliope mini kann auch „Zufallszahlen“ erzeugen, so wie beim Würfeln. Aber weil ein Computer nicht wirklich überraschen kann, benutzt er eine besondere Art von Rechen-Trick. Er nimmt zum Beispiel Zahlen von seinem Bewegungssensor oder von der Zeit, um zu entscheiden, welche Zahl er als Nächstes zeigt. Diese Zahlen sehen dann zufällig aus, auch wenn sie eigentlich mit einem Trick berechnet sind.
Mit Open Roberta Lab kannst du mit der Zufallszahlen-Funktion deinen Calliope mini als digitalen Würfel programmieren.
1️⃣ Öffne Open Roberta Lab und wähle dein Gerät: Calliope mini.
2️⃣ Aus dem Menü „Eingabe“ wähle den Block „Wenn Taste A gedrückt“ aus.
3️⃣ Unter „Mathematik“ findest du den Block „Zufallszahl von 1 bis 6“. Dies ist dein Würfelmechanismus.
4️⃣ Aus dem Menü „Aktionen → LED“ nimm den Block „zeige Text“ und füge den Zufallszahl-Block als Parameter ein.
Jetzt zeigt dein Calliope mini jedes Mal, wenn du Taste A drückst, eine zufällige Zahl zwischen 1 und 6 – genau wie bei einem Würfel.
Beispiele
| Name | Programm | Beschreibung |
| Würfel |
Spiele das Programm auf Deinen Calliope. Drücke die Taste A und dir wird einen eine Zahl zwischen 1 und 6 als Ziffer angezeigt . |
|
|
Spiele das Programm auf Deinen Calliope. Drücke die Taste A und dir wird einen Würfelziffer in der typischen Punkt-Optik angezeigt. |
||
| Schere, Stein, Papier |
|
Spiele das Programm auf zwei Calliopes. Schüttet den Calliope und Du bekommst zufällig Schere, Stein oder Papier angezeigt. Spiele gegen einen Freund oder anderen Calliope. Wer gewinnt häufiger? Mensch oder Calliope? |
|
Papier/Stein/Schere mit Schummeln |
Spiele das Programm auf zwei Calliopes. Schüttet den Calliope und Du bekommst zufällig Schere, Stein oder Papier angezeigt. Wenn Du beim Start Deines Calliopes jedoch die B-Taste drückst, dann piept der Calliope kurz und Du bist unbesiegbar. |
Anwendungsfälle im Kurs
| Name | Beschreibung / Link |
| Kommunikation mit anderen Calliopes | Kommunikation, |
Kommunikation
Überblick
Calliopes senden und empfangen Nachrichten über ein einfaches Funkprotokoll (Nordic EnhancedShockBurst/Gazell). Dafür stellt OpenRoberta Kommunikationsblöcke bereit. Die Kommunikationsteilnehmer müssen den selben Kommunikationskanal gewählt haben und können danach auf diesem Kanal Nachrichten austauschen. Der Calliope mini hat einen kleinen Empfangspuffer, in den empfangene Nachrichten automatisch geschrieben werden. Sender und Empfänger sollten im selben Moment aktiv sein, damit die Nachricht sicher übertragen wird. Eine gesendete Nachricht wird an alle Empfänger (des selben Kommunikationskanals) gleichzeitig übertragen (Broadcast-Verfahren).
Quelle: https://calliope.cc/projekte/funk
Besonderheiten: Senden und Empfangen sind für den Programmfluss nicht blockierend. Das bedeutet, dass eine Nachricht von Sender im Fire-and-Forget Prinzip übertragen wird. Dabei erfolgt keine Prüfung ob die Nachricht tatsächlich beim Empfänger angekommen ist. Der Empfang von Nachrichten ist ebenfalls nicht blockierend. Das heißt, dass der Empfänger den Empfangspuffer ausliest. Sind dort Nachricht enthalten, dann wird die älteste ausgegeben und aus dem Puffer gelöscht. Ist der Empfangspuffer leer, dann wird eine leere Nachricht ausgegeben.
Beispiel
| Name | Programm | Beschreibung |
| Zahlen Senden und Empfangen |
Das Programm auf die 2-n Calliopes spielen.
|
|
|
Channel Hopping Ping-Pong |
Das Programm wird auf zwei Calliopes gespielt.
Beide Calliope tausche nun zyklisch die ID des nächsten Kommunikationskanals aus, auf dem Sie die Nachrichten senden und empfangen. Der Kanal wird von beiden Calliope auf dem Display angezeigt. Beide Calliopes sind versetzt zueinander sowohl Sender als auch Empfänger. Das grüne Licht des Senders wechselt zwischen den beiden Calliopes hin und her. (Ping-Pong) |
Inhalte im Kurs
| Name | Beschreibung / Link |
| Fernbedienung |
Steuerung eines Calli:Bot durch eine Calliope Funk Fernbedinung |
| Fake - Papier/Stein/Scheere |
Steuerung eines Calliope Papier/Stein/Scheere Spiels bei dem immer gewonnen oder verloren wird |
Roboter - Calli:Bot
Roboter für Calliope mini
Hardware
| Beschreibung | |
Besonderheiten
| Beschreibung | |
Linefollower
Übersicht
Beschreibung
Beispiel
| Name | Programm | Beschreibung |
Parcours
| Name | Beschreibung | |
Anwendungsfälle im Kurs
| Name | Beschreibung / Link |
Linefollower - Parcours entwerfen
Einleitung
Ein Linefollower-Parcours ist eine spannende Möglichkeit, den CalliBot gezielt auf das Folgen einer Linie zu programmieren und sein Verhalten im realen Umfeld zu testen. Mit Hilfe seiner Liniensensoren erkennt der CalliBot schwarze Linien auf hellem Untergrund und folgt ihnen automatisch. Dabei reagiert er auf Kurven, Abzweigungen oder Kreuzungen – je nachdem, wie der Parcours gestaltet ist. Das macht ihn ideal, um spielerisch Sensorik, Programmierlogik und technische Abläufe zu erlernen.
Der Linienparcours kann einfach digital in PowerPoint gestaltet werden. Dabei wird mit Formen oder Linienwerkzeugen ein schwarzer Linienverlauf auf einem weißen Hintergrund gezeichnet – zum Beispiel als Kurve, Schleife oder Verzweigung. Anschließend kann der Parcours auf mehreren DIN-A4-Seiten ausgedruckt und zusammengesetzt werden. Achte darauf, dass die Linien mindestens 1,5 cm breit sind, damit die Sensoren des CalliBot sie zuverlässig erkennen. So entsteht ein individuell anpassbarer Parcours, der sich leicht verändern, erweitern und mehrfach verwenden lässt.
Vorlagen
| Name | Powerpoint | Druckdatei |
| A0 - Powerpoint Beispiele | Linefollower-Parcours_A0.pptx | Linefollower-Parcours_A0.pdf |
| Spinnennetz Parcoure |
siehe Bespiele
|
Spinnennetz - Parcours erstellen
| Schritt | Beschreibung | Details |
| Vorbereitung |
|
A0 ist automatisch eingestellt: Siehe Seite einrichten |
| Parcours erstellen
|
Unter Menüpunkt FORMEN:
|
|
|
Formatierungen:
|
|
|
| Parcoure komplettieren |
Weitere Formen
auswählen, platzieren und formatieren. |
|
| Datei speichern und für den Druck vorbereiten. |
Powerpoint Datei speichern und als PDF exportieren |
|
| Datei Parcoure ausdrucken |
Die PDF Datei kann nun mit einem A0-Drucker ausgedruckt werden. |
Druck-Dienst aus dem Internet
|
| Da die wenigsten einen A0-Drucker zu Hause haben, kann man die A0 Datei auch in mehreren A4-Seiten drucken und dann zusammensetzen. |
Dies gelingt mit dem Acrobat Reader unter Windows im Poster-Druck sehr leicht.
Im Menu Drucken auswählen
Es werden 25 A4 Seiten ausgedruckt, diese enthalten Markierungen an denen die Seiten gekürzt und zusammengeklebt werden müssen.
Viel Spass beim Basteln. |
Anwendungsfälle im Kurs
| Name | Beschreibung / Link |
| Linie folgen | Calli:Bot - 4: Linie folgen - Einzelfahrt |
| Calli:Bot - 5: Linie folgen - Gruppenfahrt |
Linefollower - Fang den Calli:Bot !
Einleitung
Auf dem Spiel-Parcours fahren zwei Calli:Bots . Einer ist der Jäger, der andere ein Flitzer! Du steuerst den Jäger, indem Du Ihn auf dem Parcoure nach links und rechts lenkst, um den Flitzer zu fangen.
So geht’s:
-
Der Jäger muss die anderen Bots fangen.
-
Fangen heißt: Er muss ganz nah (1 cm) hinter den Flitzer Bot kommen.
Aber Vorsicht!
-
Wenn sich Bots berühren, hat der Jäger verloren.
Ziel des Spiels:
-
Der Jäger gewinnt, wenn er den Flitzer-Bots fängt.
-
Die anderen gewinnen, wenn sie es schaffen, dem Jäger nicht ins Netz zu gehen.
Materialien
| Name | Programm | Beschreibung |
|
Parcours
|
|
Linefollower - Parcours entwerfen |
| Abstandssensor hinten anbringen |
Abstandssensor mit extra Kabel uns Montageset
|
|
| Callibot - Flitzer (mit Abstandssensor hinten verbaut) |
Nach dem Starten 5s Sekunden warten, dann wird das Programm im Flitzer-Modus gestartet.
Der Flitzer folgt der Linie des Parcours mittig so schnell er kann. |
|
| Callibot - Jäger |
Innerhalb ersten 5s Sekunden nach dem Start die Taste A (links) drücken, dann wird das Programm im Jäger-Modus gestartet.
Der Flitzer folgt der Linie des Parcours mittig so schnell er kann. Empfängt von der Fernbedienung jedoch Steuerungssignale (vor, links, rechts, stop), die er befolgt. |
|
| Calliope - Fernbedinung |
Innerhalb ersten 5s Sekunden nach dem Start die Taste B (rechts) drücken, dann wird das Programm im Jäger-Modus gestartet.
Steuerung des Jägers:
|
Programm
| Name | Programm | Beschreibung |
| Callibot Fange auf einem Linienparcours |
Callibot_Linefollower_Fange.xml Callibot_Linefollower_Fange.hex
|
Modus auswählen
Start
Neustart:
|
|
|
|
Anwendungsfälle im Kurs
| Name | Beschreibung / Link |
| Linefollower | |
| Fernbedienung | Calli:Bot - 6: Fernbedienung |
| Tanzen | Calli:Bot - 3: Tanzen |
Fernbedienung
Übersicht
Beschreibung
Beispiel
| Name | Programm | Beschreibung |
Anwendungsfälle im Kurs
| Name | Beschreibung / Link |
Calli:Bot Farben
Die RGB Lampen des Calli:bot unterstützen nicht das Farbschema von OpenRoberta. Daher müssen die Farben mit den folgenden RGB-Codes gemischt werden.
| Nr | Farbe | R | G | B | W |
| 1 | weiss | 255 | 255 | 255 | 255 |
| 2 | rot | 255 | 0 | 0 | 255 |
| 3 | gelb | 0 | 0 | 176 | 255 |
| 4 | grün | 0 | 176 | 0 | 255 |
| 5 | blau | 176 | 176 | 0 | 255 |
| 6 | lila | 176 | 0 | 0 | 255 |
| 7 | türkis | 0 | 0 | 224 | 255 |
Beispielprogramm für Farben
| xml | hex | |
| Farben in Liste iterieren | Farben_in_Liste_iterieren.xml | Farben_in_Liste_iterieren.hex |
| Manuell über Farben iterieren | Callibot_FarbIterator.xml | Callibot_FarbIterator.hex |
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 |
|
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. |
Programme
| Code | Hex | Beschreibung | |
| Calli:bot Farben | |||
| 7 Grundfarben | Callibot_10Farben.xml | Callibot_10Farben.hex |
Callibot mit 7 Grundfarben |
| Zufallsfarben | Callibot_Zufallsfarben.xml | Callibot_Zufallsfarben.hex |
Callibot zeigt 7 Grundfarben in einer zufälligen Reihenfolge an |
| alle Farben | Callibot_alleFarben.xml | Callibot_alleFarben.hex |
Callibot mit allen Farben der Farbpalette Hinweis: die meisten Farbpattenfarben können die RGB LEDs nicht anzeigen |
| Calli:bot Tanzen | tanzen.xml | tanzen.hex | Zufallsbeleuchtung und -bewegung bei Lautstärke |
| Linefollower | |||
| einfach | Linefollower_einfach.xml | Linefollower_einfach.hex |
Calli:Bot folgt der schwarzen Linie des Parcours |
| einfach mit 3 Modi | Linefollower_einfach_3Modi.xml | Linefollower_einfach_3Modi.hex |
Calli:Bot folgt der schwarzen Linie des Parcours
|
| Abstand | Linefollower_mit_Abstand.xml |
Linefollower_mit_Abstand_langsam.hex
|
Beide Calli:Bots folgten der schwarzen Linie des Parcours
|
| Überholen | Linefollower_mit_Überholen.xml | Linefollower_mit_Überholen.hex |
Callibot mit 50% Geschwindigkeit, wenn in den ersten 5s nach dem Start die Taste A (links) gedrückt wird.
Beide Calli:Bots folgten der schwarzen Linie des Parcours (mit Überholspur)
|
| Fahren mit Fernbedienung | Callibot_Fernbedienung_Fussball_Kanal5.xml |
Kanal anpassen
|
|
| Sender: Fernbedingung | Callibot_Fernbedienung_Fussball_Kanal5.hex |
Modus Fernbedientung - Taste A (links) in den ersten 5s nach Start drücken.
Kanal 5 Nachrichten:
|
|
| Empfänger: Calli:bot | Callibot_Fernbedienung_Fussball_Kanal5.hex |
Modus Callibot - wird automatisch gewählt
Kanal 5 Nachrichten:
|
Fortgeschritten
Fang den Maulwurf
Idee
Vorüberlegungen
Umsetzung / Herausforderungen
Programm
| Fange_Maulwurf.hex | |