KY-015 Kombi-Sensor Temperatur+Feuchtigkeit

Aus SensorKit X40 Wiki

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.

// Adafruit_DHT Library wird eingefügt
#include "DHT.h"

// Hier kann der jeweilige EingangsPin deklariert werden
#define DHTPIN 2     

// Der Sensor wird initialisiert
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

void setup() 
{
  Serial.begin(9600);
  Serial.println("KY-015 Test - Temperatur und Luftfeuchtigkeits-Test:");

  // Messung wird gestartet
  dht.begin();
}

// Hauptprogrammschleife
// Das Programm startet die Messung und liest die gemessenen Werte aus
// Zwischen den Messungen wird eine Pause von 2 Sekunden eingelegt,
// damit beim nächsten Druchlauf eine neue Messung erfasst werden kann.
void loop() {

  // Zwei Sekunden Pause zwischen den Messungen
  delay(2000);

  // Luftfeuchtigkeit wird gemessen
  float h = dht.readHumidity();
  // Temperatur wird gemessen
  float t = dht.readTemperature();
  
  // Hier wird überprüft, ob die Messungen fehlerfrei druchgelaufen sind
  // Bei Detektion eines Fehlers, wird hier eine Fehelrmeldung ausgegeben
  if (isnan(h) || isnan(t)) {
    Serial.println("Fehler beim Auslesen des Sensors");
    return;
  }

  // Ausgabe in die serrielle Konsole
  Serial.println("-----------------------------------------------------------");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatur: ");
  Serial.print(t);
  Serial.print(char(186)); //Ausgabe <°> Symbol
  Serial.println("C ");
  Serial.println("-----------------------------------------------------------");
  Serial.println(" ");
}

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-015-Kombi-Sensor_Temperatur_Feuchtigkeit.zip

Anschlussbelegung Arduino:

GND = [Pin GND]
+V = [Pin 5V]
Signal = [Pin D2]

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.

Daraufhin müssen noch benötigte System-Module aktualisiert und installiert werden. Hierzu werden die nächsten beiden Befehle eingegeben und mit der Taste "Enter" jeweils bestätigt (eventuell müssen diese mit der Taste "Y" zusätzlich bestätigt werden):

sudo apt-get update

und

sudo apt-get install build-essential python-dev

Mit dem Befehl...

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

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

Danach wechseln wir mit...

cd Adafruit_Python_DHT/

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

sudo python setup.py install

... die Library.

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

# Benoetigte Module werden importiert und eingerichtet
import RPi.GPIO as GPIO
import Adafruit_DHT
import time

# Die Pause von zwei Sekunden zwischen den Messungen wird hier eingestellt
sleeptime = 2

# Sensor should be set to Adafruit_DHT.DHT11,
# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
DHTSensor = Adafruit_DHT.DHT11

# Hier kann der Pin deklariert werden, an dem das Sensormodul angeschlossen ist
GPIO_Pin = 23

print('KY-015 Sensortest - Temperatur und Luftfeuchtigkeit')

try:
    while(1):
        # Messung wird gestartet und das Ergebnis in die entsprechenden Variablen geschrieben
        Luftfeuchte, Temperatur = Adafruit_DHT.read_retry(DHTSensor, GPIO_Pin)

        print("-----------------------------------------------------------------")
        if Luftfeuchte is not None and Temperatur is not None:

            # Das gemessene Ergebnis wird in der Konsole ausgegeben
            print('Temperatur = {0:0.1f}°C  | rel. Luftfeuchtigkeit = {1:0.1f}%'.format(Temperatur, Luftfeuchte))

        # Da der Raspberry Pi aufgrund des Linux-Betriebsystems für Echtzeitanwendungen benachteiligt ist,
        # kann es sein, dass aufgrund von Timing Problemen die Kommunikation scheitern kann.
        # In dem Falle wird eine Fehlermeldung ausgegeben - ein Ergebnis sollte beim nächsten Versuch vorliegen
        else:
            print('Fehler beim Auslesen - Bitte warten auf nächsten Versuch!')
        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:

GND = GND [Pin 06]
+V = 3,3V [Pin 01]
Signal = GPIO23 [Pin 16]

Beispielprogramm Download

KY-015-RPi_Kombi-Sensor_Temperatur_Feuchtigkeit.zip

Zu starten mit dem Befehl:

sudo python KY-015-RPi_Kombi-Sensor_Temperatur_Feuchtigkeit.py