Ten poradnik jest częścią: Cyfrowy czujnik wilgotności względnej i temperatury HTU21D
Filmy dotyczące cyfrowego czujnika wilgotności względnej i temperatury HTU21D. Linki do innych filmów znajdują się poniżej tego artykułu.
Lekcja 35: Używanie czujnika temperatury HTU21D z Arduino
Lekcja 35: Użycie czujnika temperatury HTU21D z Arduino
W tym samouczku nauczymy się, jak podłączyć czujnik temperatury HTU21D do Arduino. Ten czujnik umożliwia dokładny pomiar temperatury i wilgotności za pomocą komunikacji I2C, co ułatwia jego integrację z różnymi projektami. Po zakończeniu tej lekcji będziesz w stanie odczytywać wartości temperatury i wilgotności z czujnika oraz wyświetlać je na monitorze szeregowym.

Do tego projektu użyjemy biblioteki Adafruit, która zapewnia prosty sposób komunikacji z czujnikiem HTU21D. Nauczysz się, jak skonfigurować połączenia, napisać kod i zrozumieć kluczowe identyfikatory używane w programie. Jeśli potrzebujesz wyjaśnień dotyczących dowolnej części procesu, możesz odwołać się do wideo (w filmie o 0:00).
Omówienie sprzętu
HTU21D to cyfrowy czujnik wilgotności i temperatury. Działa w zakresie napięcia od 1,5 V do 3,6 V, co czyni go odpowiednim zarówno dla systemów 3,3 V, jak i 5 V. Czujnik komunikuje się przez I2C, wymagając tylko dwóch przewodów do przesyłania danych: linii danych szeregowych (SDA) i linii zegara szeregowego (SCL). Czujnik ma bardzo niskie zużycie energii, pobierając tylko 0,02 µA w stanie bezczynności i do 450 µA podczas pomiarów.
Oprócz czujnika będziesz potrzebować płytki Arduino oraz kilku przewodów połączeniowych, aby wszystko podłączyć. Połączenia są proste: zasil czujnik, podłącz linie danych i gotowe. Upewnij się, że połączenia są pewne, aby uniknąć problemów z komunikacją.
Szczegóły z karty katalogowej
| Producent | TE Connectivity |
|---|---|
| Numer części | HTU21D-F |
| Napięcie logiczne/IO | 1,5 - 3,6 V |
| Napięcie zasilania | 3,3 V |
| Prąd wyjściowy (typowy) | 0,02 µA (bezczynność), 450 µA (aktywny) |
| Zakres temperatury | -40 do +125 °C |
| Zakres wilgotności | 0 do 100 % RH |
| Rozdzielczość (temperatura) | 0,01 °C |
| Rozdzielczość (wilgotność) | 0,04 % RH |
| Obudowa | DFN-8 |
- Zapewnij odpowiednie napięcie zasilania (1,5 - 3,6 V), aby uniknąć uszkodzeń.
- W razie potrzeby użyj rezystorów podciągających na liniach SDA i SCL.
- Utrzymuj krótkie połączenia, aby zminimalizować szumy w komunikacji I2C.
- Dokładnie sprawdź połączenia, aby uniknąć pływających wejść.
- Użyj radiatora, jeśli pracujesz w pobliżu maksymalnych limitów temperatury.
Instrukcje dotyczące połączeń

