يمكنك استخدام الأسهم (يسار/يمين) في لوحة المفاتيح للتنقل

الوحدة الثانية: مقدمة إلى الدوائر الكهربائية وArduino

صورة توضيحية: الشريحة 1
عنوان الوحدة

مقدمة إلى الدوائر الكهربائية وArduino

في هذه الوحدة ننتقل من البرمجة على الكمبيوتر إلى برمجة نظام يتفاعل مع مكونات إلكترونية حقيقية.

أهداف الوحدة

بنهاية الوحدة، يُتوقع القدرة على:

  • فهم فكرة الحوسبة الفيزيائية.
  • التعرف على مكونات الدائرة الكهربائية الأساسية.
  • استخدام Breadboard في بناء دائرة بسيطة.
  • التعرف على أجزاء ومنافذ Arduino UNO R3.
  • استخدام Arduino IDE ورفع البرامج.
  • فهم setup() وloop().
  • التحكم في LED باستخدام Arduino.

من البرمجة إلى الحوسبة الفيزيائية

من البرمجة التقليدية إلى العالم الحقيقي

في البرامج التقليدية نتعامل غالبًا مع:

Keyboard → Program → Screen

أما باستخدام Arduino فيمكن للبرنامج التعامل مع العالم الحقيقي:

Sensor → Arduino → Actuator

فيستطيع البرنامج قراءة البيئة ومعالجة البيانات وتنفيذ تأثير فيزيائي.

الحوسبة الفيزيائية Physical Computing

الحوسبة الفيزيائية تعني استخدام البرمجة والإلكترونيات لبناء أنظمة تتفاعل مع العالم الحقيقي.

النموذج الأساسي:

Input → Processing → Output
مكونات الجهاز التفاعلي

يتكون الجهاز التفاعلي عادة من ثلاثة أجزاء:

  • Sensor: يقرأ شيئًا من العالم الحقيقي.
  • Microcontroller: يعالج البيانات وينفذ البرنامج.
  • Actuator: ينفذ تأثيرًا في العالم الحقيقي.
منصة Arduino

Arduino ليست اسم اللوحة فقط.

تتكون المنصة من جزأين رئيسيين:

  • Hardware: لوحة Arduino والمكونات المتصلة بها.
  • Software: Arduino IDE والبرامج والمكتبات المستخدمة معها.
لماذا Arduino؟

تتميز Arduino بأنها:

  • مناسبة للتعلم وبناء النماذج الأولية.
  • سهلة الربط مع المكونات الإلكترونية.
  • مفتوحة المصدر Open Source.
  • تحتوي على مكتبات وأمثلة كثيرة.
  • مدعومة بمجتمع كبير من المطورين والهواة.
طريقة العمل مع Arduino

لا نحاول بناء المشروع كاملًا من البداية.

الأفضل:

  • ابدأ بأبسط نموذج يعمل.
  • اختبر النتيجة.
  • أضف وظيفة واحدة في كل مرة.
  • غيّر شيئًا واحدًا عند البحث عن الخطأ.
  • كرر التجربة بعد كل تعديل.

أساسيات الدوائر الكهربائية

ما هي الدائرة الكهربائية؟

الدائرة الكهربائية هي مسار يسمح بمرور التيار الكهربائي بين مكونات متصلة معًا.

حتى تعمل الدائرة يجب أن يوجد:

  • مصدر طاقة.
  • مسار كهربائي.
  • مكونات متصلة.
  • مسار مكتمل لعودة التيار.
صورة توضيحية: ما هي الدائرة الكهربائية؟
مكونات الدائرة الأساسية

مصدر الطاقة Power Source

يوفر الطاقة اللازمة للدائرة.

الأسلاك Wires

توصل أجزاء الدائرة ببعضها.

الحمل Load

يحول الطاقة الكهربائية إلى تأثير آخر.

مثل:

