Analyse von Umweltdaten: Unterschied zwischen den Versionen

Aus Unterrichtsmaterial
Wechseln zu:Navigation, Suche
(Phase 2_Beschreibung)
Zeile 238: Zeile 238:
  
 
*eine SD-Karte eingesteckt ist
 
*eine SD-Karte eingesteckt ist
 +
*alle Sensoren und die Clock angeschlossen sind
 
*die Sensebox über eine Stromversorgung (externer Akku, "direkt aus der Steckdose",...) verfügt
 
*die Sensebox über eine Stromversorgung (externer Akku, "direkt aus der Steckdose",...) verfügt
 
*die Sensebox eingeschaltet ist (erkennbar an einer grün leuchtenden Lampe)
 
*die Sensebox eingeschaltet ist (erkennbar an einer grün leuchtenden Lampe)
Zeile 252: Zeile 253:
 
5d5d1209953683001a3f93f9,61.23,2019-09-04T21:30:30.000Z,12.00,42.00,0.00
 
5d5d1209953683001a3f93f9,61.23,2019-09-04T21:30:30.000Z,12.00,42.00,0.00
 
...
 
...
</syntaxhighlight>Die erste Zeile entspricht immer einer "Tabellenkopfzeile", was im wesentlichen der Übersichtlichkeit dienen soll. Jeder Messeintrag beginnt dann mit der SensorID, die nur bei Registrierung der Sensebox auf der OpenSenseMap vergeben wird (Das ist optional. Falls dies interessant ist, geht es [https://www.youtube.com/watch?v=LtGrribDAho hier] ein Tutorial zur Einrichtung). Ist die SensorID unbekannt, kann man hier einfach 000 eintragen. Nach der SensorID folgt der gemessene Wert (beim Temperatur-/Luftfeuchtigkeitssensor z.B. die aktuelle Temperatur in °C)
+
</syntaxhighlight>Die erste Zeile entspricht immer einer "Tabellenkopfzeile", was im wesentlichen der Übersichtlichkeit dienen soll. Jeder Messeintrag beginnt dann mit der SensorID, die nur bei Registrierung der Sensebox auf der OpenSenseMap vergeben wird (Das ist optional. Falls dies interessant ist, geht es [https://www.youtube.com/watch?v=LtGrribDAho hier] ein Tutorial zur Einrichtung). Ist die SensorID unbekannt, kann man hier einfach 000 eintragen. Nach der SensorID folgt der gemessene Wert (beim Temperatur-/Luftfeuchtigkeitssensor z.B. die aktuelle Temperatur in °C). Anschließend wird der Zeitpunkt, zu dem der Wert gemessen wurde, angegeben - und zwar wie im Beispiel 04.09.2019, 21:30:30.000 → 2019-09-04T21:30:30.000Z. Zuletzt folgen noch Longitude, Latitude und Hight des Standorts, an dem die Box aufgestellt wird. Diese drei letzten Angaben sollten die SuS fest in den Programmcode schreiben, indem sie sie zuvor recherchieren. Wichtig: Falls die Box während der Datensammlung umgestellt werden sollte, muss zunächst ein anderer Code mit den aktualisierten Positionsangaben auf die Sensebox geladen werden.
 +
 
 +
In '''Variante B''' sollten abhängig von der Boxnummer (befindet sich als Sticker auf der Sensebox) folgende Codes auf die Sensebox geladen seinn, bevor die SuS die Senseboxen aufstellen:
 +
{| class="wikitable"
 +
|+Programmcodes für die einzelnen Senseboxen
 +
|Box 1
 +
|Code folgt noch
 +
|-
 +
|Box 2
 +
|Code folgt noch
 +
|-
 +
|Box 3
 +
|Code folgt noch
 +
|-
 +
|Box 4
 +
|Code folgt noch
 +
|}
 +
Aber auch für '''Variante A''' könnten diese Codes hilfreich sein, falls die SuS an einer Stelle beim Programmieren nicht weiterkommen und in den fertigen Dateien schauen wollen, wie man ein bestimmtes Problem lösen könnte.
  
 
====Verlauf====
 
====Verlauf====
Zeile 267: Zeile 285:
 
Da im weiteren Verlauf der Unterrichtsreihe innerhalb von Juptyer Notebooks programmiert werden soll und zudem die Datentypen aus der pandas-Bibliothek genutzt werden, gibt es hierzu zwei Notebooks ([https://unterrichtsmaterial-ddi.cs.upb.de/jhub/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgit.cs.upb.de%2Fwiki%2Fjupyternotebooks&urlpath=tree%2Fjupyternotebooks%2F&branch=datenauswertung Einführung Jupyter Notebooks] und [https://unterrichtsmaterial-ddi.cs.upb.de/jhub/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgit.cs.upb.de%2Fwiki%2Fjupyternotebooks&urlpath=tree%2Fjupyternotebooks%2F&branch=datenauswertung Nützliche Datentypen in Python] NOCH NICHT AKTUELL), die einem ähnlichen Prinzip folgen, wie der Python-Online-Kurs der University of Waterloo: Auch hier gibt es zunächst erklärende Texte, bevor die SuS "Code-Blöcke" eigenständig erstellen bzw. ergänzen müssen, um gestellte Aufgaben zu lösen.
 
Da im weiteren Verlauf der Unterrichtsreihe innerhalb von Juptyer Notebooks programmiert werden soll und zudem die Datentypen aus der pandas-Bibliothek genutzt werden, gibt es hierzu zwei Notebooks ([https://unterrichtsmaterial-ddi.cs.upb.de/jhub/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgit.cs.upb.de%2Fwiki%2Fjupyternotebooks&urlpath=tree%2Fjupyternotebooks%2F&branch=datenauswertung Einführung Jupyter Notebooks] und [https://unterrichtsmaterial-ddi.cs.upb.de/jhub/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgit.cs.upb.de%2Fwiki%2Fjupyternotebooks&urlpath=tree%2Fjupyternotebooks%2F&branch=datenauswertung Nützliche Datentypen in Python] NOCH NICHT AKTUELL), die einem ähnlichen Prinzip folgen, wie der Python-Online-Kurs der University of Waterloo: Auch hier gibt es zunächst erklärende Texte, bevor die SuS "Code-Blöcke" eigenständig erstellen bzw. ergänzen müssen, um gestellte Aufgaben zu lösen.
  
Die SuS sollen sowohl den Python-Online-Kurs als auch die beiden Jupyter Notebooks selbstständig bearbeiten. Der Python-Online-Kurs sollte nach etwa ??? Unterrichtsstunden abgeschlossen werden, und die beiden Notebooks in - zusammengenommen - ??? Unterrichtsstunden. Es bietet sich an, zum Beginn und zum Ende jeder Unterrichtseinheit etwa 5-10 Minuten für allgemeine Fragen der SuS einzuplanen, die im Plenum diskutiert und beantwortet werden können.
+
Die SuS sollen sowohl den Python-Online-Kurs als auch die beiden Jupyter Notebooks selbstständig bearbeiten. Der Python-Online-Kurs sollte nach etwa 4 Unterrichtsstunden abgeschlossen werden, und die beiden Notebooks in - zusammengenommen - 2 Unterrichtsstunden. Es bietet sich an, zum Beginn und zum Ende jeder Unterrichtseinheit etwa 5-10 Minuten für allgemeine Fragen der SuS einzuplanen, die im Plenum diskutiert und beantwortet werden können.
  
 
====Verlauf====
 
====Verlauf====

Version vom 17. Februar 2020, 15:30 Uhr

Beschreibung der Unterrichtsreihe


Vorbereitende Schritte zur Programmierunng der Sensebox

Generell ist es wichtig zu wissen, dass man die Sensebox auf zwei verschiedene Arten programmieren kann:

  1. über eine "Block-Sprache" auf der Blockly-Programmierwebsite
  2. über die Arduino-Software (Download unter diesem Link)

Zu 1.: Der Vorteil bei dieser Variante ist, dass man die Sensebox lediglich anschließen muss und den von der Website exportierten Code lediglich per "Drag and Drop" auf die Sensebox laden muss. Ein Videotutorial gibt es hier (bis 8:43 min).

Falls man mit den SuS bereits auf den Arduino-Quellcode hinarbeiten möchte, sollte man beachten, dass der zum "Block-Code" gehörende Arduino Quellcode auf der Blockly-Programmierwebsite stets rechts im Fenster angezeigt wird. Dies kann insbesondere auch dann hilfreich sein, wenn die Kompilierung über die Website nicht funktioniert. In diesem Fall kann man den im Fenster angezeigten Code auch in die Arduino-Software kopieren und von dort aus kompilieren.

Zu 2.: Hierbei kann man die Sensebox durch einen Arduino-Code komplett frei programmieren. Der Vorteil hierbei ist, dass man den Code wesentlich individueller schreiben kann und so auf die eigenen Wünsche zuschneiden kann. Allerdings müssen bei dieser Variante einige Programme/Plugins zuvor installiert werden. Eine gute Anleitung hierzu bietet das senseBox:edu Buch in folgenden vier Abschnitten:

Ein Videotutorial, welches auch das Laden eines Programms auf die Sensebox beinhaltet, gibt es hier. Wichtig dabei: Im Video wird ein bereits fertiger Code von der OpenSenseMap in die Arduino-Software eingefügt. Das Hochladen für selbst geschriebenen Code funktioniert aber genauso.

Geplanter Verlauf der Unterrichtsreihe

Diese Unterrichtsreihe lässt sich in zwei verschiedenen Varianten durchführen. Abhängig davon sind auch Lernziele und Dauer der Unterrichtsreihe.

In Variante A steht neben der Auswertung der Daten (in Jupyter Notebooks) auch die Programmierung der Messinstrumente (Senseboxen) im Vordergrund. Hierzu wird ca. eine Unterrichtsstunde benötigt, in der sich die SuS mit der Sensebox vertraut machen sowie zwei weitere, in denen sie die Sensebox in Abhängigkeit von ihrer Fragestellung programmieren.

Geplanter Verlauf der Unterrichtsreihe (Variante A)
Phase Inhalt Umfang
1 Einführung in das Projekt

Einführung in das Messinstrument "Sensebox"

Generieren einer Fragestellung für die geplante datengeriebene Analyse

2 Schulstunden
2 Erstellung und Testung des Messinstruments

Aufstellen der Messstation an ausgewählten Standorten

3 Schulstunden
3 Einführungskurs in Python 6 Schulstunden
4 Einsammeln der Senseboxen

Verteilen der gesammelten Daten

Datenauswertung mithilfe der Jupyter Notebooks

3 Schulstunden
5 Abschluss des Projektes:
  • Ergebnisvorstellung
  • Interpretation: Was bedeuten die Ergebnisse für uns ?
    • Diskussion von gesellschaftlichen Implikationen
1 Schulstunde

Alternativ kann können die SuS auch eine bereits fertig programmierte Sensebox nutzen, die die Werte für Feinstaub (PM2.5), Temperatur und Luftfeuchtigkeit in jeweils separaten .csv-Dateien auf einer SD-Karte speichert. Auf diese Weise fällt in dieser Variante B im Gegensatz zu Variante A in Phase 1 die Einführung in das Messinstrument "Sensebox" sowie in Phase 2 die Erstellung und Testung des Messinstruments weg, sodass sich der Umfang der Reihe um 3 Schulstunden reduziert. Folglich ergibt sich folgender Ablauf:

Geplanter Verlauf der Unterrichtsreihe (Variante B)
Phase Inhalt Umfang
1 Einführung in das Projekt

Generieren einer Fragestellung für die geplante datengeriebene Analyse

1 Schulstunde
2 Aufstellen der Messstation an ausgewählten Standorten 1 Schulstunde
3 Einführungskurs in Python 6 Schulstunden
4 Einsammeln der Senseboxen

Verteilen der gesammelten Daten

Datenauswertung mithilfe der Jupyter Notebooks

3 Schulstunden
5 Abschluss des Projektes:
  • Ergebnisvorstellung
  • Interpretation: Was bedeuten die Ergebnisse für uns ?
    • Diskussion von gesellschaftlichen Implikationen
1 Schulstunde

Einzelne Phasen der Unterrichtsreihe

Phase 1: Einführung in das Projekt und Generieren einer Fragestellung für die geplante datengetriebene Analyse

Beschreibung der Phase

In dieser Phase soll den SuS das Projekt bzw. Vorhaben vorgestellt werden. Sie sollen dabei eine eigene Fragestellung entwickeln, der sie in der nachfolgenden Datenanalyse nachgehen wollen. Beispiele für Fragestellungen wären beispielsweise:

  • Zu welcher Uhrzeit ist die Feinstaubbelastung an der Schule am höchsten ?
  • Wie viel Feinstaub produzieren verschiedene Autotypen (z.B. Diesel- vs. Benzinauto) ?
  • Wie oft/Wann überschreitet die Feinstaubbelastung an unserer Schule EU-Grenzwerte ?

Bei der Durchführung von Variante A (mit Programmierung der Sensebox) sollen die SuS zudem die Sensebox kennenlernen und erste kleinere Programmierprojekte mit Ihr durchführen.

Verlauf

Variante A (Mit Programmierung der Sensebox)
Abschnitt Inhalt Methode Material
Einstieg

(10 min)

  • Diskussion:
    • "In Fernsehberichten werden oftmals Temperaturen/Werte für Luftfeuchtigkeit/Feinstaub erwähnt."
    • "Wie werden diese Daten erhoben ?"
      • Der Kurs sollte auf Wetterstationen o.Ä. kommen, die Temperatur ect. messen.
    • "So etwas wollen wir auch erstellen und die gesammelten Daten dann analysieren.
    • Hierzu gucken wir uns die Sensebox an."
  • Unterrichtsprojekt wird anhand des Projektplakates vorgestellt
Unterrichtsgespräch Projektplakat
Erarbeitung

(45 min)

Die SuS arbeiten
  • die Lernkarten SB01-SB07, SB12, GI01, GI02, GI03
  • Die Projektübersicht der Feinstaubmessstation (dabei bei der Programmierung nur Schritt 1 und 2)

durch und programmieren die Sensebox so, dass die vom Temperatursensor

aktuell gemessene Temperatur angezeigt wird (wie auf der Lernkarte SB07).

Einzel-/Partnerarbeit Lernkarten zur Sensebox;

Projektübersicht der Feinstaubmessstation

Blockly-Programmierwebsite

bzw. Arduino-Software

Sensebox

Sicherung

(10 min)

Offene Fragen der SuS werden diskutiert und beantwortet Plenum Blockly-Programmierwebsite

Sensebox

Erarbeitung

(20 min)

Die SuS teilen sich in zwei Gruppen auf.

Innerhalb des Notebooks "Teil 1: Fragestellung" hält jede Gruppe ihre Fragen fest, der sie mithilfe

der Datenerhebung nachgehen wollen.

Gruppenarbeit Jupyter Notebook "Teil 1: Fragestellung"
Sicherung

(5 min)

Beide Gruppen stellen ihre Fragestellungen im Plenum vor. Plenum Jupyter Notebook "Teil 1: Fragestellung"

Anmerkung zum Programmieren der Sensebox:

Es kann zunächst sinnvoll sein, in diesem Unterrichtsabschnitt noch die Blockly-Programmierumgebung zu nutzen. Falls man bereits auf den Arduino-Quellcode mit den SuS hinarbeiten möchte, sollte man beachten, dass der zum "Block-Code" gehörende Arduino Quellcode auf der Blockly-Programmierwebsite stets rechts im Fenster angezeigt wird. Dies kann insbesondere auch dann hilfreich sein, wenn die Kompilierung über die Website nicht funktioniert. In diesem Fall kann man den im Fenster angezeigten Code auch in die Arduino-Software übertragen und von dort aus kompilieren.

Variante B (Ohne Programmierung der Sensebox)
Abschnitt Inhalt Methode Material
Einstieg

(10 min)

  • Diskussion:
    • "In Fernsehberichten werden oftmals Temperaturen/Werte für Luftfeuchtigkeit/Feinstaub erwähnt."
    • "Wie werden diese Daten erhoben ?"
      • Der Kurs sollte auf Wetterstationen o.Ä. kommen, die Temperatur ect. messen.
    • "So etwas wollen wir auch erstellen und die gesammelten Daten dann analysieren.
    • Hierzu gucken wir uns die Sensebox an."
  • Unterrichtsprojekt wird anhand des Projektplakates vorgestellt
Unterrichtsgespräch Projektplakat
Erarbeitung

(20 min)

Die SuS teilen sich in zwei Gruppen auf.

Innerhalb des Notebooks "Teil 1: Fragestellung" hält jede Gruppe ihre Fragen fest, der sie mithilfe

der Datenerhebung nachgehen wollen.

Gruppenarbeit Jupyter Notebook "Teil 1: Fragestellung"
Sicherung/

Diskussion

(15 min)

Beide Gruppen stellen ihre Fragestellungen im Plenum vor.

Gemeinsam wird zudem überlegt, an welchen Stellen die Senseboxen aufgestellt werden sollen

und in welchem Zeitraum - ein Wechsel des Standorts ist auch möglich und meistens sinnvoll.

Plenum Jupyter Notebook "Teil 1: Fragestellung"

Benötigte Materialien

Phase 2: Erstellung und Testung des Instruments

Beschreibung der Phase

Das Ziel dieser Phase ist es, dass die SuS die Senseboxen an ausgewählten Standorten aufstellen, sodass die Datensammlung beginnen kann. Hierzu empfiehlt es sich, zusammen mit den SuS loszugehen und darauf zu achten, dass die Senseboxen korrekt aufgestellt werden. Dabei sollte darauf geachtet werden, dass...

  • eine SD-Karte eingesteckt ist
  • alle Sensoren und die Clock angeschlossen sind
  • die Sensebox über eine Stromversorgung (externer Akku, "direkt aus der Steckdose",...) verfügt
  • die Sensebox eingeschaltet ist (erkennbar an einer grün leuchtenden Lampe)
  • alle Komponenten so gelagert sind, dass sie möglichst nicht von anderen Personen berührt werden können und nicht herunterfallen können etc. Hierbei können Hinweisschilder für Außenstehende sehr hilfreich sein damit man sich nicht wundert, worum es sich bei den aufgestellten "Kästen" handelt.

In Variante A sollen die SuS zudem die Sensebox eigenständig programmieren, sodass die Daten gesammelt werden können. Angeschlossen werden sollten dabei

  • die benötigten Sensoren
  • die Clock
  • eine SD-Karte

Beim Sammeln der Daten soll für jede Messgröße eine eigene csv-Datei auf der angeschlossenen SD-Karte angelegt werden. Wichtig ist hier, dass das Format der Daten in der .csv-Datei korrekt ist. Das Format hat dabei folgende Form:

sensorID,value,timestamp,longitude,latitude,hight
5d5d1209953683001a3f93f9,61.23,2019-09-04T21:30:30.000Z,12.00,42.00,0.00
...

Die erste Zeile entspricht immer einer "Tabellenkopfzeile", was im wesentlichen der Übersichtlichkeit dienen soll. Jeder Messeintrag beginnt dann mit der SensorID, die nur bei Registrierung der Sensebox auf der OpenSenseMap vergeben wird (Das ist optional. Falls dies interessant ist, geht es hier ein Tutorial zur Einrichtung). Ist die SensorID unbekannt, kann man hier einfach 000 eintragen. Nach der SensorID folgt der gemessene Wert (beim Temperatur-/Luftfeuchtigkeitssensor z.B. die aktuelle Temperatur in °C). Anschließend wird der Zeitpunkt, zu dem der Wert gemessen wurde, angegeben - und zwar wie im Beispiel 04.09.2019, 21:30:30.000 → 2019-09-04T21:30:30.000Z. Zuletzt folgen noch Longitude, Latitude und Hight des Standorts, an dem die Box aufgestellt wird. Diese drei letzten Angaben sollten die SuS fest in den Programmcode schreiben, indem sie sie zuvor recherchieren. Wichtig: Falls die Box während der Datensammlung umgestellt werden sollte, muss zunächst ein anderer Code mit den aktualisierten Positionsangaben auf die Sensebox geladen werden.

In Variante B sollten abhängig von der Boxnummer (befindet sich als Sticker auf der Sensebox) folgende Codes auf die Sensebox geladen seinn, bevor die SuS die Senseboxen aufstellen:

Programmcodes für die einzelnen Senseboxen
Box 1 Code folgt noch
Box 2 Code folgt noch
Box 3 Code folgt noch
Box 4 Code folgt noch

Aber auch für Variante A könnten diese Codes hilfreich sein, falls die SuS an einer Stelle beim Programmieren nicht weiterkommen und in den fertigen Dateien schauen wollen, wie man ein bestimmtes Problem lösen könnte.

Verlauf

Benötigte Materialien

Phase 3: Einführungskurs in Python

Beschreibung der Phase

Diese Phase sollte durchgeführt werden, während die Daten mithilfe der aufgestellten Senseboxen gesammelt werden. So wird ein genügend großer Zeitraum für die Datensammlung gewährt.

In dieser Phase sollen die SuS die Grundlagen von Python erlernen. Dazu durchlaufen die SuS den Python-Online-Kurs der University of Waterloo (Link). Hier werden grundlegende Aspekte der Programmiersprache schrittweise erarbeitet, indem für jedes "Programmierkonstrukt" zunächst ein erläuternder Text gegeben wird und die SuS dann das neu erworbene Wissen selbst anwenden müssen und eigenständig in "Code-Blöcken" bestimmte Programmieraufgaben lösen müssen.

Da im weiteren Verlauf der Unterrichtsreihe innerhalb von Juptyer Notebooks programmiert werden soll und zudem die Datentypen aus der pandas-Bibliothek genutzt werden, gibt es hierzu zwei Notebooks (Einführung Jupyter Notebooks und Nützliche Datentypen in Python NOCH NICHT AKTUELL), die einem ähnlichen Prinzip folgen, wie der Python-Online-Kurs der University of Waterloo: Auch hier gibt es zunächst erklärende Texte, bevor die SuS "Code-Blöcke" eigenständig erstellen bzw. ergänzen müssen, um gestellte Aufgaben zu lösen.

Die SuS sollen sowohl den Python-Online-Kurs als auch die beiden Jupyter Notebooks selbstständig bearbeiten. Der Python-Online-Kurs sollte nach etwa 4 Unterrichtsstunden abgeschlossen werden, und die beiden Notebooks in - zusammengenommen - 2 Unterrichtsstunden. Es bietet sich an, zum Beginn und zum Ende jeder Unterrichtseinheit etwa 5-10 Minuten für allgemeine Fragen der SuS einzuplanen, die im Plenum diskutiert und beantwortet werden können.

Verlauf

Eine grobe Skizze des Unterrichtsverlaufs: Die SuS arbeiten dauerhaft in Einzel-/Partnerarbeit am Online-Kurs bzw. an den Jupyter-Notebooks. Am Anfang/Ende jeder Einheit sollten etwa 10 min für Fragen eingeplant werden, die im Plenum diskutiert und beantwortet werden sollen.

Hausaufgabe sollte es stets sein, zu Hause 30 min am Online-Kurs/an den Jupyter-Notebooks zu arbeiten.

Abschnitt Inhalt Methode Material
Erarbeitung

(4 Unterrichtsstunden)

Die SuS erarbeiten sich eigenständig Grundlagen der Programmiersprache Python,

indem sie den Python-Online-Kurs der University of Waterloo durchlaufen

Einzel-/Partnerarbeit Python-Online-Kurs der University of Waterloo
Erarbeitung

(15 min)

Die SuS erarbeiten sich eigenständig Grundlagen in der Arbeit mit Jupyter Notebooks,

indem sie das Jupyter Notebook "Einführung in Jupyter Notebooks" durchlaufen

Einzel-/Partnerarbeit Jupyter Notebook "Einführung in Jupyter Notebooks"
Erarbeitung

(75 min)

Die SuS erarbeiten sich eigenständig die Datentypen list, Series und DataFrame,

indem sie das Jupyter Notebook "Nützliche Datentypen in Python" durchlaufen

Einzel-/Partnerarbeit Jupyter Notebook "Nützliche Datentypen in Python"

Benötigte Materialien

Python-Online-Kurs der University of Waterloo (Link: https://cscircles.cemc.uwaterloo.ca/de/)

Jupyter Notebook: Einführung in Jupyer Notebooks (NOCH NICHT AKTUELL)

Jupyter Notebook: Nützliche Datentypen in Python (NOCH NICHT AKTUELL)