مهندس موفق الکترونیک

آموزش راه اندازی GPIO رزبری پای

آموزش راه اندازی GPIO رزبری پای ، یکی از نکات مثبت Raspberry Pi داشتن کانکتور GPIO برای اتصال سخت افزار خارجی می باشد.

آموزش راه اندازی GPIO رزبری پای

کانکتور GPIO در واقع تعدادی اتصالات مختلف روی خود دارد که شامل موارد زیر هستند :

  • پایه های (GPIO (General Purpose Input Output  حقیقی که می توانید از آن ها برای روشن و خاموش کردن LED و کارهای دیگر استفاده کنید.
  • پین های رابط I2C که به شما امکان اتصال ماژول های سخت افزاری را تنها با 2 پین کنترلی می دهد.
  • رابط SPI با دستگاه های SPI
  • پین های سریال Rx و Tx برای ارتباط با لوازم جانبی سریال.

به علاوه , بعضی از پین ها می توانند به عنوان PWM  (مدولاسیون عرض پالس)  برای کنترل توان یا برای تولید نوع دیگری از پالس برای کنترل سرووموتور ها به نام PPM Pulse Position Modulation  استفاده شوند .

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

نکته مهم : این آموزش فقط برای Raspbian و مشتقات آن (مانند Occidentalis) نوشته شده است .

کانکتور GPIO

دیاگرام زیر پین های روی کانکتور GPIO برد Raspberry Pi ورژن 1  را نشان می دهد .

آموزش راه اندازی GPIO رزبری پای

برای ورژن های 2 به بالا

کانکتور GPIO

علاوه بر تامین انرژی (GND,3.3v,5v) تمامی پایه های GPIO می توانند به عنوان ورودی یا خروجی های دیجیتال استفاده شوند . پین های نام گذاری شده به عنوان SCL و  SDA می توانند برای I2C استفاده شوند .

پین های با نام MOSI و MISO و SCKL برای اتصال دستگاه های پرسرعت SPI  به کار می روند . تمامی پایه ها سطح منطقی 3.3ولت دارند و نمی توانند ولتاژ 5ولت را تحمل کنند . بنابراین سطوح خروجی 0-3.3ولت هستند و به پایه های ورودی نباید بیشتر از 3.3 ولت متصل کرد .

اگر می خواهید یک خروجی 5 ولت را به ورودی Raspberry Pi متصل کنید از یک level shifter استفاده کنید . یک راه متداول برای ایجاد اتصالات به Raspberry Pi استفاده از یک Pi Cobbler است .

آموزش راه اندازی GPIO رزبری پای

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

حتما و حتما دوبار چک کنید که نشانگر پایه 1 در گوشه Raspberry Pi باشد . اگر کابل شما طوسی رنگ است این پایه به احتمال زیاد قرمز است و برای کابل های مشکی یک سیم سفید است . این پایه نباید کنار کانکتور TV باشد . اگر اینچنین است کابل را بچرخانید تا در موقعیت درست قرار گیرد .

 کتابخانه های آماده Adafruit Pi

Adafruit برای سهولت بخشیدن به کار کسانی که می خواهند قطعات الکترونیکی به Raspberry Pi خود متصل کنند یک مجموعه عظیم و کاربردی از کد تولید کرده است که شامل کتابخانه های ساده پایتون برای تعداد زیادی از ماژول ها مانند نمایشگر ها , سنسور ها و کنترلر های PWM و غیره می شود .

مطلب پیشنهادی:  راه اندازی رزبری پای بدون مانیتور و کیبرد

برای دریافت این کد باید از برنامه ای به نام ‘git’ استفاده کنید . این برنامه به طور پیشفرض روی Occidentalis نصب شده است اما روی Raspbian باید با وارد کردن دستورات زیر در LXTerminal آن را نصب کنید . آیکن LXTerminal را روی Desktop خواهید یافت .

آموزش راه اندازی GPIO رزبری پای

قبل از اینکه ادامه دهیم دستور زیر را در LXTerminal اجرا کنید . این کار به شما اطمینان می دهد که بسته ی شما می تواند پیدا شود و شما آخرین نسخه را دریافت می کنید . مهم نیست که در کدام دایرکتوری هستید .

sudo apt-get update

آموزش راه اندازی GPIO رزبری پای

به روزرسانی ممکن است مدتی طول بکشد مخصوصا اگر اولین بار است که آن را روی Raspberry Pi خود اجرا می کنید . نهایتا بعد از به روزرسانی باید دوباره علامت ‘$’ را مشاهده کنید که نشان از آمادگی برای دستور بعدی دارد که در زیر آمده :

sudo apt-get install git

بعد از نصب git  می توانید گنجینه پایتون Adafruit Pi را با استفاده از دستورات زیر به Raspberry Pi خود اضافه کنید .

git clone http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
cd Adafruit-Raspberry-Pi-Python-Code
ls

اگر در هر یکی از مراحل بالا اشکالی رخ دهد یک پیغام خطا مشاهده خواهید کرد . شایع ترین علل مواجه شدن با خطا موارد زیر هستند :

  • وجود اشکال در ارتباط اینترنت
  • وارد کردن ناصحیح دستورات . به یاد داشته باشید که همه چیز در لینوکس به کوچکی و بزرگی حروف حساس است . بهترین کار برای جلوگیری از این خطا باز کردن این آموزش روی Raspberry Pi است تا بتوانید مستقیما کد ها را از همین جا کپی کنید . در این مجموعه انواع مختلف کد را خواهید یافت که از بسیاری از آن ها در قسمت های بعدی آموزش استفاده خواهیم کرد .

پیکره بندی GPIO

پایه های GPIO می توانند هم به عنوان ورودی دیجیتال و هم به عنوان خروجی دیجیتال استفاده شوند . به عنوان خروجی دیجیتال می توانید برنامه هایی بنویسید که یک پایه مشخص را 0 یا 1 کند . 1 کردن آن را روی 3.3 ولت و 0 کردن آن را روی 0 ولت قرار می دهد . برای راه اندازی یک LED با این پایه ها به یک مقاومت 1kΩ به صورت سری با LED نیاز دارید زیرا پایه های GPIO تحمل عبور جریان کمی را دارند .

اگر از پایه ها به عنوان ورودی دیجیتال استفاده کنید می توانید سوییچ ها و سنسورهای ساده را به آن ها متصل کنید و سپس چک کنید که باز هستند یا بسته (فعالند یا نه ).

آموزش راه اندازی GPIO رزبری پای

برای برنامه ریزی پورت های GPIO در پایتون باید یک کتابخانه پایتون 2 بسیار کاربردی به نام Rpi.GPIO را نصب کنید . این ماژول یک کتابخانه پایتون بسیار ساده به ما می دهد که می توانیم توسط آن ها پایه های GPIO را کنترل کنیم .

مطلب پیشنهادی:  ساخت تقویت کننده کلاس D با ماژولMAX98357

روند نصب این ماژول روی Raspbian و Occidentalis یکسان است . در واقع بعضی از نسخه های Raspbian این کتابخانه را در خود دارند , اما دستورات زیر علاوه بر نصب امکان به روزرسانی به آخرین نسخه را نیز دارند که ارزش انجام را دارد .

sudo apt-get update

برای نصب Rpi.GPIO ابتدا باید ابزار توسعه پایتونی (Python Development Toolkit) که Rpi.GPIO نیاز دارد را نصب کنید . برای این کار دستور زیر را در LXTerminal وارد کنید :

sudo apt-get install python-dev

سپس برای نصب خود Rpi.GPIO متن زیر را تایپ کنید :

sudo apt-get install python-rpi.gpio

احتمالا از شما خواسته می شود که با زدن ‘Y’ نصب را تایید نمایید .

اکنون برد شما برای اجرای بعضی از پروژه هایی که در بالا ذکر شد آماده است .

پیکره بندی I2C

I2C استاندارد بسیار رایجی است که طراحی شده است تا امکان صحبت کردن یک چیپ با چیپ دیگر را فراهم کند . بنابراین از آن جایی که Raspberry Pi از I2C پشتیبانی می کند می توانیم آن را به مجموعه ای از چیپ ها و ماژول های دارای I2C متصل کنیم .

باس I2C این امکان را می دهد که چندین دستگاه هر کدام با یک آدرس منحصر بفرد که اغلب با تعویض تنظیمات جامپرهای روی ماژول تعیین می شود به Raspberry Pi شما متصل شوند .

امکان دیدن این که چه دستگاه هایی به Raspberry Pi متصل اند به عنوان راهی برای اطمینان یافتن از این که همه چیز به درستی کار می کند می تواند بسیار مفید باشد . برای انجام این کار با استفاده از دستورات زیر ابزار i2c-tools را نصب کنید :

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools

نصب پشتیبانی کرنل  با استفاده از Raspi-Config

sudo raspi-config را اجرا کنید و از دستورات پیروی کنید تا پشتیبانی از i2c برای هسته ARM و کرنل linux نصب شود .

به بخش Interfacing Options بروید .

آموزش راه اندازی GPIO رزبری پای

در نسخه های قدیمی تر در بخش Advanced آن را خواهید یافت .

آموزش راه اندازی GPIO رزبری پای

سپس I2C

آموزش راه اندازی GPIO رزبری پای

Enable !

آموزش راه اندازی GPIO رزبری پای

آموزش راه اندازی GPIO رزبری پای

سپس ریبوت کنید .

همچنین پیشنهاد می شود مراحل زیر را دنبال کنید و به صورت دستی چک کنید که همه چیز توسط raspi-config اضافه شده باشد .

نصب پشتیبانی کرنل (به صورت دستی )

اگر از نسخه های به روز Raspbian استفاده نمی کنید یا می خواهید خودتان این کار را انجام دهید LXTerminal یا console یا ssh را باز کنید و دستور زیر را وارد کنید :

sudo nano /etc/modules

دو خط زیر را به آخر فایل اضافه کنید :

i2c-bcm2708 
i2c-dev

مانند عکس زیر:

آموزش راه اندازی GPIO رزبری پای

سپس فایل را با Control-X Y <return> ذخیره کنید . بسته به توزیعی که با آن کار می کنید ممکن است فایلی به نام /etc/modprobe.d/raspi-blacklist.conf نیز داشته باشید . اگر این فایل را دارید , نیاز به انجام هیچ کاری نیست اما اگر آن را دارید , باید آن را ویرایش کنید و دو خط زیر را با گذاشتن یک # در جلوی آن ها غیر فعال کنید :

blacklist spi-bcm2708
blacklist i2c-bcm2708

با دستور زیر روی فایل یک ویرایشگر باز کنید :

sudo nano /etc/modprobe.d/raspi-blacklist.conf

سپس آن را مانند شکل زیر ویرایش کنید و فایل را با CTRL-X و Y ذخیره کنید و خارج شوید .

مطلب پیشنهادی:  آموزش اتصال استپر موتور به رزبری پای

آموزش راه اندازی GPIO رزبری پای

اگر از یک Raspberry Pi جدید استفاده می کنید )کرنل 3.18 یا جدیدتر )  باید فایل /boot/config.txt را نیز به روز رسانی کنید .