LED → ضوء
Motor → حركة
Buzzer → صوت
صورة توضيحية: مكونات الدائرة الأساسية
الجهد والتيار والمقاومة

الجهد Voltage

فرق الجهد بين نقطتين، ويقاس بالفولت V.

التيار Current

معدل تدفق الشحنة الكهربائية، ويقاس بالأمبير A.

المقاومة Resistance

تحد من مقدار التيار، وتقاس بالأوم Ω.

قانون أوم

يربط قانون أوم بين:

  • الجهد V
  • التيار I
  • المقاومة R
V = I × R

ومنها:

I = V / R

عند ثبات الجهد، تؤدي زيادة المقاومة في المسار إلى تقليل التيار.

الأرضي GND

GND هو النقطة المرجعية للجهد في الدائرة.

وفي دوائر Arduino البسيطة يعمل أيضًا كمسار عودة للتيار.

نعتبر جهد GND:

0V
صورة توضيحية: الأرضي GND
الدائرة المفتوحة والمغلقة

Closed Circuit

المسار مكتمل ويمكن للتيار المرور.

Open Circuit

المسار مقطوع ولا يمر التيار.

دائرة مغلقة Closed Circuitدائرة مفتوحة Open Circuit
القصر الكهربائي Short Circuit

يحدث القصر عند وجود مسار منخفض المقاومة جدًا يسمح بمرور تيار مرتفع.

مثال خطير:

5V ───────── GND

قد يؤدي ذلك إلى توقف الدائرة أو تلف أحد المكونات.

لا توصل 5V مباشرة مع GND.

صورة توضيحية: القصر الكهربائي Short Circuit
الصمام الثنائي الباعث للضوء LED

LED هو مكوّن إلكتروني يصدر الضوء عند مرور التيار في الاتجاه الصحيح.

له قطبية:

  • Anode: الطرف الموجب، ويكون غالبًا أطول.
  • Cathode: الطرف السالب، ويكون غالبًا أقصر.

توجد عادة حافة مسطحة على جهة Cathode.

صورة توضيحية: الصمام الثنائي الباعث للضوء LED
LED والمقاومة

لا يتم توصيل LED مباشرة بمصدر 5V.

نستخدم مقاومة على التوالي لتحديد التيار.

قيم مناسبة للتجارب الأساسية:

220Ω
330Ω
صورة توضيحية: LED والمقاومة
لوحة التجارب Breadboard

تستخدم Breadboard لبناء الدوائر دون لحام.

في المنطقة الوسطى:

a b c d e | f g h i j

الثقوب ذات الرقم نفسه من a إلى e متصلة معًا، وكذلك من f إلى j، ولا يوجد اتصال عبر الفاصل الأوسط.

صورة توضيحية: لوحة التجارب Breadboard
خطوط الطاقة في Breadboard

توجد غالبًا خطوط جانبية تستخدم لتوزيع الطاقة:

+ → 5V
- → GND

تنبيه:

قد تكون خطوط الطاقة مقطوعة في المنتصف في بعض أنواع Breadboard.

صورة توضيحية: خطوط الطاقة في Breadboard
مثال 1 — تشغيل LED بدون Arduino

نبني الدائرة التالية:

5V → 220Ω → LED → GND

نلاحظ:

  • اتجاه LED.
  • وجود المقاومة.
  • اكتمال الدائرة.
  • اتصال GND.
صورة توضيحية: مثال 1 — تشغيل LED بدون Arduino
تدريب عملي 1

قم ببناء دائرة LED على Breadboard.

ثم:

  1. شغّل الدائرة.
  2. افصل أحد الأسلاك.
  3. لاحظ النتيجة.
  4. أعد توصيل السلك.

حدد في كل حالة هل الدائرة:

Open Circuit

أو:

Closed Circuit
صورة توضيحية: تدريب عملي 1

التعرف على Arduino UNO R3

ما هو المتحكم الدقيق؟

Microcontroller هو حاسوب صغير مدمج داخل شريحة إلكترونية.

