Bu eğitim şunun parçasıdır: Dijital Bağıl Nem ve Sıcaklık Sensörü HTU21D
Dijital Bağıl Nem ve Sıcaklık Sensörü HTU21D ile ilgili videolar. Diğer videolara ait bağlantılar bu makalenin altında yer almaktadır.
Ders 35-2: HTU21D Sıcaklık Sensörü Özel Kodunu Kullanma
Bu derste, HTU21D sıcaklık sensörünü Arduino ile kullanarak sıcaklık ve nem ölçmeyi keşfedeceğiz. HTU21D, I2C üzerinden iletişim kuran güvenilir, düşük güç tüketimli bir sensördür ve projelerinize entegre etmeyi kolaylaştırır. Bu dersin sonunda, Celsius, Fahrenheit ve Kelvin cinsinden sıcaklığı ve bağıl nemi okuyan çalışan bir özel kodunuz olacak.

Kablolama ve koda dalmadan önce, ilgili bileşenleri anlamak önemlidir. HTU21D sensörü minimum bağlantı gerektirir: güç, toprak ve veri aktarımı için iki I2C kablosu. Bu basitlik, onu hava istasyonlarından akıllı ev cihazlarına kadar çeşitli uygulamalar için mükemmel bir seçim haline getirir. Görsel bir rehber için videonun 03:45 zaman damgasına bakın.
Donanım Açıklaması
Bu projedeki ana bileşen, sıcaklık ve nemi ölçen HTU21D sensörüdür. Bu sensör, 1.5V ile 3.6V arasındaki voltajlarda çalışabilir ve bu da onu farklı uygulamalar için çok yönlü kılar. -40°C ile +125°C arasında değişen sıcaklık ölçümleri ve %0.04 çözünürlükte nem okumaları ile yüksek çözünürlüklü sonuçlar sağlar.
Ayrıca sensör, iki pin gerektiren I2C iletişimini kullanır: SDA (veri hattı) ve SCL (saat hattı). Bu, karmaşık kablolama gerektirmeden Arduino ve diğer mikrodenetleyicilerle kolay entegrasyon sağlar. Adafruit kütüphanesi, sensörle etkileşimi basitleştirir ve veri alımını ve iletişim protokollerini sorunsuz bir şekilde yönetir.
Veri Sayfası Detayları
| Üretici | TE Connectivity |
|---|---|
| Parça numarası | HTU21D-F |
| Mantık/G/Ç voltajı | 1.5 – 3.6 V |
| Besleme voltajı | 3.3 V |
| Akım tüketimi (boşta) | 0.02 µA (tipik) |
| Akım tüketimi (aktif) | 450 µA (tipik) |
| Sıcaklık aralığı | -40 ile +125 °C |
| Nem aralığı | 0 ile 100 %RH |
| Çözünürlük | 0.04 %RH; 0.01 °C |
| Paket | 6 pinli DFN |
- Sensör hasarını önlemek için doğru güç kaynağını sağlayın.
- Entegre değilse SDA ve SCL hatlarında pull-up dirençleri kullanın.
- Gürültüyü en aza indirmek için sensör bağlantılarını kısa tutun.
- Stabiliteyi korumak için çalışma sırasında voltajı izleyin.
- Güç pinlerinin yakınında ayrıştırma için bir kapasitör kullanmayı düşünün.
Kablolama Talimatları

HTU21D sıcaklık sensörünü bağlamak için güç ve toprağı bağlayarak başlayın. Sensörün sol pinini, gerekli voltajı karşılayabilecek bir 3.3V kaynağa bağlayın. Genellikle kırmızı ile işaretlenen ikinci pin toprağa gitmelidir.
Ardından, sensörün SDA pinini Arduino'daki I2C iletişimi için veri hattı görevi gören A4 pinine bağlayın. Sonra, SCL pinini saat hattı görevi gören A5 pinine bağlayın. Bu bağlantıların güvenli olduğundan emin olun, çünkü gevşek kablolar aralıklı okumalara veya sensörle iletişim hatasına yol açabilir.
Kod Örnekleri ve Açıklama
Kodda, gerekli kütüphaneleri dahil ederek ve sensörü başlatarak başlıyoruz. Adafruit_HTU21DF htu = Adafruit_HTU21DF(); satırı, sensör sınıfının bir örneğini oluşturur. setup() fonksiyonunda, seri iletişimi başlatır ve sensörün doğru şekilde bağlı olup olmadığını kontrol ederiz.
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Sensör bulunamadı!");
while (1);
}
}
Bu kod parçası, sensörün doğru çalışıp çalışmadığını kontrol eder. Değilse, bir hata mesajı yazdırır ve programı durdurur. loop() fonksiyonunda, sıcaklık ve nem değerlerini sürekli olarak okuruz.
void loop() {
Serial.print(getHTU('C'));
Serial.print("C");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}
Burada, getHTU() fonksiyonu, Celsius cinsinden sıcaklığı ve nemi almak için farklı parametrelerle çağrılır. Gecikme, okumaların her saniye alınmasını sağlayarak seri monitörde düzgün bir çıktı verir. Tam kod, makalenin altında referans olarak mevcuttur.
Gösterim / Ne Beklemeli
Her şey doğru bağlandığında ve kod yüklendiğinde, seri monitörde sıcaklık ve nem okumalarının yazdırıldığını görmelisiniz. Sıcaklık, Celsius cinsinden ve ardından karşılık gelen nem yüzdesi olarak görüntülenecektir. Sensöre ısı uygularsanız, sıcaklığın buna göre arttığını gözlemlemelisiniz (videoda 10:15'te).
Sensörün sınırlarına dikkat edin; sıcaklık 125°C'yi aşarsa, yanlış bir okuma döndürebilir veya sıfır gösterebilir. Çalışma sırasında herhangi bir sorunu önlemek için bağlantılarınızın güvenli olduğundan ve sensörün doğru beslendiğinden her zaman emin olun.
Video Zaman Damgaları
- 00:00 Giriş
- 03:45 Sensörün Kablolanması
- 05:30 Kod Açıklaması
- 10:15 Gösterim
- 12:00 Sonuç
Bu eğitim şunun parçasıdır: Dijital Bağıl Nem ve Sıcaklık Sensörü HTU21D
- Ders 35-1: HTU21D Sıcaklık Sensörünü Kullanma
- Ders 35: Arduino ile HTU21D Sıcaklık Sensörü Kullanımı
- Ders 36: HTU21D Sıcaklık Sensörünü LCD ile Kullanma Arduino Adım Adım Kurs
- 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)
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 35: HTU21D Temperature Sensor Custom code
* Written/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 & Temperature 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() {
//Get the code for the course: http://robojax.com/L/?id=339
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");
}
İhtiyacın olabileceğini düşünüyor
-
Amazon
-
eBayPurchase HTU21D from eBayebay.us
-
AliExpressPurchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
Kaynaklar ve referanslar
-
DışAdafruit HTU21D Library (GitHub)github.com
-
DışDifference between HTU21DF and HTU21D (image)robojax.com
-
DışHTU21D Datasheet (PDF)cdn-shop.adafruit.com
Dosyalar📁
Veri Sayfası (pdf)
-
HTU21D_sıcaklık_nem_veri_sayfası
HTU21D_temerature_humidity_datasheet.pdf0.96 MB