مشروع ESP32 لقياس درجة الحرارة والرطوبة PDF
Document Details
Uploaded by ImprovingCrocus
كلية العلوم
Tags
Summary
هذا تقرير مشروع عن استخدام متحكم ESP32 لقياس درجة الحرارة والرطوبة باستخدام حساس DHT22 و منصة Wokwi. يُستخدم الكود بلغة MicroPython. يقدم المشروع فهماً عملياً لاستخدام الحساسات والبرمجة على متحكمات ESP32.
Full Transcript
**تقرير مشروع(2): استخدام ESP32 لقياس درجة الحرارة والرطوبة باستخدام منصة Wokwi** **ملخص المشروع:** يتناول هذا المشروع محاكاة نظام إلكتروني باستخدام منصة Wokwi، يعتمد على متحكم ESP32 لقياس درجة الحرارة والرطوبة باستخدام حساس DHT22. يتم برمجة المتحكم بلغة MicroPython لقراءة القيم البيئية وعرضها، مم...
**تقرير مشروع(2): استخدام ESP32 لقياس درجة الحرارة والرطوبة باستخدام منصة Wokwi** **ملخص المشروع:** يتناول هذا المشروع محاكاة نظام إلكتروني باستخدام منصة Wokwi، يعتمد على متحكم ESP32 لقياس درجة الحرارة والرطوبة باستخدام حساس DHT22. يتم برمجة المتحكم بلغة MicroPython لقراءة القيم البيئية وعرضها، مما يوفر تدريبًا عمليًا في استخدام الحساسات والبرمجة على متحكمات ESP32. **أهداف المشروع:** 1. **فهم أساسيات ESP32** وبرمجته باستخدام لغة MicroPython. 2. **قراءة بيانات درجة الحرارة والرطوبة** باستخدام حساس DHT22. 3. **استخدام منصة Wokwi للمحاكاة** لتوضيح التوصيلات وتقييم أداء الكود. 4. **تطوير تطبيق عملي** يُظهر القيم البيئية على شاشة المراقبة التسلسلية. **المكونات المستخدمة:** - **ESP32 Microcontroller**: للتحكم في النظام ومعالجة البيانات. - **DHT22 Sensor**: حساس لقياس درجة الحرارة والرطوبة. - **Wokwi Platform**: منصة محاكاة لمكونات المشروع وتقييمها افتراضيًا. - **MicroPython**: لغة برمجة مخصصة للمتحكمات الدقيقة لكتابة الأكواد. **الخطوات العملية للمشروع:** 1. **توصيل المكونات**: - **توصيل دبابيس حساس DHT22** إلى ESP32: - **VCC في DHT22** إلى **3.3V في ESP32**. - **GND في DHT22** إلى **GND في ESP32**. - **DATA في DHT22** إلى **GPIO 13 في ESP32**. 2. **كتابة الكود البرمجي**: تم كتابة الكود باستخدام لغة MicroPython. يقوم الكود بتهيئة دبابيس ESP32، وإنشاء كائن للتحكم في الحساس DHT22، وقراءة القيم البيئية بشكل دوري. **الكود:** python Copy code import machine import utime import dht DATA\_PIN = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL\_UP) sensor = dht.DHT22(DATA\_PIN) def read\_and\_display\_data(): try: sensor.measure() temp = sensor.temperature() humidity = sensor.humidity() print(\"Temperature: {:.2f}°C, Humidity: {:.2f}%\".format(temp, humidity)) except Exception as e: print(\"Error reading sensor data:\", e) while True: read\_and\_display\_data() utime.sleep(1) 3. **محاكاة المشروع باستخدام Wokwi**: - تم إعداد المشروع في منصة Wokwi بربط ESP32 مع حساس DHT22 كما هو موضح في خطوات التوصيل. - تم تشغيل الكود والتحقق من عرض القيم البيئية على شاشة المحاكاة التسلسلية، مما سمح بمراقبة أداء المشروع والتحقق من القيم. **نتائج المشروع:** بعد تشغيل المشروع، كانت القيم المقاسة لدرجة الحرارة والرطوبة تظهر بشكل دوري على الشاشة التسلسلية، مما يوضح قدرة ESP32 على قراءة البيانات من حساس DHT22 بشكل دقيق. هذا يعكس نجاح المشروع في تحقيق أهدافه الأساسية. **الاستنتاجات:** - **نجح المشروع في توصيل الحساس والمتحكم** بشكل صحيح، واستخدام الكود لقراءة القيم البيئية. - **قدمت منصة Wokwi بيئة محاكاة ممتازة** لتقييم أداء المشروع بدون الحاجة إلى توصيل مكونات فعلية. - **الكود المكتوب بلغة MicroPython أتاح مرونة عالية** في التعامل مع البيانات البيئية من الحساسات. **التوصيات المستقبلية:** يمكن تحسين هذا المشروع عبر: - **إضافة شاشة LCD أو OLED** لعرض القيم البيئية بشكل مرئي. - **رفع البيانات إلى منصة سحابية** لاستخدام تقنيات إنترنت الأشياء (IoT). - **استخدام حساسات متعددة** لقياس عوامل بيئية أخرى مثل الضغط الجوي أو جودة الهواء. **شرح الكود المستخدم:** الكود مكتوب بلغة **MicroPython**، ويستخدم مع متحكم **ESP32** لقراءة بيانات **درجة الحرارة والرطوبة** باستخدام حساس **DHT22**. إليك شرحًا مفصلًا لكل جزء من الكود: **1. استيراد المكتبات:** python Copy code import machine import utime import dht - **machine**: مكتبة تُستخدم للتحكم في دبابيس الإدخال والإخراج في ESP32. - **utime**: مكتبة توفر دوال للتأخير الزمني، مثل sleep() التي نستخدمها في الكود. - **dht**: مكتبة مخصصة للتعامل مع حساسات DHT مثل DHT11 وDHT22 لقراءة درجة الحرارة والرطوبة. **2. تهيئة دبوس الإدخال:** python Copy code DATA\_PIN = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL\_UP) - **machine.Pin**: يتم استخدام هذه الدالة لتحديد الدبوس الذي سيتصل بالحساس. في هذا المشروع، تم تعيين الدبوس **GPIO 13** كإدخال. - **machine.Pin.IN**: تحدد الدبوس كدبوس إدخال. - **machine.Pin.PULL\_UP**: تُستخدم لإضافة مقاومة سحب للأعلى (pull-up resistor) لتجنب الأخطاء في قراءة القيم. **3. إنشاء كائن لحساس DHT22:** python Copy code sensor = dht.DHT22(DATA\_PIN) - يتم إنشاء كائن يسمى sensor، يستخدم دالة dht.DHT22() لتحديد نوع الحساس وربطه بالدبوس الذي تم تهيئته. **4. دالة لقراءة البيانات وعرضها:** python Copy code def read\_and\_display\_data(): try: sensor.measure() temp = sensor.temperature() humidity = sensor.humidity() print(\"Temperature: {:.2f}°C, Humidity: {:.2f}%\".format(temp, humidity)) except Exception as e: print(\"Error reading sensor data:\", e) - **sensor.measure()**: تستدعي هذه الدالة لبدء عملية القياس من الحساس. - **sensor.temperature()**: تستخدم هذه الدالة لقراءة درجة الحرارة من الحساس وتخزينها في المتغير temp. - **sensor.humidity()**: تستخدم هذه الدالة لقراءة الرطوبة من الحساس وتخزينها في المتغير humidity. - **print()**: تستخدم لطباعة درجة الحرارة والرطوبة على الشاشة بشكل منسق، حيث يتم تحديد دقة القيم باستخدام {:.2f} لعرض قيمتين بعد الفاصلة العشرية. - **except**: تعالج أي خطأ قد يحدث أثناء قراءة البيانات، وتطبع رسالة خطأ في حالة وجود مشكلة. **5. الحلقة الرئيسية:** python Copy code while True: read\_and\_display\_data() utime.sleep(1) - **while True**: حلقة لا نهائية تضمن استمرار قراءة البيانات بشكل دوري. - **read\_and\_display\_data()**: تستدعي الدالة التي قمنا بتعريفها لقراءة وعرض القيم. - **utime.sleep(1)**: تقوم بتأخير لمدة ثانية واحدة بين كل قراءة وأخرى. **ملخص الشرح:** الكود يهيئ ESP32 لقراءة البيانات من حساس DHT22 عبر تحديد دبوس الإدخال. عند تشغيل الكود، يقوم المتحكم بقراءة القيم كل ثانية وعرض درجة الحرارة والرطوبة على شاشة المراقبة التسلسلية. الكود بسيط وفعال في إظهار كيفية التفاعل مع الحساسات وجمع البيانات البيئية.