Der BBC Micro:bit für Schüler und Elektronik-Einsteiger

© Iulia Cozlenco, 123RF

Macro-Mini-Micro-Bit

Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

Die Idee, einen Mikrocontroller für die Schule zu entwickeln, geht auf das Jahr 2012 zurück. Vier Jahre später erschien dann der BBC Micro:bit [1] auf dem Markt. Die britische Rundfunkanstalt entwickelte ihn in Zusammenarbeit mit der Universität Lancaster und mehreren Dutzend Industriepartnern für Schüler der siebten Klasse. In Deutschland erhalten Sie den Micro:bit für rund 22 Euro im einschlägigen Versandhandel.

Der Mikrocontroller findet mit seinen Komponenten Platz auf einer Platine der Größe 4 x 5 cm2 (Abbildung 1). Der 32-Bit-Prozessor, ein ARM Cortex-M0, läuft mit einer Taktfrequenz von 16 MHz. Er arbeitet mit 16 KByte RAM und adressiert einen 256 KByte großen Flash-Speicher. Im Prinzip steht auch eine Bluetooth-LE-Schnittstelle (BLE) zur Verfügung.

Abbildung 1: Das Micro:bit-Set samt Verbindungskabeln, Breadboard und Komponenten.

Verbinden Sie einen Micro:bit über ein Micro-USB-Kabel mit dem Raspberry Pi, erkennt der Rechner einen USB-Stick von 64 MByte Größe. Dabei gibt sich der USB-Interface-Baustein des Micro:bit über den Befehl lsusb als LPC1768-Chip von NXP zu erkennen. Im Beispiel aus Listing 1 meldet er sich mit dem Gerätenamen ttyACM3.

Listing 1

 

$ lsusb
[...]
Bus 002 Device 019: ID 0d28:0204 NXP LPC1768
[...]
$ dmesg | grep tty
[...]
[17860.723466] cdc_acm 2-1.2.1:1.1: ttyACM3: USB ACM device

Über einen Pfostenstecker lässt sich das Modul auch autark mit Strom versorgen. Der Spannungsbereich liegt zwischen 1,8 und 3,6 Volt. Abbildung 1 zeigt links im Bild eine Box für zwei Batterien oder Akkus der Baugröße Micro. Das sehr speicherhungrige Bluetooth-Modul lässt sich zwar unter MicroPython nicht als Standard-BLE ansprechen, aber eine Funkverbindung zwischen Modulen sollte zumindest klappen.

Micro:bit: Sensoren, Ein- und Ausgänge

25 frei programmierbare LEDs (5x5-Matrix)

3-Achsen-Beschleunigungssensor

3-Achsen-Magnetometer

Lichtsensor, Temperatursensor

2 Drucktaster, Reset-Taster

Micro-USB-Buchse für Stromversorgung und Datenübertragung

Steckkontakt für externe 3V-Stromversorgung

5 Kontakte für Krokodilklemmen (Ground, 3V, 3 I/O)

Weitere Ein- und Ausgänge über Spezialstecker

Software

Das Micro:bit-Modul lässt sich über verschiedene Programmiersprachen ansprechen. Dieser Artikel beschränkt sich auf Python, genauer gesagt auf MicroPython. Der Ansatz deckt sich mit dem Anspruch, schnell in die Welt der Mikroprozessorprogrammierung einzusteigen.

Wer Mikrocontroller auf Registerebene programmieren möchte, kommt mit MicroPython nicht weit, wird aber auch am Konzept des Micro:bit nicht allzu große Freude haben. In diesem Fall wäre ein Arduino [2] die bessere Wahl. Anders als beim Micro:bit stehen hier auch Schaltpläne und Platinenlayouts zur Verfügung.

Das Betriebssystem des Mikrocontrollers überwacht ständig den USB-Speicher. Entdeckt es dort eine Hex-Datei, übernimmt das System sie als Byte-Sequenz in den internen Speicher und führt sie aus.

MicroPython bringt ein sehr einfaches Dateisystem mit, über das Programme Dateien auf den Mikrocontroller schreiben und von dort auslesen können. Bereits das Anhängen von Daten an bestehende Dateien überfordert das System jedoch. Das Größenlimit beträgt 30 KByte. Da die Dateien innerhalb des internen Speichers liegen, lassen sie sich nur vom laufenden Programm aus adressieren, nicht aber über die USB-Schnittstelle.

