يُبيّن هذا المقال كيفيّة استخدام حسّاس الحرارة DS18B20 الخاّص بلوح الراسبيري باي والبرمجيات التي سنحتاجها لذلك، كما يمكن أن يُستخدَم هذا الحسّاس في مشاريعَ أخرى لتشغيل مروحة وتبريد صندوق الراسبيري باي Raspberry Pi case.
القطع المطلوبة:
– حسّاس درجة حرارة.
– لوح اختبار.
– سلك توصيل.
– مقاومة بقيمة 4.7kΩ.
يتوفَّر حسّاس الحرارة DS18B20 بنسخة ضد الماء‘ وفي حال أردْتَ أن تستخدِم حسّاساً أكثرَ تطوّراً يقيس الرطوبة أيضاً
يمكن أن تستخدِم الحسّاس DHT11 أو الحسّاس DHT22 اللذين يقيسان درجة الحرارة والرطوبة معاً.
توصيف حسّاس الحرارة DS18B20 :
يُعطِي الحسّاس خَرْجاً تشابهيا بطول 9 إلى 12 بت يمكن قراءتها وتحويلها، وهذا ممكن عند استخدام القطب العام 4 فقط، ولكن من الممكن أن نقوم بتوصيل عدّة حسّاسات على التسلسل (لأنها تَعتمد على استخدام بروتوكول
(1 Wire protocol)
توصيل حسّاس الحرارة
يظهر في الشكل (2) توصيل حسّاس الحرارة DS18B20 باستخدام مقاومة 4.7kΩ:
عند التوصيل بهذه الطريقة يمكن أن نُفعِّل بروتوكول السلك الوحيد بكتابة الأمر التالي:
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)، ثم ضع الحسّاس في كيس بلاستيكي مُحكَم الإغلاق بعد إخراج الهواء منه بشكل كامل حتى لا يؤثر على دقَّة القياس فيصبح الحسّاس مقاوِماً للظروف الجويّة المختلفة، أو ببساطة استخدم حسّاساً مضاداً للماء فتصبح قادراً على قياس درجة
حرارة سخان الماء أيضاً.