آموزش راه اندازی 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
تست و راه اندازی
بهترین راه برای تست آنچه که انجام دادهاید انجام یک پروژه (البته از نوع ساده آن برای شروع) میباشد.
امیدوارم این نوشته برایتان مفید باشد.
منبع: میکرودیزاینرالکترونیک