شارك المقالة:

نظام إنترنت الأشياء (IoT) لمراقبة المناخ باستخدام Raspberry Pi و ESP8266

نظام إنترنت الأشياء (IoT) لمراقبة المناخ باستخدام Raspberry Pi و ESP8266

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

هدف المشروع ومنهجيته

كان الهدف الأساسي هو جمع بيانات دقيقة وموثوقة لإثبات هذا التباين الحراري، ومن ثم توفير أساس لاتخاذ إجراءات لتعديل نظام التكييف. وعليه، تم إنشاء أول مشروع لإنترنت الأشياء (IoT) يقوم بالمهام التالية:

  • تسجيل بيانات المناخ (الحرارة والرطوبة) بشكل دوري من عدة أجهزة.
  • تخزين البيانات على المدى الطويل.
  • توليد رسوم بيانية تفاعلية لمدة 48 ساعة، يمكن الوصول إليها من أي جهاز كمبيوتر متصل بشبكة الواي فاي.

المكونات والتقنية المستخدمة

المكونات والتقنية المستخدمة

يعتمد هذا النظام على عدة مكونات رئيسية:

  • مستشعر DHT22: يُستخدم لجمع بيانات المناخ.
  • وحدات تحكم دقيقة ESP8266: تُستخدم لإرسال البيانات عبر حزم البيانات (Datagrams). تقوم هذه الوحدات بأخذ عدة قراءات للمستشعر وإرسال القراءة الوسيطة (Median) للتخلص من القراءات الشاذة أو غير الدقيقة.
  • Raspberry Pi: يعمل كمركز تحكم رئيسي (Main Hub) للنظام، حيث يشغل خادم Tomcat 10، ويستقبل حزم البيانات، ويستخدم مكتبة Charts.js لإنشاء رسم بياني تفاعلي وواضح يتضمن نقاط زمنية وتفاصيل دقيقة.

مزايا الحل المخصص

على الرغم من وجود برامج جاهزة مثل HomeAssistant التي يمكنها أداء المهام الأساسية لمراقبة المستشعرات، إلا أن هذا الحل المخصص يقدم مزايا هامة:

  1. مرونة التخصيص والتوسع: الحل مفتوح المصدر بالكامل ومتاح على GitHub، مما يسمح بتطويره وتوسعته دون قيود البرمجيات الجاهزة.
  2. فرصة التعلم التقني: يوفر هذا المشروع خبرة عملية في مجالات متعددة تشمل نشر الخوادم، برمجة المتحكمات الدقيقة، ونشر تطبيقات الويب.

هذا المشروع هو مجرد نقطة انطلاق، وهناك خطط مستقبلية لتوسعته وتحسينه.

قد يهمك: كيفية عمل دارة كهربائية بسيطة

المتطلبات التقنية

لإنشاء هذا النظام، نحتاج إلى المكونات التالية. يمثل المتغير n عدد المواقع أو الغرف المراد مراقبتها.

الفئةالمكونالعدد المطلوب
عتاد (Hardware)Raspberry Pi (طراز 3 أو أعلى، مع نظام Raspberry Pi OS محدث)1
وحدات تحكم دقيقة ESP8266n
مستشعرات رقمية للحرارة والرطوبة DHT22n
أسلاك توصيل (ذكر-أنثى) (3 لكل DHT22)n
محولات حائط Micro-USBn+1
محرك أقراص USB (لنقل الملفات إلى Pi)1
شاشة عرض، كيبورد وماوس (USB/Bluetooth)، كابل HDMI1 من كل
كابل إيثرنت (لتوصيل Pi بالموجه/الراوتر)1
كمبيوتر، وموجه شبكة Wi-Fi1 من كل
برمجيات (Software)بيئة تطوير Arduino IDE

الخطوة 1: تثبيت Tomcat و Java على Raspberry Pi

تثبيت Tomcat و Java على Raspberry Pi

