قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 18-02-2020, 11:13 AM المشاركة 1   
افتراضي قياس الرطوبة Humidity ودرجة الحرارة Temperature باستخدام الاردوينو Arduinoوالحساس DHT Twitter FaceBook Google+



قياس الرطوبة Humidity ودرجة الحرارة Temperature باستخدام الاردوينو Arduinoوالحساس DHT11

الرطوبة ودرجة الحرارة هى بارامترات شائعة لقياس الظروف البيئية. في هذا المشروع القائم على Arduino ، سنقوم بقياس درجة الحرارة والرطوبة المحيطة وعرضها على شاشة LCD مقاس 16 × 2. يتم استخدام مستشعر درجة الحرارة والرطوبة الشائع DHT11 مع Arduino uno لتطوير مقياس حرارة thermometer مئوى Celsius ومقياس رطوبة كنسبة مئوية .
يتكون هذا المشروع من ثلاثة أقسام – القسم الأول يستشعر الرطوبة ودرجة الحرارة باستخدام حساس الرطوبة ودرجة الحرارة DHT11. القسم الثاني يقرأ خرج وحدة الحساس DHT ويستخرج قيم درجة الحرارة والرطوبة إلى رقم مناسب من حيث النسبة المئوية والدرجة المئوية. والجزء الثالث من النظام يعرض الرطوبة ودرجة الحرارة على شاشة LCD .



يعتمد عمل هذا المشروع على الاتصال التسلسلى لسلك مفرد . فى البداية يرسل الاردوينو إشارة بدء إلى الوحدة DHT ثم يعطي DHT إشارة استجابة تحتوي على بيانات درجة الحرارة والرطوبة. يقوم الاردوينو بالتجميع والاستخراج في شكل جزأين ، الأول هو الرطوبة والثاني هو درجة الحرارة ومن ثم إرسالها إلى شاشة LCD 16X2 .
في هذا المشروع ، استخدمنا وحدة module استشعار تسمى DHT11. تتميز هذه الوحدة بتركيبة للرطوبة والحرارة مع خرج إشارة رقمية معايرة ، يعني أن وحدة الاستشعار DHT11 هي وحدة مشتركة لاستشعار الرطوبة ودرجة الحرارة والتي تعطي إشارة خرج رقمية معايرة. المستشعر DHT11 يعطينا قيمة دقيقة للغاية للرطوبة ودرجة الحرارة ويضمن موثوقية عالية والاستقرار على المدى الطويل. يحتوي هذا المستشعر على مكون لقياس الرطوبة من نوع المقاومة ومكون لقياس درجة الحرارة من النوع NTC مع متحكم 8 بت مدمج له استجابة سريعة وفعال من حيث التكلفة ومتوفر في حزمة بأربعة أطراف فى صف واحد .



الوحدة DHT11 تعمل على الاتصال التسلسلى ، أي الاتصال بسلك واحد. ترسل هذه الوحدة البيانات في شكل قطار نبضات بفترة زمنية محددة. قبل إرسال البيانات إلى الاردوينو ، فإنها تحتاج إلى أمر تهيئة مع تأخير زمني .




شيء مهم هو التأكد من قيمة مقاومة السحب لأعلى لأننا إذا وضعنا مستشعر DHT على مسافة أقل من 20 متر ، فمن المستحسن أن تكون قيمة مقاومة السحب لأعلى هى 5k . إذا وضع DHT على مسافة أطول من 20 متر عندئذ استخدم القيمة المناسبة لمقاومة السحب لأعلى .

الدائرة الكهربية :




يتم استخدام شاشة LCD لعرض درجة الحرارة والرطوبة والتي ترتبط مباشرة مع اردوينو في وضع 4 بت. يتم توصيل أطراف الشاشة المسماة RS, EN, D4, D5, D6 , D7 لأطراف الاردوينو الرقمية رقم 2, 3, 4, 5, 6 , 7 . ويتم توصيل وحدة الاستشعار DHT11 بالطرف الرقمي 12 من الاردوينو ومع مقاومة السحب لأعلى 5k .

وصف البرمجة :

1- في البرمجة ، سوف نستخدم مكتبات مسبقة الصنع للمستشعر DHT11 ووحدة العرض LCD.

