TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
umwelt

5. SENSOREN  FÜR UMWELTMESSUNGEN

 

 

DU LERNST HIER...

 

wie du mit kombinierten Sensoren die Umwelt erfassen kannst. Im Vordergrund stehen dabei die Umgebungstemperatur, der Luftdruck, die Luftfeuchtigkeit und die Qualität der Luft. Solche Sensoren werden heutzutage in einem weiten Bereich industriell und wissenschaftlich eingesetzt, beispielsweise zur Klima- und Wettererfassung, Höhenmessung,  Detektion von Schadstoffen in der Luft, u.a.

 

 

ENVIRONMENT SENSOR BME680 (BOSCH)

 

Als erstes verwendest du den Sensor BME680, der auf einem Breakout-Board von Adafruit (und anderen) verbaut ist. Er misst Temperatur, Luftfeuchtigkeit, Luftdruck und hat sogar einen VOC (Volatile Organic Compounds) Gassensor.

Da der Sensor ein I2C-Interface hat, lötest du wie üblich ein 4-poliges Kabel (schwarz: GND, rot: VDD, weiss: SDA, gelb: SCL) mit einem Grove-Stecker an und steckt ihn im I2C-Hub der Oxocard ein.

 

Dein Testprogramm zeigt Temperatur, Luftfeuchtigkeit und Luftdruck auf dem LED-Display.  In der Konsole wird zudem die Höhe über Meer ausgeschrieben, falls du den aktuellen Luftdruck auf Meereshöhe angibst. Es wird das Treibermodul bme680 mit der Klasse BME680 verwendet.

Programm:

from oxocard import *
from bme680 import BME680
from time import sleep

def show():
    display(int(temp + 0.5))
    sleep(3)
    display(int(humidity + 0.5))
    sleep(3)
    p = int(pressure + 0.5)
    display(p // 10)
    sleep(2)
    display(p % 10)
    sleep(3)
    display("::")
    sleep(2)

bme = BME680()
bme.setSeaLevelPressure(1000)
while True:
    temp = bme.getTemperature()
    pressure = bme.getPressure()
    humidity = bme.getHumidity()
    altitude = bme.getAltitude()
    gas = bme.getGas()
    print("temperature: %5.2f degC" %temp)
    print("pressure: %5.2f hPa" %pressure)
    print("humitidy: %5.2f %%" %humidity)
    print("altitude: %5.2f m" %altitude)
    print("gas: %5.0f " %gas)
    print("---------------------------")
    show()
► In Zwischenablage kopieren

 

 

ALTIMETER MPL3114A2 (NXP)

 

Der Sensor MPL3114A2 misst den Luftdruck und bestimmt daraus aus dem bekannten Luftdruck auf Meereshöhe mit der barometrischen Höhenformel die aktuelle Höhe über Meer.  Es wird zudem die aktuelle Temperatur abgegeben. Der Sensor ist ebenfalls als Breakout-Board erhältlich.

 

Das Programm verwendet das Treibermodul mpl13115a2 mit der Klasse MPL3115A2, das mit der Methode getValues(pSeaLevel) den Luftdruck (in kPa), die Höhe über Meer (in m) und die Temperatur (in oC) als Tupel zurückgibt. Man muss als Parameter den aktuellen Luftdruck auf Meereshöhe (in Pascal) übergeben, damit der Chip die Höhe über Meer berechnen kann.

Programm:

from oxocard import *
from mpl3115a2 import MPL3115A2
from time import sleep

def show():
    alt = int(altitude + 0.5)
    display(alt // 100)
    sleep(2)
    display("%02d" % (alt % 100))
    sleep(2)
    display("::")
    sleep(2)

pSeaLevel = 98300 # pascal, 100000 pa = 1 b = 1000 mbar
mpl = MPL3115A2()
while True:
    pressure, altitude, temp = mpl.getValues(pSeaLevel)
    print("pressure: %5.2f kPa - altitude: %5.2f m \
- temperature: %5.2f degC" %(pressure, altitude, temp))
    show()
► In Zwischenablage kopieren

 

 

LUFTDRUCKSENSOR BMP280 (BOSCH)

 

Der etwas einfachere Sensor misst Temperatur und Luftdruck und ist ebenfalls als Breakout-Board erhältlich. Die I2C-Leitung SCL wird am Pin mit der Anschrift SCK und Leitung SDA am Pin SDI angelötet.

 

Das Programm verwendet das Treibermodul bmx280 mit den Klassen BME280 und BMP280 und zeigt die Temperatur und den Luftdruck auf dem LED-Display.

Programm:

from oxocard import *
from bmx280 import BMP280
from time import sleep

def show():
    display(int(temp + 0.5))
    sleep(3)
    p = int(pressure + 0.5)
    display(p // 10)
    sleep(2)
    display(p % 10)
    sleep(3)
    display("::")
    sleep(2)

bmp = BMP280()
while True:
    temp, pressure = bmp.getValues()
    print("Temperature: %5.2f degC - Pressure: %5.2f hPa" %(temp, pressure))
    show()
► In Zwischenablage kopieren

 

 

LUFTDRUCKSENSOR HP206 (SEED)

 


Der Sensor HP206C misst den Luftdruck mit einer grossen Genauigkeit. Sogar ein Höhenunterschied von einigen Dezimetern kann festgestellt werden. Er ist auf einem Breakout-Board mit einem Grove-Stecker erhältlich und kann damit direkt mit dem I2C-Hub der Oxocard verbunden werden.

 

 

Das Programm verwendet das Treibermodul hp206c mit der Klasse HP206C und zeigt die zwei letzten Ziffern der Höhe über Meer auf dem LED-Display an. Hebt man die Oxocard einen Meter an, so macht sich dies bereits bemerkbar.

Programm:

from oxocard import *
from hp206c import HP206C
from time import sleep

def show():
    alt = int(altitude + 0.5)
    display(alt % 100)
    sleep(2)
    display("::")
    sleep(2)

hp = HP206C()
while True:
    temp = hp.readTemperature()
    pressure = hp.readPressure()
    altitude = hp.readAltitude()
    print("Temperature: %5.2f degC - Pressure: %5.2f hPa \
- Altitude %5.2f m" %(temp, pressure, altitude))
    show() %(temp, pressure, altitude))
    show()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Zur Messung von Umweltdaten gibt es kombinierte Sensoren mit einem I2C-Interface, die man mit Python sehr einfach auslesen kann.

 

 

ZUM SELBST LÖSEN

 

 

1.

Verwende einen Environment-Sensor, der dir zur Verfügung steht, und entwickle damit eine sinnvolle Anwendung, beispielsweise eine Alarmanlage.

2.

Orientiere dich im Kapitel Webserver und mache aus der Oxocard eine Messstation für Umweltdaten, die man mit einem Handy über WLAN abrufen kann.