با دستور sudo nano /boot/config.txt آن را ویرایش کنید و دو خط

dtparam=i2c1=on

dtparam=i2c_arm=on

را به انتهای آن بیافزایید .

توجه کنید “1” در “i2c1” عدد یک است نه حرف L .

آموزش راه اندازی GPIO رزبری پای

بعد از انجام این کار , سیستم را ریبوت کنید .

sudo i2cdetect -y 1

تست I2C

اکنون هنگامی که به سیستم وارد می شوید می توانید با دستور زیر تمامی دستگاه های متصل را ببینید .

sudo i2cdetect -y 0

آموزش راه اندازی GPIO رزبری پای

این عکس نشان می دهد که دو آدرس I2C استفاده شده است  , 0x40 و 0x70 .

توجه داشته باشید که اگر از یکی از اولین Raspberry Pi ها استفاده می کنید (یک Raspberry Pi مدل B با رم 256MB ) آنگاه باید دستور را به شکل زیر تغییر دهید .

sudo nano /etc/modprobe.d/raspi-blacklist.conf

طراحان Raspberry Pi بین دو نسخه برد پورت های I2C را جابجا کردند . فقط نکته زیر را به خاطر داشته باشید Raspberry Pi های 512MB ای از پورت i2c1 و 256MBای ها از پورت i2c0 استفاده می کنند .

