Mit dem MicroBit Manager können Programme für den micro:bit mit verschiedenen Programmeditoren bzw. IDEs entwickelt und dann mit einem Klick auf das Targetsystem hinunter geladen und dort ausgeführt werden. Während der Programmausführung ist ein interaktives Terminal-Fenster (Console, REPL) geöffnet, in welchem Fehlermeldungen und print()-Ausgaben erscheinen. Mit Ctrl+C kann das Programm abgebrochen werden und der Python-Interpreter zeigt den Prompt >>>. Hierauf kann der Benutzer Python-Befehle interaktiv ausführen lassen.
Mit dem MBM lässt sich zudem die Firmware des micro:bit flashen, wobei eine leicht modifizierte Version geladen wird, die das langdauernde Ausschreiben von Fehlermeldungen auf dem Dotdisplay unterdrückt und damit den Entwicklungszyklus stark beschleunigt. Nach dem Flashen wird zudem ein Pythonmodul mbutils.py auf den micro:bit kopiert, das einige praktische Hilfsfunktionen, insbesondere zur Ansteuerung des micro:bit Buggy (von Kitronik) enthält.
Für die Programmentwicklung verbindet man das micro:bit Board über die USB-Schnittstelle mit dem Entwicklungssystem. Es erscheint dann auf dem Entwicklungssystem als ein neuer externer USB-Device mit einem Laufwerkbuchstaben (Windows) bzw. einem Laufwerknamen (Mac, Linux). Wenn das Terminal-Fenster offen ist oder beim Dateitransfer (ausser der Firmware), wird der micro:bit als serielles Gerät (über USB) angesprochen (im Gerätemanager als ComPort (Windows) bzw. mit einem seriellen Gerätenamen (Mac, Linux) sichtbar). Unter Windows-Versionen früher als 10 muss dazu ein mbed-Driver installiert werden, der von hier hinuntergeladen werden kann. Ab Windows 10 und unter Mac/Linux ist kein zusätzlicher Treiber nötig.
Der MicroBit Manager ist in TigerJython integriert und benötig keine Zusatzinstallationen. Als Standalone-Programm oder zur Integration in andere IDEs kann er von hier als Java-Applikation hinuntergeladen werden (inklusive Source). Alle Funktionen wählt man über Kommandozeilen-Parameter aus, die beim Aufruf ohne Parameter aufgelistet werden (java -jar MBM.jar).
Um den MBM in TigerJython zu aktivieren, wählt man unter Einstellungen | Bibliotheken | Roboter auswählen die Option micro:bit. Es erscheint dann in der Taskleiste ein zusätzlicher schwarz-umrandeter Button und im Menü Tools werden die Optionen Remote Terminal, Hinunterladen/Ausführen, Modul hinunterladen, Flash micro:bit frei geschaltet.
Die Source wird im Editorfenster von TigerJython geschrieben und gleich wie andere Pythonprogramme auf dem Entwicklungssystem abgespeichert. Da die Programmausführung nicht auf dem Entwicklungssystem, sondern auf dem micro:bit erfolgt, wird zur Ausführung nicht der grüne, sondern der schwarz-umrandete Button geklickt oder die Option Hinunterladen/Ausführen gewählt. Vor dem Hinunterladen überprüft der in TigerJython eigebaute Python-Parser die Syntax und Fehler werden in benutzerfreundlicher Form direkt neben der Fehlerstelle im Editor angezeigt. Findet der Parser keine Fehler, so öffnet sich ein zusätzliches Terminal-Fenster (REPL), in dem die Kommunikation mit dem micro:bit stattfindet. Diese umfasst folgende automatisch ablaufenden Schritte:
Alle print()-Ausgaben und Laufzeit-Fehlermeldungen werden im Terminal-Fenster ausgeschrieben und durch Eintippen von Ctrl+C kann die Programmausführung gestoppt werden. Nachher erscheint wieder der Prompt >>> des Python-Interpreters und Befehlszeilen können eingegeben und unmittelbar ausgeführt werden. Ctrl+D erzwingt einen Soft-Boot, der main.py neu startet.
Da beim Hinunterladen ein bereits laufendes automatisch Programm gestoppt wird, ist es erlaubt, nicht abbrechende Programme bzw. Endlosschleifen zu verwenden, wie dies bei der Microcontroller-Entwicklung in C und Assembler üblich ist. Diese sollten aber den Prozessor nicht zu stark belasten, da sonst das Abbrechen mit Ctrl+C misslingen kann (in engen Schleifen empfiehlt sich der Einbau von sleep(0.001)).
Zur Unterstützung strukturierter Programmierung können mit der Option Modul hinunterladen auch Python-Module ohne Namensänderung auf das Target-System kopiert und mit den üblichen import-Anweisungen eingebunden werden. Unglücklicherweise ist wegen des bescheidenen Speicherplatzes die Grösse der Programme auf einige kBytes beschränkt.
Nachdem ein Programm hinuntergeladen (und automatisch in main.py umbenannt) wurde, kann die USB-Verbindung zum Entwicklungssystem abgehängt werden. Jedesmal beim Anschluss einer 5V-Spannungsquelle (USB-Ladegerät, USB-Powerbank, usw.) wird das Programm main.py sofort wieder ausgeführt.
Hängt sich main.py auf oder lässt sich der micro:bit wegen einer Software-Fehlmanipulation nicht mehr ansprechen, kann durch Flashen ein neues System aufgesetzt werden. Dabei werden auch alle Programmmodule gelöscht, sodass diese vom Entwicklungssystem wiederhergestellt werden müssen.
Der Python-Interpreter MicroPython ist keine vollständige Implementierung von Python 3.x, aber die meisten gewohnten Sprachelemente sind verfügbar. Die spezielle Hardware des micro:bit wird über das Modul microbit unterstützt. Dazu importiert man dieses mit import microbit oder from microbit import * (siehe die englischsprachige Dokumentation hier) .
Als zusätzliches Feature können die Operationen des MBM auch mit einem Pythonprogramm aufgerufen werden, das in TigerJython läuft. Es stehen nach import mbm folgende Funktionen zur Verfügung:
Funktion | Aktion |
showFiles() |
schreibt alle Dateien aus, die sich auf dem micro:bit befinden |
openTerminal() | öffnet ein Terminalfenster (REPL) und stellt die Verbindung mit dem micro:bit her |
extract(filename) | kopiert die Datei filename vom micro:bit unter dem gleichen Namen in das Verzeichnis, in dem sich das TigerJython-Programm befindet |
copy(filename) | kopiert die Datei filename mit gleichbleibendem Namen auf den micro:bit. Ein mitangegebener Pfadbezeichner wird abgeschnitten |
run(filename) | öffnet eine Terminalfenster (REPL) und kopiert die Datei filename auf den micro:bit. Führt dort eine Umbenennung in main.py durch und führt das Programm aus. Ein mitangegebener Pfadbezeichner wird abgeschnitten |
runMain() | öffnet ein Terminalfenster (REPL) und führt s main.py aus (falls vorhanden) |
flash() | kopiert ein Firmwareimage und das Modul mbutils.py aus der Distribution auf den micro:bit. |
flash(filename) | kopiert das angegebene Firmwareimage (Hex-Datei) und das Modul mbutills aus der Distribution auf den micro:bit |
enableDataCapture(enable) | aktiviert/deaktiviert das Auffangen von Textzeilen im Terminalfenster. Die Zeilen werden in einem Textbuffer (Liste mit Strings) angefügt |
getDataLines() | gibt eine Liste aller Zeilen des Textbuffers zurück und löscht den Buffer |
isTerminalDisposed() |
gibt True zurück, falls das Terminalfenster nicht sichtbar ist (noch nicht geöffnet oder wieder geschlossen) |
Typische Beispielanwendung: micro:bit als Datenlogger. Mit extract(filename) die Daten in TigerJython holen und dort weiter verarbeiten.