This tutorial is part of: Digitalni senzor relativne vlažnosti i temperature HTU21D
Videozapisi vezani za digitalni senzor relativne vlažnosti i temperature HTU21D. Linkovi do drugih videozapisa nalaze se ispod ovog članka.
Lekcija 35: Korištenje HTU21D senzora temperature s Arduinom
Lekcija 35: Korištenje HTU21D senzora temperature s Arduinom
U ovom tutorijalu naučit ćemo kako povezati HTU21D senzor temperature s Arduinom. Ovaj senzor omogućava precizno mjerenje temperature i vlažnosti koristeći I2C komunikaciju, što ga čini lakim za integraciju u različite projekte. Do kraja ove lekcije moći ćete čitati vrijednosti temperature i vlažnosti sa senzora i prikazivati ih na Serial Monitoru.

Za ovaj projekt koristit ćemo Adafruit biblioteku, koja pruža jednostavan način komunikacije s HTU21D senzorom. Naučit ćete kako postaviti ožičenje, napisati kod i razumjeti ključne identifikatore korištene u programu. Ako vam je potrebno pojašnjenje bilo kojeg dijela procesa, možete pogledati video (u videu na 0:00).
Objašnjenje hardvera
HTU21D je digitalni senzor vlažnosti i temperature. Radi u rasponu napona od 1.5V do 3.6V, što ga čini pogodnim za sisteme od 3.3V i 5V. Senzor komunicira preko I2C-a, zahtijevajući samo dvije žice za prijenos podataka: Serial Data Line (SDA) i Serial Clock Line (SCL). Senzor ima vrlo nisku potrošnju energije, trošeći samo 0.02 µA u stanju mirovanja i do 450 µA tokom mjerenja.
Osim senzora, trebat će vam Arduino ploča i nekoliko jumper žica za povezivanje svega. Veze su jednostavne: napajajte senzor, povežite podatkovne linije i spremni ste. Provjerite da su vaše veze sigurne kako biste izbjegli probleme s komunikacijom.
Detalji iz tehničke dokumentacije
| Proizvođač | TE Connectivity |
|---|---|
| Broj dijela | HTU21D-F |
| Logički/IO napon | 1.5 - 3.6 V |
| Napon napajanja | 3.3 V |
| Izlazna struja (tipična) | 0.02 µA (mirovanje), 450 µA (aktivno) |
| Temperaturni raspon | -40 do +125 °C |
| Raspon vlažnosti | 0 do 100 % RH |
| Rezolucija (temperatura) | 0.01 °C |
| Rezolucija (vlažnost) | 0.04 % RH |
| Pakovanje | DFN-8 |
- Osigurajte odgovarajući napon napajanja (1.5 - 3.6 V) kako biste izbjegli oštećenja.
- Koristite pull-up otpornike na SDA i SCL linijama ako je potrebno.
- Držite ožičenje kratkim kako biste smanjili šum u I2C komunikaciji.
- Pažljivo provjerite veze kako biste izbjegli plutajuće ulaze.
- Koristite hladnjak ako radite blizu maksimalnih temperaturnih granica.
Upute za ožičenje

Da biste povezali HTU21D senzor s Arduinom, počnite spajanjem pinova za napajanje. Spojite lijevi pin senzora na 3.3V izlaz na Arduinu. Drugi pin treba spojiti na uzemljenje (GND). Zatim spojite SDA pin senzora na A4 pin Arduina, koji služi kao podatkovna linija za I2C komunikaciju. Na kraju, spojite SCL pin senzora na A5 pin Arduina, koji djeluje kao linija takta. Provjerite da su sve veze sigurne kako biste održali pouzdanu komunikaciju.
Ako koristite drugu ploču, SDA i SCL pinovi mogu varirati, pa provjerite specifikacije svoje ploče. U videu su ukratko razmotrene alternativne opcije ožičenja (u videu na 1:30).
Primjeri koda i objašnjenje
Sada ćemo pogledati kod koji komunicira s HTU21D senzorom. Prvo moramo uključiti potrebne biblioteke za I2C komunikaciju i HTU21D senzor. Sljedeći izvod prikazuje setup funkciju:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
Ovdje inicijaliziramo Serial Monitor pri brzini prijenosa od 9600. Zatim pokušavamo inicijalizirati senzor s htu.begin(). Ako senzor nije pronađen, program će ispisati poruku o grešci i zaustaviti se.
Zatim kontinuirano čitamo vrijednosti temperature i vlažnosti u loop funkciji:
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temperature: "); Serial.print(temp); Serial.println(" C");
Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
delay(500);
}
U ovoj petlji čitamo temperaturu koristeći htu.readTemperature() i pohranjujemo je u varijablu temp. Slično tome, čitamo vlažnost s htu.readHumidity(). Vrijednosti se zatim ispisuju na Serial Monitor svakih 500 milisekundi.
Za strukturiraniji pristup možete definirati funkcije za obradu očitanja. Kompletan kod će se učitati ispod ovog članka, pružajući vam potpuni pristup svim funkcionalnostima o kojima se raspravljalo.
Demonstracija / Šta očekivati
Kada prenesete kod na svoj Arduino i otvorite Serial Monitor, trebali biste vidjeti kontinuirana očitanja temperature i vlažnosti. Vrijednosti će se ažurirati svake pola sekunde. Ako senzor detektuje temperature iznad maksimalne granice od 125 °C, može prikazati nulu ili pogrešne vrijednosti. Ovo je česta zamka na koju treba obratiti pažnju tokom testiranja (u videu na 4:30).
Vremenske oznake videa
- [00:00] Uvod
- [00:22] Pregled senzora
- [01:22] Pregled tehničke dokumentacije
- [02:28] Ožičenje
- [03:03] Instalacija biblioteke
- [04:05] Objašnjenje koda (1. dio)
- [08:33] Objašnjenje koda (2. dio)
- [07:34] Živa demonstracija
This tutorial is part of: Digitalni senzor relativne vlažnosti i temperature 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);
}
Things you might need
-
Amazon
-
eBayPurchase HTU21D from eBayebay.us
-
AliExpressPurchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
Resources & references
-
ExternalAdafruit HTU21D Library (GitHub)github.com
-
ExternalDifference between HTU21DF and HTU21D (image)robojax.com
-
External
-
ExternalHTU21D Datasheet (PDF)cdn-shop.adafruit.com
Files📁
Arduino Libraries (zip)
-
Adafruit HTU21DF library (Robojax.com)
robojax_HTU21DF_Adafruit_HTU21DF_Library-master.zip0.01 MB