Expander pour Calliope

FunduinoDernière mise à jour le

Module, MakeCode und elf Praxisaufgaben für den MINT-Unterricht

Der Expander für den Calliope mini V3 ist ein vielseitiges Zubehör, das speziell für den Einsatz im MINT-Unterricht entwickelt wurde. Besonders im Informatik- und Technikunterricht eröffnet er zahlreiche neue Möglichkeiten, um den Calliope mini V3 sinnvoll und kreativ einzusetzen.

Die vorkonfektionierten Stecker und die beschrifteten Kontakte machen es einfach, Module sicher und schnell zu verbinden – ohne komplizierte Vorbereitung. Gleichzeitig ist das System offen: Über die universellen Anschlussmöglichkeiten lässt sich der Expander mit einer Vielzahl von Mikroelektronikkomponenten kombinieren.

Diese Anleitung erklärt zuerst die Module, dann die Programmieroberfläche MakeCode und die serielle Kommunikation. Danach folgen elf Praxisaufgaben, die aufeinander aufbauen – von der blinkenden Leuchtdiode bis zur selbst gebauten Toniebox.

Expander für den Calliope mini V3 mit allen Modulen im Überblick

Der Calliope mini V3 und der Expander

Der Calliope mini V3 ist ein kleiner Computer, den du programmieren kannst. Er hat bunte Lichter, Knöpfe und sogar Sensoren, die Dinge wie Bewegung oder Temperatur messen können. Du kannst ihn so programmieren, dass er Musik spielt, Lichter leuchten lässt oder auf Bewegungen reagiert.

Der Calliope verfügt zwar über eine Schnittstelle, an der alle Pins des Mikrocontrollers herausgeführt sind – die Verkabelung nur mit Breadboardkabeln ist aber häufig eine Hürde. Genau hier setzt der Expander an: Er bildet den Übergang zwischen dem „All-in-One“-Board Calliope und der weiterführenden Nutzung externer Module.

Es gibt auch interessantes Zubehör wie den „Calle“ – ein Roboterfahrgestell, auf das du den Calliope mini V3 aufstecken kannst. Zusammen lässt sich Calle so programmieren, dass er einer Linie folgt oder Objekten ausweicht.

Expander für den Calliope mini V3 mit allen Modulen im Überblick
Calliope mini V3 mit dem Roboterfahrgestell Calle
1 / 2

Was der Expander zugänglich macht

Die Expander-Grundplatine ist in farbige Sektionen unterteilt. Im linken schwarzen Feld wird der Calliope mini V3 aufgesteckt, die farbigen Bereiche auf der rechten Seite führen die Kontakte heraus.

Erst durch den Expander werden viele schwer zugängliche Kontakte des Calliope nutzbar: P0, P1, P2, P3, C8, C9, C12, C13, C14, C15, C19, C20 sowie die Motorausgänge. Dabei werden C12 und C13 vom abnehmbaren MP3-Modul verwendet, und mit C19 und C20 sind alle Möglichkeiten der I2C-Konnektivität nutzbar.

Alle Kontakte sind auf dem Expander beschriftet. Verbinden kannst du sie per JST-Stecker, Grove-Stecker oder mit herkömmlichen Breadboardkabeln. Eine zusätzliche Stromquelle brauchst du nicht – das Batteriefach des Calliope reicht für die meisten Anwendungen aus.

Farbige Sektionen der Expander-Grundplatine
Zeichnung des Expanders mit allen Anschlussbereichen
1 / 2

Die Module im Überblick

Der Expander für den Calliope mini V3 wird als Set mit den folgenden Bauteilen geliefert, die in den Praxisaufgaben aufeinander aufbauend programmiert werden.

  • LED-Modul – eine Leuchtdiode auf einer kleinen Platine mit JST-Buchse
  • Taster – ein Druckknopf auf einer Platine mit JST-Buchse
  • Drehregler – ein Potenziometer mit Drehreglerkappe
  • Feuchtigkeitssensor – misst die Feuchtigkeit direkt am Sensor, nicht die Luftfeuchtigkeit
  • Motor – ein Lüfter mit integriertem Elektromotor und JST-XH-Stecker
  • Servomotor SG90 – ein typisches Bauteil aus dem Modellbau mit JR-Stecker
  • MP3-Modul und Lautsprecher – mit Steckplatz für eine Micro-SD-Karte
  • RFID-Empfänger mit Chipkarte und Schlüsselanhänger
  • Display – je nach Verfügbarkeit ein OLED-Display oder ein LCD 1602

Beim RFID-Modul ist wichtig, dass es über die Schiebeschalter in den I2C-Modus gebracht wird. Entferne dazu die Schutzfolie über den Schaltern und stelle den Schalter auf „ON“.

