In diesem Arduino-Tutorial zeige ich dir, wie du eine Wetterstation mit dem GY-21-Sensor (auch bekannt als SHT 21, HTU21 oder SI7021), einem Arduino UNO und einem I2C-LCD umsetzen kannst. Wir werden Temperatur und Luftfeuchtigkeit messen und die Daten auf einem LCD-Display anzeigen.
Der GY-21-Sensor
Der GY-21-Sensor ist ein vielseitiges Bauteil, das einen Temperatur- und Feuchtigkeitssensor kombiniert. Er verwendet den Sensorchip SHT 21 oder HTU21 und in einigen Fällen den SI7021. Der Sensor ist für seine hohe Genauigkeit und einfache Handhabung bekannt, was ihn zu einer idealen Wahl für wetterbezogene Projekte macht.
Er ist gleichzeitig eine sehr gute Alternative zu der DHT-Reihe, wie z.B. dem DHT22.
Bevor wir in den Code eintauchen, widmen wir uns erstmal der Hardware:
Benötigte Bauteile
- GY-21-Sensor
- LCD-Display (Ja, das D steht schon für Display, liest sich so aber besser ;-) )
Beschreibung der Schaltung
Schließe den GY-21-Sensor wie folgt an das Arduino-Board an:
- VCC an 5V
- GND an GND
- SDA an A4 oder an den SDA-Pin des Arduinos
- SCL an A5 oder an den SCL-Pin des Arduinos
Verbinde das I2C LCD mit dem Arduino-Board:
- VCC an 5V
- GND an GND
- SDA an A4 oder an den SDA-Pin des Arduinos
- SCL an A5 oder an den SCL-Pin des Arduinos
Installation der Libraries
Um den Sensor zu betreiben, wird die Library Adafruit HTU21DF benötigt. Klicke in der Arduino-Software auf Libraries und suche nach ihr. Dann installiere sie in der aktuellen Version. Falls du gefragt wirst, installiere auch alle dazugehörigen Dependencies (Klicke auf Install All).
Code
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Adafruit_HTU21DF.h> LiquidCrystal_I2C lcd(0x27, 16, 2); Adafruit_HTU21DF sht21 = Adafruit_HTU21DF(); void setup() { Serial.begin(115200); lcd.init(); lcd.backlight(); sht21.begin(); } void loop() { float temperature = sht21.readTemperature(); float humidity = sht21.readHumidity(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: " + String(temperature, 1) + " C"); lcd.setCursor(0, 1); lcd.print("Humidity: " + String(humidity, 1) + " %"); Serial.print("Temperature: "); Serial.print(temperature, 1); Serial.print(" C\tHumidity: "); Serial.print(humidity, 1); Serial.println(" %"); delay(1000); }
Code-Erklärungen
- Wir beginnen mit der Einbindung der erforderlichen Bibliotheken für die I2C-Kommunikation, die LCD-Steuerung und den HTU21 (SHT21)-Sensor.
- Wir richten ein LCD-Objekt (lcd) ein, um mit dem I2C-LCD-Bildschirm zu kommunizieren, und ein HTU21 (SHT21)-Sensorobjekt (sht21) zum Lesen von Temperatur- und Luftfeuchtigkeitsdaten.
In der setup-Funktion:
- Initialisieren wir die serielle Kommunikation mit einer Baudrate von 115200, um Daten an den Serial Monitor zu senden.
- Initialisieren wir den LCD-Bildschirm und schalten die Hintergrundbeleuchtung ein.
- Starten wir die Kommunikation mit dem HTU21 (SHT21)-Sensor.
In der loop-Funktion:
- Lesen wir Temperatur- und Luftfeuchtigkeitsdaten vom HTU21 (SHT21)-Sensor.
- Löschen wir den LCD-Bildschirm und setzen den Cursor, um die Daten auf zwei Zeilen anzuzeigen.
- Die Temperatur und Luftfeuchtigkeit werden auf dem LCD-Bildschirm angezeigt.
- Wir geben dieselben Daten auch im Serial Monitor aus, um sie in Echtzeit zu überwachen oder aufzuzeichnen.
- Am Ende der Schleife wird eine Verzögerung von 1 Sekunde hinzugefügt, um periodische Sensorablesungen zu ermöglichen.
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs
ich habe ein Problem Verkabelung und Sketch sind korrekt, serial Ausgabe ok,
LCD Backlight blinkt im Sekundentakt, keine Anzeige.
Gruß
Bernd