- نظرة عامة على مستشعر DHT11:
- المتطلبات المسبقة:
- تثبيت مكتبة Adafruit LCD على Raspberry Pi:
- تثبيت مكتبة Adafruit DHT11 على Raspberry Pi:
- مخطط الرسم البياني:
- برمجة Python لمستشعر DHT11:
- قياس الرطوبة ودرجة الحرارة باستخدام Raspberry Pi:
تعتبر درجة الحرارة والرطوبة من أكثر المعلمات شيوعًا التي تتم مراقبتها في أي بيئة. هناك الكثير من أجهزة الاستشعار للاختيار من بينها لقياس درجة الحرارة والرطوبة ، ولكن أكثرها استخدامًا هو DHT11 نظرًا لنطاق القياس المناسب ودقته. كما أنه يعمل مع اتصال دبوس واحد ، وبالتالي من السهل جدًا التفاعل مع ميكروكنترولر أو المعالجات الدقيقة. في هذا البرنامج التعليمي سوف نتعلم كيفية توصيل مستشعر DHT11 الشهير مع Raspberry Pi وعرض قيمة درجة الحرارة والرطوبة على شاشة LCD مقاس 16 × 2. لقد استخدمناها بالفعل لبناء محطة طقس IoT Raspberry Pi.
نظرة عامة على مستشعر DHT11:
يستطيع مستشعر DHT11 قياس الرطوبة النسبية ودرجة الحرارة بالمواصفات التالية
نطاق درجة الحرارة: 0-50 درجة مئوية دقة درجة الحرارة: ± 2 درجة مئوية نطاق الرطوبة: 20-90٪ RH دقة الرطوبة: ± 5٪
يتوفر مستشعر DHT11 إما في شكل وحدة أو في شكل مستشعر. في هذا البرنامج التعليمي ، نستخدم نموذج وحدة المستشعر ، والفرق الوحيد بينهما هو أنه في شكل الوحدة ، يحتوي المستشعر على مكثف ترشيح ومقاوم سحب متصل بدبوس إخراج المستشعر. لذلك إذا كنت تستخدم المستشعر وحده ، فتأكد من إضافة هذين المكونين. تعلم أيضًا عن تفاعل DHT11 مع Arduino.
كيف يعمل مستشعر DHT11:
يأتي مستشعر DHT11 مع غلاف بلون أزرق أو أبيض. يوجد داخل هذا الغلاف مكونان مهمان يساعداننا على الشعور بالرطوبة النسبية ودرجة الحرارة. المكون الأول هو زوج من الأقطاب الكهربائية ؛ يتم تحديد المقاومة الكهربائية بين هذين القطبين بواسطة ركيزة ممسكة بالرطوبة. لذا فإن المقاومة المقاسة تتناسب عكسياً مع الرطوبة النسبية للبيئة. كلما زادت الرطوبة النسبية الأقل ستكون قيمة المقاومة والعكس صحيح. لاحظ أيضًا أن الرطوبة النسبية تختلف عن الرطوبة الفعلية. تقيس الرطوبة النسبية محتوى الماء في الهواء بالنسبة لدرجة الحرارة في الهواء.
المكون الآخر هو الثرمستور NTC المركب على السطح. يشير مصطلح NTC إلى معامل درجة الحرارة السالب ، لزيادة درجة الحرارة ستنخفض قيمة المقاومة
المتطلبات المسبقة:
من المفترض أن Raspberry Pi الخاص بك يومض بالفعل بنظام تشغيل ويمكنه الاتصال بالإنترنت. إذا لم يكن الأمر كذلك ، فاتبع البرنامج التعليمي Getting started with Raspberry Pi قبل المتابعة.
من المفترض أيضًا أن لديك حق الوصول إلى pi الخاص بك إما من خلال النوافذ الطرفية أو من خلال تطبيق آخر يمكنك من خلاله كتابة وتنفيذ برامج python واستخدام النافذة الطرفية.
تثبيت مكتبة Adafruit LCD على Raspberry Pi:
سيتم عرض قيمة درجة الحرارة والرطوبة على شاشة LCD مقاس 16 * 2. يوفر لنا Adafruit مكتبة لتشغيل شاشة LCD هذه بسهولة في وضع 4 بت ، لذلك دعونا نضيفها إلى Raspberry Pi الخاص بنا عن طريق فتح النافذة الطرفية Pi واتباع الخطوات التالية.
الخطوة 1: قم بتثبيت git على Raspberry Pi الخاص بك باستخدام السطر أدناه. يسمح لك Git باستنساخ أي ملفات مشروع على Github واستخدامها على Raspberry pi. مكتبتنا موجودة على Github لذا يتعين علينا تثبيت git لتنزيل تلك المكتبة إلى pi.
apt-get install git
الخطوة 2: يرتبط السطر التالي بصفحة GitHub حيث توجد المكتبة ، فقط قم بتنفيذ السطر لاستنساخ ملف المشروع على الدليل الرئيسي Pi
بوابة استنساخ git: //github.com/adafruit/Adafruit_Python_CharLCD
الخطوة 3: استخدم الأمر أدناه لتغيير سطر الدليل ، للوصول إلى ملف المشروع الذي قمنا بتنزيله للتو. يتم إعطاء سطر الأوامر أدناه
قرص مضغوط Adafruit_Python_CharLCD
الخطوة 4: داخل الدليل سيكون هناك ملف يسمى setup.py ، وعلينا تثبيته لتثبيت المكتبة. استخدم الكود التالي لتثبيت المكتبة
sudo python setup.py install
هذا هو أنه كان يجب تثبيت المكتبة بنجاح. الآن بالمثل ، دعنا ننتقل إلى تثبيت مكتبة DHT وهي أيضًا من Adafruit.
تثبيت مكتبة Adafruit DHT11 على Raspberry Pi:
يعمل مستشعر DHT11 مع مبدأ نظام السلك الواحد. يستشعر المستشعر قيمة درجة الحرارة والرطوبة ثم ينتقل عبر دبوس الإخراج كبيانات تسلسلية. يمكننا بعد ذلك قراءة هذه البيانات باستخدام I / O pin على MCU / MPU. لفهم كيفية قراءة هذه القيم ، يجب عليك قراءة ورقة البيانات الخاصة بمستشعر DHT11 ، ولكن في الوقت الحالي لإبقاء الأمور بسيطة ، سنستخدم مكتبة للتحدث مع مستشعر DHT11.
في مكتبة DHT11 التي تقدمها Adafruit يمكن استخدامها لDHT11، DHT22 وغيرها من أجهزة استشعار درجة الحرارة سلك واحد كذلك. يشبه إجراء تثبيت مكتبة DHT11 أيضًا الإجراء المتبع لتثبيت مكتبة LCD. السطر الوحيد الذي سيتغير هو رابط صفحة GitHub التي يتم حفظ مكتبة DHT عليها.
أدخل أسطر الأوامر الأربعة واحدًا تلو الآخر على الجهاز لتثبيت مكتبة DHT
استنساخ بوابة
cd Adafruit_Python_DHT sudo apt-get install build- basic python-dev sudo python setup.py install
بمجرد الانتهاء من ذلك ، سيتم تثبيت كلتا المكتبتين بنجاح على Raspberry Pi الخاص بنا. الآن يمكننا المضي قدمًا في توصيل الأجهزة.
مخطط الرسم البياني:
الرسم البياني الكامل للدائرة الذي يربط DH11 مع Raspberry Pi مذكور أدناه ، وقد تم بناؤه باستخدام Fritzing. اتبع التوصيلات واصنع الدائرة
يعمل كل من مستشعر LCD و DHT11 مع مصدر طاقة + 5 فولت ، لذلك نستخدم دبابيس 5 فولت في Raspberry Pi لتشغيل كليهما. يتم استخدام مقاومة سحب بقيمة 1 كيلو على دبوس الإخراج لمستشعر DHT11 ، إذا كنت تستخدم وحدة ، فيمكنك تجنب هذا المقاوم.
تمت إضافة وعاء تشذيب يبلغ 10 كيلو إلى دبوس Vee الخاص بشاشة LCD للتحكم في مستوى التباين في شاشة LCD. بخلاف ذلك ، جميع الاتصالات مباشرة إلى الأمام. لكن قم بتدوين دبابيس GPIO التي تستخدمها لتوصيل المسامير لأننا سنحتاجها في برنامجنا. يجب أن يسمح لك الرسم البياني أدناه بمعرفة أرقام دبوس GPIO.
استخدم المخطط وقم بإجراء اتصالاتك وفقًا لمخطط الدائرة. لقد استخدمت لوح توصيل وأسلاك توصيل لإجراء اتصالاتي. منذ أن استخدمت وحدة DHT11 ، قمت بتوصيلها مباشرة بـ Raspberry Pi. بدا جهازي مثل هذا أدناه
برمجة Python لمستشعر DHT11:
يتعين علينا كتابة برنامج لقراءة قيمة درجة الحرارة والرطوبة من مستشعر DHT11 ثم عرضه على شاشة LCD. نظرًا لأننا قمنا بتنزيل مكتبات لكل من مستشعر LCD و DHT11 ، يجب أن يكون الرمز مستقيمًا إلى حد كبير. و برنامج كامل الثعبان يمكن العثور في نهاية هذه الصفحة، ولكن يمكنك أن تقرأ المزيد لفهم كيفية عمل البرنامج.
يتعين علينا استيراد مكتبة LCD ومكتبة DHT11 إلى برنامجنا لاستخدام الوظائف المتعلقة بها. نظرًا لأننا قمنا بالفعل بتنزيلها وتثبيتها على Pi الخاص بنا ، يمكننا ببساطة استخدام الأسطر التالية لاستيرادها. نقوم أيضًا باستيراد مكتبة الوقت لاستخدام وظيفة التأخير.
وقت الاستيراد # وقت الاستيراد لإنشاء استيراد تأخير Adafruit_CharLCD مثل LCD # استيراد مكتبة LCD استيراد Adafruit_DHT #Import DHT Library for sensor
بعد ذلك ، يتعين علينا تحديد المسامير التي يتصل بها المستشعر ونوع مستشعر درجة الحرارة المستخدم. تم تعيين اسم المستشعر المتغير إلى Adafruit_DHT.DHT11 نظرًا لأننا نستخدم مستشعر DHT11 هنا. يتم توصيل دبوس خرج المستشعر بـ GPIO 17 الخاص بـ Raspberry Pi ومن ثم نقوم بتعيين 17 لمتغير sensor_pin كما هو موضح أدناه.
sensor_name = Adafruit_DHT.DHT11 # نحن نستخدم مستشعر DHT11 sensor_pin = 17 # المستشعر متصل بـ GPIO17 على Pi
وبالمثل ، يتعين علينا أيضًا تحديد دبابيس GPIO التي تتصل بها شاشة LCD. نحن هنا نستخدم شاشة LCD في وضع 4 بت ، ومن ثم سيكون لدينا أربعة دبابيس بيانات واثنين من دبابيس التحكم للاتصال بدبابيس GPIO الخاصة بـ pi. أيضًا ، يمكنك توصيل دبوس الإضاءة الخلفية بدبوس GPIO إذا أردنا التحكم في الإضاءة الخلفية أيضًا. لكن في الوقت الحالي لا أستخدم ذلك ، لذا فقد خصصت 0 له.
lcd_rs = 7 #RS من LCD متصل بـ GPIO 7 على PI lcd_en = 8 #EN من LCD متصل بـ GPIO 8 على PI lcd_d4 = 25 # D4 من LCD متصل بـ GPIO 25 على PI lcd_d5 = 24 # D5 من LCD هو متصل بـ GPIO 24 على PI lcd_d6 = 23 # D6 من شاشات الكريستال السائل متصل بـ GPIO 23 على PI lcd_d7 = 18 # D7 من شاشة LCD متصل بـ GPIO 18 على PI lcd_backlight = 0 #LED غير متصل لذا قمنا بتعيين القيمة 0
يمكنك أيضًا توصيل شاشة LCD في وضع 8 بت مع Raspberry pi ولكن بعد ذلك سيتم تقليل المسامير المجانية.
يمكن استخدام مكتبة LCD من Adafruit التي قمنا بتنزيلها لجميع أنواع شاشات LCD المميزة. هنا في مشروعنا نستخدم شاشة LCD مقاس 16 * 2 لذلك نذكر عدد الصفوف والأعمدة لمتغير كما هو موضح أدناه.
lcd_columns = 16 # لـ 16 * 2 LCD_rows = 2 # لـ 16 * 2 LCD
الآن ، بعد أن أعلنا عن دبابيس LCD وعدد الصفوف والأعمدة لشاشة LCD ، يمكننا تهيئة شاشة LCD باستخدام السطر التالي الذي يرسل جميع المعلومات المطلوبة إلى المكتبة.
lcd = LCD.Adafruit_CharLCD (lcd_rs ، lcd_en ، lcd_d4 ، lcd_d5 ، lcd_d6 ، lcd_d7 ، lcd_columns ، lcd_rows ، lcd_backlight) # إرسال جميع تفاصيل الدبوس إلى المكتبة
لبدء البرنامج ، نعرض رسالة مقدمة صغيرة باستخدام وظيفة lcd.message () ثم نعطي تأخيرًا لمدة ثانيتين لجعل الرسالة قابلة للقراءة. للطباعة على السطر الثاني ، يمكن استخدام الأمر \ n كما هو موضح أدناه
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # أعط وقت رسالة مقدمة. النوم (2) # انتظر لمدة 2 ثانية
أخيرًا ، داخل حلقة while ، يجب أن نقرأ قيمة درجة الحرارة والرطوبة من المستشعر ونعرضها على شاشة LCD كل ثانيتين. يظهر البرنامج الكامل داخل حلقة while loop أدناه
بينما 1: # حلقة لانهائية
الرطوبة ودرجة الحرارة = Adafruit_DHT.read_retry (sensor_name، sensor_pin) # مقروء من المستشعر وحفظ القيم ذات الصلة في متغير درجة الحرارة والرطوبة
lcd.clear () # محو شاشة LCD.message ('Temp =٪.1f C'٪ temperature) # عرض قيمة درجة الحرارة lcd.message ('\ nHum =٪.1f ٪٪'٪ humidity) #Display قيمة وقت الرطوبة. النوم (2) # انتظر لمدة 2 ثانية ثم قم بتحديث القيم
يمكننا بسهولة الحصول على قيمة درجة الحرارة والرطوبة من المستشعر باستخدام هذا الخط الفردي أدناه. كما ترون ، يتم إرجاع قيمتين مخزنتين في الرطوبة ودرجة الحرارة المتغيرة. و sensor_name و sensor_pin يتم تمرير تفاصيل كمعلمات. تم تحديث هذه القيم في بداية البرنامج
الرطوبة ودرجة الحرارة = Adafruit_DHT.read_retry (sensor_name، sensor_pin)
لعرض اسم متغير على شاشة LCD ، يمكننا استخدام المعرفات مثل & d ،٪ c وما إلى ذلك. هنا نظرًا لأننا نعرض رقم فاصلة عائمة برقم واحد فقط بعد الفاصلة العشرية ، نستخدم المعرف٪.1f لعرض القيمة في درجة الحرارة والرطوبة المتغيرة
lcd .message ('Temp =٪.1f C'٪ temperature) lcd .message ('\ nHum =٪.1f ٪٪'٪ humidity)
قياس الرطوبة ودرجة الحرارة باستخدام Raspberry Pi:
قم بعمل التوصيلات حسب مخطط الدائرة الكهربائية وقم بتثبيت المكتبات المطلوبة. ثم قم بتشغيل برنامج python الوارد في نهاية هذه الصفحة. يجب أن تعرض شاشة LCD رسالة تمهيدية ثم تعرض قيمة درجة الحرارة والرطوبة الحالية كما هو موضح في الصورة أدناه.
إذا لم تجد شيئًا معروضًا على شاشة LCD ، فتحقق مما إذا كانت نافذة python shell تعرض أي أخطاء ، وإذا لم يتم عرض أي خطأ ، فتحقق من اتصالاتك مرة أخرى واضبط مقياس الجهد لتغيير مستوى التباين في شاشة LCD وتحقق مما إذا كنت تحصل على أي شيء الشاشة.
آمل أن تكون قد فهمت المشروع واستمتعت ببنائه ، إذا واجهت أي مشكلة في إنجاز هذا ، فأبلغ عنه في قسم التعليقات أو استخدم المنتدى للحصول على المساعدة الفنية. سأبذل قصارى جهدي للرد على جميع التعليقات.
يمكنك أيضًا التحقق من مشاريعنا الأخرى باستخدام DHT11 مع متحكم آخر.