🧪 قياس المناخ الداخلي باستخدام Arduino

مشروع حساس الحرارة والرطوبة

في عالم الإلكترونيات، يعتبر فهم البيئة المحيطة خطوة أساسية نحو بناء أنظمة ذكية. من هنا، يأتي مشروع حساس الحرارة والرطوبة كمدخل مثالي للمبتدئين في عالم Arduino، حيث يجمع بين البرمجة، التوصيل، والقياس البيئي في تجربة تعليمية ممتعة ومفيدة.

🎯 لماذا هذا المشروع مهم؟

  • يعلمك كيف تقرأ بيانات من حساس حقيقي.
  • يربط بين العالم الفيزيائي والبرمجة.
  • يمهد الطريق لمشاريع أكثر تعقيداً مثل أنظمة الري الذكية أو محطات الطقس.

🧰 الأدوات المطلوبة

لوحة Arduino Uno أو مشابهة

حساس DHT11 أو DHT22

مقاومة 10K أوم

أسلاك توصيل ولوحة تجارب

شاشة LCD (اختيارية لعرض القيم مباشرة)

شاشة عرض بلوري سائل LCD بحجم 16x2.
شاشة عرض بلوري سائل LCD بحجم 16×2.

🧭 خطوات التركيب

  1. توصيل الحساس:
    • VCC إلى 5V
    • GND إلى GND
    • DATA إلى المدخل الرقمي D2
    • مقاومة 10K بين DATA و VCC
  2. اختبار التوصيلات: تأكد من ثبات الأسلاك وعدم وجود تماس غير مرغوب فيه.

💻 البرمجة: قراءة البيانات من الحساس

cpp

#include <DHT.h>

#define DHTPIN 2       // مدخل البيانات
#define DHTTYPE DHT11  // أو DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("فشل في قراءة البيانات من الحساس");
    return;
  }

  Serial.print("الرطوبة: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("الحرارة: ");
  Serial.print(t);
  Serial.println(" °C");

  delay(2000);
}

🧠 شرح الكود البرمجي: حساس DHT11 مع Arduino

cpp

#include <DHT.h>

🔹 شرح: هذا السطر يستدعي مكتبة DHT.h، وهي مكتبة جاهزة تحتوي على وظائف تسهل التعامل مع حساس DHT11 أو DHT22. 🔸 تعليمي: المكتبات في Arduino تشبه الصناديق التي تحتوي على أدوات جاهزة للاستخدام.

cpp

#define DHTPIN 2
#define DHTTYPE DHT11

🔹 شرح:

  • DHTPIN 2: يحدد أن DATA من الحساس متصل بالمدخل الرقمي رقم 2.
  • DHTTYPE DHT11: يحدد نوع الحساس المستخدم (يمكن تغييره إلى DHT22 إذا استخدمت الحساس الآخر). 🔸 تعليمي: #define تستخدم لتعريف ثوابت تسهل تعديل الكود لاحقاً.

cpp

DHT dht(DHTPIN, DHTTYPE);

🔹 شرح: ينشئ كائن dht من نوع DHT باستخدام المدخل ورقم النوع المحددين. 🔸 تعليمي: الكائنات في البرمجة تسمح لنا باستخدام وظائف جاهزة مثل readTemperature() و readHumidity().

cpp

void setup() {
  Serial.begin(9600);
  dht.begin();
}

🔹 شرح:

  • Serial.begin(9600): يفتح قناة الاتصال التسلسلي بين Arduino والحاسوب بسرعة 9600 بت في الثانية.
  • dht.begin(): يبدأ تشغيل الحساس ويجهزه للقراءة. 🔸 تعليمي: setup() تُنفذ مرة واحدة عند تشغيل اللوحة، وتُستخدم لتهيئة الإعدادات.

cpp

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

🔹 شرح:

  • readHumidity(): يقرأ نسبة الرطوبة من الحساس ويخزنها في المتغير h.
  • readTemperature(): يقرأ درجة الحرارة ويخزنها في t. 🔸 تعليمي: loop() تُنفذ بشكل متكرر، وهي قلب البرنامج الذي يعمل باستمرار.

cpp

  if (isnan(h) || isnan(t)) {
    Serial.println("فشل في قراءة البيانات من الحساس");
    return;
  }

🔹 شرح: يتحقق من أن القيم المقروءة ليست فارغة أو خاطئة (NaN = Not a Number). إذا كانت كذلك، يطبع رسالة خطأ ويتوقف عن تنفيذ باقي الكود مؤقتاً. 🔸 تعليمي: التحقق من الأخطاء مهم جداً لضمان عمل البرنامج بشكل سليم.

cpp

  Serial.print("الرطوبة: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("الحرارة: ");
  Serial.print(t);
  Serial.println(" °C");

🔹 شرح: يطبع القيم المقروءة على شاشة المنفذ التسلسلي، مع تنسيق واضح. 🔸 تعليمي: Serial.print() تستخدم لطباعة النصوص والقيم، و\t تضيف مسافة أفقية.

cpp

  delay(2000);
}

🔹 شرح: ينتظر البرنامج لمدة 2000 ميلي ثانية (2 ثانية) قبل إعادة القراءة. 🔸 تعليمي: delay() تُستخدم لتحديد فاصل زمني بين كل قراءة وأخرى.

🧪 ملخص تعليمي

المفهومالشرح المبسط
المكتبةأدوات جاهزة للتعامل مع الحساس
الكائنطريقة لتجميع الوظائف المرتبطة بالحساس
المنفذ التسلسليقناة لعرض البيانات على الحاسوب
التحقق من الأخطاءحماية البرنامج من القيم الفارغة أو الخاطئة
الطباعةعرض القيم المقروءة بطريقة مفهومة
التأخيرتنظيم توقيت القراءة لتجنب التكرار السريع

📚 مفاهيم تعليمية مرافقة

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

🧠 تحدي تعليمي

✍️ عدّل الكود ليعرض درجة الحرارة بالفهرنهايت، وأضف تنبيه صوتي إذا تجاوزت الحرارة 30°C.

🌱 كيف نطور المشروع؟

  • إضافة شاشة LCD لعرض القيم مباشرة.
  • تخزين البيانات في بطاقة SD.
  • إرسال القيم عبر الإنترنت باستخدام Wi-Fi أو Bluetooth.
  • ربطه بنظام ري تلقائي للنباتات.

هذا المشروع هو بوابة رائعة نحو عالم الأنظمة الذكية. يمكن تحويله بسهولة إلى وحدة تعليمية تفاعلية على Schwila.com، أو استخدامه في ورش تعليمية للأطفال والمبتدئين.

رد واحد على “🧪 قياس المناخ الداخلي باستخدام Arduino”

أضف تعليقاً