پیکره بندی SPI

ابتدا هرگونه blacklist مربوط به ماژول spi را با اجرای دستور زیر حذف کنید :

sudo nano /etc/modprobe.d/raspi-blacklist.conf

به دنبال خط blacklist spi-bcm2708 بگردید و یک # در جلوی آن قرار دهید مانند عکس زیر :

آموزش راه اندازی GPIO رزبری پای

اکنون Control-X Y و سپس return را بزنید تا فایل ذخیره شود .

با دستور sudo reboot ریبوت کنید . دفعه بعدی که وارد سیستم می شوید می توانید با دستور ls -l /dev/spidev* چک کنید که می توانید دستگاه ها را ببینید.

باید 2 “device” را مشاهده کنید , یکی برای هر باس spi

آموزش راه اندازی GPIO رزبری پای

تست و راه اندازی

بهترین راه برای تست آن چه که انجام داده اید انجام یک پروژه (البته از نوع ساده آن برای شروع) می باشد.در اینجا چند نمونه پروژه به عنوان ایده را میتوانید ببینید.جلسات بعدی را اینجا و لینک های زیر دنبال کنید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک دیدگاه

  1. سلام.
    برد رزبری مدل B+ و پایتون ورژن ۲.۷
    مشکلم اینه هه یه سری از پایه GPIO پیش فرض وتااژ ۲.۸ و بعضیاش هم ولتاژ و ۰.۴۰V و چنتاش صفر ولت هستش.
    علاوه بر این با کد نویسی هم تغیری روی پین ها ایجادنمیکنه.
    لطف می کنید اگر راهنماییم کنید.