څپرکی ۲۰/۳۱: د DHT11 څخه د تودوخې او رطوبت ښودل د LCD سکرین پر مخ
دا ټیوټوریل ښیي چې څنګه د DHT11 تودوخې او رطوبت سینسر د I2C-فعال شوي LCD1602 ډسپلې سره یوځای کړو ترڅو د چاپیریال څارنې یوه کمپیکټ سټیشن جوړ کړو. د سیریل مانیټر څخه د خام سینسر ډیټا لوستلو پرځای، تاسو به زده کړئ چې څنګه په 16x2 کرکټر سکرین کې ژوندۍ تودوخې او رطوبت لوستل ښکاره کړئ. دا پروژه د ډیسټاپ هوا سټیشن جوړولو، د کوچني ګرین هاوس مانیټر، یا د کور اتوماتیک پروژې ته د محلي لوستلو اضافه کولو لپاره مثالی ده. د I2C انٹرفیس تارونه ساده کوي، دا پروژه د پیل کونکو لپاره د لاسرسي وړ او د تجربه لرونکو جوړونکو لپاره چټکه اضافه کوي.
دلته څو عملي نظرونه دي چې تاسو کولی شئ د دې پوهې سره جوړ کړئ:
- د ډیسټاپ هوا سټیشن چې اوسني خونې شرایط ښیي.
- د ریپټیل یا نبات ټیراریوم لپاره کمپیکټ ډسپلې.
- د سرور خونه یا ورکشاپ چاپیریال لپاره محلي لوستل.
- د ډیر پیچلي کور اتوماتیک سیسټم لپاره اساسي ماډل.
هارډویر او اجزاوې
د دې پروژې جوړولو لپاره، تاسو به لاندې اجزاوو ته اړتیا ولرئ:
- Arduino Uno (یا مطابقت لرونکی بورډ)
- LCD1602 ډسپلې د I2C انٹرفیس ماډل سره
- DHT11 تودوخې او رطوبت سینسر
- د 4.7kΩ یا 10kΩ پل-اپ ریزسټر (که تاسو یو خام DHT11 سینسر کاروئ)
- جمپر تارونه
- بریډبورډ (اختیاري، د اسانه اړیکو لپاره)
د I2C LCD1602 پوهیدل
LCD1602 یو عام کرکټر ډسپلې دی چې 16 کالمونه او 2 قطارونه لري. د ډسپلې شاته سولډر شوی "I2C" ماډل د دې سادګۍ کلید ده. دا ماډل د LCD موازي انٹرفیس په سیریل I2C انٹرفیس بدلوي، کوم چې یوازې دوه تارونه د ډیټا لپاره (SDA او SCL) او دوه د بریښنا لپاره (VCC او GND) ته اړتیا لري. دا ستاسو په Arduino باندې د پنونو شمیر خورا کموي، نور یې د نورو سینسرونو او ایکچویټرونو لپاره پریږدي. ماډل کې یو کوچنی پوټینټیومیټر هم شامل دی ترڅو د ډسپلې کنټراسټ تنظیم کړي، کوم چې د متن لیدلو ډاډ ترلاسه کولو لپاره خورا مهم دی. د ماډل I2C پته د بورډ په کوچنیو سولډر جمپرونو (A0، A1، A2) په کارولو سره بدلیدلی شي، چې ډیری I2C وسیلو ته اجازه ورکوي چې په ورته بس کې یوځای شتون ولري.
وائرینګ لارښود
اجزاوې لکه څنګه چې په لاندې ډیاګرام کې ښودل شوي وصل کړئ. I2C LCD د Arduino I2C پنونه کاروي، پداسې حال کې چې DHT11 سینسر یو ډیجیټل پن کاروي.
د LCD1602-I2C لپاره:
- VCC د Arduino 5V ته
- GND د Arduino GND ته
- SDA د Arduino A4 ته
- SCL د Arduino A5 ته
د DHT11 سینسر لپاره:
- VCC (پن 1) د Arduino 5V ته
- ډیټا (پن 2) د Arduino ډیجیټل پن 2 ته (د 10kΩ پل-اپ ریزسټر سره 5V ته)
- NC (پن 3) - نه وصل شوی
- GND (پن 4) د Arduino GND ته
(په ویډیو کې په 25:16)
د کتابتونونو تنظیم کول
دا پروژه دوه کتابتونونو ته اړتیا لري. د Wire.h کتابتون د معیاري Arduino نصب برخه ده. تاسو اړتیا لرئ د LiquidCrystal_I2C کتابتون او د dht11 کتابتون نصب کړئ. ویډیو ښیي چې څنګه یې نصب کړئ. تاسو کولی شئ کتابتونونه د ویډیو توضیحاتو کې یا د Robojax ویب پاڼې څخه چمتو شوي لینکونو څخه ډاونلوډ کړئ. یوځل ډاونلوډ شوي، تاسو کولی شئ دوی د Arduino IDE له لارې د Sketch > Include Library > Add .ZIP Library... ته په تګ او ډاونلوډ شوي فایلونو په غوره کولو سره نصب کړئ. (په ویډیو کې په 06:16)
د خپل LCD I2C پته موندل
مخکې لدې چې تاسو ډسپلې وکاروئ، تاسو باید د هغې I2C پته وټاکئ. تر ټولو عام پته 0x27 یا 0x3F ده، مګر دا توپیر کولی شي. د موندلو لپاره، تاسو کولی شئ د I2C سکینر سکیچ وکاروئ. دا یو ساده پروګرام دی چې د I2C بس سکین کوي او هر هغه پته چې موندل کیږي سیریل مانیټر ته راپور ورکوي. د سکینر کوډ اپلوډ کړئ، سیریل مانیټر په 9600 باد کې خلاص کړئ، او دا به ستاسو د LCD پته ښکاره کړي. (په ویډیو کې په 08:11)
د کوډ تشریح
دا برخه د کوډ مهم، کاروونکي-قابل تنظیم برخې تشریح کوي. بشپړ پروګرام د مقالې لاندې د ډاونلوډ لپاره شتون لري.
کوډ د اړینو کتابتونونو په شاملولو او د کارول شویو پنونو او شیانو په تعریف کولو سره پیل کیږي.
// د GetHub څخه هیدر فایل: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // د DHT11 اعتراض جوړ کړئ
#define dhtpin 2 // د DHT11 سره د نښلولو لپاره پن وټاکئ
// د LCD1602-I2C لپاره د ترتیباتو پیل
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// د 16 کرکټرونو او 2 کرښو ډسپلې لپاره LCD پته 0x3F ته وټاکئ
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// د LCD1602-I2C لپاره د ترتیباتو پای
دا ستاسو د تنظیم لپاره تر ټولو مهمې کرښې دي چې تنظیم کړئ:
#define dhtpin 2: دا د DHT11 سینسر د ډیټا پن سره وصل شوی Arduino پن تعریفوي. که تاسو مختلف پن کاروئ نو شمیره2بدله کړئ.LiquidCrystal_I2C lcd(0x3F, 16, 2);: دا کرښه د LCD اعتراض جوړوي. لومړی پیرامیټر،0x3F، هغه I2C پته ده چې تاسو په تیر ګام کې وموندله.16او2ستاسو د ډسپلې د کالمونو او قطارونو شمیر تعریفوي. که ستاسو سکینر مختلف پته وموندله (د مثال په توګه،0x27) نو پته تازه کړئ.
کوډ د تودوخې لوستلو او په مختلفو واحدونو بدلولو لپاره یو دودیز فنکشن، getTemp()، کاروي. دا یو پیاوړی ځانګړتیا ده چې کوډ د مختلفو غوښتنلیکونو لپاره بیا کارول اسانه کوي.
float getTemp(char type) {
float temp = (float)DHT11.temperature;// تودوخه ترلاسه کړئ
if(type =='F')
{
return temp * 1.8 + 32;// فارنهایټ ته واړوئ
}else if(type =='K')
{
return temp + 274.15;// کیلوین ته واړوئ
}else{
return temp;
}
}
د دې فنکشن د کارولو لپاره، تاسو یې د یو واحد کرکټر دلیل سره غږوئ چې مطلوب واحد استازیتوب کوي. د مثال په توګه، getTemp('C') تودوخه په سیلسیس کې، getTemp('F') په فارنهایټ کې، او getTemp('K') په کیلوین کې بیرته راګرځوي. فنکشن د DHT11 سینسر څخه خام تودوخه لولي او اړین تبادلې فورمول پلي کوي. دا تاسو ته اجازه درکوي چې په اسانۍ سره په اصلي loop() کې ښودل شوی واحد بدل کړئ پرته له دې چې د سینسر لوستلو منطق بیا ولیکئ. اصلي لوپ د lcd.setCursor() او lcd.print() فنکشنونو په کارولو سره تودوخه او رطوبت LCD ته چاپ کوي ترڅو کنټرول کړي چې ارزښتونه په سکرین کې چیرته ښکاري.
د درجې نښه ښودل
معیاري HD44780 LCD کرکټر سیټ د درجې ځانګړې نښه (°) نه لري. د دې ښودلو لپاره، تاسو باید د lcd.write() فنکشن د LCD د ROM څخه د کرکټر د لسیزې ارزښت سره وکاروئ. د درجې نښې لپاره، دا ارزښت 223 دی. کوډ دا د lcd.print((char)223); په کارولو سره ښیي ترڅو د تودوخې ارزښت وروسته نښه چاپ کړي. (په ویډیو کې په 30:16)
ژوندی پروژه ننداره
یوځل چې کوډ اپلوډ شي، ښودنه به د پیل پیغام وښیي مخکې لدې چې پاک شي او اوسنۍ تودوخه او رطوبت وښیي. د ښودنې لومړۍ کرښه متن "LCD1602 DHT11" ښیي، پداسې حال کې چې دوهمه کرښه تودوخه په سیلسیس کې ښیي، ورپسې د درجې نښه او "C"، او بیا تودوخه په فارنهایټ کې، ورپسې د درجې نښه او "F". د رطوبت ارزښت سیریل مانیټر ته چاپ کیږي. په ویډیو کې ننداره ښیي چې ښودنه هر نیم ثانیه تازه کیږي لکه څنګه چې سینسر نیول کیږي، په دقیق ډول د شاوخوا شرایطو انعکاس کوي. (په ویډیو کې په 29:42)
د پوټینټیومیټر څخه ولتاژ په LCD باندې ښودل په درس 20/31: په LCD1602 باندې د ولتاژ ښودل کې پوښل شوي.
د الټراسونیک سینسر څخه د فاصلې ښودلو لپاره ورته LCD کارول په درس 20/31: د Arduino سره د LCD1602 کارول د تودوخې، ولتاژ او فاصلې ښودل | Robojax کې پوښل شوي.
د دې ویډیو پورې اړوند پروژې
- درس 20/31: د Arduino سره د LCD1602 کارول د تودوخې، ولتاژ او فاصلې ښودل | Robojax
- درس 20/31: په LCD1602 باندې د ولتاژ ښودل
فصلونه
- [00:00] د LCD1602 پیژندنه او د پروژې کتنه
- [01:30] د LCD1602 هارډویر او I2C ماډل تشریح
- [02:47] د LCD کنټراسټ تنظیم کول
- [03:14] د LCD پن آوټ او I2C پته ترتیب
- [05:28] د LCD1602 لپاره د تارونو ډیاګرام
- [06:16] د LiquidCrystal_I2C کتابتون نصب کول
- [08:11] د سکینر سره د I2C پته موندل
- [09:28] په LCD باندې د متن چاپولو لپاره اساسي کوډ
- [11:10] مثالونه: روښانه کرسور او دودیز کرکټرونه
- [13:46] د دودیزو کرکټرونو جوړول او کارول
- [18:51] سیریل ښودنې مثال
- [23:16] په LCD باندې د متن سکرول کول
- [24:36] د DHT11 سینسر کوډ د LCD سره یوځای کول
- [30:16] د درجې نښه ښودل
- [32:03] د تودوخې څخه لسیزې نقطې لرې کول
- [33:00] په LCD باندې د پوټینټیومیټر څخه د ولتاژ ښودل
- [35:56] د الټراسونیک سینسر څخه د فاصلې ښودل
/*
Lesson 20/31: Displaying Temperature and humidity from DHT11 on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This is the Arduino code for 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 Jan 04, 2018
* Robojax.com
Please watch video instruction 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 download 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 GetHub: 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 blacklight 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;
}
}
هغه شیان چې تاسو ورته اړتیا لرئ
-
امازونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
امازون
-
امازون
-
امازون
-
امازون
سرچینې او حوالې
-
اسنادDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
بهرنیPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
فایلونه📁
Arduino کتابتونونه (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
د کارونکي لارښود
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB