آموزش راه اندازی GPIO رزبری پای ، یکی از نکات مثبت Raspberry Pi داشتن کانکتور 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 را نشان می دهد .
برای ورژن های 2 به بالا
علاوه بر تامین انرژی (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 به بردبرد استفاده می کند تا بتوانید قطعات خودتان را روی بردبرد به آن متصل کنید .
حتما و حتما دوبار چک کنید که نشانگر پایه 1 در گوشه Raspberry Pi باشد . اگر کابل شما طوسی رنگ است این پایه به احتمال زیاد قرمز است و برای کابل های مشکی یک سیم سفید است . این پایه نباید کنار کانکتور TV باشد . اگر اینچنین است کابل را بچرخانید تا در موقعیت درست قرار گیرد .
کتابخانه های آماده Adafruit Pi
Adafruit برای سهولت بخشیدن به کار کسانی که می خواهند قطعات الکترونیکی به Raspberry Pi خود متصل کنند یک مجموعه عظیم و کاربردی از کد تولید کرده است که شامل کتابخانه های ساده پایتون برای تعداد زیادی از ماژول ها مانند نمایشگر ها , سنسور ها و کنترلر های PWM و غیره می شود .
برای دریافت این کد باید از برنامه ای به نام ‘git’ استفاده کنید . این برنامه به طور پیشفرض روی Occidentalis نصب شده است اما روی Raspbian باید با وارد کردن دستورات زیر در LXTerminal آن را نصب کنید . آیکن LXTerminal را روی Desktop خواهید یافت .
قبل از اینکه ادامه دهیم دستور زیر را در LXTerminal اجرا کنید . این کار به شما اطمینان می دهد که بسته ی شما می تواند پیدا شود و شما آخرین نسخه را دریافت می کنید . مهم نیست که در کدام دایرکتوری هستید .
sudo apt-get update
به روزرسانی ممکن است مدتی طول بکشد مخصوصا اگر اولین بار است که آن را روی 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 در پایتون باید یک کتابخانه پایتون 2 بسیار کاربردی به نام Rpi.GPIO را نصب کنید . این ماژول یک کتابخانه پایتون بسیار ساده به ما می دهد که می توانیم توسط آن ها پایه های GPIO را کنترل کنیم .
روند نصب این ماژول روی 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 بروید .
در نسخه های قدیمی تر در بخش Advanced آن را خواهید یافت .
سپس I2C
Enable !
سپس ریبوت کنید .
همچنین پیشنهاد می شود مراحل زیر را دنبال کنید و به صورت دستی چک کنید که همه چیز توسط raspi-config اضافه شده باشد .
نصب پشتیبانی کرنل (به صورت دستی )
اگر از نسخه های به روز Raspbian استفاده نمی کنید یا می خواهید خودتان این کار را انجام دهید LXTerminal یا console یا ssh را باز کنید و دستور زیر را وارد کنید :
sudo nano /etc/modules
دو خط زیر را به آخر فایل اضافه کنید :
i2c-bcm2708 i2c-dev
مانند عکس زیر:
سپس فایل را با 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 ذخیره کنید و خارج شوید .
اگر از یک Raspberry Pi جدید استفاده می کنید )کرنل 3.18 یا جدیدتر ) باید فایل /boot/config.txt را نیز به روز رسانی کنید .
با دستور sudo nano /boot/config.txt آن را ویرایش کنید و دو خط
dtparam=i2c1=on
dtparam=i2c_arm=on
را به انتهای آن بیافزایید .
توجه کنید “1” در “i2c1” عدد یک است نه حرف L .
بعد از انجام این کار , سیستم را ریبوت کنید .
sudo i2cdetect -y 1
تست I2C
اکنون هنگامی که به سیستم وارد می شوید می توانید با دستور زیر تمامی دستگاه های متصل را ببینید .
sudo i2cdetect -y 0
این عکس نشان می دهد که دو آدرس 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 بگردید و یک # در جلوی آن قرار دهید مانند عکس زیر :
اکنون Control-X Y و سپس return را بزنید تا فایل ذخیره شود .
با دستور sudo reboot ریبوت کنید . دفعه بعدی که وارد سیستم می شوید می توانید با دستور ls -l /dev/spidev* چک کنید که می توانید دستگاه ها را ببینید.
باید 2 “device” را مشاهده کنید , یکی برای هر باس spi
تست و راه اندازی
بهترین راه برای تست آن چه که انجام داده اید انجام یک پروژه (البته از نوع ساده آن برای شروع) می باشد.در اینجا چند نمونه پروژه به عنوان ایده را میتوانید ببینید.جلسات بعدی را اینجا و لینک های زیر دنبال کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام.
برد رزبری مدل B+ و پایتون ورژن ۲.۷
مشکلم اینه هه یه سری از پایه GPIO پیش فرض وتااژ ۲.۸ و بعضیاش هم ولتاژ و ۰.۴۰V و چنتاش صفر ولت هستش.
علاوه بر این با کد نویسی هم تغیری روی پین ها ایجادنمیکنه.
لطف می کنید اگر راهنماییم کنید.