Physical Computing

Ein modernes Gewächshaus hat verschiedene Sensor und Aktoren. Gerade mit Hilfe von digitaler Technik, lassen sich damit die Wachstumsprozesse der Pflanzen optimal regulieren. Das Gewächshaus wird so zu einem smarten Gewächshaus, welches automatisiert alle möglichen Dinge regeln kann.

https://www.jimmyatwork.de/gewachshaus-four-seasons-400-schwarz-4mm-einscheibensicherheitsglas (Letzter Zugriff: 12.09.2023)
  1. Überlegt mit euren Tischnachbarn, welche relevanten Informationen die Sensoren in und am Gewächshaus messen können sollten.
  2. Überlegt mit eurem Tischnachbarn, welche Dinge das Gewächshaus aktiv steuern können müsste und wie diese von den Ergebnissen aus Aufgabe 1 zusammenhängen könnten.
Zusammenfassung

Für das Pflanzenwachstum sind für uns zunächst die folgenden Informationen relevant, wofür wir Sensoren benötigen, welche diese Werte messen können:

  • Intensität des Lichts
  • Feuchtigkeit im Boden
  • Feuchtigkeit in der Luft
  • CO2-Gehalt der Luft
  • Temperatur des Bodens
  • Temperatur der Luft

Damit unser Gewächshaus auf verschiedene Messwerte reagieren kann, benötigen wir für die folgenden Aspekte Aktoren, welche Dinge ausführen können:

  • Lichtzufuhr regeln
  • Pflanzen wässern
  • Fenster öffnen/schließen
  • Heizung steuern
  • Luftfeuchtigkeit regulieren
  • Informationen auf einem Display anzeigen

Um unsere Anforderungen umzusetzen, nutzen wir einen Mikrocontroller, also ein sehr kleiner Computer, den Calliope mini. Er besteht aus einer einzigen kleinen Platine, auf der sich alle Komponenten des Mini-Computers inkl. aller Sensoren und Aktoren befinden, welche programmiert werden können. Hier eine Übersicht über den Calliope:

https://digitalwerkstatt.de/kurse-workshops/berlin/coding-mit-calliope-mini-endlich-hardware-selber-programmieren-91466726441-2020-02-29 (Letzter Zugriff: 12.09.2023)
  1. Identifiziert Bauteile auf dem Calliope mini, mit denen wir unser Gewächshausprojekt realisieren können.
Zusammenfassung

Im folgenden Unterrichtsverlauf werden wir nach und nach die folgenden Sensoren und Aktoren für die jeweilige Funktionalität unseres Gewächshauses nutzen.

FunktionSensorAktor
Anzeigedisplay für verschiedene InformationenFunkmodul5×5 LED-Display, A-B-Buttons, Funkmodul
Lichtzufuhr regelnHelligkeitssensorServomotor, 5×5 LED-Display, A-B-Buttons
Heizung steuernTemperatursensorRGB LED und Servomotor, 5×5 LED-Display
Fenster öffnen/schließenCO2-Sensor, TemperatursensorServomotor, 5×5 LED-Display
BewässerungFeuchtigkeitssensorServomotor, 5×5 LED-Display
Luftfeuchtigkeit regulierenCO2-SensorRGB LED und Servomotor, 5×5 LED-Display

Nun wird es aber erst einmal darum gehen, wie man mit dem Calliope mini arbeitet.

Beim Programmieren denkt jeder sofort an wilde Codezeilen, welche bloß für Eingeweihte lesbar sind. Aber das ist nicht richtig. Programmierung ist erst einmal nur die Tätigkeit, eine Handlungsabfolge festzulegen, welche von einem Computer ausgeführt werden kann. Dieses kann auf ganz verschiedene Arten erfolgen.

So kann man entweder diese Anweisungen per Text eingeben (textuelle Programmierung) oder es gibt bereits vorgefertigte Bausteine, welche diese Anweisungen vorgeben. Mit einer dieser grafischen Programmierumgebungen werden wir starten und das Programmieren lernen.

