KY-015 Kombi-Sensor Temperatur+Feuchtigkeit

Aus Linkerkit.de

Wechseln zu: Navigation, Suche

Bild

ky-015.jpg

Technische Daten / Kurzbeschreibung

Chipsatz: DHT11 | Kommunikationsprotokoll: 1-Wire Messbereich Luftfeuchtigkeit: 20-90%RH Messbereich Temperatur: 0-50°C

Vorteile dieses Sensors ist die Kombination von Temperaturmessung und Luftfeuchtigkeitsmessung in einer kompakten Bauform - der Nachteil ist jedoch die geringe Abtastrate der Messung, so dass nur jede 2 Sekunden ein neues Messergebnis zur Verfügung steht - dieser Sensor ist somit sehr gut für Langzeit-Messungen geeignet.

Pin-Belegung

3 G V S.png

Software-Beispiel Arduino

Dieser Sensor gibt sein Messergebnis nicht als analoges Signal auf einen Ausgangspin aus, sondern kommuniziert diesen digital kodiert.

Zur Ansteuerung dieses Sensormoduls gibt es mehrere Möglichkeiten - als besonders zugänglich hat sich die Adafruit_DHT Library erwiesen, die die Firma Adafruit unter dem folgenden Link unter der OpenSource MIT-Lizenz veröffentlicht hat.

Das unten stehende Beispiel verwendet diese besagte Library - hierzu empfehlen wir diese von Github herunterzuladen, zu entpacken und im Arduino-Library-Ordner, welcher sich standardmäßig unter (C:\Benutzer\[Benutzername]\Dokumente\Arduino\libraries) befindet, zu kopieren, damit diese für dieses Codebeispiel und folgende Projekte zur Verfügung steht. Alternativ ist diese auch im unten stehenden Download Paket ebenfalls enthalten.

// Benoetigte Libraries werden eingefügt und konfiguriert
#include 
#include 
#include 
Adafruit_BMP085_Unified BMPSensor = Adafruit_BMP085_Unified(10085);
 
void setup(void) 
{
  Serial.begin(9600);
  
  Serial.println("KY-052 SensorTest:");
  
  // Falls der Sensor nicht erkannt wurde, wird hier eine Fehlermeldung gezeigt
  if(!BMPSensor.begin())
  {
    Serial.println("KY-053-Sensor nicht erkannt!");
    Serial.print("Bitte ueberpruefen Sie die Verbindung");
    while(1);
  }
}
 
void loop(void) 
{
  // Initialisierung Adafruit BMP Library
  sensors_event_t event;
  BMPSensor.getEvent(&event);
 
  // Messung wird gestartet, falls Sensor bereit
  if (event.pressure)
  {
    Serial.println("------------------------");
    
    // Messung des Luftdrucks
    Serial.print("Luftdruck:    ");
    Serial.print(event.pressure);
    Serial.println(" hPa");
    
    // Messung der aktuellen Temperatur
    float temperature;
    BMPSensor.getTemperature(&temperature);
    Serial.print("Temperatur: ");
    Serial.print(temperature);
    Serial.write(176); // UniCode-Angabe eines char-Symbols für das "°-Symbol"
    Serial.println(" C");
 
    // Berechnung der Hoehe ueber dem Meeresspiegel,
    // aus den aufgenommenen Daten (SLP=1013.25 hPa)
    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
    Serial.print("Meereshoehe:    "); 
    Serial.print(BMPSensor.pressureToAltitude(seaLevelPressure,
                                        event.pressure,
                                        temperature)); 
    Serial.println(" m");
    Serial.println("------------------------");
    Serial.println("");
  }
  // Fehlermeldung falls Sensor nicht ausgelesen werden kann
  else
  {
    Serial.println("Sensor-Fehler");
  }
  delay(1000);
}

Bitte beachten Sie, dass der Sensor nur etwa alle 2 Sekunden ein neues Messergebnis zur Verfügung stellt; also eher für Langzeit-Aufnahmen ausgelegt ist

Beispielprogramm Download:

KY-052-DruckSensor_TemperaturSensor.zip

Anschlussbelegung Arduino:

VCC = [Pin 5V]
GND = [Pin GND]
SCL = [Pin SCL]
SDA = [Pin SDA]
3,3 = [N.C.]

Software-Beispiel Raspberry Pi