يحتوي على:

  • وحدة معالجة.
  • ذاكرة.
  • منافذ إدخال وإخراج.
  • وحدات إلكترونية مساعدة.

ويقوم بتنفيذ البرنامج المخزن بداخله.

صورة توضيحية: ما هو المتحكم الدقيق؟
Arduino UNO R3

سنستخدم في التدريب:

Arduino UNO R3

المتحكم الرئيسي فيها:

ATmega328P

ومن خصائصها:

  • جهد تشغيل منطقي 5V.
  • 14 منفذ Digital I/O.
  • 6 Analog Inputs.
  • 6 منافذ تدعم PWM.
  • LED مدمجة مرتبطة بالمنفذ 13.
صورة توضيحية: Arduino UNO R3
أهم أجزاء لوحة UNO R3
صورة توضيحية: أهم أجزاء لوحة UNO R3
منافذ الطاقة Power Pins

5V

خرج تغذية منظم بجهد 5V.

3.3V

خرج تغذية بجهد 3.3V.

GND

المرجع الكهربائي للدائرة.

Vin

يمكن استخدامه لإدخال جهد خارجي مناسب إلى اللوحة.

صورة توضيحية: منافذ الطاقة Power Pins
المنافذ الرقمية Digital Pins

تحتوي UNO R3 على:

D0 → D13

يمكن تهيئة المنفذ ليعمل كـ:

INPUT

أو:

OUTPUT

وتتعامل الإشارات الرقمية مع مستويين:

HIGH
LOW
صورة توضيحية: المنافذ الرقمية Digital Pins
المنافذ التناظرية Analog Inputs

تحتوي UNO R3 على:

A0 → A5

تستخدم لقراءة مستويات جهد متغيرة.

يحول Arduino القراءة إلى قيمة رقمية:

0 → 1023

أي 1024 مستوى.

سنستخدم هذه المنافذ عمليًا في وحدة لاحقة.

صورة توضيحية: المنافذ التناظرية Analog Inputs
الفرق بين Digital وAnalog

Digital

يتعامل مع مستويات منطقية محددة:

HIGH / LOW

Analog

يتعامل مع مقدار متغير ضمن نطاق.

DigitalHIGHLOWLOW / HIGH فقطAnalogقيم متعددة بين الحد الأدنى والأعلى
منافذ PWM

المنافذ الرقمية التي تدعم PWM في UNO R3:

3, 5, 6, 9, 10, 11

وتحمل علامة:

~

PWM لا ينتج جهدًا تناظريًا حقيقيًا.

صورة توضيحية: منافذ PWM
فكرة PWM

PWM يعمل بتشغيل وإيقاف الإشارة الرقمية بسرعة مع تغيير نسبة زمن التشغيل:

Duty Cycle منخفض → تأثير أقل
Duty Cycle مرتفع → تأثير أكبر

يستخدم لاحقًا في تطبيقات مثل تغيير سطوع LED والتحكم في بعض تطبيقات المحركات.

HIGHLOWDuty Cycle 25%HIGHLOWDuty Cycle 50%HIGHLOWDuty Cycle 75%TimeTimeTime
RX وTX وSDA وSCL

D0 / RX

استقبال البيانات التسلسلية.

D1 / TX

إرسال البيانات التسلسلية.

SDA

بيانات اتصال I2C.

SCL

إشارة الساعة لاتصال I2C.

صورة توضيحية: RX وTX وSDA وSCL
ملاحظة عن SDA وSCL

في Arduino UNO R3:

A4 = SDA
A5 = SCL

المنافذ المكتوب عليها SDA وSCL قرب AREF متصلة بالخطوط نفسها.

أي أنها ليست منافذ I2C إضافية مستقلة.

Analog HeaderSDA / SCL HeaderA4SDASame SignalA5SCLSame Signalليست منافذ مستقلة إضافية
AREF وIOREF وRESET

