Dieses Tutorial ist Teil von: Digitaler Sensor für relative Luftfeuchtigkeit und Temperatur HTU21D
Videos zum digitalen Sensor für relative Luftfeuchtigkeit und Temperatur HTU21D. Links zu weiteren Videos finden Sie unterhalb dieses Artikels.
Anzeige der Temperatur von einem HTU21D auf einem LCD
In diesem Tutorial werden wir lernen, wie man Temperaturwerte vom HTU21D Temperatur- und Feuchtigkeitssensor auf einem LCD anzeigt. Das Ergebnis wird eine funktionale Einrichtung sein, bei der die Temperatur in Grad Celsius, Fahrenheit und Kelvin sowie die relative Luftfeuchtigkeit auf demselben Bildschirm angezeigt werden kann. Dieses Projekt gibt Ihnen praktische Erfahrung mit I2C-Kommunikation und der grundlegenden Handhabung von Sensordaten. Für eine detaillierte visuelle Anleitung sollten Sie sich das Video anschauen (im Video bei 00:00).

Hardware Erklärt
Die Hauptkomponenten für dieses Projekt umfassen den HTU21D-Sensor und das LCD-Display. Der HTU21D ist ein digitaler Feuchtigkeits- und Temperatursensor, der über das I2C-Protokoll kommuniziert. Er liefert präzise Messungen der Temperatur in Grad Celsius oder Fahrenheit und der relativen Luftfeuchtigkeit als Prozentsatz. Der Sensor arbeitet typischerweise mit einer Spannung von 3,3 V, kann jedoch auch mit 5-V-Systemen betrieben werden. Das LCD-Display, das wir verwenden werden, ist ein 16x2 LCD mit einer I2C-Schnittstelle. Diese Art von Display benötigt nur zwei Drähte für die Datenkommunikation, was die Verbindung mit Mikrocontrollern wie Arduino erleichtert. Die I2C-Schnittstelle ermöglicht den Anschluss mehrerer Geräte an denselben Bus, wodurch die Verkabelung vereinfacht und die Anzahl der verwendeten Pins reduziert wird.
Datenblatt-Details
| Hersteller | Adafruit |
|---|---|
| Teilenummer | HTU21D-F |
| Logik/IO-Spannung | 3,3 V (typ.) |
| Versorgungsspannung | 1,5 V bis 3,6 V |
| Ausgangsstrom | 0,5 mA (typ.) |
| Spitzenstrom | 1,5 mA (max.) |
| Temperaturbereich | -40 bis 125 °C |
| Feuchtigkeitsspanne | 0 bis 100 %RH |
| Paket | DFN-6 |
| Hinweise / Varianten | None |
- Stellen Sie die richtigen Spannungspegel sicher, um Schäden am Sensor zu vermeiden.
- Verwenden Sie bei Bedarf Pull-up-Widerstände an den SDA- und SCL-Leitungen.
- Überprüfen Sie die I2C-Adresse mit einem Scanner, um die korrekte Konfiguration sicherzustellen.
- Gehen Sie sorgfältig mit den Ausgaben des Sensors um, um Lesefehler zu vermeiden.
- Halten Sie den Sensor beim Messen von Wärmequellen fern.
Verdrahtungsanweisungen

