umweltsensoren

12. UMWELTSENSOREN

 

 

DU LERNST HIER...

 

mit dem Temperatur-, Feuchtigkeit- und Luftdrucksensor die Umweltbedingungen erfassen und einfache Regelungssysteme programmieren. Interessant sind Umweltsensoren insbesondere im Zusammenhang mit den IoT (Internet of Things) -Anwendungen

 

 

HOCHPRÄZISE UMWELTSENSOREN

  Da Calliope das I2C-Protokoll für die Kommunikation mit den Sensoren unterstützt, können auch hochpräzise Sensoren an die Grove-Schnittstelle angeschlossen werden. Die TigerJython-Robotik-Bibliothek unterstützt
  • SHT31 Temperatur- und Feuchtigkeitssensor
  • BME280 Temperatur-, Feuchtigkeits- und Luftdrucksensor



 

 

Um die Sensoren am Calliope anzuschliessen, sind einige Lötarbeiten notwendig. Du schneidest ein Grove-Verbindungskabel auf, isolierst die darin enthaltenen Kabel ab und lötest das schwarze Kabel bei GND, das rote bei VCC, das gelbe bei SCL und das weisse bei SDA an.



 
 

Damit du den SHT-Sensor verwenden kannst, musst du das Modul sht_mini importieren. Das Modul sht_mini wird beim Flashen automatisch auf den Calliope kopiert. Das Module bme280_mini muss du vor der ersten Verwendung nachinstallieren.

 

 

MUSTERBEISPIELE

 

Beispiel 1: Temperatur mit SHT31-Sensor

Im ersten einfachen Beispiel wird die Umgebungstemperatur im Terminalfenster angezeigt. Ist der Sensirion SHT31 - Sensor am I2C-Port 1 angeschlossen, liefert der Befehl temp, hume = sht_mini.getValues() ein Tupel mit Temperatur (Grad C) und Luftfeuchtigkeit (%). Mit print(temp) wird die aktuelle Temperatur, mit print(humi) die Feuchtigkeit und mit print(temp, humi) werden die beiden Werte im Terminalfenster angezeigt. sleep(500) legt die Messperiode von 500 ms fest. Der Sensor reagiert schnell auf die Umgebungsänderungen. Sobald du z. B. den Sensor mit den Fingern berührst, werden höhere Temperatur und Feuchtigkeitswerde angezeigt. Die Programmausführung wird mit Ctrl+C im Terminalfensters beendet.

 



from calliope_mini import *
import sht_mini

while True:
   temp, humi = sht_mini.getValues()
   print(temp)
   sleep(500)
► In Zwischenablage kopieren

Beispiel 2: Temperatur und Feuchtigkeit mit formatierter Ausgabe
Die Sensorwerte sind Dezimalzahlen (float) mit mehreren nachkommastellen. Es ist deshalb vorteilhaft, eine formatierte Ausgabe zu verwenden.

 

Der Formatstring enthält Platzhalter, welche für die Ausgabewerte die gesamte Anzahl Zeichen und die Anzahl Dezimalstellen angeben. Werte mit mehreren Dezimalstellen werden automatisch gerundet. Willst du nur die Temperatur mit einer Dezimalstelle anzeigen, schreibst du:
print("Temperatur: %6.2f" % temp)
.


Im nächsten Programm werden die Sensorwerte formatiert mit zwei Dezimalstellen angezeigt.

 

 


from calliope_mini import *
import sht_mini

while True:
   temp, humi = sht_mini.getValues()
   print("Temp: %6.2f, Humi: %6.2f" % (temp, humi))
   sleep(200)
► In Zwischenablage kopieren

 

Beispiel 3: Temperatur-Regelung
Wie funktioniert ein Regelungssysteme? Ein Temperatursensor misst die aktuelle Temperatur (Istwert) und liefert ihn an den Regler. Dieser vergleicht ihn mit dem gewünschten Wert (Sollwert). Ist der aktuelle Wert kleiner als Sollwert, wird die Wärmequelle eingeschaltet, ist er höher als der Sollwert, wird sie ausgeschaltet. In der Regel wird als Sollwert nicht ein einziger Wert, sondern ein Werte-Bereich festgelegt.

In deinem Beispiel programmierst du eine Temperatur-Regelung. Der EV3 ist mit einem Temperatursensor ausgerüstet. Ausserdem brauchst du eine Wärmequelle (Lampe, Föhn, Heizung...), oder kannst du den Sensor vorsichtig mit deinen Fingern berühren. So lange die aktuelle Temperatur tiefer als der Sollwert° ist, werden die roten LEDs eingeschaltet. Liegt der Temperaturwert beim Sollwert (zwischen 26 und 28°), sind die orangen LEDs eingeschaltet. Ist die Temperatur höher als der Sollwert, werden die LEDs ausgeschaltet.

from calliope_mini import *
import sht_mini
   
ts = 27 #sollWert

while True:
    temp, humi = sht_mini.getValues()
    print(temp)
    if temp < ts - 1: 
        display.show(Image.SAD)
    elif temp > ts - 1 and temp < ts + 1:
        display.show(Image.HAPPY)    
    elif temp > ts + 1:
        display.show(Image.NO)  
    sleep(300)   
► In Zwischenablage kopieren

Auf dem gleichen Prinzip werden viele Regelsysteme aufgebaut. Anstelle der LEDs kann z.B. eine Heizung ein- und ausgeschaltet werden.

 

 

MERKE DIR...

 

Ist der SHT31 Sensor am I2C Port angeschlossen, liefert der Befehl sht_mini.getValues() ein Tupel mit zwei Werten (Temperatur in ° C und Luftfeuchtigkeit in %). Der BME280 Sensor liefert mit bme_mini.getValues() Temperatur, Feuchtigkeit und Luftdruck. Die Sensorwerte können mit dem Befehl print() im Terminalfenster angezeigt werden. Für die Anzeige wird oft eine formatierte Ausgabe verwendet.

 

 

ZUM SELBST LÖSEN

 

 


1.


Schliesse an den Calliope einen SHT31 oder einen Sensor an. Schreibe ein Programm, welches alle 500 ms die aktuelle die Luftfeuchtigkeit im Terminalfenster anzeigt.

 
 
2.

Der Temperatursensor misst mit der Messperiode von 500 ms die Temperatur. Ein neuer Messwert soll nur dann angezeigt werden, wenn er sich um mehr als ein 0.5 Grad vom vorhergehenden unterscheidet.

3.

Der Temperatursensor misst zu Beginn die Umgebungstemperatur und setzt diesen Messwert als Default-Wert. Danach wird alle 1000 ms die Temperatur gemessen. Wenn die Messerte um 2 Grad höher sind als der Default-Wert, wird ein Alarm ausgelöst und die roten LEDs eingeschaltet. Wenn die Temperatur wieder auf den Default-Wert gesunken ist, wird der Alarm und die roten LEDs ausgeschaltet.

 

 

12-
Fachliche Hinweise:

Zusatzmodule

Das Modul bme_mini gehört zu den Zusatzmodulen und wird nicht automatisch auf dem Calliope installiert. Du kannst es aber sehr einfach nachinstallieren. Dazu klickst du im TigerJython auf Hilfe/APLU Dokumentation und wählst Calliope mini/Zusatzmodule/Download. Nach dem Auspacken der Datei cpmodules.zip öffnest du die Datei bme280_mini.py im TigerJython-Editor und wählst Tools/Modul hinunterladen und da sich die Datei jetzt im Editor befindet, musst du Editor wählen. Das Modul wir auf dem Calliope gespeichert und kann verwendet werden.