Erste Erfahrungen mit Micro:bit
Dieses kleine Mikrocontroller-System wurde unter der Federführung
der BBC entwickelt, um britischen Schülern das Programmieren näher zu
bringen. Elektor vertreibt die Platine auch in Deutschland (www.elektor.de/bbc-micro-bit). Es hat zwar etwas länger gedauert, aber gestern kam endlich das lang ersehnte Paket. Spannend! Wie geht das wohl?
Also
erst mal ganz mutig über ein Micro-USB-Kabel an den PC angeschlossen.
Eine ganze Latte unterschiedlicher USB-Geräte wird automatisch
installiert. Und auf dem System läuft ein Demoprogramm. Das LED-Feld
zeigt wechselnde Muster und Laufschrift. Man soll auf die Knöpfe
drücken, dann soll man die Platine hin- und her wackeln, um den
Beschleunigungssensor zu testen. Und es gibt ein kleines Spiel bei dem
man einen Punkt fangen muss, indem man die Platine passend neigt.
Das
System bietet tatsächlich unendliche Möglichkeiten. Man hat außer den
LEDs, den beiden Tastern und dem Accellerometer auch noch Bluetooth Low
Energy auf dem Board. Außerdem werden zahlreiche Ports herausgeführt,
darunter auch AD-Kanäle, I2C und SPI. Außerdem ist die Versorgung über
eine 3-V-Batterie möglich. Da könnte einem so manche Anwendung
einfallen. Auf der Microbits-Seite findet man auch unzählige
Beispiele.
Aber erstmal will ich wissen, wie man das
System programmiert und wie man ein Programm hochlädt. Es gibt mehrere
Programmiersprachen, darunter auch Scratch und Python. Mein erstes
kleines Programm soll mit Scratch geschrieben werden, weil ich da am
wenigsten falsch machen kann.
Mit run kann das Ergebnis simuliert werden. Es funktioniert, die Zahlen 1 bis 3 werden im LED-Display gezeigt.
Mit compile
erhält man ein Hexfile. Beim Anschließen an den PC bildet Microbit eine
Art USB-Speicherstick. In diesen lädt man das Hexfile. Fertig, läuft.
Ich bin begeistert. Das System ist tatsächlich so einfach, wie
behauptet wurde.
Sensoren und Variablen
Inzwischen
bin ich einen Schritt weiter. Was ich bisher mit Scratch verglichen habe
ist der Microsoft Block Editor. Im Hintergrund wird ein Script erzeugt,
das man auch mit dem Microsoft Touch Development Editor bearbeiten
kann. Wenn ich das Programm kompiliere, wird zunächst ein C++-File
daraus erzeugt, das dann von MBED übersetzt wird. Das Hexfile kommt
dann zurück.
Eine Variable heißt zunächst "item", kann aber
beliebig umbenannt werden. Dieser Variablen kann ich den Ausgabewert
eines Sensors zuweisen. Das kann der Beschleunigungssensor auf dem
Board sein oder auch der ADC am Port P0. Es kommt übrigens meiner
Vorliebe für Chaos sehr entgegen, dass ich nicht benutzte Elemente
einfach unverbunden liegen lassen darf. So kann ich mal eben statt der
Beschleunigung eine Spannung messen. Beide Werte belegen den Bereich 0
... 1023 (10 Bit).
Mit
analog write erzeuge ich ein PWM-Signal mit einer Auflösung von
ebenfalls 10 Bit, hier am Port P1. Die PWM-Frequenz ist übrigens
voreingestellt nur 50 Hz, was die Glättung etwas erschwert, dafür
aber gut zur Servo-Ansteuerung taugt. Zusätzlich wird der Messwert auch
noch mit plot bar graph angezeigt, wobei die Anzeige nur aus einem
einzelnen breiten LED-Balken mit der Höhe 0...5 besteht.
Das
Programm enthält auch noch zwei Interrupt-Routinen, die auf
Tastendrücke an A und B reagieren. Reste meines ersten Versuchs liegen
auch noch rum und außerdem eine Tonausgabe, die mal ausprobiert wurde.
Der Klingelton kommt übrigens als Rechtecksignal an P0 raus. Wie immer
kann ich alles mit run simulieren oder mit compile für das Zielsystem übersetzen. Wenn ich aber auf convert klicke, erscheint die Script-Form des Programms.
In
der Script-Form werden manche Details klar, die in den Blocks noch
verborgen sind. Zum Beispiel hat "show mumber" für die Ausgabe einer
Ziffer auf dem LED-Feld einen zweiten Parameter, der die Anzeigedauer
in ms enthält und auf 150 ms voreingestellt ist. Vor der Umwandlung
wurden die Blocks übrigens noch etwas aufgeräumt und die Tonausgabe
wieder eingebaut, diesmal mit einer Übergabe der Frequenz in Hz.
In der Form gibt das Programm nun analoge Werte als Tonhöhe aus.
Alle
Sensoren konnten mit kleinen Änderungen des Programms ausprobiert
werden. Nur der Kompass-Sensor hat nicht wie erwartet funktioniert. Die
Temperatur wird im Prozessor selbst gemessen. Der Helligkeitssensor
verwendet offensichtlich die roten LEDs als Lichtsensor. Die Vielzahl
der möglichen Eingaben trägt mit zu dem guten Gesamteindruck bei. Mit
diesem System kann man wirklich eine Menge anfangen.
Siehe auch: Review: Die Programmierung des BBC micro:bit von Clemens Valens, Elektor
Elektronik-Labor Projekte Microbit