البرمجة

مصباح ليد يومض براسبيري باي

إنشاء مصباح ليد يومض وفق نمط معين باستخدام حاسوب راسبيري باي بيكو

مقدمة

تعتبر تقنيات التحكم في الإضاءة من أهم المجالات التي تجمع بين البرمجة والإلكترونيات في عالم الأجهزة الذكية والمشاريع الإلكترونية الهواة والمحترفين على حد سواء. استخدام مصابيح LED التي تضيء وتومض بأنماط معينة له تطبيقات واسعة مثل الإشارات التنبيهية، الزينة، الإعلانات، وأجهزة الاستشعار. من بين الأدوات التي أصبحت رائجة لإنجاز مثل هذه المشاريع هو حاسوب “راسبيري باي بيكو” (Raspberry Pi Pico)، وهو لوحة تطوير صغيرة الحجم، منخفضة التكلفة، مزودة بمعالج قوي ومرونة في التعامل مع أجهزة الإدخال والإخراج.

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


مقدمة عن راسبيري باي بيكو

راسبيري باي بيكو هو وحدة تحكم دقيقة (microcontroller board) تم تطويرها من قبل مؤسسة Raspberry Pi، ويعتمد على شريحة RP2040 ذات النوى المزدوجة ARM Cortex-M0+. يتميز بحجمه الصغير (حوالي 51×21 ملم) وبسعر منخفض جداً مقارنةً بأجهزة الحواسيب الأخرى أو وحدات التحكم. من مزايا راسبيري باي بيكو:

  • دعم لغات البرمجة المختلفة مثل MicroPython وC/C++.

  • عدد كبير من دبابيس GPIO القابلة للبرمجة.

  • قدرة عالية على التعامل مع المداخل والمخارج الرقمية والتناظرية.

  • دعم توصيل واجهات متعددة كـ I2C وSPI وUART.

هذه الميزات تجعل راسبيري باي بيكو مثالياً لإنشاء مشاريع مثل مصابيح LED التي تومض بأنماط مخصصة.


مكونات المشروع الأساسية

لبناء مصباح LED يومض بنمط معين باستخدام راسبيري باي بيكو، تحتاج إلى المكونات التالية:

  • لوحة راسبيري باي بيكو.

  • مصباح LED (يفضل لون واضح مثل الأحمر أو الأزرق).

  • مقاومة كهربائية (220 أوم عادة لحماية الـ LED من زيادة التيار).

  • أسلاك توصيل (Jumper wires).

  • لوحة تجارب (Breadboard) لتركيب الدائرة بسهولة.

  • كمبيوتر شخصي لتطوير ورفع برنامج التحكم على راسبيري باي بيكو.


المفاهيم الأساسية للتحكم بمصباح LED

مبدأ عمل LED

الـ LED (الصمام الثنائي الباعث للضوء) هو جهاز إلكتروني يسمح بمرور التيار في اتجاه واحد فقط، ويصدر ضوءاً عندما يمر فيه تيار كهربائي مناسب. للتحكم في تشغيله وإطفائه، يتم توصيله مع مقاومة لضبط التيار ثم إلى مصدر إشارة متحكم بها، مثل دبابيس GPIO في لوحة راسبيري باي بيكو.

عمل دبابيس GPIO

GPIO (General Purpose Input/Output) هي دبابيس قابلة للبرمجة تعمل كمداخل أو مخارج رقمية. لإضاءة LED، يتم تهيئة الدبوس كمخرج، ثم التحكم في حالته بين HIGH (3.3 فولت) لتشغيل الـ LED وLOW (0 فولت) لإيقافه.


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

يتم توصيل دائرة بسيطة على النحو التالي:

  • الطرف الموجب (الأنود) للـ LED يوصل إلى دبوس GPIO على راسبيري باي بيكو (مثلاً GPIO 15).

  • الطرف السالب (الكاثود) يوصل إلى مقاومة 220 أوم.

  • المقاومة توصل إلى الأرضي (GND) على راسبيري باي بيكو.

بهذا التوصيل، عندما يقوم الميكروكنترولر بإرسال إشارة HIGH على الدبوس، يضيء الـ LED، وعندما يرسل LOW ينطفئ.


برمجة راسبيري باي بيكو للتحكم في الـ LED

اختيار لغة البرمجة

لغات شائعة لبرمجة راسبيري باي بيكو هي:

  • MicroPython: وهي نسخة مبسطة من بايثون تعمل بشكل مباشر على الأجهزة المدمجة، سهلة التعلم وسريعة للتطوير.

  • C/C++: تعطي أداء أسرع ولكن تتطلب معرفة أكبر بإعداد بيئة التطوير.

لأغراض هذا المشروع، يتم استخدام MicroPython لسهولة الشرح والكتابة.

تثبيت MicroPython على راسبيري باي بيكو

  • تحميل ملف MicroPython الرسمي الخاص بـ RP2040 من موقع راسبيري باي.

  • تثبيت البرنامج باستخدام أداة “Thonny” IDE أو أي محرر يدعم MicroPython.

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


كتابة كود LED يومض بنمط معين

لنأخذ مثالاً على نمط وميض بسيط: LED يضيء لمدة نصف ثانية ثم ينطفئ لمدة نصف ثانية، ويتكرر ذلك ثلاث مرات، ثم ينتظر 2 ثانية قبل بدء النمط مرة أخرى.

python
from machine import Pin import time led = Pin(15, Pin.OUT) def blink_pattern(): for _ in range(3): led.value(1) # تشغيل LED time.sleep(0.5) # نصف ثانية إضاءة led.value(0) # إطفاء LED time.sleep(0.5) # نصف ثانية إطفاء time.sleep(2) # انتظار 2 ثانية قبل التكرار while True: blink_pattern()