Aber zunächst müssen wir einige Vorbereitungen treffen:

  1. Lade dir den Uploader hier herunter und starte ihn. Merke die, wo du diesen gespeichert hast. Du wirst ihn jedes Mal wieder starten müssen.
  2. Schließe den Calliope mini mit dem USB-Kabel am Computer an.
  3. Öffne die Website von OpenRoberta Lab.
  4. Klicke dort beim Calliope mini (blauer Kasten) auf "loslegen" (grüner Kasten) und nun kannst du programmieren.
  5. https://lab.open-roberta.org/ (Letzter Zugriff: 27.07.2024)
  6. Nun solltest du oben links auf die 2 klicken (Stern-Symbol, lila Kasten), um so mehr Blöcke zu erhalten. Wir werden immer in diesem erweiterten Modus programmieren.
  7. https://lab.open-roberta.org/ (Letzter Zugriff: 27.07.2024)
  8. Wenn du das Programm testen möchtest, dann klicke auf auf das kleine Pfeil-Symbol unten rechts oder klicke in der rechten Navigation auf den Button mit der Aufschrift "SIM", damit kannst du einen Calliope und das Programm simluieren.

Hinweis: Unter dem Abschnitt Hilfe, findest du Unterstützung für die einzelnen Teilaufgaben.
Denke daran, dass du von jedem Ergebnis ein Foto machst.

  1. (LED-Display) Wir versuchen nun, die Funktionsweise des 5x5 LED-Display zu verstehen.
    Erstelle ein Programm für den Calliope mini in OpenRoberta Lab, dass deinen Namen auf der LED-Matrix anzeigt.
  2. Erstelle weitere Programme, die aufg dem LED-Display etwas anzeigt, nämlich...
    1. Erstelle ein Programm für den Calliope mini, das einen glücklichen Smiley auf der LED-Matrix erscheinen lässt.
    2. Erstelle ein Programm für den Calliope mini, das zuerst einen glücklichen Smiley, dann einen unglücklichen Smiley auf der LED-Matrix erscheinen lässt.
    3. Beschreibe deine Beobachtungen zu Aufgabenteil (ii), sollte es nicht so laufen, wie gedacht. Überlege, wie Abhilfe geschaffen werden kann.
  3. Erstelle ein Programm, dass "Licht an" auf dem Display anzeigt, wenn der A-Button gedrückt wird und "Licht aus", wenn der B-Button gedrückt wird.
  4. Der Prozessor des Calliope mini enthält auch ein Funk-Modul für geringe Reichweiten. Dadurch kannst du dafür sorgen, dass mehrere Calliope mini miteinander kommunizieren. Dies kann z. B. nützlich sein, wenn verschiedene Steuerungskomponenten unseres Gewächshauses Informationen austauschen müssen. Die notwendigen Blöcke findest du im Bereich "Nachrichten", wenn du die zusätzlichen Blöcke aktiviert hast. Achtung, um miteinander kommunizieren zu können, müssen die beteiligten Calliopes im gleichen Funkkanal sein. Den Kanal muss man zu Beginn festlegen. Alle notwendigen Optionen findest du im Bereich "Nachrichten", wenn du die erweiterten Blöcke aktiviert hast.
    1. Jetzt musst du dir einen Partner oder eine Partnerin suchen. Programmiert eure Calliope mini so, dass ihr von dem einen Calliope auf den anderen eine bestimmte Textnachricht schicken könnt.
    2. Testet mit eurem Programm aus Aufgabe 1 wie weit das Signal reicht. Programmiert dann einen dritten Calliope, der ein empfangenes Signal (evtl. auf einem anderen Kanal) weiterleitet, so dass sich die Reichweite verdoppelt.

Was man macht, hängt häufig von bestimmten Bedingungen ab. Einen Regenschirm wird man dann einpacken, wenn Regen gemeldet ist und das Mathebuch kommt nur dann in die Schultasche, wenn man am Tag eine Mathestunde hat. Auch in der Programmierung hängt der weitere Programmverlauf oft von einer Entscheidungsfrage ab.

