Wetterstation: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K →Ziel |
|||
Zeile 76: | Zeile 76: | ||
<ol> | <ol> | ||
<li>[[Schleifen|beim Start]] <spoiler text="Block *"> <pre id=mc00>leer</pre> <br/><br/> <span style="color:#FFFFFF; background:#717171">* Der Block "leer" wird systembedingt mit angezeigt. </spoiler> | <li>[[Schleifen|beim Start]] <spoiler text="Block *"> <pre id=mc00>leer</pre> <br/><br/> <span style="color:#FFFFFF; background:#717171">* Der Block "leer" wird systembedingt mit angezeigt. </spoiler> | ||
<li>[[ | <li>[[LED|zeige LEDs]] <spoiler text="Block *"> <pre id=mc02>basic.showLeds(`. . . . . . . . . . . . # . . . . . . . . . . . .`)</pre> <br/><br/> <span style="color:#FFFFFF; background:#1E90FF">* Der Block "beim Start" wird systembedingt mit angezeigt.</span> </spoiler> | ||
<li>pausiere <spoiler text="Block"> <pre id=mc01>basic.pause()</pre> <br/><br/> <span style="color:#FFFFFF; background:#1E90FF">* Der Block "beim Start" wird systembedingt mit angezeigt.</span> </spoiler> | <li>pausiere <spoiler text="Block"> <pre id=mc01>basic.pause()</pre> <br/><br/> <span style="color:#FFFFFF; background:#1E90FF">* Der Block "beim Start" wird systembedingt mit angezeigt.</span> </spoiler> | ||
<li>[[Schleifen|wenn Knopf A gedrückt]] <spoiler text="Block"> <pre id=mc03>input.onButtonPressed(Button.A, function () {})</pre></spoiler> | <li>[[Schleifen|wenn Knopf A gedrückt]] <spoiler text="Block"> <pre id=mc03>input.onButtonPressed(Button.A, function () {})</pre></spoiler> |
Version vom 29. Dezember 2021, 17:18 Uhr
Template, muss noch geändert werden
Luftfeuchtigkeit und Raumtemperatur exakt messen, geht das?
- „Sag mal Bernhard, sind dein Augen auch so trocken?“
- „Ja, eigentlich schon! Ich glaube, das muss wohl am ständigen Heizen in der kalten Jahreszeit liegen. Was meinst du, Martina?“
- „Ja, genau. Das könnten wir doch gleich einmal messen. Meinst du das geht mit dem micro:bit?“
- „Martina, das geht schon. Einfach einen externen Sensor an den micro:bit anhängen und schon können wir Luftfeuchtigkeit und Temperatur messen. Mit ein paar Krokoklemmen-Kabeln ist das gleich erledigt.
- „Wenn das so einfach geht, dann lass uns das doch gleich ausprobieren, Bernhard. Einverstanden?“
Aufgabenstellung
- Der BBC micro:bit dient als Messgerät für die Luftfeuchtigkeit und Raumtemperatur ohne dabei die CPU Abwärme mit zu messen.
- Sobald der micro:bit mit Strom versorgt ist und sich an die Umgebungstemperatur angepasst hat, misst er dauerhaft und zeigt den Messwert als Graph in der Konsole.
- Wird die Taste A gedrückt, zeigt er den Wert der Temperatur als Zahl.
- Wird die Taste B gedrückt, zeigt er den Wert der Luftfeuchtigkeit als Zahl.
<spoiler>
- Zur Ermittlung der Luftfeuchtigkeit und Temperatur wird eine digitale Schaltung aufgebaut.
- Dazu wird ein Stromkreis mit Krokoklemmen und Sensoren (Bauteil DHT11/ DHT22) aufgebaut.
- Der Strom vom micro:bit gelangt über Kabel an die Sensoren im Bauteil und wieder zurück an einen Stromeingang des micro:bit.
- Es kann nun der Bauteil angesteuert werden und je nach Funktion die aktuelle Temperatur oder die gemessene Luftfeuchtigkeit angezeigt werden.
- Dieser Wert wird auch als Graph auf Konsole im Browserfenster angezeigt.
</spoiler>
Materialien
- BBC micro:bit
- 3 Krokodilklemmen-Kabel (unterschiedliche Farben) <spoiler>Einkaufsvorschlag: erhältlich bei Fa. Conrad</spoiler>
- 1 digitaler Sensor DHT11/ DHT22 <spoiler>
Einkaufsvorschlag: erhältlich bei Fa. Conrad
ACHTUNG, die Anschlüsse der drei PINs des Sensors können je nach Hersteller variieren!
Bitte achte darauf, dass die Anschlüsse Minus auf GND und Plus auf 3V angeklemmt werden. Der dritte PIN des Sensors gehört dann auf PIN 0 des micro:bits angelschossen.</spoiler> - etwas Zeit bei plötzlichem Temperaturwechsel zur Akklimatisierung
Zeitaufwand
- ca. 1 Schulstunde zur Erklärung und zum Aufbau und der digitalen Schaltung
- ca. 1-2 Schulstunden zum Entwickeln des Programmes und für erste Messungen <spoiler>Achtung! Jeweils ca. 5 - 10 Minuten zur Anpassung an die jeweilige Umgebungstemperatur mit einrechnen!</spoiler>
Schwierigkeitsgrad
Kompetenzen
Das solltest du bereits können:
- eine Zahl aufrunden und abrunden können (Mathematik)
- eine Zahl um eine Kommastelle nach links und rechts verschieben können (Mathematik)
- eine Variable erstellen und Werte zuweisen können
- Programmbefehle den Knöpfen A und B zuordnen können
- eine Zahl anzeigen können
- eine Anzeige der LEDs selbst zeichnen können
Du lernst
- die Steigung einer Geraden mit 2-Punkt-Kalibrierung auszurechnen (Mathematik) <spoiler></spoiler>
- das Formulieren und Kodieren von Abläufen in formalen Algorithmen (Informatik)
- das Arbeiten mit Pins und Krokoklemmen-Kabel (Technisches Werken)
- Sensordaten analog einzulesen und zu interpretieren
- mit Variablen zu rechnen durch Anwendung von mathematischen Operationen (+ - x ÷)
- das Ergebnis einer mathematischen Operation zu runden
- selbst ermittelte Werte einer Kalibrierung zur Umrechnung von Messwerten einzusetzen
Unterrichtsfächer
INF, Physik, TW
Tipps und Hilfestellung
Ziel
Der micro:bit soll die Umgebungstemperatur und Luftfeuchtigkeit messen und dauerhaft in der Konsole als Graph darstellen. Auf Knopfdruck A erscheint die Temperatur und auf Knopfdruck B die Luftfeuchtigkeit.<spoiler>
- Zu Beginn wollen wir nur zwei Widerstandswerte und Temperaturen (innen/ außen) messen
- Dann berechnen wir die Steigung der Geraden und denn Nullpunkt, was durch diese zwei Messpunkte vordefiniert ist
- Nach Kalibrierung der Schaltung kann der micro:bit jede beliebige Temperatur messen und anzeigen
- Verschwende keine Energie und optimiere deinen Code, je weinger Zeilen desto besser
</spoiler>
Erforderliche Programmierblöcke
- beim Start <spoiler text="Block *">
leer
* Der Block "leer" wird systembedingt mit angezeigt. </spoiler> - zeige LEDs <spoiler text="Block *">
basic.showLeds(`. . . . . . . . . . . . # . . . . . . . . . . . .`)
* Der Block "beim Start" wird systembedingt mit angezeigt. </spoiler> - pausiere <spoiler text="Block">
basic.pause()
* Der Block "beim Start" wird systembedingt mit angezeigt. </spoiler> - wenn Knopf A gedrückt <spoiler text="Block">
input.onButtonPressed(Button.A, function () {})
</spoiler> - analoge Werte von Pin in Variable einlesen <spoiler text="Block *">
* Der Block "beim Start" wird systembedingt mit angezeigt. </spoiler> - zeige Zahl<spoiler text="Block *">
basic.showNumber()
* Der Block "beim Start" wird systembedingt mit angezeigt. </spoiler>
Eckpfeiler zur Programmierung
- Durch Ansteuern eines Pins gibt dieser einen Strom aus.
- Wir lesen die Spannung an einem weiteren Pin aus und bilden diesen Wert in einer Variable ab.
- Variablen können auf der LED Matrix grafisch dargestellt werden.
- Die Werte der Variablen können auch als Zahl auf der LED Matrix dargestellt werden. In unserem Fall nur dann, wenn der Knopf A gedrückt wird.
Schritt für Schritt zur Lösung
- Hinweise zur Lösungsfindung und die Lösung findest du auf der Lösungsseite zu diesem Beispiel.
Präsentation und Reflexion
- Stelle dein Ergebnis vor!
- Was kann dein Messgerät? Messen andere micro:bits und deren elektronische Temperaturschaltung (Thermistor + Widerstand) gleiche Werte?
- Vergleiche die Werte von unterschiedlichen Orten - innen, außen, Schatten, Sonne, Kühlschrank, etc.
- Hast du aussagekräftige Werte bekommen? Stimmen die micro:bit Werte mit denen des externen Thermometers halbwegs überein?
- Was hat dir bei der Entwicklung deines Produkts gefallen?
- Welche Schwierigkeiten hattest du? Wie konntest du sie lösen?
- Erläutere, wie dein Programm aussieht!
- Was war bei dieser Aufgabe interessant für dich?
Weiterentwicklung
- Audioalarm bei Unter- bzw. Überschreiten eines Schwellenwertes (Komfortzone)
- Smileys bei angenehmen Temperaturen, Eiszapfen und Kochtopf bei Überschreiten der "angenehmen Zone".
- Temperaturwerte zu anderen micro:bits senden - Außentemperatur, Kühlschranktemperatur, etc.