HomeTurtlegrafikGPanelRobotikGameGrid WebTigerPython
 Python - Online
i2csensoren
Deutsch   English   

12. I2C Sensoren


 

DU LERNST HIER...

 

wie du hochpräzise Sensoren über eine I2C - Schnittstelle an den micro:bit anschliessen und die Luftqualität, Temperatur und Feuchtigkeit messen kannst.

 

 

SGP30 AIR QUALITY SENSOR

 

Der CO2-Sensor SGP30 misst die CO2-Konzentration in der Luft. Bei erhöhter CO2-Konzentration ist die Luft in einem Raum nicht mehr frisch, was zur Müdigkeit und höheren Ansteckungsgefahr mit Viren führen kann.

 


Der SGP30 kann z.B. bei www.brack.ch oder bei www.mouser.ch bestellt werden. Das Anschluss-Kabel ist in der Lieferung integriert.

 
 


Mit wenig Aufwand kannst du eine einfache Messstation für die Messung der CO2-Konzentration in deinem Klassenzimmer einrichten.

 

.

 


Am mico:bit wird der Sensor mit dem mitgelieferten I2C Kabel zum Beispiel über einen mbHub angeschlossen. Der mbHub kann für Fr. 6.- bei der TJGroup bestellt werden. Für den Versand in der Schweiz wird Fr. 1.-, ausserhalb der Schweiz Fr. 3.- verrechnet. Der mbHub verfügt über mehrere I2C-Schnittstellen und kann auch für Anschluss anderer Sensoren und Elektronikkmponenten verwendet werden .

Die Bestellung erfolgt mit einem Email an

 

 

MUSTERBEISPIELE

 


Beispiel 1: CO2 Konzentration messen und anzeigen

In deinem Programm musst du zuerst definieren, wie die Messwerte des SGP30 über I2C eingelesen werden (Sensorspezifikation).
Die Funktionl getValues() gibt zwei Werte zurück:
  • CO2 Konzentration in ppm*
  • TVOC Total Volantile Organic Componds*

Die beiden Werte werden mit print im Ausgabe-Fenster angezeigt. sleep(500) gibt die Messperiode an.

 

Programm:

from microbit import *

# sgp---------------------
raw = [0, 0]
buf = [0,0,0,0,0,0]
i2c.write(0x58, bytearray([0x20,0x03]))
sleep(1500) 

def getValues(a=0x58):
    i2c.write(0x58, bytearray([0x20,0x08]))
    sleep(600)
    block = i2c.read(0x58, 6)
    buf = [0,0,0,0,0,0]
    for i in range(0,6):
            buf[i]=block[i]
    for i in range(0,2):
            raw[i]= buf[i*3]
            raw[i]<<=8
            raw[i]|=buf[i*3+1]
    return (raw[0], raw[1])
#------------------------------

while True:
    co2, voc = getValues()
    print ("CO2 = ", co2, "  TVOC = ", voc)   
    sleep(500)
► In Zwischenablage kopieren

Nach dem Programmstart wird der Sensor zuerst Kalibriert und gibt die ersten 10 Sekunden den CO2-Wert 400 zurück. Dann werden die gemessenen CO2-Werte korrekt angezeigt.

* Der CO2-Gehalt in der Luft wird in parts per million, kurz ppm angegeben. SGP30-Sensor gibt die Werte im Bereich 400 - 60000 ppm zurück, wobei für die Werte grösser als 1000, wird die Luft nicht mehr als frisch bezeichnet.

* In Innenräumen gibt es viele Quellen, die Schadstoffpartikel (TVOC) abgeben (Lampen, Bodenbeläge, Reinigungsmittel...). Der Sensor gibt TVOC-Werte im Bereich 0 bis 60 000 zurück.


 


Beispiel 2: Temperatur- und Feuchtigkeitssensor Sensirion SHT85

  Sensirion mit Sitz im schweizerischen Stäfa ist einer der führenden Hersteller digitaler Mikrosensoren. SHT85 liefert die Temperatur im Messbereich -40° bis +105°C und die relative Feuchtigkeit im Bereich 0 - 100%, beides auf 4 Dezimalstellen genau.