Da der Computer aber allein nicht in der Lage ist, „spontan“ auf eine Situation zu reagieren, kann eine bedingte Anweisung oder Entscheidungen genutzt werden. Durch diese kann schon während der Programmierung festgelegt werden, was beim Eintreten eines bestimmten Falles getan werden soll. Hierzu werden die folgenden Blöcke genutzt:

Du findest die Blöcke im Reiter „Kontrolle“ und hast sie bereits in Aufgabe 3 im vorherigen Abschnitt genutzt. Die Blöcke, die in den „wenn“-Teil eingehängt werden, werden nur dann ausgeführt, wenn die Bedingung erfüllt ist. Sofern ein „sonst“-Teil vorhanden ist, wird dieser nur dann ausgeführt, sofern die Bedingung nicht erfüllt ist. Dieser wenn...mache...sonst...-Block wird auch Verzweigung genannt. Als Bedingung können alle Blöcke verwendet werden, die eine hellblaue Nase haben. Hinweis: Eine Bedingung ist immer eine Ja-/Nein-Frage! Sie ist also entweder wahr oder falsch, komplexere Situationen müssen auf eine oder mehrere Ja-/Nein-Fragen heruntergebrochen werden.

Um mehrere Bedingungen zu prüfen, können auch mehrere bedingte Anweisungen geschachtelt werden.

Manchmal benötigt man auch logische Ausdrücke, wie z. B. den Block

Mit diesem Block kann man zwei gleichzeitig geltende Bedingungen verknüpfen. Es soll z. b. im Temperaturbereich von 0° bis 10° die LED grün leuchten. Dann stellt man zunächst die Bedingung nacheinander auf:

  1. Der aktuelle Temperaturwert soll unter 10° sein (den blauen Zahlenblock findest du unter dem Bereich "Mathematik":
  2. Der aktuelle Temperaturwert soll größer oder gleich 0° sein:
  3. Beide Bedingungen sollen gleichzeitig gelten:
  4. In die bedingte Anweisung einfügen:

Wenn noch weitere Aktionen ausgeführt werden sollen, z. B. von 10° bis unter 20°, kann man auch mit Entscheidungen oder Schachtelungen, wie in der untersten Abbildung auf der vorherigen Abschnitt arbeiten.

  1. Auf der LED-Matrix soll, je nach Wert des Helligkeitssensors, eine bestimmte Ausgabe erzeugt werden. Implementiere für jede Teilaufgabe ein entsprechendes Programm. Für die Lösung der Teilaufgaben kannst du die folgenden Grundprogramme nutzen:
    1. Wenn der Wert des Helligkeitssensors größer als 50% ist, soll die RGB-LED gelb leuchten.
    2. Wenn der Wert des Helligkeitssensors größer als 50% ist, soll die RGB-LED gelb, ansonsten blau leuchten.
    3. Wenn der Wert des Helligkeitssensors größer als 50% ist, soll die RGB-LED gelb leuchten. Ist der Helligkeitswert kleiner oder gleich 50% und gleichzeitig größer als 20%, soll die RGB-LED rot leuchten. Ansonsten soll sie blau leuchten.
  2. Unten sind verschiedene Lösungsvorschläge zu Aufgabenteil 1 c) abgebildet. Entscheide begründet, welche der Varianten korrekt sind und erläutere was bei den nicht korrekt arbeitenden Algorithmen zu Fehlern führt.
  1. Wenn der Pin 0 (die Pins sind die goldenen Kreise außen am Calliope und sie reagieren unter anderem auf Berührung) berührt wird, soll die RGB-LED kurz leuchten, bei Pin 1 grün, bei Pin 2 blau, bei Pin 3 gelb und sonst weiß. Drei Lösungsvorschläge sind im folgenden dargestellt.
    Analysiere die Programme hinsichtlich der Funktionalität und entscheide begründet, welches die effizienteste Lösung ist.
    Hinweis: Du kannst auf die Bilder klicken, um das Programm zu öffnen und zu testen.
  1. Mit zwei Calliopes soll ein Türschloss simuliert werden, welches von einem zweiten Gerät über Bluetooth geöffnet werden kann. Einer der Calliopes ist das Schloss und der andere das Eingabegerät. Es können nur einzelne Ziffern eingegeben werden.
    1. Die zum Öffnen des Schlosses zulässige PIN (Personal Identification Number) darf nur 123 sein.
    2. Die zum Öffnen des Schlosses zulässige PINs (Personal Identification Number) dürfen nur 123 oder 863 sein. Setze mit einer zweiten Person diese Funktionalität um.

