عناوين الدرس

راسبيري باي -الدرس الرابع- اعداد GPIO

مبتدئ

في هذا الدرس سوف تتعرف على GPIO ، وعلى مكتبة Rpi.GPIO وطريقة تثبيتها والتعامل معها.
واحد من أهم المميزات في الراسبيري باي أنها تحتوي على مجموعة أرجل تستخدم كمخارج أومداخل تعرف إختصارًا بـ (GPIO) للتواصل مع القطع الإلكترونية الأخرى مثل الحساسات

GPIO1

الـ GPIO تحتوي على أنواع اتصال مختلفة كالتالي:

  • GPIO حقيقي
  • I2C
  • SPI
  • الاتصال التسلسلي Rx وTx

بالاضافة إلى أن بعض الأرجل من الممكن أن تستخدم كـ PWM-Pulse Width Modulation للتحكم بالطاقة وكذلك من الممكن أن تستخدم كـ PPM-Pulse Position Modulation للتحكم بالمحرك.

 

منافذ GPIO

 

الصورة التالية توضح أسماء الأرجل وأنواعها للاصدار الاول من الرازبيري باي:

GPIO2

الأرجل (GND 3.3V 5V) خاصة بالطاقة ، وللعلم جميع أرجل GPIO يمكن استخدامها كمدخلات أو مخرجات ، وأيضًا الأرجل SCL و  SDA يمكن استخدامها لـ I2C وكذلك الأرجل MOSI و MISO و SCKL يمكن استخدامها لـ SPI.

ملاحظة مستوى الفولت في جميع الأرجل 3.3V وهي ليست آمنة مع 5V أيضا مستوى الفولت الخارج هو 0-3.3V وكذلك الحد الأعلى للفولت المدخل يجب أن لايتجاوز 3.3V.

مكتبة Rpi.GPIO للبايثون

لبرمجة منافذ GPIO بالبايثون نحتاج إلى مكتبة Rpi.GPIO لتسهل علينا التحكم بالـ GPIO ، عادةً مكتبة Rpi.GPIO تكون مثبته مسبقًا مع نظام Raspbian ولكن في حال عدم توفرها يمكنك تثبيتها يدويا من خلال ادخالك للأوامر التالية في LXTerminal

GPIO3

قم بتحديث المستودعات للحصول على آخر إصدار

sudo apt-get update

GPIO4

قم بتثبيت python-dev

sudo apt-get install python-dev

قم بتثبيت مكتبة Rpi.GPIO

sudo apt-get install python-rpi.gpio

استخدام Rpi.GPIO

 

نأتي الآن لكيفية التعامل مع مكتبة (Rpi.GPIO) والتعامل مع الدوال الخاصة بها قم بفتح ملف نصي من خلال كتابة الأمر التالي في برنامج LXTerminal

nano test.py

لاستدعاء مكتبة (Rpi.GPIO) في كود البايثون الخاص بنا نكتب التالي:

import RPi.GPIO as GPIO

قبل التعامل مع الـ GPIO يجب تحديد طريقة الترقيم للبورد واختيار  BCM أو BOARD كالتالي:

GPIO.setmode(GPIO.BCM)

أو

GPIO.setmode(GPIO. BOARD)

الفرق بينهما أن BOARD يعتمد على ترتيب الرجل في البورد أما BCM فهو يعتمد على ترتيب الرجل حسب التسمية (GPIO XX) الصورة التالية توصح كلا الطريقتين في التسمية

GPIO6

لتعيين الرجل كمخرج أو مدخل نستخدم الدالة “setup”:

setup([pin], [GPIO.IN, GPIO.OUT])

للتعيين كمخرج نكتب OUT وكمدخل نكتب IN مثال:

GPIO.setup(18, GPIO.OUT)

أو

GPIO.setup(18, GPIO.IN)

للتحكم بالإخراج من الأرجل وتمرير التيار أو ايقافه نستخدم الدالة “output”:

GPIO.output([pin], [GPIO.LOW, GPIO.HIGH])

لتمرير التيار نكتب HIGH ولإيقافه نكتب LOW مثال:

GPIO.output(18, GPIO.HIGH)

أو

GPIO.output(18, GPIO. LOW)

لقراءة التيار الداخل نستخدم الدالة ” input”:

GPIO.input([pin])

مثال لاختبار قيمة المدخل:

if GPIO.input(18):

    print("GPIO 18 is HIGH")

else:

    print("GPIO 18 is LOW")

لمسح اعدادات GPIO نستخدم الدالة “cleanup” :

GPIO.cleanup()

أخيرا لتشغيل البرنامج نكتب الأمر التالي في LXTerminal:

sudo python test.py

 

X
تم إضافة المنتج إلى السلة بنجاح