كود:
 #include<dht.h>      // Including library for dht
#include<LiquidCrystal.h>

2- ثم نقوم بتعريف أطراف الشاشة LCD وتعريف طرف المستشعر DHT ، وإنشاء كائن من الفئة dht ، وإعلان حرف درجة الحرارة :

كود:
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#define dht_dpin 12 
dht DHT;
byte degree[8] = 
              {
                0b00011,
                0b00011,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000
              };

3- ويتم تهيئة كل الأشياء فى دالة الإعداد setup .

كود:
 void setup()
{
 lcd.begin(16, 2);
 lcd.createChar(1, degree);
 lcd.clear();
 lcd.print("   Humidity   ");
 lcd.setCursor(0,1);
 lcd.print("  Measurement ");
 delay(2000);
 lcd.clear();
}

4- بعد ذلك في الدالة loop وباستخدام الدالة dht ، يقرأ المستشعر DHT بالدالة DHT.read11، ثم باستخدام بعض دوال dht (DHT.humidity , DHT.temperature ) ، نستخلص الرطوبة ودرجة الحرارة ونعرضها على شاشة LCD.

كود:
 void loop()
{
  DHT.read11(dht_dpin);

  lcd.setCursor(0,0);
  lcd.print("Humidity: ");
  lcd.print((int)DHT.humidity);   // printing Humidity on LCD
  lcd.print("%");

  lcd.setCursor(0,1);
  lcd.print("Temperature:");
  lcd.print((int)DHT.temperature);   // Printing temperature on LCD
  lcd.write(1); // lcd.print((char)223);
  lcd.print("C");
  delay(500);
}



البرنامج :

كود:
#include<dht.h>      // Including library for dht
#include<LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#define dht_dpin 12 
dht DHT;
byte degree[8] = 
              {
                0b00011,
                0b00011,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000
              };

void setup()
{
 lcd.begin(16, 2);
 lcd.createChar(1, degree);
 lcd.clear();
 lcd.print("   Humidity   ");
 lcd.setCursor(0,1);
 lcd.print("  Measurement ");
 delay(2000);
 lcd.clear();
}

void loop()
{
  DHT.read11(dht_dpin);
  lcd.setCursor(0,0);
  lcd.print("Humidity: ");
  lcd.print((int)DHT.humidity);   // printing Humidity on LCD , DHT.humidity returns humidity in percent
  lcd.print(" %");
  lcd.setCursor(0,1);
  lcd.print("Temperature:");
  lcd.print((int)DHT.temperature); // Printing temperature on LCD,DHT.temperature returns the temperature in Celsius
  lcd.write(1);
  lcd.print("C");
  delay(500);
}



مثال مع العرض على المنفذ التسلسلى :



كود:
 
#include "dht.h"
#define dht_dpin 12 // sensor Pin
 
dht DHT;
 
void setup(){
 
  Serial.begin(9600);
  delay(500);//Delay to let system boot
  Serial.println("DHT11 Humidity & temperature Sensor\n\n");
  delay(1000);//Wait before accessing Sensor
 
}//end "setup()"
 
void loop(){
  //Start of Program 
 
    DHT.read11(dht_dpin);
    
    Serial.print("Current humidity = ");
    Serial.print(DHT.humidity); //  DHT.humidity returns humidity in percent
    Serial.print("%  ");
    Serial.print("temperature = ");
    Serial.print(DHT.temperature); // DHT.temperature returns the temperature in Celsius
    Serial.println("C  ");
    
    delay(5000);//Wait 5 seconds before accessing sensor again.
 
  //Fastest should be once every two seconds.
 
}// end loop()

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عريبى محمود, مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب مسلم11 ( أعجبته المشاركة )
اعلانات

mohadrar
:: مهندس ::
تاريخ التسجيل: Feb 2020
المشاركات: 1
نشاط [ mohadrar ]
قوة السمعة:0
قديم 21-02-2020, 04:36 PM المشاركة 2   
افتراضي


مشكور استاذ على الشرح
عندي اسئلة لك ممكن نتواصل خاص أو عبر الايميل adrar4233*gmail.com

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً F.Abdelaziz ( شكر العضو على هذه المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:36 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025