Temperature and humidity measurement with the AM2120

FunduinoLast updated on

Zwei Messwerte über eine einzige Datenleitung auslesen

Der AM2120 misst Temperatur und Luftfeuchtigkeit und gibt beide Werte über eine einzige Datenleitung an den Mikrocontroller weiter.

In dieser Anleitung schließt du den Sensor an, installierst die passende Bibliothek und lässt dir die Messwerte im seriellen Monitor anzeigen. Achte dabei besonders auf die Kabelfarben – bei diesem Sensor sind sie anders belegt, als man es erwarten würde.

Vollständiger Aufbau: AM2120-Sensor am Arduino UNO, Datenleitung an Pin 5

Den Sensor anschließen

Der AM2120 misst Temperatur und Luftfeuchtigkeit und gibt beide Werte über eine einzige Datenleitung aus. Die Datenleitung kommt an Pin 5 des Mikrocontrollers.

Achtung, hier gibt es eine Besonderheit.

Den AM2120 gibt es in verschiedenen Bauformen. Bei der Ausführung im kleinen Gehäuse entsprechen die Kabelfarben nicht der üblichen Belegung. Normalerweise würdest du Rot für Plus, Schwarz für Minus und Gelb für die Datenleitung erwarten – hier ist es anders:

  • Gelb an 3,3V
  • Schwarz an GND
  • Rot ist die Datenleitung und kommt an Pin 5

Prüfe die Belegung am besten selbst: Schau dir den Sensor an und verfolge die Kontakte bis zum Kabel. Die Belegung laut Datenblatt siehst du auf dem ersten Bild.

Die Bauteilliste nennt 40 Steckkabel männlich/männlich. Der verlinkte Sensor hat aber einen JST-Stecker mit Litzen – dafür braucht man Kabel männlich/weiblich oder ein passendes JST-Kabel. Warum der Sensor mit 3,3 V statt mit 5 V versorgt wird, erklärt der Artikel nicht; laut Datenblatt sind beide Spannungen zulässig.

Anschlussbelegung des AM2120 laut Datenblatt: gelbes Kabel an 3,3V, schwarzes an GND, rotes als Datenleitung
Vollständiger Aufbau: AM2120-Sensor am Arduino UNO, Datenleitung an Pin 5
1 / 2

Die DHT-Bibliothek installieren

Für die Programmierung brauchst du eine Bibliothek. Der AM2120 verwendet dieselbe Kommunikationsart wie der DHT22 und ist deshalb mit der DHT-Bibliothek kompatibel.

Ist sie in deiner Arduino IDE noch nicht vorhanden, installierst du sie über den Bibliotheksverwalter.

Der Bibliotheksverwalter der Arduino IDE mit der DHT-Bibliothek

Der Sketch

Im setup-Teil startest du die serielle Kommunikation und die Verbindung zum Sensor. Im loop-Teil liest du Temperatur und Luftfeuchtigkeit in je eine Variable ein.

Die Abfrage mit isnan() prüft, ob die gelesenen Werte gültig sind. Liefert der Sensor keinen brauchbaren Wert, gibt der Sketch eine Fehlermeldung aus und beginnt den Durchlauf von vorn. Erst danach werden die Messwerte im seriellen Monitor ausgegeben.

Temperatur und Luftfeuchtigkeit auslesen
#include "DHT.h"
#define pinDHT 5 // Sensor Pin
DHT dht(pinDHT, DHT22); //Erstellen eines Sensors aus der Bibliothek,mit Einstellung des Typs DHT22, der dieselbe Kommunikationsart wie der AM2120 verwendet
void setup()
{
  Serial.begin(9600); //Initialisierung der seriellen Kommunikation
  dht.begin(); //Start der Kommunikation mit dem DHT-Sensor
}
void loop()
{
  float temperatur = dht.readTemperature(); //Temperatur in eine Variable einlesen
  float luftfeuchtigkeit = dht.readHumidity(); //Luftfeuchtigkeit in eine Variable einlesen
  //Überprüfen, ob die gelesenen Werte gültig sind, mit Hilfe der isnan-Funktion
  if (isnan(temperatur) || isnan(luftfeuchtigkeit)) //Bei fehlerhaftem Lesen eine Fehlermeldung ausgeben
  {
    Serial.println("Fehler beim Lesen des Sensors");
    delay(800);
    return;
  }
  //über die serielle Schnittstelle die Messwerte ausgeben
  Serial.print("Temperatur: ");
  Serial.print(temperatur);
  Serial.print(" Grad Celsius, ");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(luftfeuchtigkeit);
  Serial.println("% RH.");
  delay(800);
}
Rate the instructions

Comments

Ask a question or share an experience

Contact us if something doesn’t work. Please include your board and the error message.

We review every comment before publication. Your email address remains with us.