Aby podłączyć czujnik HTU21D do Arduino, zacznij od podłączenia pinów zasilania. Podłącz lewy pin czujnika do wyjścia 3,3 V na Arduino. Drugi pin należy podłączyć do masy (GND). Następnie podłącz pin SDA czujnika do pinu A4 na Arduino, który służy jako linia danych do komunikacji I2C. Na koniec podłącz pin SCL czujnika do pinu A5 na Arduino, który działa jako linia zegara. Upewnij się, że wszystkie połączenia są pewne, aby utrzymać niezawodną komunikację.
Jeśli używasz innej płytki, piny SDA i SCL mogą się różnić, więc sprawdź specyfikację swojej płytki. W filmie krótko omówiono alternatywne opcje połączeń (w filmie o 1:30).
Przykłady kodu i omówienie
Teraz przyjrzymy się kodowi, który komunikuje się z czujnikiem HTU21D. Najpierw musimy dołączyć niezbędne biblioteki do komunikacji I2C i czujnika HTU21D. Poniższy fragment pokazuje funkcję konfiguracji:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Nie można znaleźć czujnika!");
while (1);
}
}
Tutaj inicjalizujemy monitor szeregowy z prędkością transmisji 9600. Następnie próbujemy zainicjalizować czujnik za pomocą htu.begin(). Jeśli czujnik nie zostanie znaleziony, program wydrukuje komunikat o błędzie i zatrzyma się.
Następnie w funkcji pętli ciągle odczytujemy wartości temperatury i wilgotności:
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temperatura: "); Serial.print(temp); Serial.println(" C");
Serial.print("Wilgotność: "); Serial.print(rel_hum); Serial.println(" %");
delay(500);
}
W tej pętli odczytujemy temperaturę za pomocą htu.readTemperature() i zapisujemy ją w zmiennej temp. Podobnie odczytujemy wilgotność za pomocą htu.readHumidity(). Wartości są następnie drukowane na monitorze szeregowym co 500 milisekund.
Dla bardziej uporządkowanego podejścia możesz zdefiniować funkcje do obsługi odczytów. Pełny kod zostanie załadowany poniżej tego artykułu, zapewniając pełny dostęp do wszystkich omawianych funkcji.
Demonstracja / Czego się spodziewać
Po wgraniu kodu do Arduino i otwarciu monitora szeregowego powinieneś zobaczyć ciągłe odczyty temperatury i wilgotności. Wartości będą aktualizowane co pół sekundy. Jeśli czujnik wykryje temperatury powyżej maksymalnego limitu 125 °C, może wyświetlać zero lub błędne wartości. To częsta pułapka, na którą należy uważać podczas testowania (w filmie o 4:30).
Znaczniki czasu wideo
- [00:00] Wprowadzenie
- [00:22] Omówienie czujnika
- [01:22] Przegląd karty katalogowej
- [02:28] Połączenia
- [03:03] Instalacja biblioteki
- [04:05] Wyjaśnienie kodu (część 1)
- [08:33] Wyjaśnienie kodu (część 2)
- [07:34] Demonstracja na żywo
Ten poradnik jest częścią: Cyfrowy czujnik wilgotności względnej i temperatury HTU21D
- Lesson 35-1: Using the HTU21D Temperature Sensor
- Lesson 35-2: Using the HTU21D Temperature Sensor Custom Code
- Lesson 36: Using the HTU21D Temperature Sensor with an LCD Arduino Step-by-Step Course
- Using Two More HTU21DF Humidity and Temperature Sensors with Arduino
- Displaying Temperature from an HTU21D on an LCD
- Displaying Temperature from an HTU21D as a Bar Graph on an LCD
- How to Use the HTU21DF Humidity and Temperature Sensor with Arduino (Basic Code)
- How to Use the HTU21DF Humidity and Temperature Sensor with Arduino (Custom Code)
++
/***************************************************
This is an example for the HTU21D-F Humidity & Temperature Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These module 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 htu1 = Adafruit_HTU21DF();//create object for first HTU21DF sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF();//create object for second HTU21DF sensor
//Adafruit_HTU21DF htu3 = Adafruit_HTU21DF();//create object for third HTU21DF sensor (disabled, remove // from begging of code)
void setup() {
Serial.begin(9600);
Serial.println("HTU21D-F test for two modules");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//get value for sensor 1
float temp1 = htu1.readTemperature();
float rel_hum1 = htu1.readHumidity();
//get value for sensor 2
float temp2 = htu2.readTemperature();
float rel_hum2 = htu2.readHumidity();
//get value for sensor 3
float temp3 = htu3.readTemperature();
float rel_hum3 = htu3.readHumidity();
//print values for sensor 1
Serial.print("Sensor 1 Temp : "); Serial.print(temp1); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
//print values for sensor 2
Serial.print("Sensor 2 Temp : "); Serial.print(temp2); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
//print values for sensor 3
//Serial.print("Sensor 3 Temp : "); Serial.print(temp3); Serial.print(" C");
//Serial.print("\t\t");
//Serial.print("Sensor 3 Humidity: "); Serial.print(rel_hum3); Serial.println(" %");
delay(500);
}
Rzeczy, których możesz potrzebować
-
Amazon
-
AllegroPurchase HTU21D from eBayebay.us
-
AliExpressPurchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
Zasoby i odniesienia
-
ZewnętrznyAdafruit HTU21D Library (GitHub)github.com
-
ZewnętrznyDifference between HTU21DF and HTU21D (image)robojax.com
-
Zewnętrzny
-
ZewnętrznyHTU21D Datasheet (PDF)cdn-shop.adafruit.com
Pliki📁
Biblioteki Arduino (zip)
-
Adafruit HTU21DF library (Robojax.com)
robojax_HTU21DF_Adafruit_HTU21DF_Library-master.zip0.01 MB