Ẹkọ 27: Lílo Ẹ̀rọ Ìmọ́tẹ̀mọ́ DHT11 pẹ̀lú Ìbójú LCD | Ẹ̀kọ́ Arduino Líníṣẹ̀ẹ́-sí-níṣẹ̀ẹ́
Ìtọ́sọ́nà yìí ṣe àlàyé bí o ṣe lè kọ́ ètò ìṣàkóso ìwọ̀n-otútù àti ọ̀rinrin nípa lílo sensọ DHT11 àti iboju LCD I2C, tí ó dá lórí Ẹ̀kọ́ 27 ti Ẹ̀kọ́ Arduino Líle-ṣe-ní-ìpele-ìpele ti Robojax. Bí ó tilẹ̀ jẹ́ pé àkọsílẹ̀ fídíò náà tọ́ka sí sensọ HTU21DF, kóòdù àti àwọn ìlànà tí a gbé kalẹ̀ níbí yìí kan ní tààràtà sí module DHT11 tí ó wọ́pọ̀ jùlọ àti tí kò gbowó lórí, èyí tí ó jẹ́ ohun pàtàkì fún àwọn iṣẹ́ ìṣàkóso àyíká. Iṣẹ́ yìí pípé fún àwọn olùbẹ̀rẹ̀ tí ń wá láti kọjá àwọn LED tí ń tàn kí wọ́n sì bẹ̀rẹ̀ sí ní kàwé data gidi ní àgbáyé.

