Werbung

Vorstellung #1 2019: BBC micro:bit

In diesem Tutorial möchte ich den Microcontroller micro:bit vorstellen.

Microcontroller micro:bit
Microcontroller micro:bit

Der Microcontroller micro:bit wird von der Britischen Firma British Broadcasting Corporation (kurz „BBC“) vertrieben. Auf dem kleinen Einplatinencomputer ist ein ARM CPU verbaut welcher sich mit der Programmiersprache Python („MicroPython“) programmiert werden.

Geschichte

Der Einplatinencomputer micro:bit wurde ab dem Jahr 2012 von der Firma BBC entwickelt. Neben der genannten Firma waren noch viele weitere Firmen, Institute an der Entwicklung beteiligt. In erster Linie sollte der micro:bit für die Schulen in Großbritannien dienen und Schüler im Alter von 11 bis 12 Jahre in die Welt der Informatik einführen. (Ähnliche Projekte gibt bzw. gab es bereits schon den Niederlanden sowie in Island.)

Ab Oktober 2016 wurde die Weiterentwicklung und der Vertrieb an die gemeinnützige Stiftung Micro:bit Educatinoal Foundation übertragen. Seit dem ist der Microcontroller auch für Privatpersonen erhältlich.

Werbung

Bezug

Den Microcontroller micro:bit kann man zbsp. auf eBay.de für ca. 21€ inkl. Versandkosten erwerben. Den besten Preis inkl. Versandkosten erhält dieses mal jedoch bei amazon.de, dort zahlt man z.Zt. (21.02.2019) nur 18,99€.

Es gibt für den BBC micro:bit einige Sets welche durchaus einen kauf Wert sind, hier wird für wenig Geld eine Grundausstattung aus Sensoren & Aktoren geboten und man hat alles auf einmal um sofort loszulegen.

Da ich bereits einiges an Sensoren & Aktoren habe benötige ich dieses Set nicht, jedoch werde ich mir ein BreakoutBoard zulegen denn dieses macht das Abgreifen von Pins deutlich einfacher bzw. ermöglicht dieses erst.

Lieferumfang

Zum Lieferumfang meines micro:bit gehört, neben dem Microcontroller eine kleine Anleitung wie der Controller eingerichtet und betrieben werden kann und ein Blatt über generelle Informationen zu dem Controller in diversen Sprachen.

Technische Daten des micro:bit

  • CPU
    • ARM Cortex-M0
    • 32Bit
    • 16 MHz Taktfrequenz
  • Speicher
    • 256 KB Flash Speicher
    • 16 KB SRAM

Der micro:bit verfügt über folgende zusätzliche Features:

Aufbau

Der micro:bit ist beidseitig bestückt, auf der Vorderseite sind eine 5×5 LED Matrix und 2 Taster zu finden, auf der Rückseite sind die Anschlüsse für USB und Batterie zu finden. Des Weiteren sind die Chips der Sensoren und der Prozessor dort zu finden.

Alles ist jeweils mit einem Text markiert.

Microcontroller micro:bit von der Firma BBC
Microcontroller micro:bit von der Firma BBC

Dokumentation

Eine ausführliche Dokumentation zum micro:bit mit vielen Beispielen findest du auf der Herstellerseite https://microbit.org/de/.
Auf dieser Seite findest du zusätzliche Informationen wie du die verschiedenen Sensoren & Aktoren steuern kannst und einen Online Python Editor in welchem du ohne ein zusätzliches Plugin auf deinem Rechner installieren zu müssen sofort mit der Entwicklung loslegen kannst.

Installation

Damit der Controller mit dem Computer (Mac oder PC) verbunden werden kann benötigt man ein USB Kabel (Micro USB Stecker auf USB Typ A Stecker). Dieses Kabel lag meinem Controller nicht dabei.

Wenn nun also den Controller mit dem Computer verbunden hat, so wird der Controller als zusätzliches Laufwerk eingebunden.

Laufwerk "microbit" im Explorer
Laufwerk „microbit“ im Explorer

Auf dieses Laufwerk können wir dann den Code ablegen und nach einem Neustart des Controllers wird der Code ausgeführt.

Erster Start

Wenn man den Controller zum ersten mal startet so wird ein Beispielcode ausgeführt. Zuerst werden die Button „A“ & „B“ abgefragt und danach die Sensoren. Die entsprechenden Texte werden über die 5×5 LED Matrix angezeigt.

