يُعَدّ قياس درجة الحرارة واحداً من استخدامات الراسبيري باي العديدة، وفي المشاريع التي تتطلَّب قيمةً دقيقة لدرجة الحرارة كمحطّات الطقس يُسهِّل استخدام حسّاس الحرارة مع الراسبيري باي قراءةَ القِيَم، ويَستخدِم قطباً عاماً واحداً فقط GPIO على لوح الراسبيري باي.

يُبيّن هذا المقال كيفيّة استخدام حسّاس الحرارة DS18B20 الخاّص بلوح الراسبيري باي والبرمجيات التي سنحتاجها لذلك، كما يمكن أن يُستخدَم هذا الحسّاس في مشاريعَ أخرى لتشغيل مروحة وتبريد صندوق الراسبيري باي  Raspberry Pi case.

القطع المطلوبة:

– لوح راسبيري باي.
– حسّاس درجة حرارة.
– لوح اختبار.
– سلك توصيل.
– مقاومة بقيمة 4.7kΩ.
يتوفَّر حسّاس الحرارة DS18B20 بنسخة ضد الماء‘ وفي حال أردْتَ أن تستخدِم حسّاساً أكثرَ تطوّراً يقيس الرطوبة أيضاً
يمكن أن تستخدِم الحسّاس DHT11 أو الحسّاس DHT22 اللذين يقيسان درجة الحرارة والرطوبة معاً.

توصيف حسّاس الحرارة DS18B20 :

يُعطِي الحسّاس خَرْجاً تشابهيا بطول 9 إلى 12 بت يمكن قراءتها وتحويلها، وهذا ممكن عند استخدام القطب العام 4 فقط، ولكن من الممكن أن نقوم بتوصيل عدّة حسّاسات على التسلسل (لأنها تَعتمد على استخدام بروتوكول

(1 Wire protocol)

توصيل حسّاس الحرارة

يظهر في الشكل (2) توصيل حسّاس الحرارة DS18B20 باستخدام مقاومة 4.7kΩ:

حسّاس الحرارة DS18B20
توصيل حسّاس الحرارة DS18B20

 

عند التوصيل بهذه الطريقة يمكن أن نُفعِّل بروتوكول السلك الوحيد بكتابة الأمر التالي:

sudo modprobe w1-gpio
sudo modprobe w1-therm

ومن ثم يمكن أن نتأكدمن أنه يعمل بشكل صحيح بإدخال الأمر التالي:

lsmod

في حال تمَّ استخدام القطب العامِّ الرابع ولم يحدث خطأ أثناء التفعيل فيجب أن تظهر العناصر في القائمة. ولكي نجعل الراسبيري باي يقوم بتحميل هذه العناصر عند كلِّ إقلاع يجب أن ندخل التّعديلات التالية إلى الملفّ etc/modules :

sudo nano /etc/modules

ثم نضيف السطرين التاليَين في نهاية الملفّ:

w1_gpio
w1_therm

يجب أن نحدِّد رقماً تعريفياً ID للحسّاس لكي نتابع في الخطوة التالية، وفي حال توصيل عدّة حسّاسات على التّسلسل يُفضَّل أن نختبِرَ كلّ حسّاس على حدة ونسجِّلَ رقمَه التعريفيّ حتّى لا تخطئ في تحديد الحسّاس لاحقاً.

حيث نقوم بتغيير مدير الملفّات directory ونطبع الملفّات بكتابة الأمر التالي:

cd /sys/bus/w1/devices/
ls

يجب أن يظهرَ ملفّ في القائمة باسم 10-000802b4ba0e ( يكون باسمٍ مختلف كلَّ مرّة) وهو الملفّ التعريفيّ الذي نستخدمه للاستعلام عن حالة الحسّاس:

cat /sys/bus/w1/devices/10-000802b4ba0e/w1_slave

يظهر في رسالة الخَرْج آخر قراءة لدرجة الحرارة مُقاسةً بميللي درجة (milli degree):

31 00 4b 46 ff ff 05 10 1c : crc=1c YES
31 00 4b 46 ff ff 05 10 1c t=24437

وعندما نقسِّم الرّقم على 1000 نحصل على 24.437 درجة مئوية.

الكود البرمجيّ المطلوب لقراءة قيمة درجة الحرارة من الحسّاس

لقراءة درجة الحرارة من الحسّاس بشكل أسهلَ (كمثال نستخدمها في مشاريع البيت الذكيّ مثل برنامج الأتمتة مفتوح
المصدر openHAB) نقوم بكتابة الأمر بإدخال temperature بعد أن ننشئ ملفّاً في المسار (/usr/bin/):

sudo nano /usr/bin/temperature

ويكون محتوى الكود البرمجيّ كالتالي:

الكود البرمجي : التحميل من هنا

ثم نعطي الملفّ الصّلاحيات المطلوبة بكتابة الأمر:

sudo chmod +x /usr/bin/temperature

والآن عندما نفتح موجِّه الأوامر console ونقوم بكتابة الأمر:

temperature

ستظهر درجة الحرارة الحاليّة. في حال ظهور رسالة خطأ فعليك تنصيب حزمة bc بكتابة الأمر التالي:

أخيراً إذا ما أردْتَ أن تقوم بقياس درجة الحرارة خارج المنزل (تعليق الحسّاس على النافذة)، فلا يمكن أن تَستخدِمَ أسلاكاً ضخمة خلال إطار النافذة والأفضل استخدام أسلاكٍ رفيعة (كأشرطة توصيل بيانات الأقراص المرنة والصلبة القديمة IDE)، ثم ضع الحسّاس في كيس بلاستيكي مُحكَم الإغلاق بعد إخراج الهواء منه بشكل كامل حتى لا يؤثر على دقَّة القياس فيصبح الحسّاس مقاوِماً للظروف الجويّة المختلفة، أو ببساطة استخدم حسّاساً مضاداً للماء فتصبح قادراً على قياس درجة
حرارة سخان الماء أيضاً.


ترجمة:لؤي ديب, مراجعة: مي همدر, تدقيق لغوي: رنيم العلي, تصميم: علي العلي , تحرير: قحطان غانم.
المصدر: هنا