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.
Lektion 35-1: Verwendung des HTU21D Temperatursensors
In diesem Tutorial werden wir erkunden, wie man den HTU21D Temperatur- und Feuchtigkeitssensor mit einem Arduino verwendet. Der HTU21D ist ein kompakter Sensor, der über I2C kommuniziert, was die Ansteuerung von Mikrocontrollern einfach macht. Am Ende dieser Lektion werden Sie in der Lage sein, Temperatur- und Feuchtigkeitswerte zu lesen und sie über den seriellen Monitor des Arduino anzuzeigen.

Für dieses Projekt werden wir die Adafruit-Bibliothek nutzen, die speziell für den HTU21D-Sensor entwickelt wurde. Die Bibliothek vereinfacht den Prozess des Lesens von Sensordaten, sodass wir uns auf die Integration des Sensors in unsere Projekte konzentrieren können. Sie können die Temperaturmessungen des Sensors in Celsius, Fahrenheit und Kelvin sowie den relativen Feuchtigkeitsprozentsatz (im Video bei 03:15) erwarten.
Hardware erklärt
Die Hauptkomponente für dieses Projekt ist der HTU21D Temperatur- und Feuchtigkeitssensor. Dieser Sensor arbeitet mit einer Versorgungsspannung von 1,5 bis 3,6 Volt und verbraucht sehr wenig Strom, was ihn ideal für batteriebetriebene Geräte macht. Er kommuniziert mit dem Arduino über das I2C-Protokoll und benötigt nur zwei Datenleitungen: SDA für Daten und SCL für den Takt.
Um den Sensor mit Strom zu versorgen, werden wir ihn entweder an eine 3,3V- oder 5V-Quelle anschließen, abhängig von dem spezifischen Modul, das Sie verwenden. Die Adafruit-Version enthält einen Spannungsregler, der es ermöglicht, mit beiden Spannungspegeln nahtlos zu arbeiten. Diese Flexibilität macht es zu einer hervorragenden Wahl für verschiedene Anwendungen.
Datenblatt Einzelheiten
| Hersteller | TE Connectivity |
|---|---|
| Teilenummer | HTU21D-F |
| Logik/IO-Spannung | 1,5 - 3,6 V |
| Versorgungsspannung | 3,3 V (typ.) |
| Aktueller Verbrauch (Leerlauf) | 0,02 µA |
| Stromverbrauch (Messung) | 450 µA (typ.) |
| Temperaturbereich | -40 bis +125 °C |
| Feuchtigkeitsauflösung | 0,04 % |
| Paket | 6-poliger DFN |
- Stellen Sie die richtigen Spannungspegel sicher, um zu verhindern, dass der Sensor beschädigt wird.
- Verwenden Sie Pull-up-Widerstände an den I2C-Leitungen, falls nicht im Modul enthalten.
- Halten Sie die Kabel kurz, um Interferenzen mit der I2C-Kommunikation zu minimieren.
- Berücksichtigen Sie die Wärmeableitung, wenn Sie in Hochtemperaturumgebungen verwenden.
- Überprüfen Sie die Ausrichtung des Sensors, um die korrekten Pinverbindungen sicherzustellen.
Verdrahtungsanleitung

