Wannan koyawa wani ɓangare ne na: Na'urar auna zafi da zafi ta dijital HTU21D
Bidiyoyi masu alaƙa da na'urar auna zafi da danshi ta dijital HTU21D. Hanyoyin haɗi zuwa wasu bidiyo suna ƙasa da wannan labarin.
Darasi na 35-1: Yin Amfani da Na'urar Auna Zafin HTU21D
A cikin wannan koyaswar, za mu bincika yadda ake amfani da na'urar zazzabi da danshi ta HTU21D tare da Arduino. HTU21D ƙaramin na'ura ne wanda ke sadarwa ta hanyar I2C, yana sauƙaƙa haɗawa da microcontrollers. A ƙarshen wannan darasi, za ku iya karanta ƙimar zazzabi da danshi kuma ku nuna su ta hanyar serial monitor na Arduino.

Don wannan aikin, za mu yi amfani da library na Adafruit wanda aka ƙera musamman don na'urar HTU21D. Library ɗin yana sauƙaƙa tsarin karanta bayanan na'urar, yana ba mu damar mayar da hankali kan haɗa na'urar cikin ayyukanmu. Kuna iya tsammanin ganin ƙimar zazzabi a Celsius, Fahrenheit, da Kelvin, da kuma yawan danshi (a cikin bidiyo a 03:15).
Bayanin Hardware
Babban ɓangaren wannan aikin shine na'urar zazzabi da danshi ta HTU21D. Wannan na'urar tana aiki da ƙarfin wutar lantarki na 1.5 zuwa 3.6 volts kuma tana amfani da ƙaramin ƙarfi sosai, yana sa ta dace da na'urorin da ke amfani da baturi. Tana sadarwa da Arduino ta amfani da tsarin I2C, tana buƙatar layukan bayanai guda biyu kawai: SDA don bayanai da SCL don agogo.
Don kunna na'urar, za mu haɗa ta zuwa tushen 3.3V ko 5V, dangane da nau'in module ɗin da kuke amfani da shi. Sigar Adafruit ta ƙunshi mai daidaita wutar lantarki, wanda ke ba ta damar aiki da kyau tare da duka matakan wutar lantarki. Wannan sassauci yana sa ta zama zaɓi mai kyau don aikace-aikace daban-daban.
Cikakkun Bayanai na Datasheet
| Mai ƙera | TE Connectivity |
|---|---|
| Lambar ɓangare | HTU21D-F |
| Ƙarfin Logic/IO | 1.5 - 3.6 V |
| Ƙarfin wutar lantarki | 3.3 V (na yau da kullun) |
| Amfani da wutar lantarki (lokacin hutawa) | 0.02 µA |
| Amfani da wutar lantarki (lokacin aunawa) | 450 µA (na yau da kullun) |
| Kewayon zazzabi | -40 zuwa +125 °C |
| Ƙimar danshi | 0.04 % |
| Kunshin | 6-pin DFN |
- Tabbatar da matakan wutar lantarki da suka dace don guje wa lalata na'urar.
- Yi amfani da resistors na pull-up akan layukan I2C idan ba a haɗa su cikin module ɗin ba.
- Rike wayoyi gajeru don rage tsangwama tare da sadarwar I2C.
- Yi la'akari da rage zafi idan ana amfani da shi a wurare masu zazzabi mai girma.
- Duba yadda na'urar take tsaye don tabbatar da haɗin pin ɗin da ya dace.
Umarnin Haɗin Waya

