مقدمه
پینهای GPIO (ورودی و خروجی همه منظوره) را میتوان به عنوان وردی یا خروجی به کار بست. این پینها به رزبریپای این امکان را میدهند تا با دستگاههای I/O همه منظوره اتصال برقرار کند.
- رزبریپای ۳ مدل B26، پین GPIO روی بورد خود دارد.
- از طریق این GPIOها، رزبریپای قادر است دستگاههای ورودی و خروجی خارجی بسیاری را کنترل کند.
- این پینها رابط فیزیکی بین رزبریپای و دنیای خارج هستند.
- میتوان این پینها را مطابق نیاز و برای تعامل با دستگاههای خارجی برنامهریزی کرد. برای مثال، اگر بخواهیم وضعیت یک سوییچ فیزیکی را مشاهده کنیم، میتوان هر کدام از این پینها را به صورت ورودی تنظیم کرده و از طریق آن وضعیت سوییچ را خوانده و تصمیم مناسب را اتخاذ کنیم. میتوان هر کدام از این پینها را برای کنترل روشن و خاموش کردن LED به صورت خروجی تنظیم کنیم.
- رزبریپای قادر است که با استفاده از wifi روی بورد یا آداپتور Wifi USB به اینترنت متصل شود. هنگامی که رزبریپای به اینترنت متصل شد، میتوان دستگاههایی که به رزبریپای متصل هستند را از راه دور کنترل کرد.
پینهای GPIO رزبریپای در شکل زیر نشان داده شدهاند.
برخی از این پینهای GPIO با عملکردهای دیگری همانند I2C ، SPI ، UART و… مالتی پلکس شدهاند.
میتوان از این پینها برای کاربردهای خاص مد نظر خودمان بهره بگیریم.
شماره گذاری پینها
باید پین GPIO مورد استفاده را به صورت ورودی یا خروجی تعریف کنیم. رزبریپای دو روش برای تعریف شماره پینها دارد که به قرار زیر است.
- شماره گذاری GPIO
- شماره گذاری فیزیکی
در شماره گذاری GPIO، شماره پین به شماره روی Broadcom SoC اشاره میکند. بنابراین، باید همیشه نگاشت پینها برای استفاده از پین GPIO را مد نظر داشت.
در حالیکه در شماره گذاری فیزیکی، شماره پین به یکی از پینهای چهل گانهی هدر P1 روی بورد رزبریپای اشاره دارد. شماره گذاری فیزیکی ساده است زیرا میتوان به راحتی پینهای روی هدر P1 را شمرده و به GPIO اختصاص داد.
اما باید دیاگرام پیکربندی پینها در بالا را در نظر داشت تا بدانیم کدام پینها، پینهای VCC و GND میباشند.
حالا اجازه دهید با استفاده از سوییچ متصل به رزبریپای یک LED را کنترل کنیم. در اینجا، از پایتون و WiringPI) C) برای خاموش و روشن کردن LED استفاده میکنیم.
کنترل LED با استفاده از پایتون
اکنون، اجازه دهید LED را با استفاده از پایتون روی رزبریپای خاموش و روشن کنیم. سوییچ برای کنترل LED استفاده میشود.
برنامه پایتون
import RPi.GPIO as GPIO #import RPi.GPIO module LED = 32 #pin no. as per BOARD, GPIO18 as per BCM Switch_input = 29 #pin no. as per BOARD, GPIO27 as per BCM GPIO.setwarnings(False) #disable warnings GPIO.setmode(GPIO.BOARD) #set pin numbering format GPIO.setup(LED, GPIO.OUT) #set GPIO as output GPIO.setup(Switch_input, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: if(GPIO.input(Switch_input)): GPIO.output(LED,GPIO.LOW) else: GPIO.output(LED,GPIO.HIGH)
توابع به کاررفته
تابع RPI.GPIO
برای استفاده از پینهای GPIO در پایتون، باید پکیج RPI.GPIO را که حاوی یک کلاس برای کنترل GPIO است را وارد کنیم. پکیج RPI.GPIO پایتون، بر روی سیستم عامل رزبین از پیش نصب شده است. بنابراین نیاز به نصب آن نیست. تنها باید این کتابخانه را در برنامهی خود ضمیمه کرده و از توابع آن برای دسترسی به GPIO در پایتون بهره بگیریم. این کار به صورت زیر انجام میشود.
import RPi.GPIO as GPIO
تابع GPIO.setmode (سیستم شماره گذاری پینها)
این تابع برای تعریف سیستم شماره گذاری پینها، یعنی شماره گذاری GPIO یا شماره گذاری فیزیکی استفاده میشود.
در تابع RiPi.GPIO، سیستم شماره گذاری GPIO به صورت BCM شناسایی میشود و سیستم شماره گذاری فیزیکی به صورت BOARD شناسایی میشود.
Pin Numbering System = BOARD/BCM
برای مثال، اگر شماره پین ۴۰ از هدر P1 را به عنوان شماره پین به عنوان خروجی به کار ببریم، آنگاه،
در BCM:
GPIO.setmode(GPIO.BCM) GPIO.setup(21, GPIO.OUT)
در BOARD:
GPIO.setmode(GPIO.BOARD) GPIO.setup(40, GPIO.OUT)
تابع channel ،direction ،initial value ،pull up/pull down) GPIO.setup)
این تابع برای تنظیم جهت پینهای GPIO به صورت ورودی/خروجی به کار میرود.
- Channel: شماره پین GPIO مطابق سیستم شماره گذاری.
- Direction: تعیین جهت پین GPIO به صورت ورودی یا خروجی.
- Initial value: میتوان یک مقدار آغازین تعیین کرد.
- Pull up/ pull down: در صورت نیاز میتوان حالت بالاکش یا پایین کش را فعال کرد.
به مثالهایی که در ادامه آورده شده است توجه نمایید.
– GPIO به عنوان خروجی:
GPIO.setup(channel, GPIO.OUT)
– GPIO به عنوان ورودی:
GPIO.setup(channel, GPIO.IN)
– GPIO به عنوان خروجی با مقداراولیه:
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
– GPIO به عنوان ورودی با مقاومت بالاکش:
GPIO.setup(channel, GPIO.IN, pull_up_down = GPIO.PUD_UP)
تابع channel, state) GPIO.output)
این تابع برای تنظیم حالت خروجی پین GPIO به کار میرود.
- Channel: شماره پین GPIO مطابق با سیستم شماره گذاری.
- State: حالت خروجی، HIGH یا LOW.
مثال
GPIO.output(7, GPIO.HIGH)
تابع channel) GPIO.input)
این تابع برای خواندن مقدار پین GPIO استفاده میشود.
مثال
GPIO.input(9)
- منبع: ترجمه از سایت electronicwings.com
اگر آموزش دسترسی به ورودی و خروجیهای همه منظوره رزبریپای براتون مفید واقع شده ما را نیز دعا کنید. اپلیکیشن ما را هم نصب کنید و اگر خواستین میتوانید از محتوای رایگان آموزشی حمایت مالی کنید. همچنین نظرات، پیشنهادات و درخواستهای خود را در کامنتها ⇓ بنویسید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.