📚 التحكم في ري النباتات باستخدام الأردوينو
المفاهيم الأساسية
شرط الري: إذا كانت درجة الحرارة أعلى من 24 درجة مئوية، وكان مستوى الرطوبة أقل من 40%، فستُنشط آلية ري النباتات.
خريطة المفاهيم
```markmap
تطوير وبرمجة الأردوينو
مشروع الحديقة الذكية بالأردوينو
المكونات المطلوبة
- مستشعر الحرارة (Temperature Sensor)
توصيل المكونات
#### توصيل مستشعر درجة الحرارة
توصيل طرف Power (الطاقة) للمستشعر بالعمود الموجب في لوحة التوصيل (سلك أحمر).
توصيل طرف Vout (الجهد) للمستشعر بالطرف التناظري A2 في الأردوينو (سلك أخضر).
توصيل طرف GND (الأرضي) للمستشعر بالعمود السالب في لوحة التوصيل (سلك أسود).
#### توصيل مستشعر رطوبة التربة
توصيل طرف Power (الطاقة) للمستشعر بالعمود الموجب في لوحة التوصيل (سلك أحمر).
توصيل طرف GND (الأرضي) للمستشعر بالعمود السالب في لوحة التوصيل (سلك أسود).
توصيل طرف Signal (الإشارة) للمستشعر بالطرف التناظري A4 في الأردوينو (سلك أخضر).
#### الدائرة بصورتها النهائية
- توصيل الأطراف بالمكونات
- المكونات المتصلة:
- مستشعر رطوبة التربة (Soil Moisture Sensor)
- ترانزستور (TMP)
- محرك (Motor)
#### الدائرة المادية (Physical Circuit)
- صورة الدائرة بمكوناتها المادية
- المكونات الظاهرة:
- مستشعر رطوبة التربة (Capacitive Soil Moisture Sensor v1.2)
- لوحة الأردوينو (Arduino Uno R3)
- لوحة التوصيل (Breadboard)
- محرك التيار المستمر (DC Motor)
برمجة المكونات
#### الخطوات البرمجية
استدعاء المكتبات المطلوبة (pyfirmata, time)
تكوين منفذ الاتصال والأطراف (COM4، محرك DC، مستشعر درجة الحرارة، مستشعر الرطوبة)
إعداد الاتصال بين PyFirmata ولوحة الأردوينو
تنفيذ دالة التحكم في محرك التيار المستمر (water_plant)
#### استكشاف الأخطاء وإصلاحها
##### التحقق من صحة بيانات المستشعر
- استخدام حلقة تكرار لا نهائية (`while True`)
- قراءة القيم غير المعالجة من الأطراف التناظرية
- إضافة شرط `if` للتحقق من أن القيم ليست `None`
##### معالجة وتحويل البيانات
- تحويل قيمة درجة الحرارة إلى درجات مئوية
- تحويل مستوى الرطوبة إلى نسبة مئوية
##### إدخال شروط الري
- كتابة شرط التحكم في الري:
```python
if (temperature >= 24.0) and (moisture <= 40.0):
water_plant(dc_motor_pin)
```
##### إنشاء تقارير البيانات
- إنشاء رسائل نصية تعرض القيم المقروءة:
```python
temperature_report = "Temperature : " + str(temperature) + " C"
moisture_report = "Moisture : " + str(round(moisture, 2)) + "%"
```
- طباعة التقارير في الواجهة الطرفية:
```python
print(temperature_report)
print(moisture_report)
```
#### البرنامج بشكله النهائي (Complete Code)
- استيراد المكتبات (`import time`, `import pyfirmata`)
- تهيئة الاتصال بلوحة الأردوينو (`board = pyfirmata.Arduino('COM4')`)
- تهيئة مكرر البيانات (`it = pyfirmata.util.Iterator(board)`)
- بدء المكرر (`it.start()`)
- تعريف طرف محرك التيار المستمر (`dc_motor_pin = board.get_pin('d:3:o')`)
```
نقاط مهمة
- يتم تنشيط آلية ري النباتات عند استيفاء شرطين معًا: درجة حرارة أعلى من أو تساوي 24 درجة مئوية، ومستوى رطوبة أقل من أو يساوي 40%.
- يتم عرض قراءات المستشعرات في الواجهة الطرفية على شكل رسائل نصية واضحة (مثال: `Temperature : 25.0 C`).
- البرنامج النهائي يبدأ باستيراد المكتبات الضرورية وتهيئة الاتصال مع لوحة الأردوينو قبل تنفيذ حلقة القراءة والتحكم.