Änderungen

Aus Linkerkit.de

Wechseln zu: Navigation, Suche

KY-015 Kombi-Sensor Temperatur+Feuchtigkeit

5.984 Byte hinzugefügt, 14:23, 29. Apr. 2016
==Bild==
[[Datei:ky-015.jpg|358x358px|none|358x358px]]
==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==
[[Datei:3_G_V_S.png|none]]
==Codebeispiel 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 [https://github.com/adafruit/DHT-sensor-library Link] unter der OpenSource [https://github.com/adafruit/Adafruit_Python_ADS1x15/blob/master/LICENSE 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. <pre class="brush:cpp">//KY015 DHT11 Temperature and humidity sensorBenoetigte Libraries werden eingefügt und konfiguriertint DHpin = 8;#include byte dat [5];#include byte read_data #include Adafruit_BMP085_Unified BMPSensor = Adafruit_BMP085_Unified(10085) { byte data; for (int i = 0; i <8; i ++) { if void setup(digitalRead (DHpin) == LOWvoid) { while Serial.begin(digitalRead (DHpin) == LOW9600); // wait for 50us delayMicroseconds Serial.println(30"KY-052 SensorTest:"); // determine the duration of the high level to determine the data is '0 'or '1'Falls der Sensor nicht erkannt wurde, wird hier eine Fehlermeldung gezeigt if (digitalRead !BMPSensor.begin(DHpin) == HIGH) data |= { Serial.println(1 <<(7"KY-i053-Sensor nicht erkannt!"); Serial.print("Bitte ueberpruefen Sie die Verbindung"); // high front and low in the post while (digitalRead (DHpin) == HIGH1); // data '1 ', wait for the next one receiver }
}
return data;
}
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);
}
</pre>
'''<span style="color: #ffcc00;">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</span><br /><br />Beispielprogramm Download:'''
void start_test () { digitalWrite (DHpin, LOW); // bus down, send start signal delay (30); // delay greater than 18ms, so DHT11 start signal can be detected[[Medium:KY-052-DruckSensor_TemperaturSensor.zip|KY-052-DruckSensor_TemperaturSensor.zip]]
digitalWrite (DHpin, HIGH); delayMicroseconds (40); // Wait for DHT11 response'''Anschlussbelegung Arduino:'''
pinMode (DHpin, INPUT){| style="height: 58px;padding-left: 30px;" width="228"|-||VCC while (digitalRead (DHpin) ||=||[Pin 5V]|-||GND||= HIGH); delayMicroseconds (80); // DHT11 response, pulled the bus 80us||[Pin GND] if (digitalRead (DHpin) |-||SCL||=||[Pin SCL]|-||SDA||= LOW); delayMicroseconds (80); // DHT11 80us after the bus pulled to start sending data||[Pin SDA]|-||3,3||=||[N.C.]|}
for (int i = 0; i <4; i ++) =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 [https:// receive temperature and humidity data, the parity bit is not considered datgithub.com/adafruit/Adafruit_Python_DHT Link] unter der [ihttps://github.com/adafruit/Adafruit_Python_ADS1x15/blob/master/LICENSE MIT OpenSource-Lizenz] = read_data (); veröffentlicht. 
pinMode (DHpin, OUTPUT); digitalWrite (DHpin, HIGH); // send data once after releasing the bus, wait for the host to open the next Start signal}Diese muss vorab erst installiert werden. Hierzu muss folgendermaßen vorgegangen werden:
void setup () { Serial.begin (9600); pinMode (DHpinZuerst muss, OUTPUT);}falls dies nicht auf dem Raspberry Pi geschehen ist, die GitHub-Software installiert werden:
void loop <pre class="brush:bash">sudo apt-get install git</pre>Hierzu muss der Raspberry Pi mit dem Internet verbunden sein. Mit dem Befehl... <pre class="brush:bash">git clone https://github.com/adafruit/Adafruit_Python_DHT.git</pre>... kann die aktuelle Version der Adafruit_BM085 Library heruntergeladen und entpackt werden Danach wechseln wir mit... <pre class="brush:bash">cd Adafruit_Python_BMP/</pre>... in den heruntergeladenen Ordner und intallieren mit... <pre class="brush:bash">sudo python setup.py install</pre>... 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:   <pre class="brush:bash">sudo nano /boot/config.txt</pre>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: <pre class="brush:bash">sudo apt-get install python-smbus i2c-tools -y</pre>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. <pre class="brush:py">#!/usr/bin/python# coding=utf-8# Copyright (c) {2014 Adafruit Industries start_test # Benoetigte Bibliotheken werden eingefügt und konfiguriertimport Adafruit_BMP.BMP085 as BMP085import time # Die Pause zwischen den Messungen kann hier eingestellt werdensleeptime = 1 try: # Sensor wird initialisiert BMPSensor = BMP085.BMP085(); Serial.# Überprüfung ob Sensor richtig angeschlossen ist# Falls nicht, wird eine Fehlermeldung ausgegebenexcept IOError: print ("Current humdity =------------------------------"); Serial. print (dat [0], DEC"KY-053 Sensor nicht erkannt!"); // display the humidity print ("Überprüfen Sie die Verbindungen") print("-bit integer;-----------------------------") while(True): Serial time.sleep(sleeptime)except KeyboardInterrupt: GPIO.cleanup()  # Hauptprogrammschleife# Das Programm startet die Messungen am Sensor und gibt# die gemessenen Werte in der Konsole austry: while(1): print("------------------------------") # Temperatur print ('Temperatur = {0:0.2f}°C'.format(BMPSensor.read_temperature())); Serial. # Luftdruck print (dat [1], DEC'Luftdruck = {0:0.2f}hPa'.format(BMPSensor.read_pressure(); // display the humidity decimal places;100)) Serial.println # Meereshöhe print('%Meereshöhe = {0:0.2f}m'.format(BMPSensor.read_altitude())); Serial. print ("Current temperature =------------------------------"); Serial. print (dat [2], DEC""); // display the temperature of integer bits; Serial time.print sleep('sleeptime) # Aufraeumarbeiten nachdem das Programm beendet wurdeexcept KeyboardInterrupt: GPIO.'cleanup()</pre>'''<span style="color: #ffcc00;">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</span>''' Serial'''Anschlussbelegung Raspberry Pi:''' {| style="height: 98px; padding-left: 30px;" width="253"|-||VCC||=||-||[N.print (dat C]|-||GND||=||Masse||[3Pin 06], DEC); |-||SCL||=||GPIO03 /SCL||[Pin 05]|-||SDA||=||GPIO02 / display the temperature of decimal places;SDA Serial||[Pin 03]|-||3.println (3||=||3,3V||[Pin 01]|}'''Beispielprogramm Download''C'); delay (700);}[[Medium:KY-052-RPi_DruckSensor_TemperaturSensor.zip|KY-052-RPi_DruckSensor_TemperaturSensor.zip]] Zu starten mit dem Befehl: <pre class="brush:bash">sudo python KY-053_RPi_AnalogDigitalConverter.py
</pre>