Arbeit mit Sensoren

Allgemeine Informationen zu den Grove Sensoren sowie detaillierte Angaben zum Anschluss der Sensoren sind hier zu finden.

Welche Anschlüsse gibt es für
die beiden Grove-Sensoren?

Es gibt zwei Grove Anschlüsse an dem Calliope mini, die jedoch nicht identisch sind.
Beide Anschlüsse sind seriell, was bedeutet, dass die einzelnen Informationen in Bits nacheinander übertragen werden.
Der wesentliche Unterschied ist, dass der A0 Anschluss nur digital ist, wohingegen mit dem A1 Anschluss auch analoge Signale übertragen werden können. Den Unterschied zwischen analog und digital werden wir weiter unten nochmal genauer erläutern.

Schnittstelle (Bus)I²C
AnschlüsseGND, +3v3, C18 (SDA), C19 (SCL)
Ausgabesignaldigital
Schnittstelle (Bus)UART
AnschlüsseGND, +3v3, C16 RX, C17 TX
Ausgabesignaldigital/analog
Welcher Sensor an welchen Anschluss?

Bevor ein Aktor oder Sensor angeschlossen wird, muss zuerst beachtet werden, ob dieser digitale oder analoge Werte ausgibt. In den Datenblättern des Sensors steht, welche Schnittstelle und welche Betriebsspannung der jeweilige Sensor benötigt. Der Calliope mini liefert regulär eine maximale Spannung von 3,3 V, wodurch die 5V Grove-Sensoren beispielsweise nicht betrieben werden können.

Weitere Informationen zu den Anschlüssen und das Datenblatt sind hier zu finden Technische Details zum Calliope mini

Statt der Benennung der Anschlüsse A0 und A1 muss z.B. in MakeCode der Pin direkt ausgelesen werden. Der unteren Tabelle kann entnommen werden, dass für A0 nur digital gelesen und geschrieben werden kann, für A1 hingegen sowohl analog als auch digital.

lesenschreiben
A1: C16 (RX)digital/analogdigital/analog
A1: C17 (TX)digital/analogdigital/analog
A0: C18 (SDA)digitaldigital

Digital

Ein digitales Signal ist ein abgestuftes, abzählbares Signal. Es ist oft verlustbehaftet und muss in vielen Fällen interpretiert werden, wenn es keinen binären Zustand beschreibt.
Weitere Infos dazu sind im Glossar zu finden.

Analog

Ein Analogsignal hat keine festen Werte, sondern einen kontinuierlichen, stufenlosen Verlauf. Theoretisch kann es unendlich viele Informationen annehmen. Allerdings werden durch den Analog-Digital-Umsetzer meistens Werte im Bereich 0 bis 1023 angezeigt. Weitere Informationen sind im Glossar nachzulesen.

Wie werden die Sensoren und Aktoren programmiert?

Makecode

Lesen/Schreiben von analogen und digitalen Sensoren/Aktoren

Allgemein können die digitalen und analogen Sensoren/Aktoren angesprochen werden, indem auf dem Reiter Pins ausgewählt wird. Mit dem Block digitale/analoge Werte von Pin können die Sensordaten ausgelesen werden. Für die Aktoren können die Werte mit dem Block schreibe digital/analogen Wert von Pin auf 0 gesendet werden.
Weil die meisten Sensoren permanent Daten generieren, sollte das Auslesen im dauerhaft Block aus den Grundlagen stattfinden. Dort können die Daten beispielsweise in einer Variabel gespeichert werden, die immer neu überschrieben wird. Außerdem ist es möglich, die Daten zu analysieren, indem sie zeitlich in einer Liste erfasst werden.

Auslesen der Werte mithilfe von Paketen