Häufig soll eine bestimmte Sequenz des Quellcodes nicht nur einmal, sondern mehrfach ausgeführt werden. Dazu werden Schleifen genutzt. In Open Roberta werden wir uns mit drei verschiedenen Schleifen beschäftigen, die in zwei Kategorien - Zählschleifen und Bedingungsschleifen - aufgeteilt werden. Du findest die Schleifenblöcke ebenfalls im Reiter „Kontrolle“.

Eine bedingte Schleife hängt, ähnlich wie eine bedingte Anweisung, von einer Bedingung ab. Dabei kann gewählt werden, ob die Schleife die eingeschlossenen Blöcke wiederholen soll, bis eine bestimmte Bedingung wahr ist oder solange sie wahr ist. Eine Variante der Bedingungsschleife ist die Endlosschleife. Diese wiederholt die eingeschlossenen Blöcke bis der Calliope Mini keinen Strom mehr hat, wird also nie abgebrochen. Du hast diese Schleife wahrscheinlich in Aufgabe 2d) der Einstiegsaufgaben genutzt. Wenn du weißt, wie oft der Quelltext in der Schleife wiederholt werden soll, kann anstatt einer Bedingungsschleife auch eine Zählschleife genutzt werden. Diese wiederholt die eingeschlossenen Blöcke eine vordefinierte Anzahl mal, im Beispiel also 10-mal.

  1. Solange die Taste A gedrückt wird, soll die RGB-LED blau leuchten. Implementiere je ein Programm, welches entsprechend funktioniert, mit beiden bedingten Wiederholungen. Den "nicht"-Block kann man eventuell bei einer der Wiederholungsarten nutzen.
  2. Wenn das Programm startet, soll fünfmal das folgende passieren: Die RGB-LED soll kurz rot und anschließend blau leuchten. Am Ende des Programms soll die RGB-LED ausgeschaltet werden. Implementiere je ein Programm, welches entsprechend funktioniert, mit beiden Zählschleifen.
    1. (Zusatz) Das Programm mit der rechten Zählschleife soll mit der Schrittweite 2 arbeiten.
  3. Beim Joggen im Dunkeln ist es sinnvoll, sich mit einer Lampe kenntlich zu machen. Die RGB-LED soll nur leuchten, wenn man joggt.
    Der Block
    gib den aktuellen Wert der Beschleunigung in Milli g, also Tausendstel der Erdbeschleunigung, zurück.
    Im Hinteren Dropdown-Menü kann man zwischen der gemessenen Beschleunigung in x-Richtung (links/rechts), y-Richtung (vorne/hinten) und z-Richtung (oben/unten) umschalten. Der Sensor kann damit die Beschleunigung in allen drei Dimensionen messen.
    1. Lass dir den aktuellen Wert der Beschleunigung nach oben/unten auf dem LED-Display anzeigen, wenn der Calliope ruhig auf dem Tisch liegt. Interpretiere den angezeigten Wert.
      Hinweis: Vergleiche den angezeigten Wert mit der Erdbeschleunigung von 9,81 m/s².
    2. Implementiere mithilfe des Beschleunigungssensors eine solche Jogging-Leuchte. Die Lampe darf eine Zeit lang angeschaltet bleiben, da man ja beim Joggen gelegentlich auch eine kleine Pause einlegt.
      Du sollst bei deinem Programm auf jeden Fall eine bedingte Wiederholung (wiederhole solange) nutzen.

Im Fdolgenden sind einige Lernstationen beschrieben, wo mithilfe verschiedener Sensoren und Aktoren Probleme gelöst werden müssen. Suche dir mindestens 2 Stationen aus, die du bearbeiten möchtest. Dokumentieren hier auch deinen Fortschritt.