micro:bit erster Code auf dem Microcontroller

Programmieren

Der Microcontroller kann über verschiedene Entwicklungsumgebungen (kurz „IDE“) programmiert werden. Die meisten dieser IDE’s sind Webanwendungen welche in einem Browser betrieben werden.

Open Roberta

Das Frauenhofer-Institut für Intelligente Analyse- und Informationssysteme hat mit der Software Open Roberta eine Entwicklungsumgebung ähnlich wie ArduBlock geschaffen. Um das „Lab“ nutzen zu können muss man sich nicht anmelden, somit kann man die Adresse https://lab.open-roberta.org/ direkt öffnen und einen Microcontroller wählen.

Auswahl des Microcontrollers im Lab der Webanwendung "Open Roberta"
Auswahl des Microcontrollers im Lab der Webanwendung „Open Roberta“

Mit der Software „Open Roberta“ lässt sich einfach per Drag’n Drop die Befehle in form von Bausteinen zusammensetzen und daraus entsteht dann der Quellcode für den Microcontroller micro:bit.

einfaches Beispiel mit Open Roberta
einfaches Beispiel mit Open Roberta

Zusätzlich gibt es eine gute Liste mit Beispielen für den micro:bit.
Es ist somit für den Einsteiger und Programmieranfänger sehr schnell möglich die ersten kleinen Projekte mit dem micro:bit zu erstellen. (Für größere Projekte werden zusätzliche Erweiterungskarten benötigt.)

micro:bit Editor

Auf der Herstellerseite des micro:bit findet man 2 Editoren einmal den MakeCode für den Anfänger und einmal für den erfahrenen Programmierer einen Editor in der Programmiersprache MicroPython.

MakeCode

Der Editor MakeCode ist ähnlich wie der Open Roberta & ArduBlock ein visueller Editor. Der Vorteil ist jedoch, das der Editor einem im Browser gleich das Ergebnis anzeigt. Somit kann man auch ohne den Code auf den Microcontroller zu laden sich „on the fly“ sein Output anschauen.

MakeCode Editor für den micro:bit
MakeCode Editor für den micro:bit

Auf der Oberfläche befindet sich mittig ein Schalter „Block / Javascript“ wenn man diesen klickt wechselt die Ansicht auf JavaScript und man kann mit der Scriptsprache JavaScript programmieren.

Den Code kann man über die Tastatur eintippen oder aber auch Codeschnipsel per Drag’n Drop einfügen.

MakeCode Editor für den Microcontroller microbit

Micropython Editor

In dem recht spartanisch aufgebauten Editor programmiert man mit der Programmiersprache MicroPython.

micro:bit Python Editor
micro:bit Python Editor

Wenn man diesen Editor öffnet wird bereits ein kleines Beispiel angezeigt. Wie bei fast jeder Programmiersprache üblich ist es „Hello World!“.

Es gibt hier keine Vorschau, jedoch eine kleine Unterstützung, wenn man auf die Schaltfläche „Snippets“ klickt, erhält man eine kleine Liste an Befehlen und man wird nach einer Auswahl von einem Befehl, durch das Tool angeleitet diesen korrekt zu befüllen.

Fehlerbehandlung

Was jedoch fehlt ist eine Funktion um den Code auf Fehler zu prüfen. Fehler werden auf dem micro:bit in Laufschrift angezeigt.

Wenn wir also folgenden kleinen Code auf den micro:bit spielen.

Dann erhalten wir eine Fehlermeldung das der Bezeichner „a“ nicht bekannt ist.

Fehlermeldung auf der LED Matrix des micro:bit

Bei kleinen Projekten ist das noch relativ überschaubar, jedoch bei größeren kann dieses in ein „Try and Error“ ausarten was doch sehr frustrierend sein kann.

Aufspielen des eigenes Quellcodes

Wenn man in dem Editor die Schaltfläche „Download“ betätigt so wird einem die Datei „microbit.hex“ zum Download angeboten. Diese Datei wird auf den micro:bit über den Explorer des Betriebssystems auf das Laufwerk „microbit“ kopiert.

Nachdem dieses erledigt ist, muss unter umständen der Microcontroller neugestartet werden. Dieser neustart wird durchgeführt wenn wir das USB Kabel einmal entfernen und wieder hineinstecken.

Beispiele