LED-Modul mit JST-Buchse
LED-Modul
Taster-Modul mit JST-Buchse
Taster
Drehregler-Modul (Potenziometer) mit Drehreglerkappe
Drehregler
Feuchtigkeitssensor mit zwei Kontaktstiften
Feuchtigkeitssensor
Lüfter mit integriertem Elektromotor und JST-XH-Stecker
Motor
Servomotor SG90 mit JR-Stecker
Servomotor
MP3-Modul mit Steckplatz für die Micro-SD-Karte
MP3-Modul
RFID-Empfänger mit Chipkarte und Schlüsselanhänger
RFID-Empfänger und die beiden Tags
Schiebeschalter des RFID-Moduls in Stellung ON für den I2C-Modus
Schalter auf ON: der I2C-Modus
OLED-Display SSD1306 mit den Kontakten GND, VCC, SCL und SDA
OLED-Display
LCD-Display 1602 mit I2C-Rückseite
LCD-Display
1 / 11

Die Programmieroberfläche MakeCode

Um den Calliope zu programmieren, brauchst du einen Computer und eine Software. Diese Software heißt MakeCode und muss nicht installiert werden – du rufst sie einfach wie eine Internetseite auf: makecode.calliope.cc

Auf der Startseite klickst du auf „Neues Projekt“, gibst deinem Projekt einen Namen und klickst auf „Erstellen“. Fertig – du hast ein leeres Projekt.

In der Mitte liegt der Programmierbereich, in den du die Programmblöcke ziehst. Wir starten mit den Blöcken „beim Start“ und „dauerhaft“. Wenn du mit der Arduino IDE gearbeitet hast: Das entspricht „setup“ und „loop“.

Links siehst du einen kleinen Calliope – die Simulation, in der du direkt siehst, was dein Programm macht.

Daneben liegen die Programmbausteine mit den Bereichen „Grundlagen“ und „Fortgeschritten“. Um in die Kategorie „Pins“ zu gelangen, musst du „Fortgeschritten“ aufklappen. Wichtig sind dort „Pins“ (mit Blöcken wie „Digital Lesen“ und „Analog Lesen“) und „Seriell“, über den du Daten an den Computer senden kannst.

Oben kannst du zwischen „Blöcke“, „JavaScript“ und – über den kleinen Pfeil – „Python“ wechseln. Dort siehst du, wie dein Blockprogramm als Code aussieht.

Oben rechts liegt hinter dem Zahnrad das Menü Einstellungen mit den Projekteinstellungen.

Die Bereiche der MakeCode-Programmieroberfläche farbig markiert
Die Programmieroberfläche von MakeCode

Serielle Kommunikation verstehen

Sensoren geben dir die Möglichkeit, Eigenschaften deiner Umwelt digital zu erfassen. Ein einfaches Beispiel ist ein Temperatursensor.

Genau wie deine Haut kann ein Temperatursensor Temperaturunterschiede feststellen. Deine Haut trifft aber keine Entscheidung darüber, ob etwas zu heiß ist – das macht dein Gehirn. Es verarbeitet die Daten von der Haut und meldet an die Muskeln: „Nimm schnell die Finger von der heißen Herdplatte.“

Der Calliope und ein angeschlossener Sensor funktionieren ähnlich. Der Sensor sendet die Messwerte in elektrischer Form an den Calliope, und dort wird entschieden, was passieren soll. Wenn du eine Temperaturwarnanlage bauen willst, die bei 30 °C Lärm macht, musst du genau das im Programm festlegen.

Aber welche Werte kommen am Calliope an, und wie kannst du sie sehen? Dafür brauchst du die serielle Kommunikation.

Wenn du noch nie mit einem Calliope gearbeitet hast, ist dieser Abschnitt schwer zu verstehen. Du kannst ihn zunächst überspringen. Sobald du aber Messwerte von Sensoren verwenden willst, musst du ihn gelesen und verstanden haben.

Dein erstes Programm

Aufgabe: Das Programm soll ein Linienmuster auf der LED-Matrix des Calliope anzeigen, wenn der Knopf A gedrückt wird.

Zieh den Block „wenn wahr dann“ aus der linken Leiste in den Programmierbereich und hefte ihn an den Block „dauerhaft“. Dann ziehst du dir aus dem Bereich „Eingabe“ den Block „Knopf A ist geklickt“ in den dunkelgrünen Block „wenn wahr dann“. Das ist nun deine Bedingung.

Aus dem Bereich „Grundlagen“ holst du den Block „zeige LEDs“ und setzt ihn in den dunkelgrünen Block. Darin markierst du mit dem Mauszeiger ein Muster. Danach klickst du auf „Herunterladen“, um das Programm auf dem Calliope zu speichern.

Oh, aber was ist das? Wenn du den Knopf einmal gedrückt hast, geht das Muster nicht wieder weg. Du musst das Programm also erweitern. Klick dazu unten links am dunkelgrünen Block auf das kleine Plus-Zeichen. Der Block wird um einen Bereich erweitert, der ausgeführt wird, wenn der Knopf A nicht gedrückt ist. Dort fügst du erneut einen Block „zeige LEDs“ ein – diesmal lässt du die Matrix leer.

