Temperatur und Luftfeuchtigkeit messen mit dem Arduino Nano

Für meine ersten Schritte im Mikrocontroller-Umfeld abseits der vorgetrampelten Pfade von Starter Kit oder Adventskalender wollte ich mich mit der Luftfeuchtigkeitsmessung beschäftigen. Dabei ist mir der Temperatur- und Luftfeuchtigkeits-Sensor DHT-11 über den Weg gelaufen.

Der DHT-11 ist ein einfacher und günstiger Sensor, der die Temperatur und die Luftfeuchtigkeit misst und über ein einfaches Protokoll ausgibt. Wenn eine höhere Genauigkeit gefordert ist kann der etwas grössere und teurere DHT-22 eingesetzt werden. Für die Ansteuerung der beiden Sensoren kann dabei die selbe Bibliothek verwendet werden, es muss bei der Instanzierung nur der passende Typ angegeben werden.

Der erste einfache Aufbau benötigt nur einen Arduino (in meinem Fall kam der Arduino Nano aus dem Adventskalender zum Einsatz) und den Sensor auf einem Modul. Dieses Modul beinhaltet den Pull-up-Widerstand bereits, beim Einsatz des „nackten“ Sensors muss dieser noch entsprechend hinzugefügt werden. Beim Modul muss noch beachtet werden dass es Versionen mit verschiedenen Pin-Belegungen gibt. Beim von mir eingesetzten Modul ist die Belegung VCC / Data / GND, es gibt aber auch Module mit Data / VCC / GND.

Steckplatinen-Aufbau mit Arduino Nano und DHT-11
Steckplatinen-Aufbau mit Arduino Nano und DHT-11

Das erste Programm soll dabei nur die Daten auslesen und über die Schnittstelle zum PC ausgeben. Dazu muss die Bibliothek „DHT sensor library“ von Adafruit in der Arduino IDE unter Tools->Manage Libraries… hinzugefügt werden. Beim Erstellen des Programmes war die Version 1.3.8 aktuell. Danach kann der untenstehende Code in die IDE übernommen werden:

/*******************************************************************************************
 * Read data from DHT-11 sensor via an arduino nano                                        *
 *                                                                                         *
 * based on a script by Philippe Keller (www.bastelgarage.ch)                              *
 *******************************************************************************************/


// import used library
#include "DHT.h"

// definitions
#define DHTPIN 2          // pin of the arduino where the sensor is connected to
#define DHTTYPE DHT11     // define the type of sensor (DHT11 or DHT22)
       
// create instance of DHT                          
DHT dht(DHTPIN, DHTTYPE, 6);

void setup()
{
  Serial.begin(9600);
  Serial.println("DHT11 test program");
  dht.begin();
}

void loop()
{
  // Wait two seconds between measurements as the sensor will not measure faster
  delay(2000);
                                   
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // validate values
  if (isnan(h) || isnan(t)) {      
    Serial.println("Error while reading data!");
    return;
  }

  // send data via serial connection to pc
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(h);
  Serial.print("%\t");
  Serial.print("Temperatur: ");
  Serial.print(t);
  Serial.println("°C");
}

Dieses Programm wird dann auf den Arduino übertragen. Dabei musste ich für meinen Arduino Nano den Prozessor auf „ATMega 328P (Old Bootlaoder)“ und den Programmer auf „AVRISP mkII“ einstellen. Nach dem Übertragen produziert das Programm dann im Serial Monitor eine Ausgabe wie folgende:

DHT11 test program
Luftfeuchtigkeit: 36.00%      Temperatur: 25.60°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.40°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.50°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.60°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.40°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.40°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.40°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.40°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.60°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.50°C
Luftfeuchtigkeit: 35.00%      Temperatur: 25.50°C
Luftfeuchtigkeit: 35.00%      Temperatur: 25.50°C
Luftfeuchtigkeit: 36.00%      Temperatur: 25.50°C

Natürlich möchte man nicht die ganze Zeit einen PC oder Laptop mitschleppen um die Teperatur und Luftfeuchtigkeit zu messen. In einem nächsten Ausbauschritt wird deshalb eine Anzeige hinzukommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.