تتطلب هذه الخطوة تجهيز خادم Tomcat الذي سيستضيف تطبيق الويب الخاص بالمراقبة المناخية.

  1. تحديث نظام التشغيل:نفتح الطرفية (Terminal) على Raspberry Pi ونُنفّذ الأمر التالي:sudo apt update && sudo apt upgrade -y
  2. تثبيت Java:يتطلب خادم Tomcat 10 إصدار Java 11 أو أحدث؛ يستخدم هذا المشروع Java 17. نثبت OpenJDK باستخدام:sudo apt install openjdk-17-jdkنتأكد من نجاح التثبيت بالتحقق من الإصدار:java -version
  3. تثبيت Tomcat 10:نُثبّت خادم التطبيقات:sudo apt install tomcat10
  4. التحقق من تشغيل Tomcat:يجب أن يبدأ Tomcat 10 تلقائيًا بعد التثبيت. نتحقق من حالته عبر:systemctl status tomcat10 للتأكد بشكل نهائي، نفتح المتصفح ونُدخل العنوان:http://localhost:8080عند ظهور صفحة الترحيب الخاصة بـ Tomcat 10، يكون الخادم قد تم إعداده بنجاح.

الخطوة 2: نشر تطبيق الويب لمراقبة المناخ (Climate Web App)

نشر تطبيق الويب لمراقبة المناخ (Climate Web App)