Funktioniert dein Programm jetzt so, wie es soll? Und kannst du es so verändern, dass andere Muster angezeigt werden?

Fertiges Programm: Muster auf der LED-Matrix bei Knopf A
Das fertige erste Programm

Serielle Kommunikation ausprobieren

Um mit der seriellen Kommunikation zu arbeiten, klickst du in den Programmblöcken erst auf „Fortgeschritten“ und dann auf die Kategorie „Seriell“. Dort findest du die Blöcke „seriell umleiten auf USB“ und „seriell Zeile ausgeben“.

Den Block „seriell umleiten auf USB“ dockst du an „beim Start“ an, den Block „seriell Zeile ausgeben“ an „dauerhaft“. In den zweiten Block schreibst du zwischen die Anführungszeichen das Wort „Hallo“.

Nach dem Klick auf „Herunterladen“ kann es sein, dass der PC den Calliope nicht automatisch erkennt. Dann fragt der Computer, ob der Calliope verbunden werden soll: Du klickst auf „Weiter“, dann auf „Koppeln“, wählst den Calliope im Browser-Popup aus und drückst auf „Verbinden“.

Das Programm sendet nun ununterbrochen das Wort „Hallo“. Über die Schaltfläche „Daten anzeigen Calliope mini“ unter dem dargestellten Calliope siehst du die Daten.

Der Calliope ist allerdings schnell und würde enorm viele Daten pro Sekunde senden. Darum bremsen wir ihn: Aus der Kategorie „Grundlagen“ setzt du den Block „pausiere (ms) 100“ hinter „seriell Zeile ausgeben“ und trägst 2000 ein – das sind zwei Sekunden. Nach dem erneuten Herunterladen erscheint „Hallo“ in viel größeren Abständen.

Block „pausiere (ms)“ mit dem Wert 2000
Pause von 2000 Millisekunden
Fenster „Daten anzeigen“ mit den empfangenen Werten
Daten anzeigen Calliope mini
1 / 2

Praxisaufgabe 1: Eine Leuchtdiode blinken lassen

Aufgabe: Eine LED soll im Abstand von zwei Sekunden blinken, also an und aus gehen.

Verkabelung: Die LED ist zusammen mit einer JST-Buchse auf einer kleinen Platine festgelötet. In diese Buchse steckst du ein Expanderkabel und verbindest die andere Seite mit dem hellblauen Port 3 am Expanderboard.

Programm: In MakeCode suchst du unter Fortgeschritten → Pins den Block „schreibe digitalen Wert von Pin auf 1“ und heftest ihn an „dauerhaft“. Als Pin wählst du P2 – denn P2 ist der Kontakt des Calliope, der mit Port 3 verbunden ist. Schau dir den Steckplatz genau an: Dort ist „P2“ aufgedruckt.

Damit würde die LED dauerhaft leuchten. Sie soll aber blinken. Also arbeitest du zusätzlich mit dem Block „pausiere“ aus dem Bereich „Grundlagen“ und programmierst den Ablauf: LED an – 2000 Millisekunden warten – LED aus – 2000 Millisekunden warten.

LED-Modul über ein Expanderkabel am Expanderboard angeschlossen
Verkabelung des LED-Moduls
Fertiges Blinkprogramm mit zwei Pausen von 2000 Millisekunden
Das fertige Blinkprogramm
1 / 2

Praxisaufgabe 2: Taster verwenden

Aufgabe: Wenn ein Taster gedrückt wird, soll auf der Matrix am Calliope ein X erscheinen.

Verkabelung: Mit einem Expanderkabel verbindest du die Taster-Platine mit dem grünen Port 2 am Expanderboard. Schau dir Port 2 genau an – erkennst du, welcher Kontakt des Calliope dort verfügbar ist? Richtig, es ist P1.

Der Taster auf der Platine leitet dauerhaft eine Spannung an den Calliope. Wird er gedrückt, wird dieser Strom unterbrochen.

Programm: An „dauerhaft“ klemmst du den Block „wenn wahr dann“. Der Taster am Calliope ist als fester Programmblock hinterlegt, der externe Taster dagegen ist dem Calliope unbekannt. Deshalb nimmst du aus dem Bereich „Logik“ einen Vergleichsblock und setzt ihn in „wenn wahr dann“ ein.

Eine Spannung – ja oder nein? Das ist beim Programmieren ein Boolescher Wert, der auch als wahr (true) oder unwahr (false) bezeichnet wird. Der Calliope gibt diese Werte als 1 und 0 an. Du prüfst also, ob der digitale Wert an Pin P1 gleich 0 ist.