Die nachfolgenden Beispiele programmiere ich in dem Online Tool „Python editor von micro:bit“ von dem Hersteller micro:bit. Eine ausführliche Anleitung zu den Funktionen des micro:bit findet sich unter https://microbit-micropython.readthedocs.io/en.

Unterschiede von MicroPython & Python3

MicroPython enthält nicht alle Funktionen der Programmiersprache Python.

Bibliotheken

Gegenüber von Python3 enthält MicroPython nicht alle bzw. nur wenige Standard Bibliotheken. Dieses ist für Microcontroller besonders wichtig denn hier kommt es auf den Speicherverbrauch an. Wenn man also eine bestimmte Bibliothek in seinem Code verwenden möchte oder muss, so muss man sich diese über ein import Befehl hinzufügen.

GarbageCollection

 Jede höherwertige Programmiersprache hat einen GarbageCollector. Diese Funktion dient dazu alte, nicht mehr Benötigte (also Referenzierte) Objekte aus dem Speicher zu entfernen. Dieses kann MicroPython nicht und der Entwickler muss sich darum selber kümmern.

Eine ausführliche Liste der unterschiede findet sich auf dem GitHub Repository von MicroPython.

Aufbau des Quellcodes

Zunächst möchte ich den Aufbau des Quellcodes erläutern. Da Python eine Scriptsprache ist wird der Code von „oben“ nach unten ausgeführt.

Zunächst müssen wir unsere Bibliothek in das Projekt importieren.

Damit holen wir uns die Funktionen und Objekte damit wir den microbit programmieren können.

Danach wird die Logik implementiert, wir nutzen hier eine While Schleife welche als Parameter den Wert TRUE erhält.

Somit haben wir uns eine Endlosschleife erzeugt. Es ist auf die korrekte Einrücktiefe zu achten damit der Code auch in der Schleife ausgeführt wird. Sollten wir den Code nicht in einer Endlosschleife ausführen so wird dieser nur einmal ausgeführt, diesen umstand kann man nutzen wenn man zbsp. eine Grafik auf der LED Matrix anzeigen möchte. Wenn man jedoch eine Benutzerinteraktion abfragen möchte so benötigt man die Endlosschleife.

Tasten

In diesem Beispiel, möchte ich nun zeigen wie man das drücken einer Taste auswerten und daraus eine Aktion generieren kann.

Wenn der Benutzer auf die Taste „A“ klickt, so wird auf der LED Matrix der Buchstabe „A“ ausgegeben, wenn dieser jedoch die Taste „B“ drückt dann der Buchstabe „B“. Drückt der Benutzer keiner der beiden Tasten so passiert nichts.

Video

Beispiel "Taste A & B" am micro:bit

5 x 5 LED Matrix

Die 5×5 LED Matrix des micro:bit kann man mit nur einer Zeile Code bedienen.

Ein großer Vorteil beim verwenden des Online Editors und der damit verbundenen Bibliothek „microbit“ ist das für jeden Sensor & Aktor bereits ein Objekt existiert. In diesem Fall nutzen wir das Objekt „display„.

Das „display“ Objekt hat einige Funktionen damit man auf der LED Matrix Texte & einfache Grafiken anzeigen kann.

Texte anzeigen

Möchte man Texte auf der LED Matrix anzeigen, so verwendet man die Funktion ’scroll(„<TEXT>“)‘. Der Text wird dabei von rechts nach links als Lauftext angezeigt.

Bilder anzeigen

Der Bibliothek „microbit“ liegen einige Bilder bei.

Eine komplette Liste aller Bilder findest du unter https://microbit-micropython.readthedocs.io/en/latest/tutorials/images.html.

einzelne Pixel steuern

Möchte man nur einen einzelnen Pixel (quasi eine LED) aufleuchten lassen so nutzt man die Funktion ’set_pixel(x_pos, y_pos, brightness)‘. Dieser Funktion wird die X & Y Koordinate und die Helligkeit (min. 0 und max. 9) übergeben.

X & Y Koordinaten der LED Matrix

Das Koordinatensystem der LED Matrix beginnt mit dem Index „0“ und endet somit mit „4“. Die Koordinate X=0 und Y=0 ist dabei oben links.

X & Y Koordinaten der LED Matrix
X & Y Koordinaten der LED Matrix

Geesten Sensor

Mit dem Geesten Sensor kann man die Lage des Microcontrollers erkennen und welche G-Kräfte auf diesen wirken. Die Lage des Microcontrollers kann man als X & Y Koordinate auslesen oder aber auch als Text.