بمجرد تشغيل خادم Tomcat 10 على Raspberry Pi، تتم عملية نشر تطبيق الويب (Web App) وفقًا للخطوات التالية:

  1. الحصول على ملفات التطبيق:يجب زيارة مستودع GitHub الخاص بالمشروع لتحميل ملفات التطبيق.(رابط المستودع: https://github.com/AIM-Industries/Climate_IoT_System).يتم تنزيل ملف .zip الخاص بالمشروع وفك ضغطه. يجب نسخ المجلد الذي يحمل اسم climate فقط إلى محرك أقراص USB. هذا المجلد يمثل تطبيق الويب الجاهز للنشر.
  2. إيقاف خادم Tomcat 10:لإعداد الخادم لعملية النشر، يتم إيقاف خدمة Tomcat 10 مؤقتًا باستخدام الأمر:sudo systemctl stop tomcat10
  3. نسخ التطبيق إلى مجلد Tomcat:بعد توصيل محرك أقراص USB وتحديد مساره (والذي غالبًا ما يكون ضمن /media)، يتم نسخ مجلد التطبيق إلى مسار تطبيقات Tomcat:sudo cp -r /media/{usb drive path}/climate /var/lib/tomcat10/webapps/
  4. بدء تشغيل Tomcat 10:يتم إعادة تشغيل الخادم لإكمال عملية النشر:sudo systemctl start tomcat10
  5. التحقق من النشر الناجح:للتأكد من أن التطبيق أصبح متاحًا، يتم إدخال العنوان التالي في متصفح Raspberry Pi:http://localhost:8080/climate إذا ظهرت شاشتان فارغتان للرسوم البيانية (واحدة للحرارة والأخرى للرطوبة) بدلًا من صفحة الترحيب الخاصة بـ Tomcat 10، فهذا يعني أن تطبيق الويب قد تم نشره بنجاح.

الخطوة 3: إعداد Raspberry Pi كنقطة اتصال (Hotspot) مع التشغيل التلقائي

إعداد Raspberry Pi كنقطة اتصال (Hotspot) مع التشغيل التلقائي

تعتبر هذه الخطوة ضرورية لتمكين وحدات ESP8266 من الاتصال مباشرة بـ Raspberry Pi، حتى في غياب شبكة Wi-Fi خارجية. يتم تحويل جهاز Pi إلى نقطة اتصال Wi-Fi خاصة، ويتم ضبطها لتبدأ العمل تلقائيًا عند التشغيل:

  1. إنشاء نقطة الاتصال:
    • من واجهة Raspberry Pi، يتم النقر على رمز Wi-Fi في الزاوية العلوية اليمنى.
    • نختار Advanced Options ثم Create Wi-Fi Hotspot.
    • في القائمة الظاهرة، يتم تعبئة الخيارات:
      • Connection: يُختار New (جديد).
      • Network name: يُدخل اسم للشبكة (مثل Climate).
      • Wi-Fi security: يُختار WPA & WPA2 Personal.
      • Password: تُدخل كلمة مرور قوية ليتم تذكرها.
    • يتم النقر على Create لإنشاء نقطة الاتصال.
  2. ضبط التشغيل التلقائي:
    • يتم العودة إلى Advanced Options واختيار Edit Connections.
    • يتم النقر مرتين على جميع الشبكات المحفوظة ما عدا الشبكة المسماة (Climate).
    • تتم إزالة علامة الصح من خيار Connect Automatically With Priority لجميع الشبكات الأخرى.
    • نفس الخيار (Connect Automatically With Priority) يتم تحديده لشبكة Climate فقط، لضمان اتصالها تلقائيًا كأولوية عند بدء التشغيل.
  3. اختبار التشغيل التلقائي:يجب إعادة تشغيل Raspberry Pi للتأكد من أن نقطة الاتصال التي تم إنشاؤها تعمل تلقائيًا كشبكة Wi-Fi نشطة. عند نجاح هذه الخطوة، يصبح Pi قادرًا على العمل ذاتيًا كخادم ونقطة اتصال.

الخطوة 4: توصيل ESP8266 ومستشعر DHT22

توصيل ESP8266 ومستشعر DHT22

هذه هي خطوة التوصيل المادي لمستشعر الحرارة والرطوبة بوحدة التحكم الدقيقة، وهي خطوة مباشرة:

  1. توصيل المستشعر بوحدة ESP8266:باستخدام أسلاك التوصيل، تُجرى التوصيلات التالية:
    • منفذ VCC في DHT → منفذ 3.3V في ESP8266.
    • منفذ GND في DHT → منفذ GND في ESP8266.
    • منفذ DATA في DHT → منفذ D5 في ESP8266.يجب التأكد من إحكام التوصيلات.
  2. توصيل الطاقة لوحدة ESP8266:تُوصل وحدة ESP8266 بمصدر طاقة (عبر كابل USB إلى Micro-USB متصل بالكمبيوتر في هذه المرحلة). عند توصيل الطاقة بنجاح، يضيء ضوء أزرق على اللوحة لفترة وجيزة.

الخطوة 5: تحميل الكود البرمجي على ESP8266 باستخدام Arduino IDE

تحميل الكود البرمجي على ESP8266 باستخدام Arduino IDE

بعد الانتهاء من التوصيل، يتم تحميل البرنامج الخاص بجمع وإرسال البيانات على وحدة ESP8266:

  1. إعداد Arduino IDE لوحدة ESP8266: يجب أولًا جعل بيئة تطوير Arduino IDE متوافقة مع لوحات ESP8266 عبر اتباع الإرشادات المتاحة لتمكين هذه الميزة.
  2. تثبيت المكتبات الضرورية:من خلال Library Manager في Arduino IDE، يتم تثبيت أحدث إصدارات للمكتبات التالية:
    • Adafruit Unified Sensor (بواسطة Adafruit).
    • DHT sensor library (بواسطة Adafruit).
  3. فتح ملف الكود: يتم فتح الملف المسمى esp8266-climate.ino الموجود في المجلد الذي تم تنزيله سابقًا من مستودع GitHub.
  4. تعديل المتغيرات في الكود:يجب تعديل أول ثلاثة متغيرات موجودة أسفل عبارات استيراد المكتبات:
    • يتم تعيين قيمة المتغير ssid لتطابق اسم نقطة اتصال Raspberry Pi التي تم إنشاؤها مسبقًا.
    • يتم تعيين قيمة المتغير password لتطابق كلمة مرور نقطة اتصال Raspberry Pi.
    • يتم تحديد قيمة المتغير INTERVAL_MINUTES إما 1 أو 5 لتحديد الفترة الزمنية بين كل عملية أخذ عينات وإرسال للبيانات.
  5. تحميل المخطط البرمجي (Upload Sketch): يتم النقر على أيقونة التحميل في أعلى اليسار لرفع الكود إلى ESP8266.
    • عند الانتهاء، تبدأ وحدة ESP8266 بالوميض ببطء أثناء محاولة الاتصال بشبكة Wi-Fi.
    • عند نجاح الاتصال بـ Raspberry Pi، تومض الوحدة بسرعة 3 مرات. ويومض الضوء في كل مرة يتم فيها إرسال البيانات، لتأكيد الإرسال البصري.
  6. المعايرة (اختياري للقياس كل 5 دقائق): إذا تم اختيار أخذ القراءات كل 5 دقائق، يُفضل إجراء معايرة لضمان إرسال البيانات في الدقائق المحددة (مثل 4:00، 4:05، إلخ). بعد تثبيت الوحدة في مكانها النهائي، يجب الانتظار حتى مرور ثانية واحدة بعد علامة الـ 5 دقائق (مثل 4:00:01) ثم الضغط على زر RST (إعادة الضبط) الموجود على اللوحة.

بهذا تكون وحدة ESP8266 جاهزة لإرسال بيانات الحرارة والرطوبة بفاعلية إلى خادم Raspberry Pi. يمكن الآن وضع الوحدات بشكل مستقل في أي مكان، مزودةً بمحول طاقة Micro-USB جداري. تبقى الخطوة الأخيرة وهي عرض البيانات على أي جهاز متصل بالشبكة.

الخطوة 6: توصيل Raspberry Pi وعرض البيانات

توصيل Raspberry Pi وعرض البيانات

بعد تشغيل خادم Tomcat وتأكيد إرسال وحدات ESP8266 للبيانات، تكتمل عملية التثبيت بالربط النهائي وعرض النتائج:

  1. ربط Raspberry Pi بالشبكة:يُستخدم كابل الإيثرنت لتوصيل Raspberry Pi بموجه شبكة الواي فاي المنزلية، مع التأكد من تزويد الجهاز بالطاقة بشكل منفصل.
    • ملاحظة هامة: إذا كان هناك جدار حماية (Firewall)، يجب التأكد من السماح بالوصول إلى المنفذين 8080 و 8081 لضمان عمل المشروع.
  2. تحديد عنوان IP الخاص بـ Pi:يجب تسجيل الدخول إلى صفحة إدارة الموجه (الراوتر) وتحديد موقع Raspberry Pi ضمن قائمة الأجهزة المتصلة بالشبكة (قد يظهر باسم raspberrypi). يُنصح بضبط الموجه لـحجز عنوان IP هذا لـ Pi لتجنب تغيير العنوان في المستقبل بعد إعادة التشغيل.
  3. فتح تطبيق الويب عبر المتصفح:يمكن الوصول إلى تطبيق الويب من أي جهاز متصل بنفس الشبكة عن طريق إدخال العنوان التالي في شريط البحث بالمتصفح:http://{pi-ip}:8080/climate
    • ملاحظة: في حالة عدم تحميل الصفحة، يجب التحقق من تشغيل Tomcat (بواسطة systemctl status tomcat10) ومن فتح المنفذين 8080 و 8081 في جدار الحماية.

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

الخطوة 7: استكشاف الأخطاء وإصلاحها (Troubleshooting)

استكشاف الأخطاء وإصلاحها (Troubleshooting)

على الرغم من بساطة المشروع نسبيًا، قد تحدث بعض المشاكل الشائعة التي يمكن معالجتها بسرعة:

المشكلةالحلول المقترحة
صفحة Tomcat لا تُحمّل1. على Pi: التحقق من حالة خدمة Tomcat عبر systemctl status tomcat10. إذا كانت غير نشطة، تُفعّل عبر sudo systemctl start tomcat10. 2. من جهاز آخر: التأكد من استخدام عنوان IP الصحيح لـ Pi بدلًا من localhost (مثال: http://192.168.1.42:8080/climate).
وحدة ESP8266 لا تتصل بـ Wi-Fi1. التحقق من الكود: التأكد من تطابق قيم ssid و password في كود Arduino بدقة (حساسة لحالة الأحرف) مع إعدادات نقطة اتصال Pi. 2. عزل المشكلة: محاولة الاتصال بنقطة اتصال Pi من هاتف/كمبيوتر. إذا نجح الاتصال، تتم إعادة تشغيل Pi والمحاولة مرة أخرى. إذا لم ينجح، فالمشكلة تكمن في إعدادات نقطة اتصال Pi (العودة إلى الخطوة 3). 3. فحص الجهاز: محاولة ربط ESP8266 بشبكة Wi-Fi منزلية عادية؛ إذا فشل، فقد تكون الوحدة معيبة.
البيانات غير دقيقة أو لا تظهر1. المستشعر/التوصيلات: يعد مستشعر DHT22 أو أسلاكه الرخيصة السبب الأكثر شيوعًا. يُنصح بتجربة مستشعر جديد أو أسلاك جديدة. 2. التنقيح: استخدام الشاشة التسلسلية (Serial Monitor) في Arduino IDE عند Baud Rate 115200 للتحقق مما إذا كان المستشعر يُقرأ بشكل صحيح وما إذا كانت العينات المأخوذة تختلف بشكل كبير. 3. الموقع: قد يتأثر المستشعر بالحرارة المنبعثة من الأجهزة المجاورة (إذا كانت القراءات مرتفعة جدًا والرطوبة منخفضة)، أو بتيار الهواء من المراوح/فتحات التهوية (مما يعطي قراءات أقل من المتوقع).
مسح البيانات المخزنةلحذف جميع البيانات المخزنة ومسح الرسوم البيانية، يُنفّذ الأمر التالي على Pi: sudo rm /var/cache/tomcat10/climate-data/data.json

الخطوة 8: تحسينات مستقبلية (V2)

تحسينات مستقبلية (V2)

هذا المشروع هو الإصدار الأول، وهناك خطط لتطويره وتحسينه. تشمل التحسينات المستقبلية المقترحة (مرتبة حسب الأولوية):

  1. تصميم غلاف (Wall Socket Case): إنشاء غلاف يتم طباعته بتقنية 3D ليحتوي على مكونات ESP8266 و DHT22، يتم توصيله مباشرة بمقبس الحائط. الهدف هو حل مدمج وأنيق يحمي المستشعر من التداخل الحراري الخارجي.
  2. عنوان URL محلي سهل الاستخدام: إتاحة إمكانية الوصول إلى صفحة الويب محليًا عبر كتابة اسم بسيط مثل climate.local بدلًا من استخدام عنوان IP.
  3. تسمية الأجهزة: تطوير نظام يسمح بتسمية المستشعرات على الرسم البياني بأسماء ودية يختارها المستخدم.
  4. إلغاء معايرة ESP8266: يجب تطوير النظام لتمكين وحدات ESP8266 من مزامنة الوقت مع Pi بشكل تلقائي، وضبط توقيت إرسال حزم البيانات لتجنب الإرسال المتزامن والمشاكل المترتبة عليه.
  5. تخزين البيانات على المدى الطويل: بدلًا من حذف البيانات بعد 48 ساعة وتخزينها محليًا، يتم التخطيط لكتابة البيانات إلى محرك أقراص خارجي أو إلى السحابة (Cloud) لجعلها متاحة ومستمرة للاستخدام في تحليل البيانات أو تطبيقات الذكاء الاصطناعي.
  6. إعدادات تفاعلية: إضافة خيارات في صفحة الويب لتبديل وحدات القياس (فهرنهايت، مئوية، كلفن) مع تخزين تفضيلات المستخدم، وإتاحة إمكانية تحديد فترات إرسال البيانات من الويب وتحديث جميع وحدات ESP8266 بشكل مباشر.
  7. عرض بيانات حي (Truly Live Data): تطوير الصفحة لتحديث الرسوم البيانية تلقائيًا عند وصول بيانات جديدة دون الحاجة لإعادة تحميل الصفحة، مما يرفع من مستوى تعقيد وجودة تجربة المستخدم.

المصدر: https://www.instructables.com/Climate-Monitoring-IoT-System-With-Raspberry-Pi-an/ من قبل: AIM Industries

×