Um den HTU21D-Sensor an das Arduino anzuschließen, verbinden Sie den VCC-Pin des Sensors mit dem 3,3V-Ausgang des Arduino. Verbinden Sie als Nächstes den GND-Pin des Sensors mit der Masse des Arduino. Der SDA-Pin, der für die Datenübertragung verwendet wird, sollte mit dem A4-Pin des Arduino verbunden werden. Ebenso verbinden Sie den SCL-Pin, der für das Taktsignal verwendet wird, mit dem A5-Pin des Arduino. Stellen Sie sicher, dass Ihr LCD ebenfalls richtig angeschlossen ist; die I2C-Adresse für das LCD in diesem Setup ist typischerweise 0x3F. Wenn Sie einen anderen Typ von LCD oder eine andere I2C-Adresse verwenden, passen Sie den Code entsprechend an. Überprüfen Sie nach dem Verdrahten, ob alle Verbindungen fest sitzen, bevor Sie das Arduino einschalten.
Codebeispiele und Anleitung
Im Code beginnen wir damit, die notwendigen Bibliotheken für den HTU21D-Sensor und das LCD einzubinden:
#include
#include "Adafruit_HTU21DF.h"
#include
Dies richtet die Umgebung für die Verwendung sowohl des Sensors als auch des Displays ein. Die `Adafruit_HTU21DF`-Bibliothek übernimmt die Funktionalität des Sensors, während die `LiquidCrystal_I2C`-Bibliothek das LCD verwaltet. Als nächstes erstellen wir eine Instanz für sowohl den Sensor als auch das LCD:
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
LiquidCrystal_I2C lcd(0x3F, 16, 2);
Hier,htuist das Objekt für den HTU21D-Sensor, undlcdist das Objekt für das LCD-Display. Die I2C-Adresse für das LCD ist auf 0x3F eingestellt, was Sie möglicherweise basierend auf Ihrer Konfiguration überprüfen müssen.setup()Funktion, wir initialisieren das LCD und überprüfen, ob der Sensor betriebsbereit ist:
void setup() {
lcd.begin();
lcd.backlight();
if (!htu.begin()) {
lcd.print("Sensor missing");
while (1);
}
lcd.print("HTU21D Ready");
}
Dieser Code initialisiert das LCD und überprüft die Anwesenheit des Sensors. Wenn der Sensor nicht erkannt wird, wird "Sensor fehlt" angezeigt und das Programm angehalten.loop()Funktion, wir lesen kontinuierlich die Temperatur- und Feuchtigkeitswerte und zeigen sie an:
void loop() {
lcd.clear();
lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');
lcdDisplay(0, 1, "Humidity: ", 10, 1, getHTU('H'), '%');
delay(5000);
}
In diesem Auszug löschen wir das LCD und rufen dann dielcdDisplay()Funktion, um die Temperatur in Celsius und die Luftfeuchtigkeit anzuzeigen. DergetHTU()Die Funktion ruft die Temperatur oder die Luftfeuchtigkeit basierend auf dem übergebenen Zeichen ab.
Demonstration / Was zu erwarten ist
Wenn die Einrichtung abgeschlossen ist und der Code auf das Arduino hochgeladen wurde, sollte das LCD die aktuelle Temperatur in Celsius und die relative Luftfeuchtigkeit anzeigen. Wenn alles richtig angeschlossen ist, sollten die Werte alle paar Sekunden aktualisiert werden. Achten Sie auf häufige Fallstricke, wie umgekehrte Verbindungen oder falsche I2C-Adressen, die zu Kommunikationsfehlern mit dem Sensor führen können (im Video bei 05:00).
Video-Zeitstempel
- 00:00- Einführung
- 01:30- Verdrahtungsanweisungen
- 03:15- Code-Erklärung
- 04:50- Demonstration
- 05:40- Fazit
Dieses Tutorial ist Teil von: Digitaler Sensor für relative Luftfeuchtigkeit und Temperatur HTU21D
- Lektion 35-1: Verwendung des HTU21D Temperatursensors
- Lektion 35-2: Verwendung des HTU21D-Temperatursensors – Individueller Code
- Lektion 35: Verwendung des HTU21D-Temperatursensors mit dem Arduino
- Lektion 36: Verwendung des HTU21D-Temperatursensors mit einem LCD Arduino Schritt-für-Schritt-Kurs
- Verwendung von zwei weiteren HTU21DF-Feuchtigkeits- und Temperatursensoren mit Arduino
- Anzeige der Temperatur von einem HTU21D als Balkendiagramm auf einem LCD
- So verwenden Sie den HTU21DF Luftfeuchtigkeits- und Temperatursensor mit Arduino (Basiscode)
- So verwenden Sie den HTU21DF Feuchtigkeits- und Temperatursensor mit Arduino (benutzerdefinierter Code)
/*
* Display Temperature from HTU21DF on LCD1602-I2C or LCD2004
* Updated by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
* Watch video instructions for this sketch:
**************************************************
*
This is an example for the HTU21D-F Humidity & Temp Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These displays use I2C to communicate; 2 pins are required to
interface
Watch Introduction to 360 Servo video with code: https://youtu.be/b_xvu6wWafA
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all libraries, codes, wiring diagrams all in one place
visit my course now http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* Code is available at http://robojax.com/learn/arduino
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
// start of settings for LCD1602 with I2C
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// end of settings for LCD1602 with I2C
void setup() {
lcd.begin();
lcd.backlight();
if (!htu.begin()) {
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("sensor missing");
while (1);
}else{
// initialize the LCD
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("Demo");
}
delay(2000);
}
void loop() {
lcd.clear();// clear previous values from screen
lcdDisplay(
// to print Celsius:
0, // character 0
0, // line 0
"Celsius: ",
// to print Celsius
10, // character 10
0, // line 0
getHTU('C'),
'd'
);
lcdDisplay(
// to print Fahrenheit:
0, // character 0
1, // line 1
"Fahrenheit: ",
// to print Fahrenheit
10, // character 9
1, // line 0
getHTU('F'),
'd'
);
delay(5000);
lcdDisplay(
// to print Kelvin:
0, // character 0
0, // line 0
"Kelvin: ",
// to print Celsius
9, // character 10
0, // line 0
getHTU('K'),
'k'
);
lcdDisplay(
// to print humidity text
0, // character 0
1, // line 1
"Humidity: ",
// to print humidity
10, // character 9
1, // line 1
getHTU('H'),
'%'
);
delay(5000);
}
/*
* @brief returns temperature or relative humidity
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* H = Humidity
* @return returns one of the values above
* Usage: to get Fahrenheit type: getHTU('F')
* to print it on serial monitor Serial.println(getHTU('F'));
* Written by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
* www.Robojax.com
*/
float getHTU(char type)
{
float value;
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
if(type =='F')
{
value = temp *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = temp + 273.15;//convert to Kelvin
}else if(type =='H')
{
value = rel_hum;//return relative humidity
}else{
value = temp;// return Celsius
}
return value;
}//
/*
* lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
* displays value and title on LCD1602
* How to use:
* If you want to display: "Voltage: 13.56mV" starting from the first character
* on the second row.
* use:
* lcdDisplay(0, 1, "Voltage: ", 13.56,'d')
*
* 'd' is degree symbol
* tc is character number (0)
* tr is row in the lcd (1)
* title is the text (Voltage:)
* vc value for character
* vr value for row or line
* value is the value (13.56)
*/
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value,char symbol)
{
// Robojax.com LCD1602 for HTU21D Demo
lcd.setCursor (tc,tr); //
lcd.print(title);
lcd.setCursor (vc,vr); //
lcd.print(value);
if(symbol == 'd')
{
lcd.print((char)223);
}else if(symbol =='%')
{
lcd.print("%");
}else if(symbol =='k')
{
lcd.print("K");
}
// Robojax.com LCD1602 for HTU21D Demo
}
Dinge, die Sie vielleicht brauchen
-
AmazonHTU21D-Modul bei Amazon kaufenamzn.to
-
eBayKaufe HTU21D von eBayebay.us
-
AliExpressKaufen Sie HTU21D oder SHT21 bei AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
-
ExternAdafruit HTU21D Bibliothek (GitHub)github.com
Dateien📁
Datenblatt (pdf)
-
HTU21D_Temperatur_Luftfeuchtigkeit_Datenblatt
HTU21D_temerature_humidity_datasheet.pdf0.96 MB