الكثير دبابيس GPIO من لوحة Raspberry Pi 4 ، 3، وكذلك سابقاتها ، تزود لوحة SBC بقدرات مشابهة لتلك التي يمكن أن يمتلكها Arduino ، حيث يمكنك إنشاء مشاريع إلكترونية مثيرة جدًا يتم التحكم فيها من نظام التشغيل عن طريق التعليمات البرمجية بلغات مختلفة ، مثل Python.
هذا يجعل اللوحة أكثر من مجرد كمبيوتر رخيص. سيسمح لك بتوصيل العديد من ملفات العناصر الإلكترونية التي يمكنك استخدامها مع Arduino ، ولكن يمكن أيضًا التحكم فيها من Pi. سأحاول في هذا الدليل تزويدك بأكبر قدر ممكن من المعلومات حول دبابيس GPIO هذه حتى يمكنك البدء في الاستفادة منها ...
ما هو GPIO؟
GPIO هو اختصار لإدخال / إخراج للأغراض العامة ، أي إدخال / إخراج للأغراض العامة. يمكن أن تحتوي عليها المنتجات الإلكترونية المختلفة ، مثل الرقائق نفسها أو بعض لوحات ثنائي الفينيل متعدد الكلور مثل Raspberry Pi. كما يوحي اسمها ، فهي عبارة عن دبابيس يمكن تهيئتها لأداء وظائف مختلفة ، وبالتالي فهي غرض عام وليست لاستخدام محدد.
سيكون المستخدم في وقت التشغيل من يستطيع تكوين دبابيس GPIO هذه حتى يفعلوا ما يشاء. يمكن القيام بذلك بطرق مختلفة ، مثل بعض الأكواد أو البرامج النصية من وحدة التحكم أو باستخدام برنامج Python ، وهو أحد أبسط الطرق وأكثرها تفضيلًا نظرًا لكمية الخيارات المتاحة لك.
بهذه الطريقة ، لا يحتوي Raspberry Pi على سلسلة من المنافذ و واجهات لتوصيل أجهزة قياسية متعددة ، ولكن أضف دبابيس GPIO هذه حتى تتمكن من إضافة أجهزة إلكترونية أخرى أو مشاريع صانع قمت بإنشائها بنفسك. بنفس الطريقة التي تستخدمها مع Arduino ودبابيس الإدخال / الإخراج الخاصة به للتحكم.
Y ليس حصريًا لـ Arduino أو Raspberry Pi، وكذلك تفعل لوحات SBC الأخرى المماثلة والمنتجات المضمنة.
ميزات GPIO
وبين لها CARACTERISTICS الأكثر تميزا:
- يمكنهم ذلك يتم تكوينه هكذا كمدخل كإخراج. لديهم تلك الازدواجية كما يحدث لهؤلاء اردوينو.
- دبابيس GPIO أيضًا يمكن تفعيلها وتعطيلها عن طريق الكود. أي أنه يمكن ضبطها على 1 (مستوى الجهد العالي) أو 0 (مستوى الجهد المنخفض).
- بالطبع يمكنهم ذلك قراءة البيانات الثنائية، مثل الآحاد والأصفار ، أي إشارة الجهد أو عدم وجودها.
- قيم الإخراج من قراءة وكتابة.
- يمكن تكوين قيم الإدخال في بعض الحالات كـ أحداث حتى يولدوا نوعًا من الإجراءات على السبورة أو النظام. بعض الأنظمة المضمنة تستخدمها مثل IRQs. هناك حالة أخرى تتمثل في تكوين ذلك عندما يكون واحدًا أو أكثر من المسامير نشطة بواسطة مستشعرات معينة ، قم بتنفيذ بعض الإجراءات ...
- بالنسبة للجهد والشدة ، يجب أن تعرف جيدًا السعات القصوى المقبولة للوحة ، في هذه الحالة Raspberry Pi 4 أو 3. يجب ألا تتجاوزها لتجنب إتلافها.
بالمناسبة ، عندما يتم تجميع مجموعة من دبابيس GPIO ، كما هو الحال مع Raspberry Pi ، تُعرف المجموعة باسم منفذ GPIO.
دبابيس GPIO الخاصة بـ Raspberry Pi
الجديد لوحات Raspberry Pi 4 والإصدار 3 وهي مجهزة بعدد كبير من دبابيس GPIO. لا تقدم جميع الإصدارات نفس المقدار ، ولا يتم ترقيمها بنفس الطريقة ، لذلك عليك أن تكون حريصًا في ذلك لتعرف جيدًا كيف يجب عليك إجراء الاتصال وفقًا للطراز والمراجعة التي لديك.
ولكن ما هو أكثر عمومية هو أنواع GPIO التي يمكنك العثور عليها في منفذ لوحات Raspberry Pi. وسيكون هذا هو أول شيء أود توضيحه ، لأن هذه هي الطريقة التي ستعرفون بها أنواع الدبابيس يمكنك الاعتماد عليها لمشاريعك:
- تغذيةتُستخدم هذه المسامير لتوصيل خطوط الطاقة أو الأسلاك لمشاريعك الإلكترونية. إنها تتوافق مع دبابيس مشابهة لتلك الموجودة على لوحة Arduino ، والتي توفر جهدًا من 5 فولت و 3 ضد 3 (3.3 فولت تقتصر على حمل 50 مللي أمبير). بالإضافة إلى ذلك ، ستجد أيضًا الأرض (GND أو Ground). إذا كنت لا تستخدم مصادر طاقة خارجية مثل البطاريات أو المحولات ، فيمكن أن تكون هذه المسامير ذات فائدة كبيرة في تشغيل دائرتك.
- DNC (عدم الاتصال): هي عبارة عن دبابيس موجودة في بعض الإصدارات وليس لها وظيفة ، ولكن تم منحها غرضًا آخر في اللوحات الجديدة. سوف تجد هذه فقط في نماذج أكثر بدائية من Pi. في الجديدين 3 و 4 ، سيتم تمييزهما على أنهما GND بشكل عام ، لتكون قادرة على الاندماج في المجموعة السابقة.
- دبابيس شكلي: إنها GPIOs العادية ، ويمكن برمجتها بواسطة أكواد كما سأشرح لاحقًا للقيام بما تحتاجه.
- دبابيس خاصة: هذه بعض الاتصالات المخصصة للاتصالات أو الواجهات الخاصة مثل اتصالات UART و TXD و RXD التسلسلية ، وما إلى ذلك ، كما يحدث مع Arduino. ستجد حتى بعضًا منها مثل SDA و SCL و MOSI و MISO و SCLK و CE0 و CE1 وما إلى ذلك. يبرزون بينهم:
- PWM، والتي يمكن أن تنظم عرض النبضة كما رأينا في مقال سابق. في Raspberry Pi 3 و 4 هم GPIO12 و GPIO13 و GPIO18 و GPIO19.
- SPI هي واجهة اتصال أخرى ناقشتها أيضًا في مقال آخر. في حالة اللوحات الجديدة ذات 40 سنًا ، فهي عبارة عن دبابيس (مع قنوات اتصال مختلفة كما ترى):
- SPI0: MOSI (GPIO10) ، MISO (GPIO9) ، SCLK (GPIO11) ، CE0 (GPIO8) ، CE1 (GPIO7)
- SPI1: MOSI (GPIO20) ؛ MISO (GPIO19) ؛ SCLK (GPIO21) ؛ CE0 (GPIO18) ؛ CE1 (GPIO17) ؛ CE2 (GPIO16)
- I2C هو رابط آخر شرحته أيضًا في هذه المدونة. يتكون هذا الناقل من إشارة البيانات (GPIO2) والساعة (GPIO3). بالإضافة إلى بيانات EEPROM (GPIO0) وساعة EEPROM (GPIO1).
- Serial ، اتصال عملي آخر مع دبابيس TX (GPIO14) و RX (GPIO15) مثل تلك التي يمكنك العثور عليها على اللوحة Arduino UNO.
تذكر أن GPIOs هي الواجهة بين Raspberry Pi والعالم الخارجي ، لكن لديهم حدوده، خاصةً الكهربائية. الشيء الذي يجب عليك مراعاته حتى لا تفسد اللوحة هو أن تتذكر أن دبابيس GPIO هذه عادةً ما تكون غير مخزنة ، أي بدون مخزن مؤقت. هذا يعني أنه ليس لديهم حماية ، لذلك يجب عليك مراقبة مقادير الجهد والكثافة المطبقة حتى لا ينتهي الأمر بلوحة عديمة الفائدة ...
اختلافات GPIO بين الإصدارات
كما قلت، ليست كل النماذج هي نفس الدبابيسفيما يلي بعض الرسوم البيانية حتى تتمكن من رؤية الاختلافات بين النماذج وبالتالي تكون قادرًا على التركيز على Raspberry Pi 4 و 3 ، وهما الأحدث والأكثر في حوزتك. يختلف بين (كل مجموعة تشترك في نفس الدبابيس):
- Raspberry Pi 1 Model B Rev 1.0 ، مع 26-pin مختلفة قليلاً عن Rev2.
- Raspberry Pi 1 موديل A و B Rev 2.0 ، كلا الطرازين بهما 26 سنًا.
- Rapsberry Pi Model A + و B + و 2B و 3B و 3B + و Zero و Zero W ، وأيضًا طرازات 4. جميعها مزودة برأس GPIO من 40 سنًا.
ما الذي يمكنني توصيله بـ GPIOs؟
لن تكون قادرًا على ذلك فقط ربط الأجهزة الإلكترونية كما الترانزستورات, أجهزة استشعار الرطوبة / درجة الحرارة, الثرمستورات, محركات السائر, المصابيح، إلخ. يمكنك أيضًا توصيل المكونات أو الوحدات النمطية التي تم إنشاؤها خصيصًا لـ Raspberry Pi والتي تعمل على توسيع إمكانيات اللوحة إلى ما هو أبعد مما تم تضمينه في القاعدة.
أنا أشير إلى المشهور القبعات أو القبعات والأطباق التي يمكنك العثور عليها في السوق. هناك العديد من الأنواع ، من تلك المستخدمة للتحكم في المحركات بواسطة السائقين ، إلى الأنواع الأخرى التي يمكن إنشاؤها مجموعة الحوسبة، مع لوحة الاضاءة يمكن السيطرة عليها ، للإضافة قدرة DVB TV, شاشة عرض من الكريستال السائل، الخ.
هذه القبعات أو القبعات يتم تثبيتها على لوحة Raspberry Pi ، مطابقة GPIOs اللازمة لها للعمل. لذلك ، فإن تجميعها بسيط وسريع للغاية. بالطبع ، تأكد من أن إصدار اللوحة متوافق مع كل قبعة ، لأن منفذ GPIO مختلف كما رأيت ...
أقول هذا في حال كان لديك لوحة قديمة ، لأن القبعات كذلك متوافق فقط مع الأحدث. كما هو الحال مع طرازات Raspberry Pi Model A + و B + و 2 و 3 و 4.
مقدمة لاستخدام GPIO على Raspberry Pi
للبدء ، على Raspbian ، يمكنك فتح وحدة التحكم والكتابة الأمر pinoutما ستعود إليك هو صورة في الجهاز مع دبابيس GPIO المتاحة على لوحك وما الغرض من كل واحدة. شيء عملي للغاية ليكون دائمًا موجودًا في لحظة العمل حتى لا تشعر بالارتباك.
المشروع الأول: وميض LED مع GPIOs
الطريقة الأساسية لعمل نوع من ملفات "أهلاً بالعالم" مع GPIOs هو استخدام مصباح LED بسيط متصل بدبابيس Raspberry Pi حتى تتمكن من رؤية كيفية عملها. في هذه الحالة ، قمت بتوصيله بـ GND والآخر بـ 17 ، على الرغم من أنه يمكنك اختيار آخر من المسامير العادية ...
بمجرد الاتصال ، يمكنك السيطرة عليهم من Raspbian الاستفادة من المحطة. في Linux ، يتم استخدام ملفات محددة مثل تلك الموجودة في الدليل / sys / class / gpio /. على سبيل المثال ، لإنشاء ملف بالبنية اللازمة لبدء العمل:
echo 17 > /sys/class/gpio/export
إذا تستطيع تكوين كمدخل (في) أو كمخرج (خارج) هذا الدبوس 17 الذي تم اختياره لمثالنا. يمكنك القيام بذلك بسهولة باستخدام:
echo out > /sys/class/gpio/gpio17/direction
في هذه الحالة كإخراج ، نظرًا لأننا نريد إرسال نبضة كهربائية إلى مؤشر LED لتشغيله ، ولكن إذا كان مستشعرًا ، وما إلى ذلك ، فيمكنك استخدامه. الآن ل تشغيل (1) أو إيقاف (0) LED يمكنك استخدامه:
echo 1 > /sys/class/gpio/gpio17/value echo 0 > /sys/class/gpio/gpio17/value
إذا كنت ترغب في الانتقال إلى مشروع آخر و حذف المدخلات تم إنشاؤه ، يمكنك القيام بذلك بهذه الطريقة:
echo 17 > /sys/class/gpio/unexport
بالمناسبة ، يمكنك أيضًا جمع كل الأوامر اللازمة لمشروعك ، مثل كل الأوامر السابقة ، وحفظها في نوع ملف نص باش ثم قم بتشغيلها في حزمة مرة واحدة ، بدلاً من كتابتها واحدة تلو الأخرى. يكون هذا مفيدًا عند تكرار نفس التمرين عدة مرات ، حتى لا تضطر إلى إعادة الكتابة. فقط اركض وانطلق. على سبيل المثال:
nano led.sh
#!/bin/bash source gpio gpio mode 17 out while true; do gpio write 17 1 sleep 1.3 gpio write 17 0 sleep 1.3 done
بمجرد الانتهاء ، تقوم بالحفظ ثم يمكنك منحه أذونات التنفيذ والتنفيذ المناسبة النص حتى يتم تشغيل LED ، انتظر 1.3 ثانية ثم أطفئها في حلقة ...
chmod +x led.sh ./led.sh
تقدم البرمجة
من الواضح أن ما سبق يعمل مع المشاريع الإلكترونية الصغيرة ذات المكونات القليلة ، ولكن إذا كنت ترغب في إنشاء شيء أكثر تقدمًا ، فبدلاً من الأوامر ، فإن ما يمكنك استخدامه هو لغات البرمجة لإنشاء نصوص برمجية أو أكواد مصدر مختلفة تعمل على أتمتة العملية.
يمكن استخدامها أدوات مختلفة للبرمجة بلغات مختلفة جدًا. تسهل عليك المكتبات التي طورها المجتمع الأمور ، مثل WiringPi و sysfs و pigpio وما إلى ذلك. يمكن أن تكون البرامج متنوعة للغاية ، من Python ، وهي الخيار المفضل لدى الكثيرين ، من خلال Ruby و Java و Perl و BASIC وحتى C #.
رسميًا ، يقدم لك Raspberry Pi العديد من المرافق لبرمجة GPIOs الخاصة بك ، مثل:
- نقطة الصفر، بالنسبة لأولئك الذين لا يعرفون كيفية البرمجة ويريدون استخدام كتل الألغاز لهذا المشروع والتي يمكن أيضًا برمجة Arduino بها ، وما إلى ذلك. تعد البرمجة باستخدام الكتل الرسومية أمرًا بديهيًا وعمليًا للغاية في مجال التعليم.
- Python: تسمح لك لغة البرمجة المفسرة البسيطة هذه بإنشاء أكواد بسيطة وفعالة ، مع وجود العديد من المكتبات تحت تصرفك للقيام بكل ما تتخيله تقريبًا.
- C / C ++ / C #: هي لغات برمجة أكثر قوة لإنشاء ثنائيات يمكن التفاعل معها مع GPIOs. يمكنك القيام بذلك بعدة طرق ، باستخدام النموذج القياسي أو واجهة kernel عبر المكتبةlibgpiod، ولكن أيضًا من خلال مكتبة جهة خارجية مثل الخنزير.
- المعالجة 3، على غرار Arduino.
اختر بمرونة الشخص الذي يعجبك أكثر أو تعتقد أنه بسيط.
مقال جميل جدا عن البدء في Rasperry
شكرا جزيلا.
هل انت المؤلف
نعم