home

Dokumentation micro:bit Zusatzmodule

Module mit (F) werden beim Flashen automatisch auf den micro:bit kopiert

Download aller Module

Modul mbglow (F)
(Real- und Simulationsmodus)
(Modul import: from mbglow import *)

makeGlow()

erzeugt einen sichtbaren Leuchtkäfer mit Position (0, 0), Richtung Norden, Spur sichtbar. Koordinatensystem: -2 <=x <=2 (+ nach rechts), -2 <= y <= 2 (+ nach oben). (0, 0) auf mittlerem Pixel
setSpeed() setzt die Geschwindigkeit für die Bewegungen (0..100)
show() macht den Leuchtkäfer an der aktuellen Position und für die nächsten Bewegungen sichtbar
hide() macht den Leuchtkäfer für die nächsten Bewegungen unsichtbar
clear() löscht alle eingeschalteten Pixels. Der Leuchtkäfer bleibt an der aktuellen Position (unsichtbar)
showTrace(enable) macht die Spur für die nächsten Bewegungen (Pixel an besuchten Stellen) sichtbar/unsichtbar
forward() bewegt den Leuchtkäfer um einen Schritt vorwärts
back() bewegt den Leuchtkäfer um einen Schritt rückwärts
left(angle) dreht die Bewegungsrichtung um 45 Grad-Schritte nach links (angle = 45, 90, 135, 180, 215, 270, 315)
right(angle) dreht die Bewegungsrichtung um 45 Grad-Schritte nach rechts (angle = 45, 90, 135, 180, 225, 270, 315)
setPos(x, y) setzt den Leuchtkäfer auf Position (x, y)
getPos() gibt die aktuelle Position des Leuchtkäfers als Tupel zurück
isLit() gibt True zurück, falls das Pixel an der Stelle des Leuchtkäfers eingeschaltet ist

 

Modul mbrobot (F)
Modul mbrobot_plus
Modul mbrobot_plusV2
(Maqueen/MaqueenPlus/MaqueenPlusV2--Rover, Real- und Simulationsmodus)
(Modul import: from mbrobot import * / from mbrobot_plus import */from mbrobot_plusV2 import ")



forward() setzt den mbRobot in Vorwärtsbewegung
backward() setzt den mbRobot in Rückwärtsbewegung
left() setzt dem mbRobot in eine Linksdrehung (ein Motor vorwärts, der andere rückwärts drehend)
right() setzt dem mbRobot in eine Rechtsdrehung (ein Motor vorwärts, der andere rückwärts drehend)
leftArc(radius) setzt den mbRobot auf eine Linkskurve mit gegebenem Radius (in m, approx.)
rightArc(radius) setzt den mbRobot auf eine Rechtskurve mit gegebenem Radius (in m, approx.)
stop() stoppt die Bewegung
delay(ms) hält das Programm während ms Millisekunden an
setSpeed() setzt die Geschwindigkeit für die Bewegungen (15 < speed < 100), default 50
calibrate(offset, differential, arcScaling) kalibriert Motoren, fallsr Roboter nicht geradeaus fährt
offset: minimal Power der Motoren (-10 bis 50)
differential: regelt Links- bzw. Rechtsdrall (-150 bis 150), bei Linsdrall < 0, bei Rechtsdrall > 0
arcScalling: regelt den Radius bei leftArc() und rightArc() (-50 bis 50), falls Radius zugross > 0, falls Radius zu klein < 0
motL.rotate(speed) rotiert Motor links (speed > 0: vorwärts, speed < 0: rückwärts, speed = 0: stop)
(speed in %, 0 bis 100)
motR.rotate(speed) rotiert Motor rechts (speed > 0: vorwärts, speed < 0: rückwärts, speed = 0: stop) (speed in %, 0 bis 100)
setPID(1) [nur mbrobot_plus] reduziert die Geschwindigket, der Roboter bewegt sich langsamer
(nur mbrobot_plus)
setPID(0) [nur mbrobot_plus] schaltet PID aus (nur mbrobot_plus)
setLED(1) schaltet beide LEDs ein
mbrobot_plus zusätzlich: (2:grün, 3:blau, 4:gelb, 5:pink, 6:cyan, 7:weiss)
Simulation: 1: rot, 2:grün, 3: blau
setLED(0) schaltet beide LEDs aus
setLEDLeft(n),
setLEDRight(n)
schaltet LED ein (n = 1) oder aus (n = 0)
mbrobot_plus zusätzlich: n = 2:grün, 3:blau, 4:gelb, 5:pink, 6:cyan, 7:weiss
Simulation: 1:rot, 2:grün,3:blau
setAlarm(1) schaltet ein akustisches Alarmsignal ein
setAlarm(0) schaltet ein akustisches Alarmsignal aus
setServo(port, angle) dreht den am Port S1 oder S2 (bzw. P1 oder P2) angeschlossenen Servomotor an die gegebene Winkelposition. (0 <= angle <= 180)
irLeft.read_digital(), irRight.readDigital() Infrarotsensoren liefern 1, falls helle Unterlage; 0, falls dunkle Unterlage
getDistance() liefert die Distanz (in cm, ungefähr im Bereich 2..200) gemessen mit dem Ultrasonic-Sensor (255: Fehlmessung)
mesh = [(x1, y1), (x2, y2)...] [nur Simulation] Definiert die Koordinaten der Eckpunkte (x1,x2),(x2,y2),..eines Objekts, ausgehend vom Mittelpunkt (0,0) des Grafikfensters
RobotContext.useTarget ("bild",mesh,x,y) Definiert das Hintergrundbild "bild" und die Position ( x , y) des Objekts mesh
setBeamAreaColor() [nur Simulation] setzt die Farbe der Strahlbereichsgrenzen
setProximityCircleColor() [nur Simulation] setzt die Farbe des Suchkreises
setMeshTriangleColor() [nur Simulation] setzt die Füllfarbe der Maschen
eraseBeamArea() [nur Simulation] löscht die Strahlbereichsgrenzen
reset() [nur Simulation] setzt den Roboter an die Startposition/Startrichtung

 

Modul mbalarm
(Real- und Simulationsmodus)
(Modul import: from mbalarm import *, in den Bibliotheken mbrobot, mbrobot_plus und mbrobot_plusV2 integriert)

setAlarm(1) schaltet ein akustisches Alarmsignal ein
setAlarm(0) schaltet ein akustisches Alarmsignal aus


Modul clap

(Mini:Maqueen Rover, extern angeschlossenes Mikrophon am Port 2, Ulltraschallsensor entfernt)
(Modul import: from clap import *)

wait_for_clap(timeout = 1000, sensitivity = 75) wartet auf ein einzelnes Klatschen und kehrt mit True zurück, wenn es detektiert wird. Kehrt nach dem angegebenen Timeout (in ms) zurück, wenn kein Klatschen detektiert wurde. sensitivity im Bereich 0..100
wait_for_double_clap(timeout = 1000, spread = 500, sensitivity = 75) wartet auf ein Doppelklatschen und kehrt mit True zurück, wenn es detektiert wird. Die beiden Klatschen müssen innerhalb des spread-Intervalls erfolgen (in ms). Kehrt nach dem angegebenen Timeout (in ms) zurück, wenn kein Doppelklatschen detektiert wurde. sensitivity im Bereich 0..100

 

Modul linkup (F)
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: from linkup import *)

connectAP(ssid, password)

verbindet mit dem bestehenden Access-Point (Hotspot, Router) mit ssid und password. Gibt die erhaltene gepunktete IP-Adresse zurück; leer, falls das Einloggen misslingt
createAP(ssid, password) erzeugt einen Access-Point mit ssid und password. Falls password leer ist, ist der AP offen, d.h. man kann sich ohne Authentifikation einloggen
httpGet(url) führt einen HTTP GET Request durch und liefert den Response zurück. url in der Form "http://<server>?key=value&key=value&..." Statt http kann auch https verwendet werden
httpPost(url, content) führt einen HTTP POST Request durch und liefert den Response zurück. url in der Form "http://<server>". content im Format "key=value&key=value&..." Statt http kann auch https verwendet werden
httpDelete(url) führt einen HTTP DELETE Request mit der gegebenen Ressource aus
startHTTPServer(onRequest)

startet einen HTTP Server (Webserver auf Port 80), der auf HTTP GET Requests hört. Bei einem GET Request wird die benutzerdefinierte Callbackfunktion onRequestr(clientIP, filename, params) aufgerufen.

clientIP: gepunktete IP-Adresse des Clients
filename: Dateiname der URL mit vorgestelltem "/". Fehlt der Dateiname: "/"
params: Dictionary mit den GET Request Parametern {key: value}.

Beispiel: Für die URL http://192.168.0.101/on?a=ok&b=3 ist filename = "/on" und params = {"a" : "ok", "b" : "3"}

Rückgabe:

- ein einzelner Wert (String, Float, Integer): dieser wird unverändert an den Browser zurückgesendet. Es kann sich um eine HTML-Webpage handeln oder um einen einzelnen Wert. Die Webpage darf nicht länger als 250 Zeichen sein

