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 36: Yin amfani da na'urar zafin jiki ta HTU21D tare da LCD Arduino Kwas ɗin mataki-mataki
Na'urar HTU21D na auna zafi da danshi sanannen zaɓi ne ga yawancin ayyukan Arduino saboda sauƙin amfani da daidaito. A cikin wannan darasi, za mu gina aiki mai sauƙi wanda ke karanta bayanan zafi da danshi daga na'urar kuma ya nuna su akan allon LCD. A ƙarshen wannan koyawa, za ku sami tsarin aiki wanda ke nuna zafi a Celsius, Fahrenheit, da Kelvin, da kuma yawan danshi. Don ƙarin bayani, kuna iya koma ga bidiyon (a cikin bidiyo a mm:ss).

Bayanin Kayan Aiki
Babban ɓangaren wannan aikin shine na'urar HTU21D na auna zafi da danshi, wanda ke sadarwa ta hanyar I2C. Wannan na'urar tana aiki a cikin kewayon wutar lantarki na 1.5 zuwa 3.6 volts, wanda ya dace da tsarin 3.3V da 5V. Tana amfani da ƙaramin wuta sosai, yawanci 0.02 microamperes kawai lokacin da ba ta aiki ba da 450 microamperes yayin auna. Baya ga HTU21D, za mu kuma yi amfani da allon LCD, musamman LCD1602 tare da I2C. Wannan allon yana ba da damar fitar da bayanan rubutu cikin sauƙi kuma yana buƙatar pins guda biyu kawai don sadarwa: SDA (layin bayanai) da SCL (layin agogo). Haɗin waɗannan kayan aikin zai ba mu damar ƙirƙirar nuni mai fa'ida don kula da matakan zafi da danshi.
Cikakkun Bayanan Takardu
| Mai Ƙirƙira | TE Connectivity |
|---|---|
| Lambar ɓangare | HTU21D-F |
| Wutar Logic/IO | 1.5 - 3.6 V |
| Wutar samarwa | 3.3 V (na yau da kullun) |
| Fitar wutar (na yau da kullun) | 0.02 µA (lokacin hutu), 450 µA (lokacin auna) |
| Kewayon zafi | -40 zuwa +125 °C |
| Kewayon danshi | 0 zuwa 100 %RH |
| Ƙarfin gani (Zafi) | 0.01 °C |
| Ƙarfin gani (Danshi) | 0.04 %RH |
| Kunshin | DFN-6 |
- Yi amfani da resistor mai ɗagawa don layin SDA da SCL idan ba a haɗa su ba.
- Tabbatar da daidaitaccen wutar lantarki don guje wa lalacewar na'urar.
- Kiyaye ingantaccen haɗin wayoyi don hana kurakuran sadarwa.
- Duba adireshin I2C idan na'urar ba ta amsa ba.
- Yi amfani da jinkiri tsakanin karatu don hana nauyin na'urar.
- Tabbatar da allon LCD ya dace da sadarwar I2C.
Umarnin Haɗin Wayoyi

