Kriterien für das Projekt
Bevor ich mit der Entwicklung anfing, stellte ich einige Kriterien zusammen, denen ich bei der Entwicklung erreichen will. Aus einige dieser Kriterien ergeben sich bestimmte Entscheidungen, die ich hier auch diskutieren will.
Zum Abschluss findet sich eine Roadmap der Entwicklung.
Allgemeines zum Projekt, Wahl der Oberflächen und Programmiersprachen
Die Kosten der Hard- und Software sollte möglichst gering sein. Durch Verwendung der Arduino-Plattform ist dies gegeben, zumal dieses Projekt Open Source ist und dies auch Drittanbietern ermöglichte, kostengünstige Kopien herzustellen. Der Kostengrund war auch Grundlage der Entscheidung, als Bautyp den Arduino Nano zu verwenden, der in der Arduinoreihe besonders günstig ist, dennoch über eine Vielzahl von digitalen und analogen Ausgängen verfügt und hinsichtlich des vorhandenen Speichers und der Rechengeschwindigkeit für den Schulgebrauch ausreicht. Da der Arduino jedoch nicht zur Darstellung der Daten geeignet ist, muss hierfür eine Software entwickelt werden, diese sollte auf einem PC und idealerweise auch auf einem Raspberry Pi laufen.
Das Projekt soll nach Fertigstellung quelloffen zur Verfügung gestellt werden. Das hat logischerweise zur Folge, dass
- es modular programmiert werden sollte, um Änderungen und Erweiterungen zu vereinfachen,
- der Quelltext in Anbetracht der Zielgruppe (Physiklehrende) in einer einfachen Programmiersprache verfasst sein sollte,
- ein einfacher Transfer auf verschiedene Betriebssysteme möglich sein sollte,
- nur Bibliotheken von Drittanbietern verwendet werden dürfen, die ebenfalls quelloffen sind.
Deswegen fiel meine Entscheidung, die PC-Software in Python zu entwickeln.
Viele mögliche Einsatzbereiche und Ausgabemöglichkeiten
Das Projekt soll geeignet sein, in Demonstrations- und Schüler/innen-Experimenten eingesetzt zu werden.
Mittels der Software sollten auch händisch Daten aufgenommen werden können. In der Praxis sind mehrere Szenarien denkbar:
- rein händische Datenaufnahme (z.B. Temperatur-Zeit-Kurve),
- händische und elektronische Datenaufnahme (z.B. Lichtintensität elektronisch, Abstand Lichtquelle-Sensor händische Messung) und
- voll elektronische Datenaufnahme (z.B. Weg und Zeit bei einer beschleunigten Bewegung).
Alle drei Szenarien sollten bedient werden können.
Die Darstellungssoftware sollte eine Vielzahl von Ausgabemöglichkeiten besitzen. In einer sinnvollen Reihenfolge wären dies:
- Live-Ausgabe von Messwerten, ggf. mit „Gedächtnis“, d.h. die letzten drei Messwerte bleiben stehen, sodass die Schülerinnen und Schüler (SuS) genug Zeit haben, die Messwerte zu notieren.
- Liste von Messwert-Paaren. Alle Messwertpaare werden aufgelistet, die SuS können sie am Ende abschreiben.
- Messwert-Tabelle zum Abschreiben.
- Messwert-Tabelle im Excel-Format.
- Messwert-Tabelle im CSV-Format.
- Plot der Messwerte in Diagramm.
- Plot der Messwerte mit Angleichskurve (Fit).
- Gliederung eines Protokolls mit Hinweisen zum Inhalt. Messwert-Tabellen und Plots sind auch schon an geeigneter Stelle eingefügt. Die Datei liegt im Word-Format vor. Herzlichen Dank an Jonas Klimmt für diese Idee.
Lehrerinnen und Lehrer (LuL) sollen selbst entscheiden können, welche dieser Darstellungsformen den SuS zur Verfügung stehen. Daher sollten zu jedem Experiment die entsprechenden Einstellungen vorher von den LuL gemacht werden und in einem entsprechenden Format gespeichert werden. Zur Zeit favorisiere ich das XML-Format, ggf. ist auch das JSON-Format denkbar.
Oberflächengestaltung der PC-Software
Bezüglich der Oberflächengestaltung sind zwei Möglichkeiten denkbar:
- Eine komplexe Oberfläche, die LuL bei Demonstrationsexperimenten einsetzen können, ohne vorher eine XML-Datei erstellen zu müssen.
- Eine einfache, „fool-proof“ Oberfläche für SuS. Diese kann linear gestaltet werden (z.B. Messung starten, danach Datenausgabe als XLS-Tabelle und Plot). Eine solche Oberfläche kann auch bei Demonstrationsexperimenten hilfreich sein, da alle Entscheidungen vorher zu fällen sind und die LuL nicht erst Punkte in Untermenüs finden müssen.
Daher wird zuerst die einfache Oberfläche erstellt. Die komplexe Oberfläche ist m.E. ein Nice-to-have-Feature.
Berechnungen und Fit-Kurven
Ggf. müssen für die Datenauswertung bzw. -darstellung Berechnungen durchgeführt werden (z.B. die Darstellung einer Konstantan-Widerstands-Kennlinie in einem 1/I(1/U)-Diagramm, da dann der Widerstand als Anstieg der Ausgleichsgerade ablesbar ist. Formeln zur Berechnung sind in der Infix-Notation wegen diverser Rechenregeln (Punkt-vor-Strichrechnung, Klammern etc.) nur schwer umsetzbar. Jedoch können Berechnungen einfach und eindeutig in der Postfix-Notation (umgekehrte polnische Notation) definierbar. Daher werden diese Berechnungen auf diesem Wege ausgeführt.
Folgende Funktionen sind auf Schulniveau für Fits physikalisch sinnvoll:
- Polynominale bis zum vierten Grad
- Sin/Cos
- Exponentielles Wachstum
- Exponentielle Verminderung
- Exponentielle Verminderung von Schwingungsamplituden
Weitere könnten noch hinzukommen.
Arduino IDE
Zur Entwicklung von Experimenten, die den Arduino zur Datenaufnahme nutzen, ist die Arduino IDE unumgänglich. Jedoch sollte ein Weg gefunden werden, die kompilierten Sketches (Arduino-Programme) ohne die IDE oder andere Programme allein mit dem Python-Skript hochzuladen. Dies hat jedoch nicht die größte Priorität.
Referenzexperimente
Folgende Referenzexperimente sind zunächst geplant:
- Aufnahme einer Temperatur-Kurve der Erwärmung von Wasser von ca. 0 °C bis ca. 100 °C.
- Kinematische Messungen mit dem Ultraschallsensor (insbes. beschleunigte Bewegung)
- Federschwinger
- Auf- und Entladekurve eines Kondensators