Wenn das zutrifft, soll ein X erscheinen: Aus „Grundlagen“ nimmst du „zeige LEDs“ und markierst ein X. Und weil die Matrix sonst nie ausgeschaltet wird, erweiterst du den Block wieder über das Plus-Zeichen und füllst den zweiten Bereich mit einer leeren Matrix.

Fertiges Taster-Programm mit wenn-dann-ansonsten und leerer Matrix
Das fertige Taster-Programm

Praxisaufgabe 3: Drehregler und serielle Kommunikation

Das richtige Wort für einen elektrischen Drehregler ist Potentiometer. Es verändert den Widerstand im Stromkreis, je nachdem, wie weit du es drehst. Ein Potentiometer funktioniert ähnlich wie ein Wasserhahn: Ist er nur ein bisschen offen, fließt wenig Wasser; ist er weit geöffnet, fließt viel.

Der Calliope misst die Stellung mit einem Analog-Digital-Wandler (ADC). Er liest die Spannung und wandelt sie in eine Zahl um: 0 für 0 Volt bis 1023 für die volle Spannung.

Aufgabe: Wenn der Drehregler gedreht wird, sollen die Messwerte am seriellen Monitor erscheinen.

Verkabelung: Mit einem Expanderkabel verbindest du die Drehregler-Platine mit dem grünen Port 2 am Expanderboard.

Programm: Du klemmst „seriell umleiten auf USB“ an „beim Start“ und „seriell Zeile ausgeben“ an „dauerhaft“. In den zweiten Block setzt du den Baustein „analoge Werte von Pin P1“. Das war es schon.

Nach dem Herunterladen klickst du auf „Daten anzeigen Calliope mini“. Dort siehst du den aktuellen Messwert in Orange, darüber ein Diagramm, rechts den höchsten und niedrigsten Wert der Messperiode und unten eine Tabelle mit allen Werten, die du als CSV-Datei speichern kannst.

Dreh den Regler hin und her: Der kleinste Messwert liegt bei etwa 50, der größte bei etwa 990. Bei einer Vierteldrehung nach rechts werden rund 260 angezeigt.

Drehregler-Modul am grünen Port 2 des Expanderboards
Verkabelung des Drehreglers
Programm: analoge Werte von Pin P1 an die serielle Kommunikation ausgeben
Messwerte an den Computer senden
Fenster „Daten anzeigen“ mit Messwert, Diagramm und Wertetabelle
Messwerte, Diagramm und Tabelle im Datenfenster
1 / 3

Praxisaufgabe 4: Drehregler verwenden

Aufgabe: Wenn der Drehregler links steht, soll ein Pfeil nach links auf der LED-Matrix erscheinen. Steht er rechts, soll ein Pfeil nach rechts erscheinen.

Verkabelung: Wie in der vorherigen Aufgabe – Drehregler-Platine am grünen Port 2.

Programm: Du beginnst mit dem fertigen Programm der vorherigen Aufgabe und ergänzt den dunkelgrünen Baustein „wenn wahr dann“. Aus „Grundlagen“ nimmst du „zeige Symbol“ und wählst den Pfeil nach links; über das Plus-Zeichen ergänzt du den „ansonsten“-Bereich mit dem Pfeil nach rechts.

Und die Bedingung? Die Messwerte liegen zwischen etwa 50 und 990. Gerundet ist das ungefähr der Bereich von 0 bis 1000 – in der Mitte liegt also 500. Aus dem Bereich „Logik“ ziehst du den Vergleich „0 < 0“ in den dunkelgrünen Block, trägst rechts 500 ein und setzt links den Block „analoge Werte von Pin P1“ ein.

Herunterladen – und es funktioniert. Schaffst du es, beim Drehen viele verschiedene Symbole erscheinen zu lassen? Dafür kann der „und“-Block aus dem Bereich „Logik“ hilfreich sein.

Fertiges Programm: Pfeil links unter 500, sonst Pfeil rechts
Das fertige Drehregler-Programm
Der „und“-Block aus dem Bereich Logik
Tipp für mehrere Symbole: der „und“-Block
1 / 2

Praxisaufgabe 5: Feuchtigkeitssensor

Der Feuchtigkeitssensor gehört wie der Drehregler zu den analogen Sensoren. Er misst nicht die Luftfeuchtigkeit, sondern die Feuchtigkeit direkt am Sensor – zum Beispiel die der Erde in einem Blumentopf.

Der Sensor hat zwei kleine Metallstifte, die messen, wie gut Strom durch die Erde fließen kann. Wasser leitet Strom: Je mehr Wasser in der Erde ist, desto besser fließt er. Der Sensor gibt diesen Wert als Zahl an den Calliope weiter – genau wie der Drehregler.

Aufgabe, Teil 1: Sieh dir die Messwerte bei Trockenheit und bei Feuchtigkeit an. Um feuchten Boden zu simulieren, kannst du den Sensor mit den Kontaktstiften auf ein feuchtes Taschentuch drücken.