Don haɗa na'urar HTU21D da allon LCD, fara da haɗin wutar lantarki. Haɗa pin na hagu na HTU21D zuwa tushen wutar 3.3V, da pin na biyu (yawanci ja) zuwa ƙasa. Na gaba, haɗa pin SDA na HTU21D zuwa pin analog A4 na Arduino, da pin SCL zuwa pin analog A5. Don allon LCD1602, haɗa pin VCC zuwa wannan tushen wutar 3.3V, kuma haɗa pin GND zuwa ƙasa. Pin SDA akan LCD ya kamata kuma a haɗa shi zuwa A4, kuma pin SCL ya kamata a haɗa shi zuwa A5, yana ba da damar ɓangarorin biyu su raba bas ɗin I2C. Tabbatar da cewa duk haɗin suna da ƙarfi don sauƙaƙe sadarwa mai kyau tsakanin Arduino, na'urar, da nuni.
Misalan Lamba & Bayani
Lambar da ke gaba tana fara na'urar HTU21D da allon LCD. A cikin aikin saitin, an shirya LCD don amfani kuma an duba haɗin na'urar:
void setup() {
lcd.begin();
lcd.backlight();
if (!htu.begin()) {
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("sensor missing");
while (1);
} else {
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("Demo");
}
delay(2000);
}
Wannan ɓangaren yana duba idan an haɗa na'urar da kyau. Idan ba haka ba, yana nuna saƙon kuskure akan LCD kuma yana dakatar da shirin. Idan na'urar tana aiki, yana nuna saƙon nunawa na daƙiƙa biyu. Aikin madauki shine inda babban karatu da nunawa ke faruwa. Anan, muna kiran aikin `lcdDisplay` don nuna zafi a cikin raka'a daban-daban:
void loop() {
lcd.clear(); // share abubuwan da suka gabata daga allo
lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');
lcdDisplay(0, 1, "Fahrenheit: ", 10, 1, getHTU('F'), 'd');
delay(5000);
}
A cikin wannan madauki, an share LCD, kuma ana nuna karatun zafi a Celsius da Fahrenheit. Ana kiran aikin `getHTU` tare da harafin 'C' don Celsius da 'F' don Fahrenheit, bi da bi. A ƙarshe, an ayyana aikin `getHTU` don karanta zafi ko danshi bisa ga harafin da aka shigar:
float getHTU(char type) {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
if(type =='F') {
return temp * 9/5 + 32; // canza zuwa Fahrenheit
} else if(type =='K') {
return temp + 273.15; // canza zuwa Kelvin
} else if(type =='H') {
return rel_hum; // dawo da yawan danshi
} else {
return temp; // dawo da Celsius
}
}Wannan aikin yana karanta zafin jiki da danshi daga na'urar firikwensin kuma yana canza zafin jiki zuwa naúrar da aka buƙata. Tabbatar ka duba cikakken lambar da aka ɗora a ƙarƙashin labarin don ƙarin bayani.
Nunawa / Abin da za ka Yi Tsammani
Bayan kammala haɗin wayoyi da ɗora lambar, ya kamata ka ga ƙimar zafin jiki da danshi suna nunawa akan LCD. Karatun zai sabunta kowane ƴan daƙiƙa, yana nuna yanayin da ake ciki. Idan ka sanya zafi a kan na'urar firikwensin, ya kamata ka lura da zafin jiki yana tashi daidai, yayin da danshi zai ragu kaɗan. Ka kiyaye iyakar zafin jiki mafi girma na na'urar firikwensin; ƙetare wannan na iya haifar da karatun da ba daidai ba ko gazawar na'urar (a cikin bidiyo a mm:ss).
Lokutan Bidiyo
- 00:00 - Gabatarwa ga aikin
- 01:15 - Umarnin haɗin wayoyi
- 03:30 - Binciken lambar
- 10:00 - Nunin saitin
Wannan koyawa wani ɓangare ne na: Na'urar auna zafi da zafi ta dijital HTU21D
- Darasi na 35-1: Yin Amfani da Na'urar Auna Zafin 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
- 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 36: HTU21D Temperature Sensor with LCD1602 and LCD2004 Display
* Display Temperature from HTU21DF on LCD1602-I2C or LCD2004
* Updated by Ahmad Shamshiri on July 13, 2019
Please watch video instructions here https://youtu.be/SrFJKbmiaPM
This code is available at http://robojax.com/course1/?vid=lecture36
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
and make a donation using PayPal http://robojax.com/L/?id=64
*
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
Watch Introduction to a 360 Servo video with code: https://youtu.be/b_xvu6wWafA
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all libraries, codes, and wiring diagrams all in one place.
Visit my course now http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or 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/>.
*/
#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();
// start of settings for LCD1602 with I2C
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// end of settings for LCD1602 with I2C
void setup() {
//Get the code for the course: http://robojax.com/L/?id=339
lcd.begin();
lcd.backlight();
if (!htu.begin()) {
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("sensor missing");
while (1);
}else{
// initialize the LCD
lcd.print("Robojax HTUD1DF");
lcd.setCursor(0,1);
lcd.print("Demo");
}
delay(2000);
}
void loop() {
//Get the code for the course: http://robojax.com/L/?id=339
lcd.clear();// clear previous values from screen
lcdDisplay(
// to print Celsius:
0, // character 0
0, // line 0
"Celsius: ",
// to print Celsius
10, // character 10
0, // line 0
getHTU('C'),
'd'
);
lcdDisplay(
// to print fahrenheit:
0, // character 0
1, // line 1
"Fahrenheit: ",
// to print Fahrenheit
10, // character 9
1, // line 0
getHTU('F'),
'd'
);
delay(5000);
lcdDisplay(
// to print Kelvin:
0, // character 0
0, // line 0
"Kelvin: ",
// to print Celsius
9, // character 10
0, // line 0
getHTU('K'),
'k'
);
lcdDisplay(
// to print humidity text
0, // character 0
1, // line 1
"Humidity: ",
// to print humidity
10, // character 9
1, // line 1
getHTU('H'),
'%'
);
delay(5000);
}
/*
* @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;
}//
/*
* lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
* displays value and title on LCD1602
* How to use:
* If you want to display: "Voltage: 13.56mV" starting from the first character
* on the second row.
* use:
* lcdDisplay(0, 1, "Voltage: ", 13.56,'d')
*
* 'd' is degree symbol
* tc is character number (0)
* tr is row in the lcd (1)
* title is the text (Voltage:)
* vc value for character
* vr value for row or line
* value is the value (13.56)
*/
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value,char symbol)
{
// Robojax.com LCD1602 for HTU21D Demo
lcd.setCursor (tc,tr); //
lcd.print(title);
lcd.setCursor (vc,vr); //
lcd.print(value);
if(symbol == 'd')
{
lcd.print((char)223);
}else if(symbol =='%')
{
lcd.print("%");
}else if(symbol =='k')
{
lcd.print("K");
}
// Robojax.com LCD1602 for HTU21D Demo
}
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
-
WajeAdafruit HTU21D Library (GitHub)github.com
-
WajeDifference between HTU21DF and HTU21D (image)robojax.com
Fayiloli📁
Takardar bayanai (pdf)
-
HTU21D_temerature_humidity_datasheet
HTU21D_temerature_humidity_datasheet.pdf0.96 MB