GPIO یا General Purpose Input/Output یکی از اصلیترین ویژگیهای بردهای الکترونیکی و میکروکنترلرها مثل آردوینو (Arduino)، رزبری پای (Raspberry Pi)، ESP32 و STM32 است. این پینها امکان تعامل با دنیای بیرون را برای دستگاههای الکترونیکی فراهم میکنند و در پروژههای متنوعی از روشن کردن LED گرفته تا اتصال سنسورهای هوشمند در اینترنت اشیا (IoT) کاربرد دارند.
در این مقاله، به بررسی کامل و جامع GPIO چیست، عملکرد آن در حالت ورودی و خروجی، نحوه استفاده در بردهای توسعه، مفاهیم فنی مثل Pull-up / Pull-down و انواع خروجیها مانند Open Drain یا Push-Pull میپردازیم.
GPIO چیست؟ (General Purpose Input/Output)
GPIO مخفف عبارت General Purpose Input/Output است و به پایههایی روی میکروکنترلر یا برد توسعه گفته میشود که میتوانند به عنوان ورودی یا خروجی دیجیتال تنظیم و برنامهریزی شوند. این پینها به کاربر اجازه میدهند وضعیت دستگاههایی مانند سنسورها، سوئیچها، رلهها، موتور، LEDها و سایر قطعات دیجیتال یا آنالوگ را مدیریت و کنترل کنند.
عملکرد GPIO چگونه است؟
هر پین GPIO میتواند یکی از دو حالت زیر را داشته باشد:
حالت ورودی (Input)
در این حالت، پین GPIO داده یا سیگنال را از محیط خارجی (مثل کلید یا سنسور) دریافت میکند و آن را به پردازنده گزارش میدهد.
- مثال واقعی: تشخیص فشردهشدن یک دکمه.
- مفاهیم مربوط: Pull-up، Pull-down، حالت Floating، ورودی Interrupt یا وقفه.
حالت خروجی (Output)
در حالت خروجی، برد الکترونیکی یا میکروکنترلر از طریق پین GPIO سیگنالی را به بیرون ارسال میکند تا عملیاتی روی دستگاهی خارجی انجام شود.
- مثال واقعی: روشن کردن یک LED یا فعالسازی یک رله.
- انواع خروجی: Push-Pull، Open Drain، کنترل PWM، خروجی DAC.
کاربرد GPIO چیست؟
پینهای GPIO تقریباً در تمام پروژههای الکترونیکی و دیجیتال کاربرد دارند:
ورودی:
- خواندن وضعیت کلید
- سنسور حرارتی
- سنسور حرکت
- مادون قرمز
- سایر ماژولها
خروجی:
- روشن یا خاموش کردن LED
- کنترل رله
- راهاندازی موتور
- ارسال سیگنال دیجیتال
این پینها میتوانند به عنوان ورودی (Input) یا خروجی (Output) پیکربندی شوند و تمام عملیات دیجیتال (و حتی آنالوگ، به کمک ADC/DAC) را با دقت بالا انجام دهند.
نحوه عملکرد GPIO چگونه است؟
پین ورودی (Input Pin)
در این حالت، پین اطلاعات دیجیتال را از محیط دریافت میکند.
برای مثال، در صورت فشردن یک دکمه (Push Button)، مدار به کمک GPIO متوجه این تغییر وضعیت میشود.
نکات فنی ورودی:
- حالت Pull-up یا Pull-down: برای جلوگیری از شناور بودن سیگنال
- حالت Interrupt (وقفه): پاسخدهی لحظهای به تغییر وضعیت
- ورودی آنالوگ یا دیجیتال: بسته به نوع پین و پردازنده
پین خروجی (Output Pin)
در این حالت، پین وضعیت High یا Low را به بیرون منتقل میکند.
مثال: روشن کردن یک LED، فعال کردن بیزر یا دادن فرمان به رله
انواع خروجی:
- Push-Pull: معمولترین حالت، دارای دو وضعیت HIGH و LOW
- Open-Drain: تنها وضعیت LOW دارد؛ برای وضعیت HIGH باید از مقاومت Pull-Up استفاده شود
- PWM (Pulse Width Modulation): خروجی موج مربعی برای کنترل روشنایی LED یا سرعت موتور
- DAC: خروجی آنالوگ واقعی در بردهای خاص
I/O چیست و چه تفاوتی با GPIO دارد؟
I/O به کلیت «ورودی و خروجی» در سیستمهای الکترونیک و رایانهای گفته میشود، درحالیکه GPIO فقط بخشی از I/O است که به صورت عمومی قابل پیکربندی و استفاده توسط کاربر میباشد.
GPIO در بردهای مختلف چگونه عمل میکند؟
GPIO در آردوینو (Arduino)
برد آردوینو پینهای Digital و Analog متعددی دارند. از طریق توابع زیر میتوان از GPIO استفاده کرد:
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
GPIO در رزبری پای (Raspberry Pi)
در رزبری پای، پین GPIO دارای شمارهبندی مخصوص هستند و از زبان Python با کتابخانههایی مثل RPi.GPIO یا gpiozero کنترل میشوند.
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, True)
ESP32 و ESP8266
این دو چیپ محبوب در پروژههای اینترنت اشیا، دارای پینهای GPIO با قابلیتهای چندمنظوره هستند، از جمله: ADC، DAC، PWM، Touch، I2C و SPI.
STM32
در STM32 پیکربندی GPIO بهصورت پیشرفتهتر انجام میشود، و ویژگیهایی مانند Slew Rate Control، Alternate Functions، External Interrupt و محافظت اضافه دارد.
انواع ورودی/خروجی در GPIO
نوع پین | عملکرد | مثال کاربردی |
---|---|---|
ورودی دیجیتال | خواندن 0 و 1 منطقی | دکمه فشاری |
ورودی آنالوگ | خواندن ولتاژ پیوسته | سنسور دما (LM35) |
ورودی Interrupt | پاسخ سریع به رخداد | سنسور حرکتی |
خروجی Push-Pull | توانایی ارسال 0 یا 1 | کنترل LED |
خروجی Open-Drain | ارسال صفر فقط | شبکه I2C یا رله |
خروجی DAC | تولید ولتاژ آنالوگ | کنترل صدا یا دقت بالا |
چه دستگاههایی از GPIO استفاده میکنند؟
GPIO در بسیاری از بردهای توسعه و میکروکنترلرها وجود دارد، از جمله:
- Arduino Uno / Mega / Nano
- ESP32 / ESP8266
- Raspberry Pi و Raspberry Pi Pico
- بردهای مبتنی بر STM32
- بردهای Allwinner، BeagleBone، Teensy و…
هر کدام از این دستگاهها با تعداد و قابلیتهایی متفاوت از GPIO پشتیبانی میکنند.
پیکربندی GPIO در فضای کاری یا OS ها
در بسیاری از سیستمعاملها مثل Linux، GPIO از طریق ترمینال نیز قابل کنترل است:
- بارگذاری ماژول GPIO در هسته لینوکس
- تعیین جهت پین (Input یا Output)
- خواندن مقدار (
cat /sys/class/gpio/gpioX/value
) - نوشتن مقدار (
echo 1 > /sys/class/gpio/gpioX/value
) - جداسازی ماژول و آزادسازی پینها
این روشها در بردهایی مانند Orange Pi، Banana Pi، BeagleBone یا Allwinner کاربرد دارند.
GPIO در فضای کاری لینوکس
در سیستمعاملهای embed مانند Raspbian یا Debian Linux در بردهای Allwinner یا BeagleBone، میتوان GPIO را از طریق خط فرمان یا Bash Script کنترل کرد.
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
همچنین امکان تولید فایل script.bin برای انتقال پیکربندی GPIO در سطح کرنل وجود دارد.
پروژههایی که با GPIO انجام میشوند
- روشن و خاموش کردن LED با دکمه
- کنترل یک رله برای روشن کردن چراغ لامپ AC
- خواندن سنسور دما یا حرکت
- کنترل موتور سروو یا استپر موتور
- اتصال به صفحهکلید یا نمایشگر LCD
سوالات متداول GPIO
GPIO در چه بردهایی وجود دارد؟
تقریباً تمام بردهای توسعه (Arduino، ESP، STM32، Pi) دارای GPIO هستند.
مقدار حداکثری جریان در پینهای GPIO چقدر است؟
وابسته به چیپ؛ آردوینو (حدود 40mA)، ESP32 (حدود 12mA)، STM32 (متفاوت)
میتوان چند دستگاه به یک GPIO متصل کرد؟
بله، در شرایط خاص مثل Open-Drain با مقاومت مناسب.
نتیجهگیری
درک عملکرد پین GPIO یک مهارت کلیدی در دنیای الکترونیک دیجیتال امروز است. چه در پروژههای ساده مانند کنترل LED، یا در سیستمهای پیشرفته اینترنت اشیا، شما نیاز دارید به طور کامل بدانید چگونه با GPIO کار کنید.
اگر تازهکار هستید، پیشنهاد ما شروع کار با برد آردوینو یا ESP32 است. باید براساس پروژه، نوع پین، ولتاژ و جریان و نوع خروجی خود، GPIO مناسب را انتخاب و پیکربندی کنید.
اگر به دنبال خرید انواع قطعات الکترونیکی اورجینال، مشاوره تخصصی یا تامین عمده پینهای GPIO و بردهای توسعه هستید، همین حالا با ولتاتک تماس بگیرید یا سفارش خود را به صورت آنلاین ثبت کنید.
ولتاتک، واردکننده مستقیم و تامینکننده معتبر قطعات الکترونیکی در ایران، آماده ارائه بهترین قیمت و پشتیبانی فنی به شماست.