Aufgabe, Teil 2: Alarm! Wenn die Feuchtigkeit zu gering ist, soll ein Alarmton erklingen und auf der LED-Matrix ein X erscheinen.

Verkabelung: Mit einem Expanderkabel verbindest du die Sensorplatine mit dem hellgrünen Port 1. Achtung: Das ist ein anderer Steckplatz als beim Drehregler. Der dazugehörige Kontakt des Calliope heißt P0.

Ergebnis Teil 1: In unseren Versuchen liegen die Messwerte zwischen 0 und 374. Ist der Sensor in der Luft, wird keine Feuchtigkeit erkannt und der Messwert liegt bei 0. Auf einem feuchten Taschentuch liegt er bei etwa 120.

Programm Teil 2: Du erweiterst den Code um „wenn wahr dann ansonsten“ und setzt den Vergleich „0 < 0“ ein: Messwert kleiner als 50. Ist das der Fall, nimmst du aus „Grundlagen“ den Block „zeige Symbol“ mit dem X. Zusätzlich klickst du auf die Rubrik „Musik“, dann auf „mehr“, wählst „spiele … bis zum Fertigstellen“ und stellst eine traurige Melodie ein.

Alles funktioniert – aber Moment, das X geht nicht wieder weg. Weißt du, was noch fehlt? Tipp: Die Lösung steht in der Aufgabe zum Taster.

Feuchtigkeitssensor am hellgrünen Port 1 des Expanderboards
Verkabelung des Feuchtigkeitssensors
Fertiges Programm: X und Alarmton, wenn der Messwert unter 50 liegt
Das fertige Alarmprogramm
1 / 2

Praxisaufgabe 6: Elektromotor ansteuern

Ein Motor bringt Dinge in Bewegung – dafür benutzt er die Kraft von Magneten. Im Motor sitzt ein Elektromagnet, der nur dann magnetisch wird, wenn Strom durch ihn fließt, und der seine Nord- und Südseite wechseln kann, wenn der Strom die Richtung ändert. Dadurch wird er im richtigen Takt von festen Magneten angezogen und abgestoßen – und dreht sich.

Aufgabe, Teil 1: Ein kleiner Ventilator soll Wind erzeugen.

Aufgabe, Teil 2: Der Ventilator soll nur dann Wind erzeugen, wenn der Temperatursensor am Calliope mit dem Daumen erwärmt wurde.

Verkabelung: Der Lüfter hat bereits einen JST-XH-Stecker. Auf dem Expanderboard findest du einen rot markierten Motorbereich mit zwei Steckplätzen. Du verbindest den Motor mit dem Steckplatz M0.

Programm Teil 1: Aus der Rubrik „Motoren“ holst du den Block „Motor M0 an mit 100 %“. Im Block kannst du über den Schieberegler auch -100 % wählen. Einige Motoren – so wie unser Lüfter – drehen sich nur in eine Richtung. Finde heraus, ob deiner mit +100 % oder mit -100 % läuft.

Programm Teil 2: Du startest wieder mit der Ausgabe der Sensorwerte in der seriellen Kommunikation, setzt aber aus dem Bereich „Eingabe“ den Temperaturwert des Calliope ein. Der Temperatursensor sitzt in dem schwarzen quadratischen Bauteil neben der Taste A.

In unserem Beispiel zeigt der Calliope bei 22 °C Raumtemperatur eine Gerätetemperatur von 27 °C. Mit dem Daumen auf dem Sensor steigt sie auf 31 °C. Also lautet die Bedingung: Wenn die Temperatur größer oder gleich 28 °C ist, soll der Lüfter laufen. Achte auf das Vergleichszeichen – ein Pfeil mit einem Strich darunter bedeutet „größer gleich“. Im „ansonsten“-Bereich setzt du die Leistung auf 0 %.

Stell den Ventilator neben den Temperatursensor des Calliope. So wird der Calliope automatisch gekühlt, wenn er zu warm wird.

Lüfter am Motoranschluss M0 im roten Bereich des Expanderboards
Verkabelung des Motors
Fertiges Programm: Lüfter an ab 28 Grad, sonst 0 Prozent
Die automatische Kühlung
1 / 2

Praxisaufgabe 7: Servomotor

Ein Servo ist ein Motor, der sich nur in einem bestimmten Bereich drehen kann – in unserem Fall um maximal 180 Grad. Er besteht aus Motor, Getriebe und Steuerungselektronik und wird über Pulsweitenmodulation (PWM) angesteuert: Ein kurzer Impuls bringt ihn in die linke Endposition (0°), ein längerer in die rechte (180°), ein mittlerer in die Mitte (90°).

Aufgabe: Ein Servo soll vom Calliope angesteuert werden. Ein am Servo befestigter Gegenstand soll sich hin und her bewegen.

