📌 پین اوت رزبری پای پیکو: نقشهی کامل ۴۰ پایه، GP، ADC، I2C، SPI، UART و تغذیه
اولین چیزی که موقع کار با هر بردی لازم داری، نقشهی پایههایش است. در این مقاله پین اوت رزبری پای پیکو (Raspberry Pi Pico Pinout) را کامل و به زبان ساده مرور میکنیم: کدام پایه GPIO است، کدام زمین و تغذیه، ورودی آنالوگ کجاست، I2C و SPI و UART روی کدام پایهها مینشینند و چرا هیچوقت نباید ۵ ولت به این برد بدهی. یک جدول کامل ۴۰ پایه هم داریم که میتوانی کنار دستت نگه داری.
دو نوع شماره: فیزیکی و GP
مهمترین نکتهی این صفحه همین است. هر پایهی پیکو دو شماره دارد:
- شمارهی فیزیکی (۱ تا ۴۰): جای سوراخ روی برد. اگر برد را طوری بگذاری که کانکتور USB بالا باشد، پایهی ۱ گوشهی بالا-چپ است، شمارهها در سمت چپ رو به پایین تا ۲۰ میروند و در سمت راست از ۲۱ پایین رو به بالا تا ۴۰ برمیگردند.
- شمارهی GP (مثل GP15): اسم پایه در تراشهی RP2040. در کد همیشه همین را مینویسی.
Pin(15)یعنی GP15، که پایهی فیزیکی ۲۰ است.
بیشتر اشکالهای «LED من روشن نمیشود» در پروژههای پیکو از قاطی کردن این دو شماره میآید.
جدول کامل ۴۰ پایه
جدول مثل خود برد چیده شده: هر سطر یک پایهی سمت چپ و پایهی روبهرویش در سمت راست را نشان میدهد (USB بالا).
| فیزیکی | سمت چپ | فیزیکی | سمت راست |
|---|---|---|---|
| 1 | GP0 · UART0 TX · I2C0 SDA · SPI0 RX | 40 | VBUS (۵ ولت USB) |
| 2 | GP1 · UART0 RX · I2C0 SCL · SPI0 CSn | 39 | VSYS (ورودی تغذیه ۱٫۸ تا ۵٫۵ ولت) |
| 3 | GND | 38 | GND |
| 4 | GP2 · I2C1 SDA · SPI0 SCK | 37 | 3V3_EN |
| 5 | GP3 · I2C1 SCL · SPI0 TX | 36 | 3V3(OUT) |
| 6 | GP4 · UART1 TX · I2C0 SDA · SPI0 RX | 35 | ADC_VREF |
| 7 | GP5 · UART1 RX · I2C0 SCL · SPI0 CSn | 34 | GP28 · ADC2 |
| 8 | GND | 33 | AGND (زمین آنالوگ) |
| 9 | GP6 · I2C1 SDA · SPI0 SCK | 32 | GP27 · ADC1 · I2C1 SCL |
| 10 | GP7 · I2C1 SCL · SPI0 TX | 31 | GP26 · ADC0 · I2C1 SDA |
| 11 | GP8 · UART1 TX · I2C0 SDA · SPI1 RX | 30 | RUN (ریست) |
| 12 | GP9 · UART1 RX · I2C0 SCL · SPI1 CSn | 29 | GP22 |
| 13 | GND | 28 | GND |
| 14 | GP10 · I2C1 SDA · SPI1 SCK | 27 | GP21 · I2C0 SCL |
| 15 | GP11 · I2C1 SCL · SPI1 TX | 26 | GP20 · I2C0 SDA |
| 16 | GP12 · UART0 TX · I2C0 SDA · SPI1 RX | 25 | GP19 · I2C1 SCL · SPI0 TX |
| 17 | GP13 · UART0 RX · I2C0 SCL · SPI1 CSn | 24 | GP18 · I2C1 SDA · SPI0 SCK |
| 18 | GND | 23 | GND |
| 19 | GP14 · I2C1 SDA · SPI1 SCK | 22 | GP17 · UART0 RX · I2C0 SCL · SPI0 CSn |
| 20 | GP15 · I2C1 SCL · SPI1 TX | 21 | GP16 · UART0 TX · I2C0 SDA · SPI0 RX |
یک الگوی ساده کمک میکند جدول را حفظ نکنی: زمینها هر پنج پایه یک بار تکرار میشوند (۳، ۸، ۱۳، ۱۸ و روبهرویشان ۲۳، ۲۸، ۳۳، ۳۸). پس اگر GND لازم داری، همیشه یکی نزدیک دستت هست.
پایههای GPIO و پایههای پنهان
۲۶ پایهی همهکاره (GPIO) روی لبهی برد هست: GP0 تا GP22 و GP26 تا GP28. هر کدام میتواند ورودی یا خروجی دیجیتال باشد، مقاومت بالاکش یا پایینکش داخلی دارد، وقفه میگیرد و PWM میدهد. چهار GP دیگر داخل برد مصرف شدهاند:
- GP25: LED سبز روی برد (در پیکوی معمولی). روی Pico W این LED به چیپ وایفای وصل است و باید با
Pin("LED")صدایش کنی. - GP23: حالت کار رگولاتور برد را تعیین میکند. اگر ۱ باشد، نویز تغذیه کمتر میشود و خوانش ADC آرامتر.
- GP24: تشخیص اینکه کابل USB وصل است یا نه.
- GP29 (ADC3): یکسوم ولتاژ VSYS را میخواند؛ برای اندازهگرفتن ولتاژ باتری.
پایههای تغذیه
| پایه | کارش | نکته |
|---|---|---|
| VBUS (40) | ۵ ولت مستقیم از USB | فقط وقتی USB وصل است برق دارد؛ جای خوبی برای تغذیهی سروو کوچک، نئوپیکسل و ماژولهای ۵ ولتی. |
| VSYS (39) | ورودی اصلی تغذیه | ۱٫۸ تا ۵٫۵ ولت؛ مثلاً سه باتری قلمی یا یک باتری لیتیومی. با یک دیود از VBUS جدا شده. |
| 3V3(OUT) (36) | خروجی ۳٫۳ ولت رگولاتور برد | برای سنسورها و نمایشگرها. بهتر است کل مصرف را زیر حدود ۳۰۰ میلیآمپر نگه داری. موتور و سروو هرگز. |
| 3V3_EN (37) | روشن/خاموش کردن رگولاتور | اگر به GND وصلش کنی، کل برد خاموش میشود. |
| RUN (30) | ریست | یک دکمه بین RUN و GND بگذار تا دکمهی ریست داشته باشی؛ خود پیکو دکمهی ریست ندارد. |
| ADC_VREF (35) و AGND (33) | مرجع و زمین آنالوگ | برای سنسورهای آنالوگ دقیق، زمین سنسور را به AGND بزن. |
ورودیهای آنالوگ (ADC)
پیکو سه ورودی آنالوگ بیرونی دارد: GP26 (ADC0)، GP27 (ADC1) و GP28 (ADC2). مبدل داخلی ۱۲ بیتی است و میکروپایتون عددش را به بازهی ۰ تا ۶۵۵۳۵ میبرد. بیشینهی ولتاژ ورودی ۳٫۳ ولت است. کانال پنجم (ADC4) سنسور دمای داخل تراشه است. جزئیات و کد کامل در ADC پیکو با میکروپایتون آمده.
I2C، SPI و UART: کدام پایهها با هم جورند؟
پیکو برای هر رابط دو نسخه دارد (شمارهی ۰ و ۱) و هر کدام را میشود روی چند جفت پایه نشاند. قانون طلایی: شمارهی رابط در کد باید با پایهها جور باشد. مثلاً GP4 و GP5 مال I2C(0) هستند؛ اگر بنویسی I2C(1, sda=Pin(4), scl=Pin(5))، خطای ValueError: bad SDA pin میگیری.
| رابط | پایههای رایج | کاربرد |
|---|---|---|
| I2C0 | SDA=GP4، SCL=GP5 (یا GP0/GP1، GP8/GP9، GP16/GP17، GP20/GP21) | OLED، LCD I2C، ساعت DS3231 |
| I2C1 | SDA=GP2، SCL=GP3 (یا GP6/GP7، GP14/GP15، GP18/GP19، GP26/GP27) | باس دوم برای دستگاههای بیشتر |
| SPI0 | SCK=GP18، TX(MOSI)=GP19، RX(MISO)=GP16، CS=GP17 | کارت SD، نمایشگرهای رنگی |
| SPI1 | SCK=GP10، TX=GP11، RX=GP12، CS=GP13 | دستگاه SPI دوم |
| UART0 | TX=GP0، RX=GP1 (یا GP12/GP13، GP16/GP17) | ارتباط سریال با برد دیگر |
| UART1 | TX=GP4، RX=GP5 (یا GP8/GP9) | بلوتوث HC-05، GPS |
برای مثال، نمایشگر OLED و LCD با رابط I2C معمولاً روی GP4 و GP5 مینشینند و ماژول بلوتوث HC-05 روی UART1.
PWM روی همهی پایهها
هر GPIO پیکو میتواند PWM بدهد. سختافزار PWM هشت «برش» (slice) دارد و هر برش دو کانال A و B؛ یعنی ۱۶ خروجی مستقل. دو پایهی کنار هم (مثل GP14 و GP15) یک برش را شریکاند و فرکانس یکسان دارند، هرچند دیوتیشان جداست. GP0 و GP16 دقیقاً یک کانالاند و خروجی یکسان میدهند. در آموزش PWM با میکروپایتون این را عملی میبینی.
قانون ۳٫۳ ولت و جریان پایهها
- پایههای پیکو ۵ ولت را تحمل نمیکنند. خروجی ماژول ۵ ولتی را با تقسیم ولتاژ (مثلاً ۱ و ۲ کیلواهم) یا مبدل سطح وصل کن.
- هر پایه بهطور پیشفرض برای حدود ۴ میلیآمپر تنظیم شده و تا ۱۲ میلیآمپر قابل تنظیم است؛ برای یک LED با مقاومت ۲۲۰ تا ۳۳۰ اهم کافی است. موتور، رله و سروو را هرگز مستقیم از پایه تغذیه نکن.
- همهی زمینها (GND پیکو، منبع جدا، ماژولها) باید به هم وصل باشند.
یک برنامه برای امتحان چند پایه
این کد میکروپایتون سه LED را روی GP15، GP14 و GP13 پشت سر هم روشن میکند، یک پتانسیومتر را روی GP26 میخواند، باس I2C0 را جستوجو میکند و در آخر LED روی برد را چشمک میزند:
from machine import Pin, ADC, I2C
import time
# 1) Three LEDs (each with a 220 ohm resistor) on GP15, GP14, GP13
leds = [Pin(n, Pin.OUT) for n in (15, 14, 13)]
for led in leds:
led.on()
time.sleep(0.3)
led.off()
# 2) Analog input: GP26 = ADC0 (physical pin 31)
knob = ADC(26)
print("ADC0 raw:", knob.read_u16())
# 3) I2C0 on GP4 (SDA, pin 6) and GP5 (SCL, pin 7)
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
print("I2C devices:", [hex(a) for a in i2c.scan()])
# 4) The on-board LED (works on Pico and Pico W)
onboard = Pin("LED", Pin.OUT)
while True:
onboard.toggle()
time.sleep(0.5)
اگر یک OLED روی I2C وصل باشد، خروجی خط سوم ['0x3c'] است و برای LCD I2C معمولاً ['0x27']. اگر لیست خالی بود، SDA و SCL را چک کن.
اشکالهای رایج
- LED روی پایهی اشتباه: سیم را به پایهی فیزیکی ۱۵ زدهای و در کد
Pin(15)نوشتهای. پایهی فیزیکی ۱۵ در واقع GP11 است. - ValueError: bad SCL pin: شمارهی باس I2C با پایهها جور نیست. جدول بالا را ببین.
- برد با باتری روشن نمیشود: باتری را به VBUS زدهای؛ جای درستش VSYS است.
- خوانش ADC صفر یا ثابت است: پتانسیومتر را به GP22 یا پایهای غیر از GP26 تا GP28 وصل کردهای؛ فقط این سه آنالوگاند.
- برد ناگهان ریاستارت میشود: سروو یا موتور را از 3V3(OUT) تغذیه کردهای؛ آن را به VBUS یا منبع جدا ببر.
امتحان در شبیهساز
در شبیهساز تینکرکد فارسی میتوانی یک رزبری پای پیکو مجازی برداری و سیمکشی را با همین جدول، بدون ترس از سوختن برد، تمرین کنی. مثال آمادهی UART و بلوتوث HC-05 با MicroPython هم نشان میدهد UART1 چطور به کار میرود. پیکو و میکروپایتون جزو اشتراک پلاس هستند؛ مثالها برای خواندن رایگان باز میشوند و برای اجرا پلاس لازم است. اگر پیکو را با زبان آردوینو برنامهنویسی میکنی، در آنجا A0 تا A2 همان GP26 تا GP28 است؛ راهنمایش در برنامهنویسی پیکو با زبان آردوینو است. برای مقایسه با برد دیگر هم پین اوت ESP32 را ببین، و برای کلیات برد صفحهی رزبری پای پیکو را.
پیکو را در شبیهساز ببین 📌سؤالهای رایج
رزبری پای پیکو چند پایهی GPIO دارد؟
۲۶ پایهی GPIO روی لبهی برد در دسترس است: GP0 تا GP22 و GP26 تا GP28. سه پایهی GP26، GP27 و GP28 ورودی آنالوگ (ADC) هم هستند. GP23، GP24، GP25 و GP29 داخل برد به کارهای دیگری مثل LED و اندازهگیری ولتاژ وصلاند.
آیا پایههای پیکو ۵ ولت را تحمل میکنند؟
نه. پایههای رزبری پای پیکو ۳٫۳ ولتیاند و ۵ ولت میتواند به تراشه آسیب بزند. خروجی ماژولهای ۵ ولتی مثل Echo سنسور HC-SR04 را با تقسیم ولتاژ یا مبدل سطح به پیکو وصل کن.
فرق VBUS و VSYS و 3V3 چیست؟
VBUS همان ۵ ولت کابل USB است. VSYS ورودی اصلی تغذیهی برد است و از ۱٫۸ تا ۵٫۵ ولت قبول میکند، مثلاً از باتری. 3V3(OUT) خروجی رگولاتور برد است و برای سنسورهای کممصرف ۳٫۳ ولتی مناسب است، نه برای موتور یا سروو.
در کد پایه را با چه شمارهای صدا بزنم؟
با شمارهی GP. در میکروپایتون Pin(15) یعنی GP15 که پایهی فیزیکی ۲۰ است. شمارهی فیزیکی فقط برای پیدا کردن سوراخ روی برد است.
مقالههای مرتبط
PWM با میکروپایتون روی رزبری پای پیکو: LED نفسکش با duty_u16 و freq
ADC رزبری پای پیکو با میکروپایتون: خواندن پتانسیومتر با read_u16 و تبدیل به ولتاژ
سروو موتور با میکروپایتون روی رزبری پای پیکو: PWM پنجاه هرتز و کنترل زاویه
فاصلهسنج اولتراسونیک HC-SR04 با آردوینو
همهی آموزشهای رزبری پای پیکو و میکروپایتون ← · همهی مقالهها