برد رزبری پای Raspberry Pi از ۴۰ ردیف پین GPIO تشکیل شده است که هر کدام از این ۴۰ پایه ماهیت ویژه ای دارند. هر کدام از این ۴۰ پایه میتواند در نقش ورودی، خروجی باشد و از پروتکل های SPI, I2C, UART پشتیبانی میکند. در ادامه به معرفی GPIO در رزبری پای ۳ و رزبری پای ۴ و رزبری پای ۴۰۰ خواهیم پرداخت. در ادامه با مرجع تخصصی پایتون با رزیری پای به زبان فارسی، دیجی اسپارک همراه باشید.
معرفی GPIO رزبری پای
یکی از قابلیت های فوق العاده برد رزبری پای RASPBERRY PI وجود دو ردیف ۲۰ تایی GPIO بر روی برد است. GPIO مخفف General-Purpose Input/Output است. توسط این پایه ها ارتباط سخت افزاری با سایر بردها و دیوایس ها فراهم میشود. توسط این پایه ها ارتباط با مدارهای الکترونیکی آغاز شده و میتوانید هر قطعات الکترونیکی را به این پایه ها متصل کنید! ۴۰ پایه که هرکدام عملکرد خاصی دارد. پایه های GPIO به صورت زیر است.
پایه های تغذیه با رنگ قرمز مشخص شده است. پایه ۳٫۳ ولت و پایه ۵ ولت که با اتصال هر دیوایس به این پایه ها تغذیه ۳٫۳ و ۵ ولت میگیرد. پایه GND ولتاژ صفر است و برای تکمیل مدارهای الکترونیکی از این پایه برای اتصال استفاده میشود. اگر دقت داشته باشید تمامی سنسورها و قطعات از پایه VCC و GND برخوردار است و مشترک هستند. پایه های GPIO دقیقا همان پایه های هستند که برای ارتباط با سنسورها و نقش ورودی و خروجی در پروژه ها از آن ها استفاده میشود. GPIO در رزبری پای ۳ و رزبری پای ۴ کاملا یکسان هستند! در کیبورد رزبری پای ۴۰۰ هم به همین صورت!
در کنار هر پایه اعدادی نوشته شده است. این اعداد به چه معنا هستند؟
- اعدادی که با GPIO مشخص شده اند دقیقا از GPIO1 تا GPIO26 نامگذاری شده اند.
- فیزیکالی : اعدادی که بر روی خود پایه ها نوشته شده است. به عنوان مثال GPIO22 همان PIN15 است. به صورت فیریکالی به PIN15 معرفی و فراخوانی میشود.
- WiringPi که برای کتابخانه ی Wiring Pi استفاده میشود.
- Rev 1 Pi برای رزبری پای مدل A , B استفاده میشود.
پایه های I2C GPIO
پروتکل ارتباطی I2C در پیکو یک ارتباط دو سیمه برای اتصال سنسورهایی که از پروتکل I2C برای ارتباط با میکروکنترلرها استفاده میکنند، طراحی شده است. سرعت تبادل دیتا در پروتکل ارتباطی I2C بین ۱۰۰Kbits/s، ۴۰۰Kbits/s, 1M است. پروتکل I2C در دو مد کاری Master , Slave عمل میکند.Master , Slave میتوانند دیتا را ارسال کرده و همچنین دریافت کنند. این ارسال و دریافت دیتا وابسته به Master است و تا زمانی که درخواست توسط Master ارسال نشود، Slave دیتا به Master ارسال نمیکند. برای برقراری ارتباط در پروتکل I2C وجود دارد.
- I2C = Serial Data که جهت انتقال دیتا استفاده میشود.
- SCL = Serial Clock که سیگنال کلاک را انتقال میدهد.
هر دو سیگنال SDA , SCL دو طرفه هستند که توسط یک مقاومت پول آپ به تغذیه متصل شده اند. به این معنی که زمانی که باس آزاد است، هر دو سیگنال HIGH هستند.تمامی دیوایس هایی که بر روی باس قرار میگیرند بایستی پایه های اوپن کلکتور و اوپن درین داشته باشند. فعال شدن لاین به این معنی است که پایه پول دان شده و به GND وصل شده اند. تعداد دیوایس های قرار گرفته شده بر روی یک باس نامحدود است و میتوانید دیوایس هایی با سطح ولتاژ متفاوت را بر روی یک باس وصل کرده و با یک مقاومت پول آپ به کمترین ولتاژ میکروکنترلر اتصال دهید. I2C از آدرس ۷ بیتی برای تعریف دیوایس ها استفاده میکند که هر کدام میتوانند هویت منحصر به فرد داشته باشند و درخواست به Slave صحیح ارسال کنند.
پایه های I2C در رزبری پای ۳ و ۴ و ۴۰۰ به یک صورت است و اصلا تفاوتی وجود ندارد.
- I2C1 = GPIO2 = SDA
- I2CS1 = GPIO3 = SCL
- I2C0 = GPIO0 , GPIO1 که با نام REVERSED مشخص شده است.
پایه های SPI GPIO
پروتکل ارتباطی SPI مخفف Serial Peripheral Interface در دهه ۱۹۸۰ میلادی معرفی شد! پروتکل ارتباطی SPI یک درگاه سریال ورودی و خروجی سنکرون (همزمان) با سرعت بالا است که اجازه میدهد داده ها به صورت سریال با طول قابل تنظیم (بین ۲ تا ۱۶ بیت) و همچنین سرعت انتقال قابل تنظیم به دستگاه وارد و خارج شود. در پروتکل SPI همانند پروتکل I2C، ارتباط بین دستگاه ها به صورت MASTER و SLAVE است. تفاوت عملکرد پروتکل ارتباطی در SPI این است که فقط یکی از دیوایس ها میتواند به عنوان MASTER با SLAVE ها ارتباط برقرار کند.
پایه های SPI در هر سه مدل معرفی شده برای رزبری پای کاملا یکسان است.
SPI0:
- MOSI = GPIO10
- MISO = GPIO9
- SCLK = GPIO11
- CS0 = GPIO8
- CS1 = GPIO7
SPI1:
- MISO = GPIO19
- MOSI = GPIO20
- SCLK = GPIO21
- CS0 = GPIO16
پایه های UART GPIO
UART مخفف عبارت Universal Asynchronies Receiver Transmitter است . از پروتکل ارتباطی UART برای برقراری ارتباط سریال بین میکروکنترلرها و دیوایس ها استفاده میشود. ارتباط UART، یک ارتباط دو طرفه است. در پروتکل ارتباطی UART فرستنده و گیرنده می توانند همزمان داده را ارسال و دریافت کنند. ارتباط UART دارای دو پایه RX و TX است. پایه RX جهت دریافت و پایه TX جهت ارسال داده ها به کار می رود. بادریت مشخص میکند که اطلاعات با چه سرعتی بر روی خط سریال ارسال میشوند و واحد بیت در ثانیه (bps) بیان میشود.یکی از پرکاربردترین بادریت ها ۹۶۰۰ بیت در ثانیه است. دیگر بادریت های استاندارد ۱۲۰۰، ۲۴۰۰، ۴۸۰۰، ۱۹۲۰۰، ۳۸۴۰۰، ۵۷۶۰۰ و ۱۱۵۲۰۰ است.
پایه های UART در تمامی رزبری پای ها مشترک است.
- TXD = GPIO14
- RXD = GPIO15
پایه تغذیه ۵ ولت و ۳٫۳ ولت
برای برقراری ارتباط با سایر دیوایس ها نیاز به تامین ولتاژ کافی برای راه اندازی داریم. تمامی رزبری پای ها دارای دو پایه تغذیه ۵ ولت هستند.
- پایه های ۲ و پایه های ۴ پشت سرهم ۵ ولت هستند.
پایه PWM GPIO
PWM ) Pulse Width Modulation) مدولاسیون پهنای باند روشی برای به دست آوردن خروجی آنالوگ روی پین دیجیتال است. PWM به دو پارامتر فرکانس و دیوتی سایکل وابسته است. در PWM عرض سیگنال مدام در حال تغییر است اما فرکانس ثابت ادامه میدهد. در صورتیکه سیگنال PWM در یک فرکانس ثابت کار کند، با تغییر زمان، زمانیکه دامنه سیگنال High باشد، زمان دامنه سیگنال پایین را تغییر داده میشود. به این بازه ی زمانی پهنای پالس گفته میشود. پهنای پالس که وابسته به دوره ی سیگنال است، دیوتی سایکل Duty Cycle گفته می شود. دوره زمانی سیگنال (T) که به پریود زمانی نیز گفته می شود از لحظه افزایش پله ی سیگنال موج مربعی شروع شده و به میزان شروع فزایش بعدی طول می کشد.
پایه PWM در رزبری پای به صورت زیر است:
- PWM0 = GPIO18
- PWM0 = GPIO12
- PWM1 = GPIO13
پایه های GND GPIO
پایه های GND در GPIO رزبری پای برای تکمیل اتصالات مدارهای الکترونیکی و اتصال سنسورهای مختلف و برقراری ارتباط زمین است.
- پایه شماره ۶
- پایه شماره ۹
- پایه شماره ۱۴
- پایه شماره ۲۰
- پایه شماره ۲۵
- پایه شماره ۳۰
- پایه شماره ۳۴
- پایه شماره ۳۹
پایه های GPIO
پایه های GPIO همان پایه هایی هستند که برای دریافت دیتای دیجیتال از سنسورها و ماژول ها از آن ها استفاده میکنیم. تمامی پایه های GPIO ماهیت دیجیتال دارند و برای ارتباط با دیگر سخت افزارها از پایه ی دیتای آن ها به این پایه ها متصل میشوند. تعداد پایه های GPIO به ترتیب ۲۴ عدد است.
- GPIO2
- GPIO3
- GPIO4
- GPIO17
- GPIO27
- GPIO22
- GPIO10
- GPIO9
- GPIO11
- GPIO5
- GPIO6
- GPIO13
- GPIO19
- GPIO26
- GPIO18
- GPIO23
- GPIO24
- GPIO25
- GPIO8
- GPIO7
- GPIO12
- GPIO16
- GPIO20
- GPIO21
پایه های زرد رنگ در تصویر زیر پایه های GPIO هستند که میتوانند نقش UART, SPI, I2C, PWM داشته باشند و وابسته به نوع سنسور مورد استفاه و دیتای مورد نیاز از هر GPIO میتوان استفاده کرد.
پایه ANALOG GPIO
پایه های GPIO رزبری پای از آنالوگ پشتیبانی نمیکند. هیچ یک از پایه های GPIO رزبری پای از آنالوگ استفاده نمیکند و عملا استفاده از سنسورهای آنالوگ به صورت مستقیم با GPIO ها امکان پذیر نیست. برای حل مشکل کافیست از مبدل های آنالوگ به دیجیتال استفاده کنید. مانند ADS1115 که به راحتی توسط پروتکل ارتباطی I2C و درگیر کردن این دو پایه چندین پایه آنالوگ را برای شما تامین میکنند.
جمع بندی لیدی پای
پایه های GPIO یکی از مهم ترین آپشن های برد رزبری پای است. در هر نسل از رزبری پای تمامی پایه های GPIO و ماهیت هر یک از پایه ها ثابت و بدون تغییر مانده است. برای استفاده از این پایه ها به دیوایس ها قطعات سنسورها و ماژول های دیگر نیاز داریم. هر سنسور و قطعه ای از پروتکل ارتباطی خاصی برای برقراری ارتباط استفاده میکند. اما مهم ترین نکته در استفاده این است که بدانید پایه های GPIO رزبری پای از آنالوگ پشتیبانی نمیکند و همانطور که گفته شده است نیاز به مبدل جداگانه دارید. این پایه ها از تمامی سنسورهای پرکاربرد استفاده میکند. بسته به نوع پروتکل ارتباطی از پایه های UART, SPI, I2C, PWM برای ارتباط بین دیوایس ها میتوانید استفاده کنید.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام مهندس
برای رزبری پای هم میشه چندین oled بهش وصل کرد؟
با سلام
بله تفاوتی ندارد. در هر صورت بایستی کد i2c را برای هر دستگاه مشخص کنید.
سلام
آیا این مبدل مانع استفاده از پایه های i2c برای پروژه های دیگه نمیشه؟
با سلام
خیر از پایه های i2c میتوانید استفاده کنید.