Verkabelung: Du steckst den Stecker des Servos auf die drei herausragenden Kontaktstifte am hellgrünen Port 1 – die braune Leitung links, die gelbe rechts. Braun ist GND, Rot ist die Versorgungsspannung, Gelb ist das Signal. Keine Angst: Selbst wenn du es beim ersten Mal falsch machst, gehen weder Calliope noch Servo kaputt.

Programm: Den Block für die Servosteuerung findest du unter Fortgeschritten → Pins. Er heißt „setze Winkel von Servo an P0 auf 180°“. Du setzt ihn in „dauerhaft“ und änderst den Winkel auf 90° – das ist die mittlere Drehposition.

Den Servo-Block kopierst du per Rechtsklick und „Duplizieren“ dreimal. So entsteht der Bewegungsablauf Mitte – Links – Mitte – Rechts mit den Winkeln 90°, 0°, 90° und 180°.

Lade das Programm auf den Calliope. Du merkst sicher, dass etwas faul ist: Die Kommandos kommen für den Servo zu schnell nacheinander – er braucht Zeit, um die Positionen zu erreichen. Wie löst du das Problem? Tipp: Versuch es mit kurzen Pausen zwischen den Positionen.

Die drei Leitungen des Servosteckers: braun GND, rot VCC, gelb Signal
Der JR-Stecker des Servos
Vier Servo-Blöcke mit den Winkeln 90, 0, 90 und 180 Grad
Der Bewegungsablauf Mitte-Links-Mitte-Rechts
Servo-Programm mit Pausen zwischen den Positionen
Die Lösung: Pausen zwischen den Positionen
1 / 3

Praxisaufgabe 8: MP3 – lass den Calliope sprechen

Auf dem Expanderboard sitzt ein MP3-Modul. Es kann MP3-Dateien von einer Speicherkarte lesen und über einen Lautsprecher abspielen. Damit kann der Calliope Musik abspielen, eine Sprachnachricht vorlesen – oder eine Pflanze kann nach Wasser rufen, wenn die Blumenerde zu trocken ist.

Verkabelung: Prüfe, ob das MP3-Modul mit der Micro-SD-Karte auf dem Expander aufgesteckt ist. Rechts daneben liegt der Anschluss für den Lautsprecher – auch dieser muss eingesteckt werden.

SD-Karte vorbereiten: Die Karte muss im Format FAT32 formatiert sein. Klick mit der rechten Maustaste auf das Symbol der Speicherkarte, wähle „Formatieren…“ und dort unter „Dateisystem“ den Eintrag „FAT32“. Vorsicht: Alle Daten auf der Karte werden dabei gelöscht.

Danach speicherst du deine Sounddateien auf der Karte. Du kannst am Computer eigene Sprachdateien aufnehmen oder im Internet nach „Text zu MP3“ suchen. Für diese Anleitung speichern wir drei Dateien: 0001.MP3, 0002.MP3 und 0003.MP3. Die Benennung ist wichtig – immer vier Stellen mit vorangestellten Nullen.

Programmbibliothek: Das MP3-Modul ist vergleichsweise komplex. Damit du trotzdem einfach damit arbeiten kannst, hinterlegst du eine Programmbibliothek. Dazu öffnest du ein neues Projekt in MakeCode und klickst bei den Programmblöcken auf „Erweiterungen“.

An dieser Stelle bricht der Artikeltext ab: Die angekündigten Aufgabenteile „Eine MP3-Datei abspielen“ und „Eine MP3-Datei abspielen, wenn es zu warm wird“ fehlen im Original. Einen Hinweis, der für das MP3-Modul wichtig ist, liefert erst das Toniebox-Kapitel: Die Blöcke für die serielle Kommunikation müssen entfernt werden, sonst funktioniert das MP3-Modul nicht.

MP3-Modul und Lautsprecher am Expanderboard
Verkabelung von MP3-Modul und Lautsprecher

Praxisaufgabe 9: RFID-Karten lesen

RFID (Radio Frequency Identification) überträgt Daten per Funk. Es gibt zwei Teile: den Sender, auch Tag genannt, und den Empfänger, auch Reader genannt. Kommt ein Tag in die Nähe des Empfängers, sendet dieser ein Energiefeld aus, das den Tag aufweckt und ihm genug Energie gibt, um seine Daten zurückzufunken.

Aufgabe, Teil 1: Lies die UID (Unique Identifier) der RFID-Tags aus und lass sie in der seriellen Kommunikation anzeigen.

Aufgabe, Teil 2: Wenn der richtige RFID-Tag an den Empfänger gehalten wird, soll eine Melodie ertönen.

Verkabelung: Für den RFID-Empfänger gibt es kein konfektioniertes Kabel. Die eine Seite steckst du in eine I2C-Buchse des Expanders, die andere Seite steckst du am Empfänger Kabel für Kabel an: GND an GND, 3.3V an VCC, SDA an SDA, SCL an SCL.