Don haɗa na'urar HTU21D zuwa Arduino, fara da haɗa pin ɗin VCC na na'urar zuwa pin ɗin wutar lantarki na 3.3V akan Arduino. Na gaba, haɗa pin ɗin GND akan na'urar zuwa pin ɗin ƙasa (GND) akan Arduino. Sa'an nan, haɗa pin ɗin SDA akan na'urar zuwa analog pin A4 na Arduino, wanda ke aiki azaman layin bayanai na I2C. A ƙarshe, haɗa pin ɗin SCL akan na'urar zuwa analog pin A5, wanda ke aiki azaman layin agogo na I2C. Tabbatar cewa haɗin ku yana da ƙarfi don guje wa karatun da ba a sani ba.
Don ƙarin haske, idan kuna amfani da wani board ɗin daban, tabbatar da gano pin ɗin da suka dace don SDA da SCL saboda suna iya bambanta. Wannan tsarin haɗin zai ba Arduino damar sadarwa da na'urar HTU21D yadda ya kamata (a cikin bidiyo a 05:00).
Misalan Code & Bayani
A ƙasa akwai wani ɓangare daga aikin setup wanda ke fara sadarwar serial kuma yana duba ko an samo na'urar:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Ba a sami na'urar ba!");
while (1);
}
}
Wannan code ɗin yana fara sadarwar serial a ƙimar baud na 9600 kuma yana ƙoƙarin fara na'urar HTU21D. Idan ba a gano na'urar ba, zai buga saƙon kuskure kuma ya dakatar da ƙarin aiwatarwa.
Babban zagayowar shirin yana ci gaba da karanta ƙimar zazzabi da danshi:
void loop() {
Serial.print(getHTU('C'));
Serial.println("C");
Serial.print("Danshi:");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}
A cikin wannan zagayowar, muna kiran aikin getHTU tare da 'C' don samun zazzabi a Celsius da 'H' don samun danshi. Sakamakon ana buga shi zuwa serial monitor kowane daƙiƙa guda. Wannan yana ba da damar lura da ƙimar na'urar a lokaci guda.
Bugu da ƙari, muna da aikin getHTU wanda ke mayar da zazzabi ko danshi dangane da shigar harafi:
float getHTU(char type) {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
return (type == 'H') ? rel_hum : temp;
}
Wannan aikin yana karanta zazzabi da danshi daga na'urar kuma yana mayar da ƙimar da ta dace dangane da nau'in da aka ƙayyade. Wannan tsarin modular yana kiyaye code ɗin mai tsabta da sauƙin kiyayewa.
Nuni / Abin da za ku Yi Tsammani
Bayan nasarar saitin da aiwatar da code ɗin, ya kamata ku ga ƙimar zazzabi da danshi da aka buga zuwa serial monitor. Idan kun sanya zafi a kan na'urar, ƙimar zazzabi ya kamata su ƙaru daidai da haka, yayin da danshi na iya raguwa. Idan zazzabi ya wuce iyakar na'urar, yana iya nuna sakamakon da ba a zata ba, kamar sifili (a cikin bidiyo a 12:00).
Lokutan Bidiyo
- 00:00 - Gabatarwa
- 03:15 - Bayanin na'urar
- 05:00 - Umarnin haɗin waya
- 10:00 - Bayanin code
- 12:00 - Nuni
Wannan koyawa wani ɓangare ne na: Na'urar auna zafi da zafi ta dijital HTU21D
- Darasi na 35-2: Yin amfani da lambar al'ada na firikwensin zafin jiki na HTU21D
- Darasi na 35: Yin amfani da na'urar zafin jiki ta HTU21D tare da Arduino
- Darasi na 36: Yin amfani da na'urar zafin jiki ta HTU21D tare da LCD Arduino Kwas ɗin mataki-mataki
- 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
* 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");
}
Abin da zaka iya bukata
-
Amazon
-
eBayPurchase HTU21D from eBayebay.us
-
AliExpressPurchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
-
WajeDifference between HTU21DF and HTU21D (image)robojax.com
Fayiloli📁
Takardar bayanai (pdf)
-
HTU21D_temerature_humidity_datasheet
HTU21D_temerature_humidity_datasheet.pdf0.96 MB -
HTU31D HTU31V Temperature and Himidity Sensors Datasheet
HTU31_Sensors_Datasheet.pdf0.67 MB