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

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • 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.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.