Um den Sensor am micro:bit anzuschliessen, kannst du das SHT-Set verwenden. Dieser besteht aus:

  • mbHub
  • Sensorlink
  • SHT85
  • Verbindungskabel
 

Das Set kann für Fr. 20.- bei der TJGroup bestellt werden. Für den Versand in der Schweiz wird Fr. 1.-, ausserhalb der Schweiz Fr. 3.- verrechnet. Mit dem Set kannst du auch andere Sensoren und Elektronik-Komponenten am micro:bit anschliessen.
Eine Beschreibung der Schnittstellen findest du hier

Die Bestellung erfolgt mit einem Email an


In deinem Programm definierst, du zuerst wie die Sensordaten über I2C eingelesen werden .
Der Befehl getValues() gibt zwei Werte zurück:
  • Temperatur in °C
  • Feuchtigkeit in %

Die beiden Werte werden mit print im Ausgabe-Fenster angezeigt. sleep(500) gibt die Messperiode an.

 

Programm:

from microbit import *

# sht-------------------------
def getValues(a = 0x44):
    i2c.write(a, b'\x2c\x06')
    raw = i2c.read(a, 6)
    t, h = (raw[0] << 8) + raw[1], (raw[3] << 8) + raw[4]
    return -45 + (175 * (t / 65535)), 100 * (h / 65535)
#-----------------------------

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

 

 

MERKE DIR...

 

Der Sensor SGP30 misst den CO2- Gehalt in ppm (parts per million) und liefert Messwerte im Bereich 400-60 000. Für Werte < 1000 ist die Luft gut, bei Werten > 1400 ist eine Frischluftzufuhr empfohlen. Eine hohe CO2-Konzentration im Raum erhöht das Ansteckungsrisiko mit Viren.

Der Sensor SHT85 misst Temperatur in °C und relative Feuchtigkeit in %.

Da diese externe Sensoren im Modul microbit nicht unterstützt werden, musst du in jeder Anwendung den Programmblock #sgp-------- bzw. #sht------- einfügen.

Die Sensoren werden über einen Hub am micro:bit angeschlossen. Dier mbHub und SensorLink sind so konzipiert, dass sie auch für Anschluss von weiteren I2C Sensoren und Elektronik-Komponenten verwendet werden können.

 

 

ZUM SELBST LÖSEN

 

 


1.


Baue ein Messgerät für die CO2 Konzentration im Klassenzimmer.
Es gelten folgende Grenzwerte:

  • < 1000 ppm: Luft ist frisch
  • 1000 - 1400 ppm: bald lüften
  • > 1400 ppm: Fenster öffnen

Mit den LEDs auf deinem micro:bit kannst für diese Messbereiche verschiedene Symbole anzeigen. Das Programm bleibt auf dem micro:bit gespeichert. Du kannst ihn also beim Computer ausstecken und an eine andere Stromquelle, beispielsweise Powerbank, anschliessen.

 
 
2.

Baue eine Temperatur-Messanlage, die einen akustischen Signal abspielt, wenn die Temperatur um mehr als 2 °C gestiegen ist.

 

3.

Messe die Temperatur gleichzeitig mit dem eingebauten Temperatursensor und mit dem SHT85. Vergleiche die Ergebnisse.

 

12-1
Fachliche Hinweise:

Der mbHub und SensorLink sind so konzipiert, dass sie für den Anschluss von weiteren Sensoren und Elektronik-Komponenten verwendet werden können.

 

 

Die Grove-Stecker haben 4 Pin-Anschlüsse (GND, VCC, SDA, SCL).

 
  • schwarz: GND (-)
  • rot: VCC (+)
  • weiss: SDA (D)
  • gelb: SCL (C)

mbhub - Beschreibung:

SensorLink - Beschreibung:

 

 

12-1
Fachliche Hinweise:

Die Grove-Stecker haben 4 Pin-Anschlüsse (GND, VCC, SDA, SCL).

 
  • schwarz: GND (-)
  • rot: VCC (+)
  • weiss: SDA (D)
  • gelb: SCL (C)

mbhub - Beschreibung: