آموزش رزبری پای رزبری پای میکروپایتون Micropython

آموزش میکروپایتون با رزبری پای پیکو بخش سوم: پایه های GPIO & Pins

getting-started-with-raspberry-pi-pico-micropython-part-three-gpio-pins-digispark
نوشته شده توسط پریسا پوربلورچیان

رزبری پای پیکو Raspberry Pi PICO دارای ۳۰ پایه GPIO است. هر پایه های GPIO رزبری Pico دارای ماهیت متفاوتی است و نقش متفاوتی را برای ما ایفا می‌کنند. برای استفاده از این ۳۰ پایه نیاز به دانش برنامه نویسی میکروپایتون خواهیم داشت. در میکروپایتون از کلاس های پایتون برای کدنویسی استفاده می‌کنیم. هر کلاس شامل تعدادی توابع است که برای فراخوانی استفاده می‌شود. در این آموزش کلاس های مورد نیاز برای استفاده از PINS & GPIO در برد رزبری پای پیکو را یاد خواهیم گرفت. در ادامه با مرجع تخصصی میکروپایتون با رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.

میکروپایتون با پیکو pico - دیجی اسپارک

 


 بررسی پایه هاPins & GPIO رزبری پای پیکو


برد Raspberry Pi Pico دارای تعدادی پین GPIO (ورودی/خروجی عمومی) است که برای اتصال به انواع دستگاه‌ها و ماژول‌های الکترونیکی استفاده می‌شوند. این پایه‌ها در دو ردیف و به شکل دو ورودی سمت به سمت و با مرکز مشترک قرار دارند. در کل، Raspberry Pi Pico دارای ۲۶ پایه GPIO است. این پایه‌ها به شرح زیر هستند:

ردیف ۱ (Row 1):

GP0
GP1
GP2
GP3
GP4
GP5
GP6
GP7
GP8
GP9
GP10
GP11
GP12
GP13
GP14
GP15

ردیف ۲ (Row 2):

GP16
GP17
GP18
GP19
GP20
GP21
GP22
GP23
GP24
GP25
GP26
GP27

 

هر یک از این پایه‌ها می‌توانند به عنوان ورودی یا خروجی تنظیم شوند و از طریق کد برنامه‌نویسی، می‌توانید به آنها سیگنال‌های دیجیتالی مختلفی اعمال کنید. همچنین، برخی از این پایه‌ها می‌توانند به عنوان ورودی‌های آنالوگ برای خواندن سیگنال‌های آنالوگ استفاده شوند. این پایه‌ها از برنامه‌نویسان امکان اتصال و کنترل متنوعی از دستگاه‌ها و سنسورها را فراهم می‌کنند.

جهت فراخوانی پایه های GPIO رزبری Pico از زبان برنامه نویسی میکروپایتون استفاده می‌کنیم. زبان برنامه نویسی میکروپایتون برگرفته از پایتون و توسعه یافته برای بردهای امبدد است. در میکروپایتون از کلاس ها برای فراخوانی تابع مورد نظر استفاده می‌شود. برای فراخوانی پایه های GPIO رزبری Pico از کلاس machin.Pin استفاده می‌کنیم.

class Pin – control I/O pins کلاس پایه ها – کنترل پایه های I/O:

از آبجکت Pin برای کنترل پایه ها I/O یا همان GPIO استفاده می‌شود. آبجکت های تعریف شده برای پایه ها با پایه های فیزیکی مرتبط است و برای دریافت دیتا از ولتاژ ورودی و خروجی استفاده می‌شود. کلاس پین ها دارای یک متد مشخص برای مشخص کردن ورودی، خروجی IN ,OUT است که توسط این کلاس سطح منطقی دیجیتال مانند کنترل ورودی آنالوگ مشخص خواهد شد. آبجکت های تعریف شده برای هر پایه هویت آن پایه را مشخص می‌کند.

 

متذ تعریف پایه ها در کلاس GPIO رزیری پای پیکو

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

برای مشخص کردن وضعیت پایه ها از کلاس های زیر استفاده می‌شود.

دستورات پایه های GPIO رزبری پای پیکو در میکروپایتون - دیجی اسپارک

 

نام گذاری پایه های GPIO رزبری پای پیکو - دیجی اسپارک

 


مثال ۱ – روشن شدن LED داخلی


در مثال اول ال ای دی داخلی برد رزبری پای پیکو را فعال می‌کنیم. ال ای دی داخلی به پایه های GPIO رزبری Pico شماره ۲۵ برد متصل است. برای فراخوانی این پایه آبجکت machin.Pin را وارد برنامه می‌کنیم. اگر بخواهیم ال ای دی روی برد روشن شود، بایستی از کلاس P0.value(1) استفاده کنیم. منظور از p0 پایه انتخابی است که دلخواه است.

from machine import Pin
led = Pin(25, Pin.OUT)
led.value(1)

در این کد ال ای دی gpio شماره ۲۵ است و مد کاری آن Pin.OUT است که به معنی خروجی است. سپس این پایه در متغیری با نام دلخواه led ذخیره شده است. در نهایت برای روشن شدن ال ای دی متغیر بایستی دارای مقدار ۱ باشد تا روشن شود.

مثال 1 - روشن شدن LED داخلی رزبری پیکو با میکروپایتون - دیجی اسپارک

 

  • ۱: قدم اول انتخاب برد MicroPython (Raspberry Pi Pico) است.
  • ۲: کد را در صفحه ی جدید تایپ کنید.
  • ۳: سپس RUN کنید.
  • برنامه اجرا شده و ال ای دی روی برد طبق تصویر زیر روشن خواهد شد.