Iye gidi ní àgbáyé ti iṣẹ́ yìí pọ̀ gan-an. O lè lo ètò yìí fún ọ̀pọ̀lọpọ̀ àwọn ohun èlò tí ó wúlò, pẹ̀lú:
- Kíkọ́ thermometer oní nọ́ḿbà àti hygrometer fún ilé rẹ tàbí ọ́fíìsì rẹ.
- Ṣíṣe ìṣàkóso ojú ọjọ́ fún terrarium ẹ̀dá-àpà tàbí ilé-ọ̀gbìn.
- Dídàgbàsókè ibùdó ojú ọjọ́ tí ó ṣe àkọsílẹ̀ data sí kọ̀ǹpútà rẹ nípasẹ̀ serial monitor.
- Fífi ìṣàkóso tí ó dá lórí otútù kún un, bíi mímú fan tàbí ẹ̀rọ ìmú-otútù wọ́n nígbà tí ìwọ̀n kan bá kọjá.
Ẹ̀kọ́ yìí yóò ṣe ìtọ́sọ́nà rẹ nípa ìsopọ̀, àwọn ilé-ìkàwé tí a nílò, àti kóòdù náà, tí yóò fún ọ ní agbára láti kọ́ ètò ìṣàkóso àyíká tirẹ.
Ohun Èlò àti Àwọn Ẹ̀yà
Láti kọ́ iṣẹ́ yìí, o nílò àwọn ẹ̀yà wọ̀nyí:
- Bọ́ọ̀dù Arduino (bíi Uno, Nano).
- Module sensọ otútù àti ọ̀rinrin DHT11.
- Ìfihàn LCD1602 pẹ̀lú module interface I2C.
- Àwọn okun oní-ìsopọ̀ (jumper wires).
- Breadboard (kì í ṣe dandan, ṣùgbọ́n a ṣe ìmọ̀ràn rẹ̀ fún ìsopọ̀ rọrùn).
Ìtọ́sọ́nà Ìsopọ̀
Ìsopọ̀ fún iṣẹ́ yìí rọrùn, nípasẹ̀ interface I2C lórí LCD àti ìjàde oní-nọ́ḿbà tí ó rọrùn ti DHT11. LCD I2C nílò àwọn okun data méjì péré (SDA àti SCL) àti àwọn okun agbára méjì, èyí tí ó rọrùn ìsopọ̀ púpọ̀. Sensọ DHT11 náà ní interface oní-pin mẹ́ta tí ó rọrùn.
Èyí ni àwòrán ìsopọ̀ fún iṣẹ́ yìí:
Ṣe ìsopọ̀ àwọn ẹ̀yà bí àtẹ̀yìnwá:
- Sensọ DHT11: Ṣe ìsopọ̀ pin VCC (tàbí +) sí pin 5V ti Arduino, pin GND (-) sí GND ti Arduino, àti pin DATA (tàbí OUT) sí pin oní-nọ́ḿbà 2 lórí Arduino.
- LCD I2C (LCD1602): Ṣe ìsopọ̀ pin VCC sí pin 5V ti Arduino, pin GND sí GND ti Arduino, pin SDA sí pin analog A4 ti Arduino, àti pin SCL sí pin analog A5 ti Arduino.
Àwọn ìsopọ̀ wọ̀nyí ni gbogbo ohun tí o nílò láti fi agbára fún sensọ àti ìfihàn náà àti láti jẹ́ kí ìbánisọ̀rọ̀ ṣẹlẹ̀ láàárín àwọn ẹ̀yà náà.
Àlàyé Kóòdù
A ṣe kóòdù náà láti kà otútù àti ọ̀rinrin láti sensọ DHT11 àti láti fi àwọn iye náà hàn lórí iboju LCD I2C. Ó tún tẹ̀ data náà sí Serial Monitor fún ìwò rọrùn lórí kọ̀ǹpútà rẹ.
Ẹ jẹ́ kí a pín àwọn apá kóòdù tí olùṣàmúlò lè yí padà tí o lè fẹ́ láti ṣàtúnṣe fún àwọn iṣẹ́ tirẹ.
// fáìlì àkọsórí láti GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // ṣẹ̀dá ohun DHT11
#define dhtpin 2 // ṣeto pin láti sopọ̀ sí DHT11
// ìbẹ̀rẹ̀ àwọn ètò fún LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Ṣeto àdírẹ́sì LCD sí 0x3F fún ìfihàn 16 ọ̀wọ́n àti 2 ìlà
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// ìparí àwọn ètò fún LCD1602-I2C
- #define dhtpin 2: Èyí ṣàlàyé pin oní-nọ́ḿbà ti Arduino tí ó sopọ̀ sí pin DATA ti sensọ DHT11. Bí o bá sopọ̀ sí pin mìíràn, o gbọ́dọ̀ yí nọ́ḿbà yìí padà.
- LiquidCrystal_I2C lcd(0x3F, 16, 2): Ìlà yìí bẹ̀rẹ̀ LCD náà. Ìpín àkọ́kọ́,
0x3F, ni àdírẹ́sì I2C ti module LCD rẹ pàtó. Àdírẹ́sì yìí lè jẹ́0x27nígbà mìíràn dá lórí olùṣe. Àwọn ìpín méjì yòókù,16àti2, ṣàlàyé iye àwọn ọ̀wọ́n àti àwọn ìlà lórí iboju LCD rẹ.
Nínú loop(), kóòdù náà lo iṣẹ́ àṣà tí a pè ní getTemp() láti kà àti láti yí otútù padà. Iṣẹ́ yìí jẹ́ àpẹẹrẹ tí ó dára nípa bí o ṣe lè mú kóòdù rẹ mọ́ diẹ̀ àti tí ó lè tún lò.
float getTemp(char type) {
float temp = (float)DHT11.temperature;// gba otútù
if(type =='F')
{
return temp * 1.8 + 32;// yí padà sí Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// yí padà sí Kelvin
}else{
return temp;
}
}
Láti lo iṣẹ́ yìí, o kàn pè é nípa gbígbé ohun kan ṣoṣo láti ṣàlàyé ẹ̀yà tí o fẹ́. Fún àpẹẹrẹ, getTemp('C') yóò dá otútù padà ní Celsius, getTemp('F') ní Fahrenheit, àti getTemp('K') ní Kelvin. Èyí mú kí ó rọrùn gan-an láti fi otútù hàn ní ọ̀pọ̀lọpọ̀ ìwọ̀n, bí a ṣe fi hàn nínú ìfihàn fídíò náà.
Ìfihàn Iṣẹ́ Láàyè
Nígbà tí o bá ti ṣàjọ àwọn ẹ̀yà náà tí o sì ti gbé kóòdù náà sí inú, o yóò rí iboju LCD tí ń fi "DHT11 Sensor" hàn fún ìṣẹ́jú àáyá méjì, tí ó tẹ̀lé e pẹ̀lú àwọn ìwọ̀n otútù àti ọ̀rinrin tí ń yí padà. Iboju náà yóò fi otútù hàn ní àwọn méjèèjì Celsius àti Fahrenheit. O tún lè ṣí Serial Monitor (ṣeto sí 9600 baud) láti wo data náà, èyí tí yóò ní otútù ní Kelvin àti ìpín ọ̀rinrin ojú-àyíká.
Nínú fídíò náà, olùgbéwọlé fi ìdáhùn sensọ náà hàn nípa fífi ìgbóná láti inú ẹ̀rọ ìgbóná. O yóò rí ìwọ̀n otútù lórí LCD tí ń pọ̀ sí i ní kíákíá nígbà tí ìwọ̀n ọ̀rinrin yóò dín kù, tí ń fi agbára gidi-àkókò ti sensọ náà hàn. Èyí jẹ́ ọ̀nà tí ó dára láti dán an ṣiṣẹ́ rẹ wò àti láti rí i dájú pé ohun gbogbo ń ṣiṣẹ́ dáradára.
Àwọn Orí-ẹ̀kọ́
- [00:00] Ifihan si awọn Sensa Iwọn Otutu DHT11 ati HTU21DF
- [01:38] Awọn Alaye Sensa ati Akopọ Iwe Data
- [02:28] Itọsọna Asopọ Alaye fun Sensa naa
- [03:03] Fifi sori ẹrọ Awọn Ile-ikawe Arduino Ti a Beere
- [04:05] Ṣalaye Koodu Apeere Atilẹba
- [07:34] Ṣafihan Sensa naa Ni Iṣẹ
- [08:33] Ṣafihan Koodu Ti a Ṣatunṣe Pẹlu Iṣẹ Aṣa
- [10:22] Bii Iṣẹ getTemp() Ṣe Nṣiṣẹ
- [12:19] Ifihan Laaye: Ṣafihan Iwọn Otutu Ni Celsius, Fahrenheit, ati Kelvin
- [13:01] Idanwo Iwọn Otutu Ti O Pọju Sensa naa
/*
* Robojax Arduino Step-by-Step Course
* Lesson 26 DHT11 with LCD1602-I2C display
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* *
* Written by Ahmad Shamshiri for Robojax
* on January 4, 2018
* Robojax.com
Please watch video instructions here: https://youtu.be/0XMLnCYkvbE
This code is available at: http://robojax.com/course1/?vid=lecture11
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
* 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/>.
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
// start of settings for LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// end of settings for LCD1602-I2C
void setup() {
Serial.begin(9600);// setting up serial monitor
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
lcd.clear();
lcd.setCursor (0,0); //
lcd.print("DHT11 Sensor");
delay(2000);
}
void loop() {
//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
int humidity = DHT11.humidity;// get humidity
lcd.clear();// clear previous values from screen
lcd.setCursor (0,0); //character zero, line 1
lcd.print("LCD1602 DHT11"); // print text
// print distance in degrees C
lcd.setCursor (0,1); //character 0, line 2
lcd.print(getTemp('C'));// print Temperature Celsius
lcd.setCursor (4,1); //character 5, line 2
lcd.print((char)223);// print degree
lcd.setCursor (5,1); //character 6, line 2
lcd.print("C");// print C
// print distance degrees F
lcd.setCursor (7,1); //character 8, line 2
lcd.print(getTemp('F'));// print distance in cm
lcd.setCursor (13,1); //character 14, line 2
lcd.print((char)223);// print degree
lcd.setCursor (14,1); //character 16, line 2
lcd.print("F");// print F
//code for Robojax.com video
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.print("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type: character of upper case
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
Ohun ti o le nilo
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
AmazonPurchase DHT11 from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressDHT11 and DHT22 from AliExpressamzn.to
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
-
AliExpressPurchase LCD1602-I2C from AliExpresss.click.aliexpress.com
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Orisun & itọkasi
-
Ita gbangbaDHT11 library on GitHubgithub.com
-
Ita gbangbaDHT11 Manual (PDF)robojax.com
-
Ita gbangbaLCD library from Robojax.com (ZIP)robojax.com
Fáìlìs📁
Fayile Fritzing
-
Temperature Sensor DHT11
Temperature Sensor DHT11.fzpz0.01 MB -
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Iwe Itọsọna Olumulo
-
DHT11 Itọsọna Olumulo
robojax-DHT11_manual.pdf0.82 MB
Awọn faili miiran
-
DHT11 Simple Arduino Library
robojax-DHT11-simple_library.zip