Programmbibliothek: Diese Bibliothek findest du nicht über die Suche – du musst den Link selbst in die Suchleiste im Bereich „Erweiterungen“ eintippen: github.com/1010Technologies/pxt-makerbit-rfid

Danach erscheint in den Programmblöcken eine neue Rubrik „MakerBit“. Den Block „on RFID presented“ legst du neben die anderen Blöcke – er arbeitet parallel zum Hauptprogramm und wartet im Hintergrund auf einen Tag.

Teil 1: Über „Variablen“ → „Erstelle eine Variable“ legst du eine Variable „x“ an. Den Block „setze x auf 0“ schiebst du in „on RFID presented“ und tauschst die 0 gegen den Block „RFID UID“ aus der Rubrik „MakerBit“. Mit „seriell Zeile ausgeben“ und der Variablen x siehst du die UID im Fenster „Daten anzeigen“. Bei dir steht mit Sicherheit eine andere UID, da du nicht den gleichen Tag benutzt.

Teil 2: Du erweiterst das Programm um „wenn wahr dann“ mit einem Vergleich: Variable x gleich der ausgelesenen UID. Als Aktion nimmst du aus „Musik“ → „mehr“ den Block „spiele … bis zum Fertigstellen“.

Das funktioniert – aber die Melodie hört nicht wieder auf. Der Grund: Die Variable x bleibt unverändert, bis ein anderer Tag erkannt wird. Der klügere Weg ist, den Wert nach dem Abspielen zurückzusetzen. Dafür nimmst du erneut „setze x auf 0“. Achtung: x wurde als Text gespeichert, der Standardblock endet aber auf die Zahl Null. Du musst daher aus Fortgeschritten → Text einen Textblock einsetzen und dort einen beliebigen Wert eintragen – wir haben „Leer“ gewählt.

RFID-Empfänger über vier Einzelkabel am I2C-Bereich des Expanders
Verkabelung des RFID-Empfängers
Ausgelesene UID eines RFID-Tags im Fenster „Daten anzeigen“
Die UID des RFID-Tags
Fertiges RFID-Programm mit Textblock zum Zurücksetzen der Variablen
Das fertige RFID-Programm
1 / 3

Praxisaufgabe 10: Toniebox nachbauen

Eine Toniebox ist ein Audiosystem für Kinder. Sie funktioniert ohne klassische Tasten: Stellt ein Kind eine Tonie-Figur auf die Box, wird die passende Audiodatei abgespielt.

Aufgabe: Eine MP3-Datei soll abgespielt werden, wenn der dazu passende RFID-Tag an den Empfänger gehalten wird. Wir verwenden den Schlüsselanhänger für die erste und die Chipkarte für die zweite Datei.

Verkabelung: Für diese Aufgabe müssen der RFID-Empfänger, das MP3-Modul und der Lautsprecher angeschlossen sein.

Programm: Die Module kennst du schon – jetzt sollst du möglichst selbstständig arbeiten. Orientiere dich an diesem Ablauf:

  • RFID-Empfänger, MP3-Modul und Lautsprecher anschließen
  • Auf der SD-Karte zwei Dateien mit den Bezeichnungen 0001.mp3 und 0002.mp3 abspeichern
  • Die beiden UIDs der RFID-Tags herausfinden und notieren
  • Die Blöcke für die serielle Kommunikation entfernen, da das MP3-Modul sonst nicht funktionieren kann
  • Die passenden Bedingungen überlegen: Wird die eine UID erkannt, spiele die erste Datei ab – wird die andere erkannt, die zweite
  • Pausen einbauen, damit die Dateien vollständig abgespielt werden können

Mehr wird nicht verraten. Verwende das Beispielprogramm nur dann, wenn du sonst wirklich nicht weiterkommst – und denk daran, dass darin unsere UIDs eingetragen sind. Deine sind andere.

RFID-Empfänger, MP3-Modul und Lautsprecher gemeinsam angeschlossen
Verkabelung für die Toniebox
Beispielprogramm der Toniebox mit zwei UIDs und zwei MP3-Dateien
Das Beispielprogramm
1 / 2

Praxisaufgabe 11a: Ein OLED-Display verwenden

Aufgabe, Teil 1: Ein OLED soll deinen Namen anzeigen.

Aufgabe, Teil 2: Ein OLED soll die Temperatur anzeigen.

Verkabelung: Die Verkabelung ist etwas schwieriger als sonst, da es kein vorkonfektioniertes Kabel gibt. Das Display erhält seine Daten über die I2C-Schnittstelle, du verbindest es also mit dem orangefarbenen I2C-Bereich des Expanders. Welchen Steckplatz du verwendest, ist egal – viele I2C-Module können parallel angeschlossen werden. Kabel für Kabel: GND an GND, VCC an 3.3V, SDA an SDA, SCL an SCL.

