سبق 20/31: درجہ حرارت اور نمی کو DHT11 سے LCD اسکرین پر ظاہر کرنا
یہ ٹیوٹوریل ظاہر کرتا ہے کہ DHT11 درجہ حرارت اور نمی کے سینسر کو I2C-فعال LCD1602 ڈسپلے کے ساتھ ملا کر ایک کمپیکٹ ماحولیاتی نگرانی اسٹیشن کیسے بنایا جائے۔ سیریل مانیٹر سے خام سینسر ڈیٹا پڑھنے کے بجائے، آپ 16x2 کریکٹر اسکرین پر لائیو درجہ حرارت اور نمی کی ریڈنگز ظاہر کرنا سیکھیں گے۔ یہ پروجیکٹ ڈیسک ٹاپ ویدر اسٹیشن، چھوٹے گرین ہاؤس مانیٹر، یا کسی بھی ہوم آٹومیشن پروجیکٹ میں مقامی ریڈ آؤٹ شامل کرنے کے لیے مثالی ہے۔ I2C انٹرفیس وائرنگ کو آسان بناتا ہے، جس سے یہ ابتدائی افراد کے لیے قابل رسائی اور تجربہ کار بنانے والوں کے لیے فوری اضافہ ہے۔
یہاں کچھ عملی خیالات ہیں جو آپ اس علم کے ساتھ بنا سکتے ہیں:
- ایک ڈیسک ٹاپ ویدر اسٹیشن جو موجودہ کمرے کے حالات دکھاتا ہے۔
- ریپٹائل یا پلانٹ ٹیریریم کے لیے ایک کمپیکٹ ڈسپلے۔
- سرور روم یا ورکشاپ کے ماحول کے لیے ایک مقامی ریڈ آؤٹ۔
- زیادہ پیچیدہ ہوم آٹومیشن سسٹم کے لیے ایک بیس ماجیول۔
ہارڈویئر اور اجزاء
یہ پروجیکٹ بنانے کے لیے، آپ کو درج ذیل اجزاء کی ضرورت ہوگی:
- Arduino Uno (یا مطابقت رکھنے والا بورڈ)
- I2C انٹرفیس ماجیول کے ساتھ LCD1602 ڈسپلے
- 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 سے (5V کے لیے 10kΩ پل-اپ ریزسٹر کے ساتھ)
- 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 پر درجہ حرارت اور نمی پرنٹ کرتا ہے، lcd.setCursor() اور lcd.print() فنکشنز استعمال کرتے ہوئے تاکہ یہ کنٹرول کیا جا سکے کہ اسکرین پر اقدار کہاں ظاہر ہوں۔
ڈگری علامت دکھانا
معیاری 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
فائلیں📁
آرڈوینو لائبریریاں (زپ)
-
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