Erste Erfahrungen mit Micro:bit         

           
Elektronik-Labor   Projekte   AVR 

 

www.microbit.co.uk/

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   AVR