Programmbibliothek: Im Bereich „Erweiterungen“ gibst du „OLED“ in das Suchfeld ein. Danach erscheint in den Programmblöcken die neue Rubrik „OLED12864_I2C“.

Die I2C-Adresse: Jedes I2C-Modul hat eine eigene Adresse – so wie die Adresse des Hauses, in dem du wohnst. Der Postbote weiß genau, wo er hin muss. Die Adresse ist eine Zahl, die entweder als HEX-Zahl oder als Dezimalzahl angegeben wird. Bei OLED-Displays ist sie üblicherweise 0x3C, in Dezimalschreibweise 60.

Teil 1: In den Block „beim Start“ setzt du aus der Rubrik „OLED12864_I2C“ den Initialisierungsblock ein und trägst dort die 60 ein. Dann nimmst du den Block „show string“. Im ersten und zweiten Feld gibst du die Position auf dem Display an – die X-Koordinate verschiebt nach links und rechts, die Y-Koordinate nach oben und unten. In beiden Feldern lässt du die 0 stehen. Im dritten Feld trägst du statt „Hello“ deinen Namen ein.

Teil 2: Es gibt in der Rubrik auch den Block „show a number“. Den setzt du ein und tauschst die Zahl gegen den Block „Temperatur (°C)“ aus dem Bereich „Eingabe“. Damit erkennbar ist, worum es geht, setzt du zusätzlich einen Textblock mit „Temperatur:“ davor und verschiebst Text und Zahl mit den Koordinaten so, dass sie hintereinander stehen.

Da beide Blöcke im „dauerhaft“-Block liegen, wird die Temperatur laufend neu abgefragt. Halt deinen Daumen auf den Temperatursensor – siehst du die Veränderung am Display?

Der Calliope-Expander wird je nach Verfügbarkeit entweder mit einem OLED-Display oder mit einem LCD-Display ausgeliefert. Prüfe zuerst, welches du hast: Für das LCD ist der nächste Schritt zuständig.

OLED-Display über vier Einzelkabel am I2C-Bereich des Expanders
Verkabelung des OLED-Displays
Fertiges Programm: Text und Temperaturwert nebeneinander auf dem OLED
Text und Messwert auf dem OLED
1 / 2

Praxisaufgabe 11b: Ein LCD-Display verwenden

Aufgabe, Teil 1: Ein LCD soll deinen Namen anzeigen.

Aufgabe, Teil 2: Ein LCD soll die Temperatur anzeigen.

Verkabelung: Wie beim OLED gibt es kein vorkonfektioniertes Kabel. Du verbindest das Display mit dem orangefarbenen I2C-Bereich des Expanders: GND an GND, VCC an 3.3V, SDA an SDA, SCL an SCL.

Programmbibliothek: Im Bereich „Erweiterungen“ gibst du „LCD1602“ in das Suchfeld ein. Die Bezeichnung 1602 steht übrigens für die Anzahl der Zeichen pro Reihe und die Anzahl der Reihen – dein Display hat also zwei Reihen mit je 16 Zeichen. Danach erscheint die neue Rubrik „I2C_LCD1602“.

Die I2C-Adresse: Bei diesen Displays ist sie üblicherweise 0x27 oder 0x3F, in Dezimalschreibweise 39 oder 63. Du trägst im Initialisierungsblock die 39 ein – das ist der übliche Fall. Nur wenn es später nicht funktioniert, probierst du es mit 63.

Teil 1: Du nimmst den Block „show string“. Im ersten Feld steht der Text, im zweiten und dritten die Position: Die X-Koordinate verschiebt nach links und rechts, die Y-Koordinate entscheidet über die Zeile – 0 ist die obere, 1 die untere. X:0 Y:0 beginnt also oben an Position 1, X:7 Y:1 unten an Position 8.

Teil 2: Mit dem Block „show number“ zeigst du eine Zahl an. Die tauschst du gegen den Block „Temperatur (°C)“ aus dem Bereich „Eingabe“. Damit erkennbar ist, worum es geht, setzt du wieder einen Textblock mit „Temperatur:“ davor und verschiebst beides über die Koordinaten.

LCD-Display über vier Einzelkabel am I2C-Bereich des Expanders
Verkabelung des LCD-Displays
Rückseite des LCD-Displays mit angeschlossenen Kabeln
So sieht es von der Rückseite aus
Fertiges Programm: Textblock und Zahlenblock mit versetzten Koordinaten
Text und Messwert auf dem LCD
LCD-Display zeigt „Temperatur:“ und den gemessenen Wert
Das Ergebnis auf dem Display
1 / 4
Évaluer le guide

Commentaires

Poser une question ou partager une expérience

Écris-nous si quelque chose ne fonctionne pas. Indique-nous ton modèle de carte et le message d’erreur.

Nous vérifions chaque commentaire avant sa publication. Ton adresse e-mail reste chez nous.