فهرست مطالب
GPIO یا “General Purpose Input Output Pins” رابط اصلی بین Raspberry Pi و دستگاه ها ، سنسور ها و مدارهای دیجیتالی را تشکیل می دهد ، بدین صورت که پین های GPIO یک نقش عمومی به عنوان ورودی و خروجی و یک کارکرد اختصاصی به عنوان رابط I2C ، UART یا SPI دارند. در این اموزش به بررسی مختصر در مورد GPIO های موجود در Raspberry Pi می پردازیم و اطلاعات مختصری در مورد عملکردهای هر یک در اختیارتان قرار میدهیم.
این پین ها مستقیماً به تراشه Broadcom متصل شده است و بیشتر عملکردهای Raspberry Pi از همین پین ها ناشی می شود ، بنابراین یادگیری این اموزش بسیار ارزشمند است.زیرا Pi خود را میتوانید با یک اشتباه ساده در اتصال به پین ها، بسوزانید.
نحوه کنترل gpio در سیستم عامل Raspbian
GPIO ها از طریق Raspberry Pi به صورت نرم افزاری ، با استفاده از سیستم عامل استاندارد Raspbian یا با استفاده از زبان های برنامه نویسی C / C ++ یا Phython. کنترل می شوند . خوشبختانه ، لینوکس (Raspbian ) از زیر لایه های سیستمی GPIO خود به عنوان برنامه واسط سخت افزاری استفاده می کند ، بنابراین کاربران و برنامه نویسان دیگر نیازی به نگرانی در مورد اشتراک گذاری GPIO بین برنامه های مختلف ندارند.
GPIO به چه معنی است و چگونه کار می کند؟
GPIO یا به طور خلاصه General Purpose Input Output یک رابط استاندارد برای میکروکنترلرهاست که با با ارائه ورودی / خروجی دیجیتال با دیگر قطعات الکترونیکی ، ماژول ها و غیره ارتباط برقرارمی کند برای استفاده از پین های GPIO ، پیکربندی ها به صورت نرم افزاری صورت خواهد گرفت که کتابخانه های پایتون مانند GPIOzero در دسترس هستند تا کنترل نرم افزاری انها برای همه کاربران ساده تر باشد. علاوه بر این ، برای استفاده برنامه نویسان با تجربه از انها با C ، C ++ و ، کتابخانه های GPIO مانند wiringPI نیز موجود هست.
GPIO در رزبری پای
اگر ااز Raspberry Pi 2 B +، ، Zero، 3 یا جدیدترین Raspberry Pi 4 Model B استفاده می کنید ، متوجه خواهید شد که برد شما دارای 40 پین GPIO است. نمونه های قدیمی تر RPI مانند Raspberry Pi Model B ، فقط حاوی 26 پین می باشند. هر یک از پین های GPIO می تواند یا به عنوان پین ورودی / خروجی استفاده شود ، یا کاربردهای متنوع دیگری داشته باشند.
Raspberry Pi GPIO Pinout | Pin Functionality and Explanation |
GPIO | GPIO pins seen above are your standard pins to be used for turning devices on and off. |
Power Pins (+) | Two 5V and two 3V3 pins are present on the board to draw power from the Raspberry Pi |
I2C Pins | I2C pins are primarily used for connecting and hardware communication purposes for external modules that support such protocol. |
SPI | SPI (Serial Peripheral Interface Bus) pins share similar functionality as I2C, for hardware communication purposes |
UART | UART (Universal asynchronous receiver/trasmitter) pins are used for serial communication with other devices |
DNC | DNC pins refer to pins that you shouldn’t connect, as its name (Do Not Connect) suggest |
GND | GND (Ground) pins refer to pins to ground your devices. |
در زیر دیاگرام Raspberry Pi GPIO را برای هر سه مدل مشاهده می کنید:
تمام پین ها دارای سطح منطق 3.3 ولت بوده و سطح ولتاژ 5V را تحمل نمی کنند. بنابراین میزان ولتاژ خروجی هر یک 0-3.3 ولت است و ولتاژ ورودی نباید بیشتر از 3.3V باشد. پس اگر می خواهید یک خروجی 5 ولت را به ورودی Pi وصل کنید ، از یک انتقال دهنده سطح ولتاژ(level shifter) استفاده کنید.
نکته مهم
در Raspberry Pi Model 3B + رابط UART سخت افزاری سریال UART device /dev/ttyAMA0 برای ارتباط با بلوتوث داخلی مورد استفاده قرار گرفته است و دیگر در هدر پین های GPIO رزبری پای نشان داده نشده است. در عوض ، یک پورت سریال جدید ” dev / ttyS0 ” که مبتنی بر UART نرم افزاری (miniUART) می باشد، برای رزبری پای پیاده سازی شده است. این UART نرم افزاری از PARITY پشتیبانی نمی کند و برخی از کاربران با استفاده از این درگاه در سرعتهای بالاتر مشکلاتی را تجربه کرده اند. اگر به بلوتوث احتیاج ندارید ، می توانید برای استفاده دوباره از رابط سریال سخت افزاری ان را غیرفعال کنید..
شماره گذاری پین ها
دو روش برای شماره گذاری پین های GPIO روی برد Raspberry Pi وجود دارد:
- اولین روش مورد استفاده از سیستم شماره گذاری BOARD است. این روش به شماره های پین موجود در هدر P1 روی برد Raspberry Pi اشاره دارد. مزیت استفاده از این سیستم شماره گذاری ان است که سخت افزار شما بدون در نظر گرفتن نوع برد RPi همیشه کار خواهد کرد. دیگر نیازی به تنظیم مجدد اتصالات خود یا تغییر کد خود ندارید.
- دومین سیستم شماره گذاری شماره های BCM است. این روش که کمتر بین کاربران مرسوم است ، به شماره کانال های موجود در Broadcom SOC اشاره دارد. شما همیشه باید با یک دیاگرام کار کنید تا متوجه شوید کدام کانال به کدام پین روی برد RPi می رود. اگر بخواهید از کتابخانه های Scratch یا GPIO Zero یا GPIO در Python استفاده کنید ، BCM بسیار متداول تر است و از شماره گذاری ان استفاده می شود.
I2C، SPI و UART از کدام یک استفاده می کنید؟
در ادامه به تفاوت های بین I2C ، SPI و UART می پردازیم ، اما اگر نمیدانید کدام یک را برای اتصال به دستگاه یا سنسور مورد نظرتان استفاده کنید ، باید برگه مشخصات یا دیتاشیت ان سنسور یا قطعه را بررسی کنید. به عنوان مثال ، یک صفحه نمایش LED کوچک ممکن است به پروتکل ارتباطیSPI نیاز داشته باشد و دیگری ممکن است از I2C استفاده کند .اگر مستنداتی را که همراه با محصول است معمولاً به شما می گوید که از کدام Pi pin استفاده کنید. برای Raspberry Pi 4 کاربران باید توجه داشته باشند که اکنون تعداد بیشتری پین I2C ، SPI و UART در دسترس شماست. این رابط های اضافی می توانند در دستگاه فعال شوند .