Tinkering Arduino

eine kleine Welt der Elektronik.

Feuchte- / Temperatursensor Mit Farbanzeige

Feuchtesensor Da wir im Winter in unserer Wohnung mit feuchten Räumen zu kämpfen haben, soll in einem kleinen Projekt die Luftfeuchtigkeit gemessen und ausgegeben werden.

Dies möchte ich dann gern erweitern und die Luftfeuchtigkeit über mehrere Tage beobachten. Der heutige Beitrag soll es sich daher einen Feuchte- und Temperatursensor behandeln. Von der ersten Messung bis zur Ausgabe.

Da in diesem Projekt über einen längeren Zeitraum die Luftfeuchtigkeit in einzelnen Räumen unserer Wohnung gemessen soll, wir keine Klimaanlage betreiben, sondern den Luft- und Wärmeaustausch über das öffnen der Fenster regeln, reicht hier ein einfacher Feuchtesensor aus. Ich habe mich für einen DHT11 (Bezugsquelle: Watterott) entscheiden. Die Meßgenauigkeit für die Luftfeuchtigkeit mit einer Abweichung von ±4% ist nicht gerade berauschend, soll aber ausreichend sein. Für die optimale Luftfeuchtigkeit in Räumen, gibt es unterschiedliche Empfehlungen, daher geht es hier in erster Linie darum zu erkennen, wann die Luftfeuchtigket besonders hoch ist, wie diese sich vor und nach dem Öffnen der Fenster verändert.

Aufbau

DHT11 Steckplatine Der Aufbau ist relativ einfach und mit der DHT-sensor-library von Adafruit, konnte auch sehr schnell eine Ausgabe im Serial Monitor erzeugt werden.

Wichtig zu erwähnen ist eigentlich nur, dass der 10kOhm Widerstand nicht vergessen werden darf. Die Datenleitung wird auf den digitalen PIN 2 geführt. Das lässt sich über die Bibliothek aber auch ändern, sollte PIN2 für anderes benötigt werden.

Ausgabe des Beispielprogramms DHTtester Das Beispielprogramm kann man bei GitHub clonen und entsprechend wie alle Bibliotheken in den Ordner libraries verschieben. Nach dem Neustart der Arduino IDE kann man das Beispiel laden und sollte dann im Serial Monitor eine ähnliche Ausgabe wie im linken Bild erhalten. Um Änderungen zu sehen, kann man einen Fön nutzen, um die Temperatur zu steigern, oder wie hier den Sensor anhauchen. Das sollte recht schnell zu einer Änderung führen. Schaut man sich die Werte dann an, ist der Abfall der Luftfeuchtigkeit dann wesentlich langsamer.

Ausgabe in der Farbanzeige

In meinem letzten Beitrag zum 8x8 LED Matrix Modul hatte ich schon ein wenig mit dem Color Shield herum gespielt. Dieses soll für die Ausgabe wieder zum Einsatz kommen.

Feuchtesensor und ArduinoUNO und 8x8 RGB LED Matrix Modul Um den DHT11 mit dem ColorShield am Arduino UNO verwenden zu können, musste ich an dieser Stelle doch 2 Breadboards und einige Drähte bemühen, denn das Shield verwendet zwar nicht den digitalen PIN 2, aber die Zugänglichkeit war nicht gegeben. Löten wollte ich an dieser Stelle nicht.

Im Internet habe ich mich ein wenige umgeschaut, wie hoch die Luftfeuchtigkeit in Räumen sein sollte. Die Angaben schwanken hier und es kommt sicherlich auch noch auf das individuelle Wohlbefinden an. In der Regel sind aber wegen Schimmelgefahr Werte über 60% Luftfeuchtigkeit nicht auf Dauer zu empfehlen.

Für die Umsetzung habe ich das Beispielprogramm erweitert. Dazu wurden alle notwendigen Bestandteile auf dem Programm des Blogbeitrags xyz mit aufgenommen. Statt die gemessene Feuchtigkeit im Serial Monitor abzulesen, wird die Darzustellende Farbe berechnet. Ist die Luftfeuchtigkeit kleiner als 40% sollen alle 64 LEDs blau leuchten. Ist die Luftfeuchtigkeit größer als 65% sollen die LEDs rot leuchten. Für eine Luftfeuchtigkeit zwischen 45% und 65% wird entsprechend ein Verhältnis in der Leuchtstärke der blauen und der roten LEDs ausgegeben. Die LEDs zeigen dabei alle den selben aktuell gemessenen Wert an. Später könnte man noch die letzen Werte in die Berechnung mit einfließen lassen. Weiterhin soll das 8x8 LED RGB Matrix Modul nur geändert werden, wenn sich der gemessene Wert für die Luftfeuchtigkeit auch verändert hat. Diese Einschränkung wird nicht unbedingt benötigt.

DHT_ColorShield_8x8_RGB_LED.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  // Display Humidity

  int blue = 0;
  int red = 0;
  int delta = 0;

  int old_h;
  int old_t;

  float humidity_min = 45.0;
  float humidity_max = 65.0;

  if (old_h != h) {
    if (h <= humidity_min) {
      blue = 255;
      red = 0;
    } else if (h <= humidity_max) {
    delta = int(h - humidity_min) * (255.0 / (humidity_max - humidity_min));
      blue = 255 - delta;
      red = delta;
    } else {
      blue = 0;
      red = 255;
    }

    DispShowColor(red,0,blue);
  }

Im GitHub-Account findet man das zu diesem Beitrag gehörige Projekt DHT11_ColorShield_8x8_RGB_LED.

Und noch ein kleines Video, wie die Luftfeuchtigkeit angezeigt wird.

Comments