Auf Grund der abweichenden Pinbelegungen zwischen BBC micro:bit und Calliope mini ist die Programmierung in Python gerade für I/O-Operationen nicht immer ohne Probleme. Die folgende Tabelle zeigt die Unterschiede:
nRF51822 | micro:bit | Calliope mini |
P0.00 | SCL | P0 |
P0.01 | P2 | P1 |
P0.02 | P1 | P2 |
P0.03 | P0 | P3 (MIC) |
P0.04 | COL1 | P4 (LED_C1) |
P0.05 | COL2 | P5 (LED_C2) |
P0.06 | COL3 | P6 (LED_C3) |
P0.07 | COL4 | P7 (LED_C4) |
P0.08 | COL5 | P8 (LED_C5) |
P0.09 | COL6 | P9 (LED_C6) |
P0.10 | COL7 | P10 (LED_C7) |
P0.11 | COL8 | P11 (LED_C8) |
P0.12 | COL9 | P12 (LEDC_9) |
P0.13 | ROW1 | P13 (LED_R1) |
P0.14 | ROW2 | P14 (LED_R2) |
P0.15 | ROW3 | P15 (LED_R3) |
P0.16 | P16 | P16 (TAST_B) |
P0.17 | BTN A | P17 (TAST_A) |
P0.18 | P18 | P18 (RGB LED) |
P0.19 | TGT nRST | P19 (SCL) |
P0.20 | P20 | P20 (SDA) |
P0.21 | MOSI | P21 (BMX055 INT) |
P0.22 | MISO | P22 |
P0.23 | SCK | P23 |
P0.24 | TGT TxD | P24 (TxD) |
P0.25 | TGT RxD | P25 (RxD) |
P0.26 | BTN B | P26 (Rx) |
P0.27 | ACC INT2 | P27 (Tx) |
P0.28 | ACC INT1 | P28 |
P0.29 | MAG INT1 | P29 |
P0.30 | SDA | P30 |

Dezentrale Temperaturerfassung mit Calliope
Ein abgesetzter Calliope mini wird über ein Steckernetzteil am USB-Anschluss mit Spannung versorgt. Ein Temperatursensor LM35 erfasst die Temperatur im Bereich von 0 bis 150 °C. Hat man eine LM35 nicht zur Verfügung, dann kann anfangs auch mit dem internen Temperatursensor der CPU gearbeitet werden. Der Sensor sendet über die Radio-Verbindung die erfasste Temperatur an einen zweiten Calliope mini, der über USB mit einem PC verbunden ist.
Auf dem PC läuft ein Terminalprogramm (z.B. PuTTY) und erfasst die hier mit 9600 Baud seriell übertragenen Daten und bringt diese zur Anzeige.
Die beiden Calliope mini sind mit den folgenden Programmen zu flashen.
Sender:
# Measuring chip temperature on CPU & output to console # works unchanged for micro:bit & Calliope mini from microbit import * import radio # The radio won't work unless it's switched on. radio.on() while True: temp = temperature() - 3 # offset to ambient temperature display.scroll(str(temp)+" *C") radio.send(str(temp)) sleep(60000) # sleep a minute
Bei Einsatz eines LM35 Temperatursensors ist das Erfassen der Temperatur anzupassen:
temp = pin1.read_analog() * 330 / 1024
Der Ausgang des LM35 ist, wie in der Abbildung gezeigt, mit P2 am Calliope mini zu verbinden (sh. auch in der Tabelle oben).
Empfänger:
# Receiving chip temperature from a second board & output to console # works unchanged for micro:bit & Calliope mini from microbit import * import os import radio uart.init() uart.write(os.uname().machine + "\r\nGet chip temperature by radio connection\r\n") # The radio won't work unless it's switched on. radio.on() while True: # Read any incoming messages. temp = radio.receive() if str(temp) != "None": display.scroll(str(temp)+" *C") uart.write("Received chip temperature = "+str(temp)+" *C\r\n") sleep(1000)
Die Reichweite der Radio Verbindung des Calliope mini liegt bei ca. 20 m, so dass dem Test im Wohnraum wenig Grenzen gesetzt sind.