Mu-Editor

Im Folgenden sollen zwei Beispiele die Programmierung und den Einsatz von MicroPython unter der IDE Mu-Editor [3] erläutern. Der Mu-Editor erkennt den Micro:bit beim Start, sofern der Mikrocontroller über ein USB-Kabel am Rechner hängt. Der Editor fragt daraufhin nach, ob er in den MicroPython-Editiermodus wechseln soll.

Aufgrund der eingebundenen Bibliotheken sind die resultierenden Programme nur auf dem Micro:bit lauffähig. Deshalb lassen sich auch nur dort Laufzeitfehler analysieren und ausgeben. Sobald Sie den Button Code Check aktivieren, fahndet der Editor nach Syntaxfehlern. Im Beispiel aus Listing 2 kann er mit dem Wort hallo in der zweiten Zeile nichts anfangen. Als Lösung kommentieren Sie die Zeile aus oder setzen die Zeichenkette in Anführungszeichen (Abbildung 2).

Listing 2

 

import microbit
print(hallo)
print(1/0)
Abbildung 2: Ein MicroPython-Programm mit Laufzeitfehlermeldung im Mu-Editor.

Ein Druck auf den Button Flash übersetzt das Programm in einen Hex-Code und überträgt diesen auf den Mikrocontroller, wo er sofort ausgeführt wird. Der Reset-Knopf startet das Programm neu, genauso wie ein erneutes Einschalten des Micro:bit durch Anlegen der Versorgungsspannung.

Das Beispielprogramm aus Listing 2 bricht mit einer Laufzeitfehlermeldung ab: Division durch null. Der Micro:bit gibt den Fehlercode als Laufschrift über seine 5x5-LED-Matrix aus. Einfacher ist es, im Mu-Editor über den Button REPL (Abkürzung für Read-Evaluate-Print-Loop) nachzusehen (Abbildung 2).

Das Programmbeispiel aus Listing 3 könnte einen Teil Ihrer Installation für Halloween stellen: Die Anlage fiepst unvermittelt, allerdings nur bei Dunkelheit. Die hohen Töne lassen sich nur schwer lokalisieren; schaltet man das Licht wieder ein, um die Schallquelle zu finden, bleibt das System stumm.

Listing 3

 

import microbit
import music
import random
BrightTrig = 50
while True:
  br = microbit.display.read_light_level()
  if br < BrightTrig:
    microbit.sleep(800 * (1+random.randrange(10)))
    music.pitch(900, 80 * (1+random.randrange(5)))

Die ersten drei Zeilen des Listings importieren die erforderlichen Python-Bibliotheken. Der Micro:bit bringt seine LEDs nicht nur zum Leuchten, er kann sie auch als Photodioden ansprechen. Je nach Helligkeit gibt der Befehl microbit.display.read_light_level() einen Wert zwischen 0 und 255 zurück. Bei einem Wert von 50 ist es schon recht dunkel (Zeile 5).

Die mit while True eingeleitete Dauerschleife legt die gemessene Helligkeit in der Variablen br ab. Ist sie größer als der Schwellwert BrightTrig, passiert nichts. Andernfalls ruft das Programm einen Wartebefehl auf, der mindestens 800 Millisekunden dauert, abhängig von der Zufallszahl random.randrange(10).

Der Befehl music.pitch erzeugt ein Rechtecksignal von 900 Hz auf Ausgang 0. Auch hier steuert ein Zufallsgenerator die Dauer. Schließen Sie einen kleinen Lautsprecher an die Kontakte 0 und GND an, beginnt der Streich – und die hoffentlich erfolglose Suche nach dem Störenfried.

In Abbildung 3 verbinden Krokodilklemmen einen Klinkenstecker mit dem Line-In-Eingang eines Verstärkers. Die Leistung des Moduls reicht gerade aus, um auch einen keramischen Lautsprecher anzuschließen – in Abbildung 1 sehen Sie ein Exemplar als kleinen schwarzen Zylinder. Ein Summer, also ein keramischer Lautsprecher mit eingebautem Tongenerator, funktioniert auch. Dann genügt es, den Ausgang ein- und anschließend wieder auszuschalten, statt ihn mit 900 Hz zu modulieren.

Abbildung 3: Über Krokodilklemmen lässt sich auch ein Klinkenstecker an den BBC Micro:bit anschließen.

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.