Das Programm nutzt zur Ansteuerung des DHT11-Sensors, der auf diesem Sensor-Modul verbaut ist, die entsprechende Adafruit_Python_DHT Library der Firma Adafruit. Diese wurden unter dem folgenden Link unter der MIT OpenSource-Lizenz veröffentlicht. 

Diese muss vorab erst installiert werden. Hierzu muss folgendermaßen vorgegangen werden:

Zuerst muss, falls dies nicht auf dem Raspberry Pi geschehen ist, die GitHub-Software installiert werden:

sudo apt-get install git

Hierzu muss der Raspberry Pi mit dem Internet verbunden sein. Mit dem Befehl...

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

... kann die aktuelle Version der Adafruit_BM085 Library heruntergeladen und entpackt werden

Danach wechseln wir mit...

cd Adafruit_Python_BMP/

... in den heruntergeladenen Ordner und intallieren mit...

sudo python setup.py install

... die Library. Hiernach kann die Library genutzt werden.

Damit der Raspberry Pi mit dem Sensor auf dem I2C-Bus kommunizieren kann, muss auch vorab die I2C-Funktion beim Raspberry Pi aktiviert werden. Hierzu müssen folgende Zeilen am Ende der Datei "/boot/config.txt" hinzugefügt werden:

    dtparam=i2c_arm=on

Die Datei kann mit folgenden Befehl editiert werden:


sudo nano /boot/config.txt

Mit der Tastenfolge [Strg+X -> Y -> Enter] kann die Datei, nach dem hinzufügen der Zeile am unteren Ende, gespeichert und geschlossen werden.

Außerdem werden zusätzliche Bibliotheken benötigt, um I2C innerhalb Python nutzen zu können. Um diese zu installieren muss folgender Befehl in die Konsole eingegeben werden:

sudo apt-get install python-smbus i2c-tools -y

Hiernach kann das folgende Python-Code Beispiel verwendet werden. Das Programm startet die Messung am Sensor und gibt die gemessenen Werte für den Luftdruck, der Temperatur und der Höhe überm Meeresspiegel aus.

#!/usr/bin/python
# coding=utf-8
# Copyright (c) 2014 Adafruit Industries

# Benoetigte Bibliotheken werden eingefügt und konfiguriert
import Adafruit_BMP.BMP085 as BMP085
import time

# Die Pause zwischen den Messungen kann hier eingestellt werden
sleeptime = 1

try:
    # Sensor wird initialisiert
    BMPSensor = BMP085.BMP085()
# Überprüfung ob Sensor richtig angeschlossen ist
# Falls nicht, wird eine Fehlermeldung ausgegeben
except IOError:
    print("------------------------------")
    print ("KY-053 Sensor nicht erkannt!")
    print ("Überprüfen Sie die Verbindungen")
    print("------------------------------")
    while(True):
        time.sleep(sleeptime)
except KeyboardInterrupt:
    GPIO.cleanup()


# Hauptprogrammschleife
# Das Programm startet die Messungen am Sensor und gibt
# die gemessenen Werte in der Konsole aus
try:
    while(1):
        print("------------------------------")
        # Temperatur
        print('Temperatur = {0:0.2f}°C'.format(BMPSensor.read_temperature()))
        # Luftdruck
        print('Luftdruck = {0:0.2f}hPa'.format(BMPSensor.read_pressure()/100))
        # Meereshöhe
        print('Meereshöhe = {0:0.2f}m'.format(BMPSensor.read_altitude()))
        print("------------------------------")
        print("")
        time.sleep(sleeptime)

# Aufraeumarbeiten nachdem das Programm beendet wurde
except KeyboardInterrupt:
    GPIO.cleanup()

Bitte beachten Sie, dass der Sensor nur etwa alle 2 Sekunden ein neues Messergebnis zur Verfügung stellt; also eher für Langzeit-Aufnahmen ausgelegt ist

Anschlussbelegung Raspberry Pi:

VCC = - [N.C]
GND = Masse [Pin 06]
SCL = GPIO03 / SCL [Pin 05]
SDA = GPIO02 / SDA [Pin 03]
3.3 = 3,3V [Pin 01]

Beispielprogramm Download

KY-052-RPi_DruckSensor_TemperaturSensor.zip

Zu starten mit dem Befehl:

sudo python KY-053_RPi_AnalogDigitalConverter.py