- eine Liste. Die darin enthaltenden Werte werden in die %-Formatangaben der vorher mit saveHTML() gespeicherten HTML-Standarddatei eingebaut und an den Browser zurückgesendet

- keiner: Es wird die vorher mit saveHTML() gespeicherte HTML-Textdatei unverändert an den Browser zurückgesendet

Alle HTTP-Replies werden mit einem Header 200 OK versehen.

Der Aufruf ist blockierend. Es ist nur noch die Callbackfunktion handler aktiv.

saveHTML(text) speichert den Text auf dem LinkUp als eine HTML-Standarddatei. Sie kann %-Formatangaben enthalten, die mit den Rückgabewerten der Callbackfunktion handler ersetzt werden. Ist text leer, so wird die gespeicherte HTML-Datei gelöscht



Modul sht (F)
(Sensirion Temperatur- und Luftfeuchtesensor am I2C-Port)
(Modul import: import sht

sht.getValues() gibt ein Tupel mit Temperatur (in Grad Celsius) und Luftfeuchtigkeit (in Prozent) zurück.
I2C-Adresse (SHT31: 0x44, SHT35: 0x45)

 

Modul sgp (F)
(SGP30 Air Quality Sensor (CO2-Sensor am I2C-Port)
(Modul import: import sgp

sgp.getValues() gibt ein Tupel mit CO2-Konzentration (in ppm) und TVOC (Total Volantile Organic Compunds) zurück. Der Sensor wird auf CO2=400 kalibriert, Bei Werten höber als 1000 ist die Luftqualität schlecht und eine Lüftung dringend notwendig. I2C-Adresse (SGP30: 0x58)

 

Modul mqtt
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: import mqtt)

Funktion Aktion
mqtt.broker(host, port = 1883,
user = "", password = "", keepalive = 0)
legt die Eigenschften des Brokers fest (IP-Adresse, IP-Port und falls nötig Authentifizierungsangaben). keepalive legt fest, wie lange die Verbindung ohne Datenaustausch offen bleibt (in sec) (default ist abhängig vom Broker). Es wird noch keine Verbindung zum Broker hergestellt

mqtt.connectAP(ssid, password)

verbindet mit dem bestehenden Access-Point (Hotspot, Router) mit ssid und password. Gibt die erhaltene gepunktete IP-Adresse zurück; leer, falls das Einloggen misslingt
mqtt.connect(cleanSession = True) erstellt eine Verbindung zum Broker. Für cleanSession = True, werden alle früheren Daten gelöscht. Gibt True zurück, falls erfolgreich; andernfalls False
mqtt.ping() sendet einen Ping-Request an den Server, damit dieser die Verbindung offen hält; Gibt True zurück, falls erfolgreich; andernfalls False
mqtt.publish(topic, payload, retain = False, qos = 0) sendet zum gegebenen Topic eine Message (payload). Falls retain = True wird diese Message als die letzte  good/retain Message betrachtet. qos ist der Quality of  Service level (nur 0, 1 unterstützt). Gibt True zurück, falls erfolgreich; andernfalls False
mqtt.subscribe(topic, qos = 0 abonniert das gegebene Topic mit dem gegegeben qos level (nur 0, 1 unterstützt). Es werden maximal 50 erhaltende Message-Tupels (topic, payload) in einem Messagebuffer der Reihe nach gespeichert (maximale Längen topic: 50, payload: 200 bytes). Gibt True zurück, falls erfolgreich; andernfalls False
topic, payload = mqtt.receive() holt das erste Element des Messagebuffers (das "älteste") als Tupel (topic, payload) zurück und entfernt das Element aus dem Buffer. Falls keine Daten im Buffer sind, wird (None, None) zurückgegeben. Die Pollperiode sollte mindestens 1 sec betragen. Gibt None zurück, falls die Verbindung zum Broker unterbrochen ist
mqtt.disconnect() schliesst die Verbindung



Modul ntptime
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: import ntptime)

ntptime.getTimeRaw(server = "pool.ntp.org"

gibt die aktuelle Datumzeit zurück, die vom gegebenen Server abgegeben wurde. Format: Tupel (yyyy, mm, dd, h, m, s, week_day, day_of_year) alles Ints. Zeit ist GMT
ntptime.getTime(server = "pool.ntp.org") dasselbe, aber es wird ein formatierter String zurückgegeben (Beispiel: "Tu 2019-06-11 13:04:44 GMT")

 

Modul mcp9808
(Microchip Temperatursensor am I2C-Port)
(Modul import: from mcp9808 import MCP9808)

mcp = MCP9808()

erzeugt eine Sensorinstanz
mcp.temperature() gibt die Temperatur (in Grad Celsius) zurück


Realtime Clock (RTC)

(RTC Clock Modul DS3231 am I2C-Port (Adresse 0x68))
(Modul import: import rtc

Funktion Aktion
rtc.set(yy, mm, dd, h, m, s, w) setzt Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag (üblich 1..7, 1: Sonntag)
rtc.set([yy, mm, dd, h, m, s, w]) dasselbe mit Liste (oder Tupel)

rtc.get()

gibt ein Tupel (yy, mm, dd, h, m , s, w) zurück (alles ints)


Siebensegmentanzeige (4 Ziffern mit TM1637 Driver)
Modul import:
from mb7seg import FourDigit
from mb7segmin import FourDigit, reduziertes Modul, falls Memory overflow, nur (*)

Klasse FourDigit

Funktion Aktion
(*) disp = FourDigit(clkPin = pin1, dioPin = pin2, lum = 4) erzeugt eine Displayinstanz für einen Display, der an den gegebenen Pins angeschlossen ist. Anzeigehelligkeit 0..9

disp.erase()

löscht den Display
(*) disp.show(text, pos = 0) zeigt den Text beginnend an Position 0 (Ziffer ganz links) an. Der Text kann mehr als 4 Zeichen enthalten. text kann auch ein Integer sein
disp.scroll(text) zeigt den Text als Lauftext an
disp.toRight() verschiebt den Text um eine Stelle nach rechts
disp.toLeft() verschiebt den Text um eine Stelle nach links
disp.start() setzt den Text an die Startposition
disp.setLuminosity(lum) setzt die Helligkeit (0..9)
(*) disp.setColon(enable) aktiviert/deaktiviert den Doppelpunkt

 

Modul bme280
(Temperatur-, Luftfeuchtesensor und Luftdrucksensor von Bosch am I2C-Port)
(Modul import: import bme280

bme280.getValues() liefert Temperatur (in Grad Celsius), Luftfeuchtigkeit (in %), Luftdruck (in hPa) Höhe über Meer gleichzeitig in einem Tupel
bme280.qnh setzt den Luftdruck auf Meereshöhe (in hPa) (Zuweisung)

Modul tcs34725
(RGB Color Sensor am I2C-Port)
(Modul import: from tcs34725 import ColorSensor)

cs = ColorSensor() erzeugt eine Sensorinstanz
cs.getRGB() gibt ein Tupel mit den 3 RGB-Werten (je im Bereich 0...255) zurück
cs.getLum() gibt die Helligkeit im Bereich 0..65565 zurück

 

Modul touchbit
(Remote Control Module "TouchBit")
(Modul import: from touchbit import *)

registerCallbacks(buttonPress = None, buttenRelease = None, buttonRepeat = None) registriert Callbackfunktionen, die beim entsprechenden Event aufgerufen werden, falls die Funktion pollButtons() durchlaufen wird
pollButtons() muss periodisch aufgerufen werden, damit die Callbacks aktiv sind
onButtonEvent(btn, down) Signatur des Callbacks
Beispiel:
def onButtonPressed(btn):
    print("Button", btn, "pressed")

def onButtonReleased(btn):
    print("Button", btn, "released")

def onButtonRepeated(btn):
    print("Button", btn, "repeated")

registerCallbacks(onButtonPressed, onButtonReleased, onButtonRepeated)     
while True:
    pollButtons()
    sleep(50)

 

Modul oled
(128x64 pixel OLED modul mit SSD1306 Driver am I2C Port)
(Modul import: import oled

oled.init() initialisiert den Display (5 Zeilen, 12 Spalten)
oled.text(x, y, s) schreibt den Text s auf der Zeile x beginnend auf der Spalte y aus (x = 0..4, y = 0..11)
oled.clear() löscht den Display
oled.image(filename) zeigt das Bild an. Die binäre Bilddatei filename muss aus einem BMP-Bild der Grösse 128x64 = 8196 pixel mit dem Tool bmp2oled erzeugt werden. Dabei werden alle Pixels mit (r + g + b) / 3 < 100 in schwarz, die anderen in weiss dargestelt. Das Tool kann mit einem TigerJython-Programm ausgeführt werden, das die einzige Zeile import bmp2oled enthält. Die dabei erzeugte Datei mit Tools | Modul herunterladen auf den micro:bit kopieren. Sie hat eine Grösse von 1024 Bytes, da ein Byte 8 Pixels (hell oder dunkel) des Displays festlegt

Anmerkung: Vollständige Library auf https://github.com/fizban99/microbit_ssd1306


home