جلسه دوم آموزش رزبری پای – { کار با پایه های GPIO }
مقدمه
در جلسه دوم از دوره رزبری قصد داریم با پایه های GPIO موجود بر روی برد آشنا شویم و تعدادی دستور به آنها دهیم. پیشنهاد میکنم حتما جلسه قبل مربوط به این دوره را از لینک زیر مطالعه کنید:
پین های خروجی رزبری پای[post_shop]
پایه های خروجی برد رزبری پای به وسیله یک سری پین های نرگی در اختیار ما قرار گرفته اند. در نسخه اول این برد ، تعداد 26 پین خروجی وجود داشت و در نسخه نهایی آن ( نسخه 3 ) این تعداد به 40 عدد افزایش پیدا کرده است. در شکل زیر نمایی از این پایه های و ترتیب شماره های آن را مشاهده میکنید:
اگر قبلا با آردوینو کار کرده باشید، میدانید که به هر پایه به وسیله یک عدد مشخص میتوان دسترسی داشت. مثلا میتوان در کد از عدد 13 استفاده کرد و به پایه 13 دسترسی داشت و فرمان های مربوط را به این پایه اعمال کرد. در برد رزبری پای نیز این قاعده وجود دارد و به پین ها میتوان خیلی ساده و با یک عدد دسترسی پیدا کرد.
هنگام کار با رزبری پای ما (حداقل) با دو نوع سیستم شماره گذاری پایه ها مواجه می شویم:
نوع اول : شماره پایه های شرکت Broadcom تصویری از این نوع شماره گذاری در زیر آورده شده است:
نوع دوم: شماره پایه های هدر P1 ( این سیستم شماره گذاری همان سیستمی است که در تصویر بالا مشاهده می کنید.)
البته ما آزاد هستیم که از هر نوع سیستم شماره گذاری که مایل هستیم استفاده کنیم ولی بسیاری از برنامه ها نیاز دارند تا در ابتدا به آنها بگوییم که از کدام یک از سیستم های شماره گذاری استفاده میکنیم.
تذکر: شماره پایه های مربوط به Broadcom که در شکل بالا آورده شده است مربوط به نسخه های 2 و 3 برد رزبری می باشد. درصورتی که از نسخه 1 این برد استفاده می کنید ، میتوانید از این لینک اطلاعات تکمیلی را بدست آورید.
همانطور که در شکل بالا نیز مشخص است ، یک پایه علاوه بر وظیفه ورودی و خروجی ، نقش های دیگر نیز بر عهده دارد. مثلا میتوان از یک پایه به منظور UART یا SPI یا I2C استفاده کرد.
سخت افزار
حال وارد مرحله بستن مدار می شویم. مثالی که در این مرحله قصد داریم به آن بپردازیم با زبان پایتون است. همچنین از دو LED ( یکی برای تست خروجی دیجیتال و دیگری برای PWM) استفاده شده است و علاوه بر آن از یک کلید برای تست ورودی نیز استفاده کرده ایم.
پایه هایی که از آنها استفاده شده است ، پایه های 12 و 16 در هدر P1 است. درسیستم شماره گذاری Broadcom شماره این پایه ها به ترتیب 18 و 23 است. همچنین پایه مربوط به کلید پایه 11 در هدر P1 است که معادل این پایه در سیستم شماره گذاری Broadcom ، شماره 17 است.
مداری که بر روی برد برد بسته می شود ، مشابه شکل زیر است:
دستورات مربوط به پایه های ورودی و خروجی:
برای دستور به پایه های ورودی و خروجی ما از ماژول RPI.GPIO استفاده میکنیم. این ماژول مجموعه ای از توابع و دستورات و ثابت ها و… است که به کمک آنها میتوانیم با پایه های GPIO ارتباط برقرار کنیم. به صورت پیش فرض این ماژول بر روی سیستم عامل Raspbian نصب است. بنابراین نیازی به دانلود و نصب آن نداریم. اما اگر سیستمی غیر از سیستم عامل Raspbian را بر روی برد رزبری نصب کرده اید ، از این لینک میتوانید این ماژول را دانلود کنید.
درادامه یک سری از دستورات پرکاربرد این ماژول را با یکدیگر مرور میکنیم:
تذکر: در این جلسه صرفا دستورات مهم را با یکدیگر مرور میکنیم و در جلسه بعد یاد میگیریم که چگونه این دستورات را در یک فایل ذخیره کنیم و سپس به کمک ترمینال Raspbian آن را اجرا کنیم.
در ابتدا باید این ماژول را به برنامه وارد کنیم. برای وارد کردن این ماژول از دستور زیر میتوان استفاده کرد:
import RPi.GPIO as GPIO
در دستور بالا ، ماژول RPi.GPIO به برنامه اضافه می شود و برای استفاده از آن هم کافی است از نام GPIO به جای RPi.GPIO استفاده کنیم.
تعریف شماره پایه ها:
در گام بعد باید نوع شماره گذاری پایه ها را مشخص کنیم. همانطور که در ابتدا گفتیم ، پایه ها را میتوان به دو صورت شماره گذاری کرد:
- GPIO.BOARD – شماره گذاری با هدر P1
- GPIO.BCM – شماره گذاری Broadcam ( این سیستم شماره گذاری یک سیستم سطح پایین ( Low Level ) است که در واقع پایه های اصلی پردازنده مرکزی برد می باشند. )
پیشنهاد ما این است که برای سادگی کار فعلا از همان سیستم شماره گذاری با کمک هدر P1 استفاده کنیم. برای تعیین نوع شماره گذاری کافی است از دستور GPIO.setmode به صورت زیر استفاده کنیم:
GPIO.setmode(GPIO.BOARD)
با دستور بالا نوع شماره گذاری با هدر P1 را انتخاب کردیم.
تعیین مدکاری یک پایه:
اگر قبلا با آردوینو کار کرده باشید ، احتمالا میدونید که قبل از استفاده از پایه های باید مدکاری پایه ( یعنی ورودی و خروجی بودن آن را ) تعیین کنید. برای تعیین مد یک پایه در رزبری کافی است که از تابع([ setup([pin], [GPIO.IN, GPIO.OUT استفاده کنید. به عنوان مثال اگر بخواهیم پایه شماره 12 را به عنوان خروجی تعیین کنیم ، در این صورت کافی است از دستور زیر استفاده کنیم:
GPIO.setup(12, GPIO.OUT)
خروجی ها:
خروجی دیجیتال: برای این که بر روی یک پایه مقدار 0 دیجیتال یا 1 دیجیتال قرار دهیم. کافی است از دستور زیر استفاده کنیم.
[/post_shop]
GPIO.output([pin], [GPIO.LOW, GPIO.HIGH])
به عنوان مثال اگر بخواهیم پایه شماره 12 را به عنوان به سطح High ببریم در این صورت میتوانیم از دستور زیر استفاده کنیم:
GPIO.output(12, GPIO.HIGH)
توجه داشته باشید که در اینجا منظور از سطح منطقی High ، همان 3.3 ولت و سطح منطقی LOW ، همان زمین است. البته برای سادگی کار نیز میتوانید به جای GPIO.HIGH از 1 یا True و به جای GPIO.LOW از 0 یا False استفاده کنید.
خوب دوستان. برای این جلسه کافی است. در جلسه بعد موضوعات ورودی خروجی را تکمیل میکنیم. مثل همیشه میتوانید برای اطلاع از آموزش های جدید سایت و همچنین مطالبی که در سایت منتشر نمی شوند ما را در تلگرام و یا اینستاگرام دنبال کنید:
دیدگاهتان را بنویسید