هذا الكود يوضح التحكم الأساسي بالـ LED في نمط ثابت.


توسيع النمط ليشمل أنماط وامض متعددة

نمط وميض متغير بتوقيتات مختلفة

يمكن برمجة نمط أكثر تعقيدًا يشمل وميضات سريعة وبطيئة ومتقطعة كما يلي:

python
def complex_blink(): # وميض سريع 5 مرات for _ in range(5): led.value(1) time.sleep(0.2) led.value(0) time.sleep(0.2) time.sleep(1) # وميض بطيء مرتين for _ in range(2): led.value(1) time.sleep(1) led.value(0) time.sleep(1) time.sleep(1) # وميض متقطع: 3 وميضات سريعة ثم إيقاف طويل for _ in range(3): led.value(1) time.sleep(0.1) led.value(0) time.sleep(0.1) time.sleep(3)

هذه الأمثلة تثري فكرة كيفية التحكم بأنماط متعددة حسب الحاجة.


استخدام الجداول الزمنية لتحديد الأنماط

لزيادة وضوح وتنظيم التحكم في الأنماط المختلفة، من الأفضل استخدام جدول زمني (Timeline) يحتوي على توقيتات التشغيل والإطفاء لكل وميضة.

رقم الخطوة حالة الـ LED مدة التشغيل (ثواني) مدة الإطفاء (ثواني)
1 تشغيل 0.2 0
2 إطفاء 0 0.2
3 تشغيل 0.2 0
4 إطفاء 0 0.2
5 تشغيل 0.2 0
6 إطفاء 0 1

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


كتابة دالة ديناميكية للوميض بناءً على جدول

python
pattern = [ (1, 0.2, 0), (0, 0, 0.2), (1, 0.2, 0), (0, 0, 0.2), (1, 0.2, 0), (0, 0, 1) ] def run_pattern(pat): for state, on_time, off_time in pat: led.value(state) if on_time > 0: time.sleep(on_time) if off_time > 0: led.value(0) time.sleep(off_time) while True: run_pattern(pattern)

هذه الطريقة تسمح بتعريف أنماط متعددة عبر تحديث مصفوفة الوقت وحالة التشغيل.


استخدام خاصية PWM للتحكم بشدة إضاءة LED

يقدم راسبيري باي بيكو دعم PWM (Pulse Width Modulation) للتحكم في شدة الإضاءة وليس فقط تشغيل أو إطفاء، ما يتيح إمكانية إنشاء تأثيرات أكثر تعقيدًا مثل التلاشي التدريجي (Fade-in, Fade-out).

مثال على تلاشي تدريجي للـ LED

python
from machine import PWM, Pin import time led = PWM(Pin(15)) led.freq(1000) def fade_in_out(): for duty in range(0, 65535, 1000): led.duty_u16(duty) time.sleep(0.01) for duty in range(65535, 0, -1000): led.duty_u16(duty) time.sleep(0.01) while True: fade_in_out()

بهذا الأسلوب، يمكن صنع أنماط وميض فريدة تتدرج فيها شدة الضوء بدلاً من أن تكون فقط تشغيل/إطفاء.


تطبيقات عملية وأمثلة متقدمة

1. مصباح تحذير يعمل على نمط وميض مميز

يستخدم هذا النوع في المركبات أو الأجهزة الصناعية للإشارة إلى وجود حالة طارئة أو تحذيرية عبر وميض معين.

2. ديكور منزلي ذكي

دمج عدة مصابيح LED مع راسبيري باي بيكو وإضافة مكتبة الوقت (RTC) لإنشاء نمط إضاءة متغير طوال اليوم.

3. إشارات مرورية صغيرة

إنشاء إشارة ضوئية ذات أنماط زمنية محددة باستخدام مصابيح LED متعددة متزامنة.


نصائح مهمة عند تنفيذ المشروع

  • استخدام مقاومة مناسبة: عدم استخدام مقاومة سيؤدي إلى تلف الـ LED أو اللوحة بسبب التيار الزائد.

  • التأكد من توصيل الأرضي (GND): لضمان عمل الدائرة بشكل صحيح، يجب توصيل جميع المكونات بالأرضي المشترك.

  • تجربة الأنماط تدريجياً: ابدأ بأنماط بسيطة ثم توسع تدريجياً لتجنب أخطاء البرمجة والتوصيل.

  • استخدام مصادر طاقة مستقرة: لتجنب إعادة تشغيل اللوحة بشكل غير متوقع أثناء التشغيل.

  • حماية الدبوس: تجنب توصيل أحمال كبيرة مباشرة على دبابيس GPIO.


الخلاصة

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

القدرة على استخدام جداول زمنية ديناميكية للتحكم في الوميض، إضافة إلى دمج تقنيات متقدمة مثل التلاشي التدريجي، تفتح آفاقاً واسعة لتطبيقات متعددة في مجالات الإضاءة الذكية، التحذيرات، والديكور التفاعلي.

التحدي في هذا المشروع يكمن في تحقيق التوازن بين البساطة والمرونة مع التأكد من التوصيلات الكهربائية السليمة والبرمجة الدقيقة، مما يجعل المشروع منصة تعليمية ممتازة لمن يرغب في الغوص في عالم الإلكترونيات المدمجة والبرمجة الحاسوبية.


المراجع

  1. الموقع الرسمي لـ Raspberry Pi Pico: https://www.raspberrypi.com/products/raspberry-pi-pico/

  2. وثائق MicroPython على راسبيري باي: https://docs.micropython.org/en/latest/rp2/quickref.html