يعد Raspberry Pi جهاز كمبيوتر متعدد الاستخدامات أصبح مفضلاً بين الهواة والمعلمين والمهنيين على حد سواء. واحدة من أقوى ميزاتها هي القدرة على التفاعل مع العالم المادي من خلال دبابيس إدخال/إخراج الغرض العام (GPIO). من خلال الاستفادة من Python ، وهي لغة برمجة صديقة للمبتدئين وقوية ، يمكنك التحكم في دبابيس GPIO هذه لبناء مجموعة واسعة من المشاريع ، من وميض LED البسيط إلى أنظمة الأتمتة المنزلية المعقدة. في منشور المدونة هذا ، سنتخيلك من خلال أساسيات استخدام Raspberry Pi للتحكم في GPIO مع Python.
فهم دبابيس GPIO
تعد دبابيس GPIO واجهات متعددة الاستخدامات على Raspberry Pi والتي تتيح لك توصيل الأجهزة الخارجية والتحكم فيها مثل LEDs ، وأجهزة الاستشعار ، والمحركات ، وأكثر من ذلك. اعتمادًا على نموذج Raspberry Pi ، ستجد عددًا متفاوتًا من دبابيس GPIO مرتبة في نمط معين. يمكن تكوين هذه المسامير كإدخال أو مخرجات:
- مدخل: اقرأ الإشارات من الأجهزة الخارجية (على سبيل المثال ، الأزرار ، المستشعرات).
- الإخراج: أرسل إشارات إلى الأجهزة الخارجية (على سبيل المثال ، مصابيح LED ، المرحلات).
قبل الغوص في جانب البرمجة ، من الضروري فهم تصميم دبوس التوت PI الخاص بك. ارجع إلى مخطط Raspberry PI GPIO Pinout الرسمي للحصول على معلومات دقيقة خاصة بالنموذج الخاص بك.
إعداد Raspberry Pi
لبدء التحكم في دبابيس GPIO مع Python ، تأكد من إعداد Raspberry Pi بشكل صحيح:
- تثبيت أحدث Raspberry Pi OS: تأكد من تشغيل Raspberry Pi الخاص بك أحدث إصدار من Raspberry Pi OS. يمكنك تنزيله من موقع Raspberry Pi الرسمي واستخدام أدوات مثل Raspberry Pi Imager لفلاشها على بطاقة SD الخاصة بك.
- تحديث نظامك: افتح الجهاز وقم بتشغيل الأوامر التالية لتحديث حزم النظام الخاصة بك:
sudo apt update
sudo apt upgrade -y
sudo apt install python3-rpi.gpio
كتابة أول نص GPIO Python
لنبدأ بمشروع بسيط: يومض LED. ستحتاج إلى المكونات التالية:
- التوت بي
- قاد
- 220-أوم المقاوم
- الأسلاك الأسلاك والبلوز
توصيل LED:
- قم بتوصيل الساق الطويلة (Anode) من LED إلى GPIO PIN 17 من خلال المقاوم.
- قم بتوصيل الساق القصيرة (الكاثود) من LED إلى دبوس الأرض (GND) على التوت PI.
الآن ، دعنا نكتب نص Python للتحكم في LED.
وميض LED مع Python
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Set GPIO pin 17 as output
LED_PIN = 17
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
time.sleep(1) # Wait for 1 second
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(1) # Wait for 1 second
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup() # Reset GPIO settings
توضيح:
-
import RPi.GPIO as GPIO
: يستورد مكتبة RPI.GPIO. -
import time
: يستورد وحدة الوقت لوظيفة النوم. -
GPIO.setmode(GPIO.BCM)
: يعين مخطط ترقيم PIN GPIO إلى BCM (قناة Broadcom SOC). -
GPIO.setup(LED_PIN, GPIO.OUT)
: تكوين GPIO PIN 17 كدبوس الإخراج. - ال
try
يحتوي Block على حلقة لا حصر لها تعمل على تشغيل LED وإيقافها كل ثانية. -
GPIO.cleanup()
: تنظيف إعدادات GPIO لضمان خروج نظيفة.
تشغيل البرنامج النصي الخاص بك
احفظ البرنامج النصي الخاص بك blink_led.py
وتشغيله باستخدام الأمر التالي:
python3 blink_led.py
يجب أن ترى LED متصلاً بـ GPIO PIN 17 وميضًا وإيقافًا كل ثانية. لإيقاف البرنامج النصي ، اضغط Ctrl + C
.
توسيع مشروعك
بمجرد إتقان وميض LED ، يمكنك استكشاف مشاريع أكثر تعقيدًا من خلال الجمع بين أجهزة استشعار ومشغلات مختلفة. فيما يلي بعض الأفكار لتبدأ:
- تفاعل الزر: التحكم في LED باستخدام زر فعلي. يتضمن ذلك إعداد دبوس GPIO كمدخل وقراءة حالته في نص Python الخاص بك.
- تسجيل بيانات المستشعر: استخدم أجهزة استشعار مثل كاشفات درجة الحرارة أو الحركة لجمع البيانات وتسجيلها للتحليل.
- أتمتة المنزل: أجهزة التحكم عن بُعد عن طريق دمج التحكم في GPIO مع واجهات الويب أو تطبيقات الهاتف المحمول.
التحكم في زر
دعنا نوسع مثالنا السابق عن طريق إضافة زر للتحكم في LED. ستحتاج:
- حمض
- 10K-أوم المقاوم
- الأسلاك الطائر الإضافية
توصيل الزر:
- قم بتوصيل ساق واحدة من الزر إلى GPIO PIN 27.
- قم بتوصيل الساق الأخرى إلى دبوس الأرض (GND) من خلال مقاوم 10K-OHM.
إليك نص Python للتحكم في LED مع الزر:
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Define GPIO pins
LED_PIN = 17
BUTTON_PIN = 27
# Set up GPIO pins
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
button_state = GPIO.input(BUTTON_PIN)
if button_state == GPIO.HIGH:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
else:
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(0.1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
توضيح:
- يتم إعداد GPIO PIN 27 كمدخل مع مقاوم المنسدلة لضمان حالة مستقرة عند عدم الضغط على الزر.
- يقرأ البرنامج النصي بشكل مستمر حالة الزر ويقوم بتشغيل LED عند الضغط على الزر.
أفضل الممارسات ونصائح السلامة
عند العمل مع دبابيس GPIO ، من الأهمية بمكان الالتزام بأفضل الممارسات لتجنب إتلاف مكونات التوت أو المكونات المتصلة:
- الطاقة عند توصيل الأجهزة: قم دائمًا بإيقاف تشغيل Raspberry Pi قبل توصيل الأجهزة أو فصلها لمنع الدوائر القصيرة.
- استخدام المقاومات المحددة الحالية: حماية مكوناتك باستخدام المقاومات المناسبة ، خاصة عند العمل مع LEDs.
- تحقق الأسلاك المزدوجة: تأكد من أن جميع الاتصالات صحيحة لمنع الأضرار العرضية لدبابيس GPIO.
- تعامل مع الرعاية: تجنب التفريغ الثابت عن طريق التعامل مع التوت PI والمكونات بعناية.
خاتمة
يفتح التحكم في دبابيس GPIO مع Python على Raspberry Pi عالمًا من الاحتمالات لإنشاء مشاريع تفاعلية وآلية. من المهام البسيطة مثل LEDs الوامضة إلى أنظمة أكثر تعقيدًا تشمل أجهزة استشعار ومحركات متعددة ، يعد إتقان التحكم في GPIO مهارة أساسية لأي عشاق PI Raspberry. باتباع الخطوات الموضحة في هذا الدليل والتمسك بأفضل الممارسات ، ستكون في طريقك إلى بناء مشاريع مثيرة ومبتكرة.
العبث سعيد!