Modules with (F) are automatically copied to the Calliope when flashing
Download all modules
Module callibot (F)
Calli:bot Rover vehicle movements, real and simulation mode)
Module import: from callibot import *
setSpeed() | sets the speed for all movements (10..100), default 50 |
forward() | sets robot in forward motion |
backward() | sets robot in reverse motion |
left() | sets robot in a left turn (one motor in forward, the other in backward rotation) |
right() | sets robot in a right turn (one motor in forward, the other in backward rotation) |
leftArc(radius) | sets robot to a left curve with given radius (in m, approx.) |
rightArc(radius) | sets robot to a right curve with given radius (in m, approx.) |
stop() | stops the movement |
delay(ms) | stops program for ms milliseconds |
setLED(1) | turns both LEDs on |
setLED(0) | turns both LEDs off |
setLEDLeft(n), setLEDRight(n) | turns LED on (n = 1) or off (n = 0) |
setServo(port, angle) | rotates the servo motor connected to port S1 or S2 to the given angular position |
irLeftValue(), irRightValue() | infrared sensors return 0, if floor is dark; 1, if floor is bright |
tsValue() | returns 1, if the both Touchsensors are pressed, else 0 |
tsLeftValue(), tsRightValue() | returns 1, if the left / right Touchsensor are pressen , else 0 |
getDistance() | returns the distance (in cm, in range 2..200 approx.) measured with the ultrasonic sensor (255: no object, sim: -1) |
mesh = [(x1, y1), (x2, y2)...] [nur Simulation] | defined the coordinats of the corners (x1,x2),(x2,y2),..of an object, start from the centre (0,0) of the window |
RobotContext.useTarget ("pics",mesh,x,y) | defined the background "pics" an the position (x , y) of the object mesh |
setBeamAreaColor() [simulation only] | sets the color of the beam area boundaries |
setProximityCircleColor() [simulation only] | sets the color of the proximity circle |
setMeshTriangleColor() [simulation only] | sets the color of the mesh triangles |
eraseBeamArea() [simulation only] | erases the beam area boundaries |
RobotContext.enableTrace(True) [only S] | shows the trace in simulation mode |
RobotContext.enableRotCentre(True) [only] | shows the center of rotation in simulation mode |
reset() [only S] | sets the robot to the starting position/direction |
Module callibotmot (F)
(motor rotations, real and simulation mode)
Module import: from callibotmot import *
motL, motR | instances of left and right motor |
motX.rotate() | starts motor rotation (speed > 0: forwad, speed < 0: backward, speed= 0: stop) |
delay(ms) | stops program for ms milliseconds |
setLed(n) | turns both LEDs on (n = 1) or off (n = 0) |
Modul cbalarm (F)
( only Realmode)
Modul import: from cbalarm import *
setAlarm(1) | sets the alarm on |
setAlarm(0) | sets the alarm off |
Modul cpglow (F)
(Real- und Simulationsmodus)
(Modul import: from cpglow import *)
makeGlow() |
creates a visible glowbug at position (0, 0) directed to the north with its trace enabled. Coordinate system: -2 <=x <=2 (+ to the right), -2 <= y <= 2 (+ upwards), (0, 0) at center pixel |
setSpeed() | sets the speed for movements (0..100) |
show() | enables the visibility for the following movements |
hide() | disables the visibility |
clear() | clears all visible pixels. The glowbug remains at the current position (but is invisible) |
showTrace(enable) | enables/disables the trace for the following movements (pixels are turned on at the glowbug position) |
forward() | moves the glowbug one step in the forward direction |
back() | moves the glowbug one step in the backward direction |
left(angle) | turns the glowbug in 45 degrees increments to the left (angle = 45, 90, 135, 180, 215, 270, 315) |
right(angle) | turns the glowbug in 45 degrees increments to the right (angle = 45, 90, 135, 180, 215, 270, 315) |
setPos(x, y) | sets the glowbug at position (x, y) |
getPos() | returns the current position of the glowbug (as tuple) |
isLit() | returns True, if the pixel at the current glowbug position is turned on |
Module sht_mini (F)
(Sensirion temperature and air humidity sensor at I2C port)
(Module import: import sht
sht.getValues() | returns a tuple with temperature (in degrees Celsius) and and humidity (in percent). I2C address: (SHT31: 0x44, SHT35: 0x45) |
Module sgp_mini (F)
(SGP30 Air Quality (CO2) sensor at I2C port)
Module import: import sgp
sht_mini.getValues() | returns a tuple with CO2 koncentration (in ppm) and VOC (Total Volantile Organic Compunds). The sensor is calibrated to CO2 = 400. Ventilation is urgently required for values higher than 1000. I2C address (SGP30: 0x58) |
Modul cpmike (F)
(nur Realmodus)
(Modul import: from cpmike import *)
Detektion von Schallpulsen mit dem internen Mikrofon
isClicked(level = 10, rearm_time = 500) |
gibt True zurück, falls der Schallpegel im Moment des Aufrufs den vorgegebenen Pegel (level = 1...500) übersteigt. Während der nachfolgenden Zeit (rearm_time in ms) ist die Detektion unterdrückt und es wird False zurückgegeben |
Siebensegmentanzeige (4 Ziffern mit TM1637 Driver)
Modul import:
fromcp7seg import FourDigit
from cp7segmin 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 cprover
(nur Realmodus)
(Modul import: from cprover import *)
Gleichstrommotoren, die am Motorport angeschlossen sind
forward() |
schaltet beide Motoren in Vorwärtsrichtung |
right() | schaltet den linken Motor in Vorwärtsrichtung und stoppt den rechten Motor |
rightArc(r) | schaltet den linken Motor in Vorwärtsrichtung und verlangsamt den rechten Motor. Der Kurvenradius ist durch r bestimmt (willkürliche Einheit) |
left() | schaltet den rechten Motor in Vorwärtsrichtung und stoppt den linken Motor |
leftArc(r) | schaltet den rechten Motor in Vorwärtsrichtung und verlangsamt den linken Motor. Der Kurvenradius ist durch r bestimmt (willkürliche Einheit) |
stop() | stoppt beide Motoren |
setSpeed(speed) | setzt die Geschwindigkeit (speed = 1..100) |
Schaltschema:
Funktionen für einen oder zwei Motoren, die gleichartig vorwärts oder rückwärts laufen:
run() |
schaltet den Motor (die Motoren) in Vorwärtsrichtung |
back() | schaltet den Motor (die Motoren) in Rückwärtsrichtung |
stop() | stoppt den Motor (die Motoren) |
setSpeed(speed) | setzt die Geschwindigkeit (speed = 1..100) |
Schaltschema:
Modul linkup_mini (F)
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: from linkup_mini 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(handler) | startet einen HTTP Server (Webserver auf Port 80), der auf HTTP GET Requests hört. Bei einem GET Request wird die benutzerdefinierte Callbackfunktion handler(clientIP, filename, params) aufgerufen. 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 Float/Integer. Die Webpage darf nicht länger als 250 Zeichen sein - ein Tupel oder 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. Die Funktion ist blockierend. Um wieder in den Kommandomodus zu kommen, muss der Micro:LinkUp neu gebootet werden |
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 Standarddatei gelöscht |
Modul mqtt_mini
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: import mqtt_mini)
Funktion | Aktion |
mqtt_mini.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_mini.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_mini.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_mini.ping() | sendet einen Ping-Request an den Server, damit dieser die Verbindung offen hält; Gibt True zurück, falls erfolgreich; andernfalls False |
mqtt_mini.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_mini.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_mini.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_mini.disconnect() | schliesst die Verbindung |
Modul ntptime_mini
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: import ntptime_mini)
ntptime_mini.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_mini.getTime(server = "pool.ntp.org") | dasselbe, aber es wird ein formatierter String zurückgegeben (Beispiel: "Tu 2019-06-11 13:04:44 GMT") |
Module rtc_mini
(RTC Clock Modul DS3231 am I2C-Port (Adresse 0x68))
(Modul import: import rtc_mini
Funktion | Aktion |
rtc_mini.set(yy, mm, dd, h, m, s, w) | setzt Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag (üblich 1..7, 1: Sonntag) |
rtc_mini.set([yy, mm, dd, h, m, s, w]) | dasselbe mit Liste (oder Tupel) |
rtc_mini.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_mini
(Temperatur-, Luftfeuchtesensor und Luftdrucksensor von Bosch am I2C-Port)
(Modul import: import bme280_mini
bme280_mini.getValues() | liefert Temperatur (in Grad Celsius), Luftfeuchtigkeit (in %), Luftdruck (in hPa) Höhe über Meer gleichzeitig in einem Tupel |
bme280_mini.qnh | setzt den Luftdruck auf Meereshöhe (in hPa) (Zuweisung) |
Modul oled_mini
(128x64 pixel OLED modul mit SSD1306 Driver am I2C Port)
(Modul import: import oled_mini
oled_mini.init() | initialisiert den Display (5 Zeilen, 12 Spalten) |
oled_mini.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_mini.clear() | löscht den Display |
oled_mini.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 Calliope kopieren. Sie hat eine Grösse von 1024 Bytes, da ein Byte 8 Pixels (hell oder dunkel) des Displays festlegt |
Modul cputils (F)
(Zusatzfunktionen)
(Modul import: import cputils
cputils.cat(filename) | zeigt den Inhalt der Datei filename im Konsolenfenster an |
cputils.getPitch(a) | gibt den Pitch-Winkel bei Übergabe der aktuellen Beschleunigung a (Liste/Tupel) zurück |
cputils.getRoll(a) | gibt den Roll-Winkel bei Übergabe der aktuellen Beschleunigung a (Liste/Tupel) zurück |