📚 توصيل الأردوينو
المفاهيم الأساسية
توصيل الأردوينو: عملية ربط لوحة الأردوينو بمكونات خارجية (مثل LED) على لوحة توصيل الدوائر (Breadboard).
خريطة المفاهيم
```markmap
تطبيقات على المتحكمات الدقيقة
إنشاء تطبيق سحابي لإنترنت الأشياء
أهداف التعلم
#### • استخدام البايثون وبروتوكول PyFirmata لبرمجة الأردوينو.
برمجة الأردوينو بالبايثون (pyfirmata)
الخطوات البرمجية الأساسية
#### 1. تثبيت حزمة pyfirmata
##### • الأمر في Terminal: pip install pyfirmata
#### 2. استدعاء المكتبة في الكود
##### • import pyfirmata
#### 3. تحديد منفذ الاتصال
##### • communication_port = "COM4" (يختلف حسب الجهاز)
#### 4. إجراء الاتصال والوصول للأطراف
##### • board = pyfirmata.Arduino(communication_port)
##### • it = pyfirmata.util.Iterator(board)
##### • it.start()
#### 5. استخدام حلقة لا نهائية
##### • while True:
##### • # كتابة الأوامر هنا
ملاحظة تقنية
#### • يشغل البرنامج على الحاسوب، وليس على الأردوينو، مما يتيح الوصول إلى وظائف قد لا تتوفر في جهاز التحكم الدقيق.
الوظيفة الأساسية: board.get_pin()
#### • وظيفتها: قراءة وكتابة القيم للأطراف التناظرية والرقمية.
#### • معاملاتها: ثلاثة أحرف تفصل بينها نقطتان رأسيتان (a:d:5)
##### • المعامل الأول: نوع الطرف
###### • 'a': طرف تناظري (analog)
###### • 'd': طرف رقمي (digital)
##### • المعامل الثاني: رقم الطرف
###### • الأطراف الرقمية: من 0 إلى 12
###### • الأطراف التناظرية: من A0 إلى A5
##### • المعامل الثالث: طريقة التعامل
###### • للأطراف الرقمية:
####### • 'i': input (مدخلات)
####### • 'o': output (مخرجات)
###### • للأطراف التناظرية:
####### • 'i': input (مدخلات)
####### • 'p': Pulse Width Modulation (تضمين عرض النبضة)
تضمين عرض النبضة (PWM)
#### • تعريف: تعديل إشارة رقمية لمحاكاة إشارة تناظرية متغيرة القوة.
#### • دورة العمل (Duty Cycle): النسبة المئوية للزمن الذي تكون فيه الإشارة عالية (5v) خلال فترة زمنية واحدة.
##### • analogWrite(0): 0% دورة عمل (إشارة منخفضة دائمًا)
##### • analogWrite(64): 25% دورة عمل
##### • analogWrite(127): 50% دورة عمل
##### • analogWrite(191): 75% دورة عمل
##### • analogWrite(255): 100% دورة عمل (إشارة عالية دائمًا)
التفاعل مع الأطراف الرقمية
#### • قراءة قيمة من طرف رقمي (مثال: الطرف 10)
##### • digital_pin = board.get_pin("d:10:i")
##### • pin_value = digital_pin.read()
#### • كتابة قيمة إلى طرف رقمي (مثال: الطرف 10)
##### • digital_pin = board.get_pin("d:10:o")
##### • digital_pin.write(1) # قيمة HIGH
##### • digital_pin.write(0) # قيمة LOW
التفاعل مع الأطراف التناظرية
#### • قراءة قيمة من طرف تناظري (مثال: الطرف 4)
##### • analog_pin = board.get_pin("a:4:i")
##### • pin_value = analog_pin.read()
#### • كتابة قيمة إلى طرف تناظري (مثال: الطرف 4)
##### • analog_pin = board.get_pin("a:4:p")
##### • analog_pin.write(0.75)
ملاحظة عامة
#### • يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة.
مشروع تطبيقي: مشروع أردوينو مبسط مع PyFirmata
الهدف
#### • إنشاء مشروع مبسط لاستخدام مكتبة PyFirmata.
#### • برمجة دايود مشع للضوء خارجي وآخر مدمج ليومضا بالتناوب باستخدام بايثون.
خطوات التنفيذ
#### 1. محاكاة الدائرة في Tinkercad Circuits.
المكونات المطلوبة
#### • لوحة أردوينو أونو R3.
#### • لوحة توصيل الدوائر الصغيرة (Breadboard).
#### • دايود مشع للضوء (LED).
#### • مقاومة (Resistor).
تحميل المكونات في Tinkercad
#### 1. البحث عن "لوحة أردوينو أونو R3" في مكتبة المكونات (Components) وسحبها وإفلاتها في مساحة العمل.
#### 2. البحث عن "لوحة توصيل الدوائر الصغيرة" في مكتبة المكونات (Components) وسحبها وإفلاتها في مساحة العمل.
توصيل الأردوينو
#### • الخطوة 1: توصيل طرف GND (الأرضي) للأردوينو بالعمود السالب في لوحة التوصيل، باستخدام سلك أسود.
#### • الخطوة 2: وضع المقاومة (Resistor) من مكتبة المكونات على لوحة التوصيل.
#### • الخطوة 3: توصيل الطرف الرقمي 12 (pin 12) بالطرف 1 (Terminal 1) للمقاومة، باستخدام سلك أحمر.
```
نقاط مهمة
- يتم توصيل الأردوينو بمكونات خارجية (مثل LED) على لوحة توصيل الدوائر (Breadboard).
- الخطوة الأولى: توصيل طرف الأرضي (GND) للأردوينو بالعمود السالب في اللوحة باستخدام سلك أسود.
- الخطوة الثانية: إضافة المقاومة (Resistor) إلى اللوحة من مكتبة المكونات.
- الخطوة الثالثة: توصيل الطرف الرقمي 12 (pin 12) من الأردوينو بالطرف الأول للمقاومة باستخدام سلك أحمر.