کنترل ال ای دی با میکروپایتون در رزبری پای Pico - دیجی اسپارک

 


مثال ۲: اضافه شدن کلید


در مثال دوم شناخت پایه های GPIO رزبری Pico یک ورودی به صورت فیزیکی همانند کلید در برنامه اضافه می‌کنیم. بدین صورت که با فشردن کلید ال ای دی روشن شود. برای اینکار در ابتدا کلید بایستی در نقش ورودی پول دان در برنامه تعریف شود. ال ای دی نقش خروجی دارد و در برنامه به صورت OUTPUT تعریف می‌شود. کد برنامه به صورت زیر است.

from machine import Pin
import time

led = Pin(15, Pin.OUT)
button = Pin(14, Pin.IN, Pin.PULL_DOWN)

while True:
    if button.value():
	    led.toggle()
        time.sleep(0.5)

 

مثال 2: اضافه شدن کلید در میکروپایتون با Pico - دیجی اسپارک

 

کدنویسی رزبری پای پیکو با میکروپایتون micropython - دیجی اسپارک

 

در این کد از بازه زمانی برای ایجاد وقفه در برنامه استفاده شده است که در آموزش های بعدی توابع و کلاس های مورد نیاز را فرا خواهیم گرفت. دو مود Mode در این کد استفاده شده است. ورودی به صورت زیر تعریف شده است.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

دستور وقفه در میکروپایتون با Pico - دیجی اسپارک


اتصال کلید و LED به رزبری پای پیکو


برای انجام اتصالات از تمامی پایه های GP سبز رنگ میتوانید استفاده کنید.

  • پایه ال ای دی را به پایه GP14 اتصال دهید.
  • پایه کوتاه را به پایه GND اتصال دهید.
  • پایه کلید را به پایه ی GP13 اتصال دهید.
  • پایه دیگر کلید را به پایه ۳٫۳ ولت اتصال دهید.

اتصال کلید و LED به رزبری پای پیکو - دیجی اسپارک

 


وسایل مورد نیاز


رزبری پای پیکو 

ال ای دی

میکروسوییج

 

کد نویسی میکروپایتون با رزبری پای پیکو پروژه ال ای دی و میکروسوئیچ - دیجی اسپارک

 


جمع بندی لیدی پای


در بخش سوم از سری آموزش های مقدماتی یادگیری میکروپایتون با رزبری پای پیکو کلاس machin.Pin را بررسی کردیم و سپس تمامی کلاس های تابع را تحلیل کردیم. در صورتیکه بخواهیم قطعات و دیوایس های مورد استفاده در نقش ورودی و خروجی باشند و مود کاری هر کدام وابسته به سناریوی تعریف شده در پروژه باشد، از این کلاس ها در بخش اول کدنویسی استفاده می‌کتیم. ورودی ها میتوانند به صورت پول آپ و یا پول دان و یا هیچ کدام باشد. خروجی فقط دارای یک هویت مشخص out است که در کد برنامه تعریف می‌شود.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۸ دیدگاه

  • سلام
    عالی و کاربردی توضیح دادید. سپاس از شما که باعث رشد جامعه کاربری فارسی زبان هستید.

    • با سلام
      بله حتما باید رعایت کنید در غیر اینصورت با خطا مواجه خواهید شد.

  • سلام و خسته نباشید
    برنامه نویسی بسیار شبیه به سی پلاس پلاس در آردوینو است و واقعا سخته و جالبه

    • با سلام
      سپاس از همراهی شما بله اگر الگوریتم را بلد باشید قطعا کدنویسی ساده تر خواهد شد.

    • با سلام
      بله برای یادگیری کدنویسی میکروها و بردها بهترین روش یادگیری اصول کدنویسی و اجرا در لحظه و نمایش آن است.

    • با سلام
      در بخش کامنت ها این مورد امکان پذیر نیست اما در آموزش های آتی اضافه خواهد شد.

  • با سلام
    مهندس اگر به جای کلیدی از سنسور دیگری استفاده کنیم باید کد را تغییر دهیم مثلا سنسور مادون قرمز یا سنسورهای دیجیتال دیگر

  • خسته نباشید من وقتی به ide وصلش میکنم چراغم روشن نمیشه منظورم بدون کدنویسی هست آیا سوخته :((((

    • با سلام
      بله فقط یک بار در اول برنامه فراخوانی می‌کنیم و به تعداد دفعات استفاده ارتباطی ندارد.

    • با سلام
      بله از تمامی کلاس ها و توابع پایتون برای میکروپایتون هم میتوانید استفاده کنید اما در نظر داشته باشید کمی دشوار خواهد بود.

    • با سلام
      برای ورودی ها در صورت تمایل میتوانید از مقاومت به صورت خارجی استفاده نکنید و در کد برنامه آن را داخلی تعریف کنید.

  • سلام آیا سرعت میکروپایتون از سی پلاس پلاس بیشتره؟
    چه جوری میشه با استفاده از میکروپایتون سرعت و کارایی سیستم را توسعه داد؟

    • سلام
      سرعت میکروپایتون کمتر از C++ است، اما در برخی موارد می توان از آن برای پروژه های خاصی استفاده کرد. میکروپایتون یک زبان برنامه نویسی اسکریپتی است و به دلیل طراحی ساده و کم حجم خود، امکانات کافی برای توسعه سیستم های کوچک و ساده را فراهم می کند.