Um den HTU21D-Sensor an Ihr Arduino anzuschließen, beginnen Sie damit, den VCC-Pin des Sensors mit dem 3,3V-Stromanschluss am Arduino zu verbinden. Verbinden Sie dann den GND-Pin des Sensors mit dem Erdungsanschluss (GND) am Arduino. Anschließend verbinden Sie den SDA-Pin des Sensors mit dem analogen Pin A4 des Arduino, der als I2C-Datenleitung dient. Schließlich verbinden Sie den SCL-Pin des Sensors mit dem analogen Pin A5, der als I2C-Taktleitung fungiert. Stellen Sie sicher, dass Ihre Verbindungen sicher sind, um unterbrochene Messwerte zu vermeiden.
Zur Klarheit, wenn Sie ein anderes Board verwenden, stellen Sie sicher, dass Sie die richtigen Pins für SDA und SCL identifizieren, da diese variieren können. Diese Verkabelung ermöglicht es dem Arduino, effektiv mit dem HTU21D-Sensor zu kommunizieren (im Video bei 05:00).
Codebeispiele und Anleitung
Unten steht ein Auszug aus der Setup-Funktion, die die serielle Kommunikation initialisiert und überprüft, ob der Sensor gefunden wurde:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}Dieser Code beginnt die serielle Kommunikation mit einer Baudrate von 9600 und versucht, den HTU21D-Sensor zu initialisieren. Wenn der Sensor nicht erkannt wird, wird eine Fehlermeldung ausgegeben und die weitere Ausführung gestoppt.
Die Hauptschleife des Programms liest kontinuierlich die Temperatur- und Feuchtigkeitswerte aus:
void loop() {
Serial.print(getHTU('C'));
Serial.println("C");
Serial.print("Humidity:");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}In dieser Schleife rufen wir die Funktion auf.getHTUmit 'C', um die Temperatur in Celsius zu erhalten, und 'H', um die Luftfeuchtigkeit zu erhalten. Die Ergebnisse werden jede Sekunde im seriellen Monitor angezeigt. Dies ermöglicht eine Echtzeitbeobachtung der Sensordaten.
Zusätzlich haben wir eine FunktiongetHTUdas die Temperatur oder Luftfeuchtigkeit basierend auf einer Texteingabe zurückgibt:
float getHTU(char type) {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
return (type == 'H') ? rel_hum : temp;
}Diese Funktion liest die Temperatur und die Luftfeuchtigkeit vom Sensor und gibt den entsprechenden Wert basierend auf dem angegebenen Typ zurück. Dieser modulare Ansatz hält den Code sauber und einfach zu warten.
Demonstration / Was zu erwarten ist
Nach erfolgreicher Einrichtung und Ausführung des Codes sollten die Temperatur- und Feuchtigkeitswerte im seriellen Monitor angezeigt werden. Wenn Sie Wärme auf den Sensor anwenden, sollten die Temperaturwerte entsprechend steigen, während die Feuchtigkeit möglicherweise abnimmt. Wenn die Temperatur den maximalen Bereich des Sensors überschreitet, kann es zu unerwarteten Ergebnissen kommen, wie zum Beispiel null (im Video um 12:00).
Video-Zeitstempel
- 00:00- Einführung
- 03:15- Sensorübersicht
- 05:00- Verdrahtungsanweisungen
- 10:00- Code-Durchlauf
- 12:00- Demonstration
Dieses Tutorial ist Teil von: Digitaler Sensor für relative Luftfeuchtigkeit und Temperatur HTU21D
- 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 auf einem LCD
- 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)
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 35: HTU21D Temperature Sensor
* Updated by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
Please watch video instructions here https://youtu.be/LyA0yAKlf9E
This code is available at http://robojax.com/course1/?vid=lecture35
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
If you found this tutorial helpful, please support me so I can continue creating.
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/>.
*/
/*
**************************************************
*
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
****************************************************/
#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();
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com");
Serial.println("HTU21D-F test");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//Get the code for the course: http://robojax.com/L/?id=339
Serial.print(getHTU('C'));
printDegree();
Serial.println("C");
Serial.print(getHTU('F'));
printDegree();
Serial.println("F");
Serial.print(getHTU('K'));
Serial.println("K");
Serial.println(" ");
Serial.print("Humidity:");
Serial.print(getHTU('H'));
Serial.println("%");
if(getHTU('C') <81)
{
//digitalWrite(5, LOW);
}
delay(1000);
}
/*
* @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)
{
//Get the code for the course: http://robojax.com/L/?id=339
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;
}//
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
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
-
ExternUnterschied zwischen HTU21DF und HTU21D (Bild)robojax.com
Dateien📁
Datenblatt (pdf)
-
HTU21D_Temperatur_Luftfeuchtigkeit_Datenblatt
HTU21D_temerature_humidity_datasheet.pdf0.96 MB -
HTU31D HTU31V Temperatur- und Feuchtigkeitssensoren Datenblatt
HTU31_Sensors_Datasheet.pdf0.67 MB