AREF

مرجع الجهد للقراءات التناظرية.

IOREF

يوضح جهد المنطق الذي تعمل به اللوحة.

في UNO R3:

5V

RESET

يعيد تشغيل المتحكم وبدء البرنامج من جديد.

صورة توضيحية: AREF وIOREF وRESET
مثال 2 — التعرف على منافذ Arduino

حدد على لوحة UNO R3:

  • 5V
  • 3.3V
  • GND
  • Vin
  • D13
  • A0
  • أحد منافذ PWM.
  • RX
  • TX
  • SDA
  • SCL
  • زر Reset.
صورة توضيحية: مثال 2 — التعرف على منافذ Arduino
تدريب عملي 2

حدد المنفذ أو المجموعة المناسبة لكل حالة:

  1. توصيل الأرضي.
  2. قراءة حساس تناظري.
  3. تشغيل LED رقمي.
  4. استخدام PWM.
  5. اتصال UART.
  6. اتصال I2C.
صورة توضيحية: تدريب عملي 2
تغذية Arduino بالطاقة

يمكن تشغيل UNO R3 باستخدام:

  • USB.
  • مدخل الطاقة الخارجي.
  • مصدر مناسب عبر Vin.

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

7V – 12V

في التجارب الأولى سنستخدم USB.

صورة توضيحية: تغذية Arduino بالطاقة

Arduino IDE وبرمجة اللوحة

Arduino IDE

Arduino IDE هي بيئة التطوير المستخدمة لبرمجة اللوحة.

نستخدمها من أجل:

  • كتابة البرنامج.
  • ترجمة البرنامج.
  • رفع البرنامج إلى Arduino.
  • عرض الأخطاء.
  • استخدام Serial Monitor.
  • إدارة المكتبات واللوحات.
صورة توضيحية: Arduino IDE
ما هو Sketch؟

يسمى البرنامج الذي نكتبه لـ Arduino:

Sketch

تتم كتابة برامج Arduino باستخدام:

C / C++

مع دوال ومكتبات تسهّل التعامل مع العتاد.

لذلك سنستخدم كثيرًا مما تعلمناه في الوحدة الأولى.

دورة العمل مع Arduino

دورة التطوير الأساسية:

Write Sketch
↓
Compile
↓
Upload
↓
Run
↓
Observe Result
↓
Edit
↓
Upload Again
اختيار Board وPort

قبل رفع البرنامج نحدد:

Board

Arduino Uno

Port

المنفذ الذي تتصل به اللوحة.

يمكن الاختيار من Board Selector أو من قوائم Tools حسب إصدار Arduino IDE.

صورة توضيحية: اختيار Board وPort
Verify وUpload

Verify

يترجم البرنامج ويتحقق من أخطاء الترجمة دون رفعه إلى اللوحة.

Upload

يقوم بترجمة البرنامج ثم رفعه إلى Arduino.

لذلك ليس من الضروري تنفيذ Verify قبل كل Upload.

صورة توضيحية: Verify وUpload
ماذا يحدث عند Upload؟

بشكل مبسط:

Sketch
↓
Compiler
↓
Machine Code
↓
Upload
↓
Microcontroller
↓
تشغيل البرنامج
الدالة setup()

البنية الأساسية:

void setup()
{
}

تنفذ setup() مرة واحدة عند:

  • تشغيل اللوحة.
  • الضغط على Reset.
  • بدء البرنامج بعد رفعه.

تستخدم عادة لتهيئة النظام.

الدالة loop()
void loop()
{
}

بعد انتهاء setup() يبدأ تنفيذ loop() بصورة مستمرة:

setup()
↓
loop()
↓
loop()
↓
loop()
↓
...
INPUT وOUTPUT

INPUT

يقرأ Arduino إشارة قادمة من الخارج.

Sensor → Arduino

OUTPUT

يتحكم Arduino في إشارة خارجة.

Arduino → LED

