Calliope in Python programmieren

Will man den Calliope mini nicht im Schulkontext verwenden, dann bietet sich, wie beim micro:bit, die Programmierung in Micro-Python an.

Einen Editor findet man beispielsweise unter http://python.microbit.org/editor.html. In diesen Editor pastet man dann einfach den Python-Quelltext, wie z.B. das folgende Programmbeispiel zur Temperaturmessung.

# Measuring chip temperature on Calliope mini & output to console
from microbit import *
import os

uart.init()
uart.write(os.uname().machine +" measuring chip temperature\r\n")

while True:
 temp = temperature() - 3 # offset to ambient temperature
 display.scroll(str(temp)+" C")
 uart.write("Calliope mini chip temperature = "+str(temp)+" C\r\n")
 sleep(5000)

Nach dem Compilieren kann das  erstellte File microbit.hex einfach in das Laufwerk kopiert werden, als das sich der Calliope mini beim Anschluss über USB meldet.

Zum Beobachten der seriellen Ausgaben kann bspw. mit PuTTY auf das betreffende COM-Port zugegriffen werden. Die Baudrate beträgt hier 9600 Bd. Die LED-Matrix zeigt die Ausgabe als Laufschrift an.

Screenshot

Zugang zu den verschiedenen Ressourcen des eingesetzten Mikrocontrollers erhält man über die micro:bit Python API.

16 Gedanken zu „Calliope in Python programmieren

    1. ckuehnel Autor

      Danke für den Hinweis. Die eingeschränkte MicroPython-Programmierbarkeit wurde durch eine veränderte Pinbelegung hervorgerufen. Ich bin in einem weiteren Blogbeitrag darauf eingegangen.
      Aber auch beim JavaScript Blocks Editor ist bspw. der Bluetooth-Teil noch nicht up-to-date.
      Hier gilt es im Einzelfall stets zu prüfen.

      Like

      Antwort
      1. jørn

        Bluetooth funktioniert genau wie beim microbit – du musst aber den Bluetooth Stack aktivieren. Der ist per Default im Editor aber deaktiviert, da relativ groß. Im Gegensatz zum microbit ist Bluetooth aber bei den minis (mit der neusten Firmware) direkt aktiviert. Alle anderen können das halt im Editor oder mit dem Demo Skript (auf der Calliope Seite im Bereich FAQ) aufspielen.

        Like

  1. Pemo

    Kurze Frage: Ist denn ein Python-Interpreter beim Calliope Mini bereits an Bord? Wenn ich den Code übertrage ist nur eine Fehlermeldung auf dem Display die Folge. Ich habe noch die erste Generation. Vielleicht brauche ich nur ein Update der Firmware. Auf alle Fälle ein guter Blog-Beitrag.

    Like

    Antwort
    1. ckuehnel Autor

      Der Python-Interpreter war bei meinen Tests nicht on-board. Ich habe im Mu-Editor ein Hex-File erzeugt und das auf das Target geladen.
      Zu beachten ist, dass die Pinbelegung und die Sensorik der beiden Boards (leider) unterschiedlich ist. In einem Blogbeitrag bin ich darauf bereits eingegangen.
      Da das Calliope Board aus Systemsicht doch einige Schwachstellen aufweist, habe ich bislang nur mit dem BBC micro:bit weitergearbeitet.
      Bei weiteren Fragen bitte einfach melden.

      Like

      Antwort
      1. jrnalraun

        Das ist eigentlich genau das tolle, es gibt einen Interpreter (https://tech.microbit.org/software/runtime-mbed/) – deshalb funktioniert MicroPython auch recht leicht offline, da aus dem Python Code einfach nur ein Hex gemacht werden muss und der mini dieses ausführen kann. Zu diesem Thema empfehle ich dringend direkt den Calliope mini Kanälen zu folgen! Ich habe gehört, dass dort demnächst diesbezüglich etwas Kommuniziert werden soll… 😉

        Like

      2. Pemo

        Ok. vielen Dank. Das erklärt natürlich warum es einfach nicht funktioniert. Leider findet man auf der Calliope Mini-Webseite zum Thema Micro Python wenig bis gar nichts oder ich habe die Info bislang einfach übersehen.

        Like

  2. olav

    Die einzige Umgebung, in der MicroPython auf dem Calliope Mini gut funktioniert, scheint im Augenblick (April 2020) TigerJython zu sein. Das Programm sieht ein klein wenig altbacken aus, funktioniert aber sehr zuverlässig und die Site https://www.tigerjython4kids.ch/ enthält einen ganzen Kurs zu Micropython mit Calliope Mini.

    Like

    Antwort

Hinterlasse einen Kommentar