Für einige komplexere Sensoren können die Sensordaten nicht so einfach ausgelesen werden. Dafür gibt es Pakete, die uns das Programmieren des Sensors vereinfachen und direkt eine umgerechnete Ausgabe in einer Einheit wie Zentimeter bei Distanz, PPM für CO2-Konzentration oder RGBW für Farbe ausgibt.
Diese können hinzugefügt werden, wenn unten bei den Komponenten + Erweiterungen ausgewählt und in die Suchleiste oben z.B. "Grove" eingegeben wird. Anschließend sind die neuen Blöcke unter dem Reiter mit dem Name des hinzugefügten Paketes zu finden. Im Falle des Grove-Paketes lassen sich dann Gestenerkennung, Ultraschallsensoren usw. bedienen.

Direkt zum Editor

Open Roberta

Roboterkonfiguration

Um weitere externe Sensoren und Aktoren zu bedienen, müssen diese erst im Open Roberta Lab konfiguriert werden.
Dazu muss oben links der Reiter Roboterkonfiguration ausgewählt werden, der neben PROGRAMM NEPOprog liegt. Dort ist der Calliope mini und alle bisher konfigurierten Sensoren zu sehen, wie auch die internen Sensoren ( z.B. Kreiselsensor oder das Mikrofon). Aktoren sind orange gefärbt und Sensoren grün. Besteht das Interesse, beispielsweise einen digitalen Sensor hinzuzufügen, so wird der Button Sensoren und dann Sensor digital ausgewählt, anschließend ein Namenskürzel vergeben und die Pin, über der der Sensor angeschlossen ist, vergeben. Hier können auch einfach die beiden Grove-Anschlüsse direkt über A0 und A1 angesprochen werden.
Im Anschluss kann das Programm wieder aufgerufen und unter dem Reiter Sensoren der Block gib analogen Wert Pin x ausgewählt werden. Dort ist ein Dropdownmenü, in dem zwischen digital analog und Pulszeit gewählt werden kann. Da nun ein digitaler Sensor konfiguriert wurde, ist unter "Pin" auch nur das Kürzel zu finden, wenn ein digitaler Wert ausgelesen werden soll.
Auch hier gilt, dass der Sensor permanent Daten generiert und dieser in die Wiederhole unendlich oft-Schleife gelegt werden muss. Jetzt kann eine Variabel überschrieben oder auch die Sensor-Daten in einer Liste über die Zeit gesammelt werden.

Direkt zum Editor

Auslesen von Sensorwerten über den Serial Monitor

Falls die Funktionstüchtigkeit eines Sensors getestet werden soll, kann es hilfreich sein, die Daten erst über einen seriellen Port auszulesen, bevor diese z.B. über die LED-Matrix angezeigt werden. Dafür wird ein serieller Monitor benötigt, wie der Open Roberta Connector, welcher hier zum Download zur Verfügung steht. Eine ausführlichere Anleitung zur Installation steht hier zum Abruf bereit.
Sobald der Download erfolgt ist und gestartet wurde, sollte dieser automatisch den angeschlossenen Calliope mini erkennen.

Makecode

Unter den "Fortgeschritten"-Blöcken sind unter Seriell die Blöcke für die serielle Kommunikation zu finden. Um die Sensordaten anzuzeigen, kann der Block seriell Zeile ausgeben (") ausgewählt und dort die Sensordaten als Eingabe verwendet werden.

Open Roberta Lab

Damit die Sensordaten in dem Monitor angezeigt werden können, wird der Block Zeige auf Serial Monitor ausgewählt, der unter den fortgeschrittenen Komponenten Aktion > Anzeige zu finden ist.
Wenn die Sensordaten als Input für diesen Block verwendet werden und dieser in einer Wiederhole unendlich oft-Schleife ist, können die aktuellen Daten permanent ausgelesen werden.

Falls immer noch keine Daten im Serial Monitor ausgelesen werden können, kann es daran liegen, dass der Sensor die Daten mit einer anderen Baudrate übertragt. Im Connector kann diese eingestellt werden. In vielen Fällen liegt sie bei 9600 oder 115200.

Baudrate ...

... ist ein Maß für die Übertragungsgeschwindigkeit von Symbolen. 1 Baud = 1 Symbol pro Sekunde. Stelle dir das ungefähr so vor, wenn du mit einer Person redest und diese dich nur verstehen kann, wenn du nicht zu schnell oder zu langsam sprichst.