سنبدأ في هذه الوحدة بالمخرجات.

HIGH وLOW

في المخرجات الرقمية:

HIGH

يعني المستوى المنطقي المرتفع.

LOW

يعني المستوى المنطقي المنخفض.

في UNO R3 تعمل الإشارات الرقمية بمنطق 5V.

5V0VHIGHLOWUNO R3 logic levels
الدالة pinMode()

تحدد وظيفة المنفذ.

الصيغة:

pinMode(pin, mode);

مثال:

pinMode(8, OUTPUT);

تعني:

تهيئة المنفذ رقم 8 ليعمل كمخرج.

الدالة digitalWrite()

تستخدم للتحكم في المستوى المنطقي للمنفذ الرقمي.

digitalWrite(pin, value);

مثال:

digitalWrite(8, HIGH);

ومثال:

digitalWrite(8, LOW);
الدالة delay()

توقف تنفيذ التعليمات التالية لمدة محددة بالمللي ثانية.

delay(milliseconds);

مثال:

delay(1000);

يعني:

1000 ms = 1 second

أما التأخير بالميكروثانية فتوجد له دالة أخرى:

delayMicroseconds()
مثال 3 — برنامج Blink
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
    digitalWrite(LED_BUILTIN, HIGH);
    delay(1000);

    digitalWrite(LED_BUILTIN, LOW);
    delay(1000);
}
صورة توضيحية: مثال 3 — برنامج Blink
شرح برنامج Blink
pinMode(LED_BUILTIN, OUTPUT);

تهيئة LED المدمجة كمخرج.

digitalWrite(LED_BUILTIN, HIGH);

تشغيل LED.

delay(1000);

الانتظار لمدة ثانية.

digitalWrite(LED_BUILTIN, LOW);

إطفاء LED.

لماذا نستخدم Blink أولًا؟

Blink ليس مجرد مثال برمجي.

يمكن استخدامه للتأكد من:

  • أن اللوحة تعمل.
  • أن Board صحيحة.
  • أن Port صحيح.
  • أن Upload يعمل.
  • أن البرنامج ينفذ على اللوحة.
تدريب عملي 3

عدل برنامج Blink بحيث:

  • تعمل LED لمدة نصف ثانية.
  • تنطفئ لمدة ثانية ونصف.

استخدم:

delay()

لتحديد الزمن المناسب.

مثال 4 — نمط وميض

اجعل LED تنفذ النمط التالي:

ON  200ms
OFF 200ms
ON  200ms
OFF 1000ms

ثم يتكرر النمط باستمرار.

ONOFFON 200msOFF 200msON 200msOFF 1000msLoop
تدريب عملي 4

اكتب برنامجًا ينفذ نمطًا خاصًا بك يحتوي على:

  • ثلاث مرات تشغيل.
  • ثلاث مرات إطفاء.
  • أزمنة مختلفة.

ويجب أن يتكرر النمط باستمرار.

مثال 5 — التحكم في LED خارجية
void setup()
{
    pinMode(8, OUTPUT);
}

void loop()
{
    digitalWrite(8, HIGH);
    delay(1000);

    digitalWrite(8, LOW);
    delay(1000);
}
صورة توضيحية: مثال 5 — التحكم في LED خارجية
تدريب عملي 5

عدل المثال السابق بحيث:

  • تستخدم المنفذ 7 بدلًا من 8.
  • تعمل LED لمدة 250ms.
  • تنطفئ لمدة 750ms.

يجب تعديل:

  • التوصيل.
  • رقم المنفذ في البرنامج.
صورة توضيحية: تدريب عملي 5

التشغيل والأخطاء والسلامة

أين يتم تخزين البرنامج؟

بعد Upload يتم تخزين البرنامج في ذاكرة غير متطايرة داخل المتحكم.

لذلك يستطيع Arduino تشغيله بعد:

  • فصل الكمبيوتر.
  • إعادة توصيل الطاقة.
  • الضغط على Reset.