Wenn man den Text verarbeiten möchte gibt es folgende mögliche Werte

  • up,
  • down,
  • left,
  • right,
  • face_up,
  • face_down,
  • freefall,
  • 3,
  • 6g,
  • 8g und
  • shake

Wobei die Werte „freefall“, „3g“, „6g“ und „8g“ schwierig zu erreichen sind.

steuern eines Pixels auf der LED Matrix

An einem kleinen Beispiel möchte ich zeigen wie man die Werte des Geesten Sensors ausliest und damit eine LED auf der LED Matrix steuert.

Es wird geprüft ob die letzte ausgeführte Geeste eine Richtung zu einer bestimmten Seite war (oben, unten, rechts, links) wenn dieses so ist dann soll der Wert für die Koordinate manipuliert werden.

Zum Schluss wird an der Koordinate auf der LED Matrix das Pixel aktiviert und eine kleine Pause von 35ms. durchgeführt. Danach beginnt die Schleife von vorne und alle Pixel werden deaktiviert und die Daten werden wieder ausgelesen.

Video
Geesten Sensor am Microcontroller micro:bit

Bluetooth

Leider gibt es bisher keine implementation von Bluetooth in MicroPython. Daher werde ich in dem folgenden Beispiel auf die visuelle Darstellung von Code mit „MakeCode“ zurückgreifen (müssen).

Um die Bluetooth Funktionen anzuzeigen, müssen wir zunächst das Paket in die „IDE“ einbinden. Dieses machen wir indem wir über das Menü „Fortgeschritten“ > „Erweiterungen“ navigieren. Auf der neuen Seite wählen wir dann die Kachel „Bluetooth“ aus. Es wird eine Meldung angezeigt welche aufzeigt dass, das bereits existierende Paket „radio“ nicht kompatibel mit dem neuen Bluetooth ist somit müssen wir bestätigen das dieses zunächst entfernt wird. Danach haben wir die Bluetooth Funktion zur Verfügung.

micro:bit Editor "MakeCode" implementieren von Bluetooth

Pairing von Geräten

Damit die Bluetoothgeräte untereinander Kommunizieren können müssen diese gekoppelt werden. Diesen Vorgang nennt man „Pairing“. Für das Pairing muss man die Tasten A & B gedrückt halten, zusätzlich muss man danach den Reset Taster kurz betätigen. (Die Tasten A & B weiter gedrückt halten.) Als Bestätigung wird dann die LED Matrix aufgefüllt, nun muss gewartet werden bis alle LED aktiviert sind dann müssen die Tasten A & B wieder losgelassen werden.

Mit einem Handy oder Tablet (diese müssen BLE unterstützen) kann nun nach einem Bluetoothgerät gesucht werden. In meinem Fall wurde der micro:bit unter der Bezeichnung „BBC micro:bit [popeg]“ gefunden.

micro:bit als Bluetoothgerät verbunden
micro:bit als Bluetoothgerät verbunden

AndroidApp zum aufbauen der Verbindung

Nachdem wir die Geräte gekoppelt haben, können wir nun eine Verbindung aufbauen dazu nutze ich die App „micro:bit Blue„.

Wenn die App gestartet wird muss zunächst mit der Schaltfläche „FIND PAIRED BBC MICRO:BITS“  nach Geräten gesucht werden. In meinem Fall wird der „BBC micro:bit (BONDED)“ gefunden.

Mit einen „klick“ auf den Eintrag wird dann die Verbindung aufgebaut.

einfaches Beispiel mit Bluetooth

Als erstes möchte ich ein ganz einfaches Beispiel mit Bluetooth zeigen. Es soll auf der LED Matrix ein glückliches Smiley angezeigt werden wenn eine Verbindung aufgebaut wurde andernfalls ein schlechtes.

einfaches Bluetoothbeispiel mit MakeCode für den micro:bit
einfaches Bluetoothbeispiel mit MakeCode für den micro:bit

Wenn also nun mit AndroidApp „micro:bit Blue“ eine Verbindung aufgebaut wurde, dann ändert sich das Gesicht „schlecht“ auf „glücklich“ bzw. wenn die Verbindung unterbrochen wird von „glücklich“ auf „schlecht“.

Auf Seite 2 geht es weiter mit den Erweiterungskarten zu dem micro:bit.

Werbung

2 Gedanken zu „Vorstellung #1 2019: BBC micro:bit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Werbung