أما القيم المؤقتة الموجودة في RAM أثناء التشغيل فتفقد عند فصل الطاقة.

أخطاء شائعة أثناء Upload

إذا فشل رفع البرنامج، تحقق من:

  • اختيار Board الصحيحة.
  • اختيار Port الصحيح.
  • استخدام كابل USB يدعم البيانات.
  • سلامة اتصال USB.
  • عدم وجود أخطاء في الكود.
  • عدم وجود برنامج آخر يستخدم Serial Port.
  • عدم وجود توصيلات تسبب مشكلة على D0/RX وD1/TX.
إذا تم Upload ولكن الدائرة لا تعمل

تحقق من:

  • رقم Pin في الكود.
  • اتجاه LED.
  • وجود المقاومة.
  • اتصال GND.
  • توصيل Breadboard.
  • سلامة الأسلاك.
  • عدم وجود Short Circuit.

عند البحث عن الخطأ:

غيّر شيئًا واحدًا في كل مرة.

صورة توضيحية: إذا تم Upload ولكن الدائرة لا تعمل
حدود منافذ Arduino

منافذ Arduino مخصصة للإشارات والتحكم، وليست لتشغيل الأحمال الكبيرة مباشرة.

في UNO R3 نستخدم:

20mA

كتيار تشغيل تصميمي لكل منفذ I/O ضمن الحدود الموصى بها.

لا نوصل مباشرة:

  • Motor.
  • Relay Coil.
  • مصباح عالي التيار.
  • أي حمل يحتاج تيارًا مرتفعًا.

هذه الأحمال تحتاج دائرة قيادة مناسبة.

أساسيات السلامة

قبل تشغيل أي دائرة:

  • افحص التوصيلات جيدًا.
  • لا توصل 5V مع GND مباشرة.
  • استخدم مقاومة مع LED.
  • انتبه إلى قطبية المكونات.
  • لا تستخدم جهدًا غير مناسب.
  • لا تشغل الأحمال الكبيرة من المنافذ مباشرة.
  • يفضل فصل الطاقة أثناء إعادة بناء الدائرة.

التدريبات الختامية

تدريب عملي 6

قم ببناء دائرة LED خارجية على منفذ تختاره بنفسك.

المطلوب:

  • اختيار Digital Pin مناسب.
  • توصيل LED مع مقاومة.
  • كتابة البرنامج.
  • تشغيل LED لمدة ثانية.
  • إطفاؤها لمدة ثانيتين.
تدريب عملي 7

أنشئ إشارة ضوئية بالنمط التالي:

تشغيل قصير
إطفاء قصير
تشغيل قصير
إطفاء قصير
تشغيل طويل
إطفاء طويل

حدد قيم delay() بنفسك.

ONOFFShortShortShortShortLongLongLoop
تدريب عملي 8

أمامك برنامج لا يعمل كما هو متوقع.

ابحث عن الأخطاء وصححها:

void setup()
{
    pinMode(8, OUTPUT)
}

void loop()
{
    digitalWrite(7, HIGH);
    delay(1000);

    digitalWrite(7, LOW);
    delay(1000);
}

افترض أن LED موصلة بالمنفذ رقم 8.

مراجعة الوحدة

راجعنا في هذه الوحدة:

  • الحوسبة الفيزيائية ومفهوم Input → Processing → Output.
  • أساسيات الدائرة الكهربائية وBreadboard وLED.
  • أجزاء ومنافذ Arduino UNO R3.
  • Arduino IDE وSketch وUpload.
  • setup() وloop().
  • pinMode() وdigitalWrite() وdelay().
  • التحكم في LED داخلية وخارجية.
  • الأخطاء الشائعة وأساسيات السلامة.

في الوحدة القادمة ننتقل من المخرجات الرقمية إلى المدخلات الرقمية والأزرار.

100%
الصورة المكبّرة