پایتون Python

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

getting-started-with-python-on-raspberry-pi-boards-part-nine-spi-digispark
نوشته شده توسط پریسا پوربلورچیان

پروتکل ارتباطی SPI برای ارتباط از دور بین دیوایس های مختلف با میکروکنترلرها کاربرد دارد. رزبری پای به واسطه برخورداری از GPIO از پروتکل ارتباطی SPI هم پشتیبانی می‌کند. در این آموزش به معرفی پروتکل ارتباطی SPI و راه اندازی در رزبری پای و نحوه ی برنامه نویسی با پایتون را یاد خواهیم گرفت. در ادامه راه اندازی SPI در رزبری پای با سری آموزش های پایتون با رزبری پای به زبان فارسی دیجی اسپارک همراه باشید.

 


پروتکل ارتباطی SPI


پروتکل ارتباطی SPI مخفف Serial Peripheral Interface در دهه ۱۹۸۰ میلادی معرفی شد! پروتکل ارتباطی SPI یک درگاه سریال ورودی و خروجی سنکرون (همزمان) با سرعت بالا است که اجازه میدهد داده ها به صورت سریال با طول قابل تنظیم (بین ۲ تا ۱۶ بیت) و همچنین سرعت انتقال قابل تنظیم به دستگاه وارد و خارج شود. در پروتکل SPI همانند پروتکل I2C، ارتباط بین دستگاه ها به صورت MASTER و SLAVE است. تفاوت عملکرد پروتکل ارتباطی در SPI این است که فقط یکی از دیوایس ها می‌تواند به عنوان MASTER با SLAVE ها ارتباط برقرار کند.

پروتکل SPI در رزبری پای Raspberry pi - دیجی اسپارک

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

  • SCLK: سیگنالی تحت عنوان کلاک باعث همزمانی انتقال داده بین Master و Slave می‌شود. به ازای هر کلاک یک بیت داده منتقل می‌شود. این سیگنال بر روی خط SCLK تولید می‌شود. پس سرعت انتقال داده در SPI به فرکانس سیگنال کلاک تولید شده بر روی این پایه بستگی دارد. سیگنال کلاک از سمت Master تولید می‌شود.
  • MOSI: در پروتکل SPI برای نوشتن داده روی Slave و خواندن داده از آن دو خط مجزا تعریف شده است. کلمه MOSI مخفف Master Output Slave Input است. Master با استفاده از این خط داده مورد نظر را به Slave انتقال می‌دهد.
  • MISO: کلمه MISO مخفف Master Input Slave Output است. این خط برای برای انتقال داده از سمت Slave یه سمت Master از خط MOSI استفاده می‌شود.
  • SS/CS: در حالت عادی زمانی که تنها یک Slave موجود است این خط بایستی داراری سطح ولتاژ پایین باشد. اما زمانی که تعداد Slave ها از یک عدد بیشتر شود.  این خط برای انتخاب Slave مورد نظر مورد استفاده قرار میگیرد. به تعداد Slave ها های موجود بایستی از هر کدام از Slave ها یک خط SS به Master متصل شود. برای انتخاب Slave مورد نظر بایستی سطح ولتاژ خط مربوط به Slave مورد نظر را پایین و سطح ولتاژ باقی خطوط SS بالا باشد.

ماژول SPI در رزبری پای پیکو به شما امکان ارتباط با دیوایس های SPI را فراهم می‌کند. پروتکل ارتباطی SPI از معماری MASTER و SLAVE بهره برده و برای ارتباط به سه سیگنال و همان ارتباط سه سیمه نیاز داریم.

  • SCLK : Serial Clock (output from master)
  • MOSI : Master Output, Slave Input (output from master)
  • MISO : Master Input, Slave Output (output from slave)

 

رزبری پای ۱ ۲ ۳  و رزبری پای زیرو دارای سه کنترلر SPI هستند که به ترتیب SPI0, SPI1, SPI2 است. در رزبری پای چهار و رزبری پای چهارصد و COMPUTE MODULE 4 دارای چهار باس SPI است.

ارتباط SPI در رزبری پای شناخت پایه ها - دیجی اسپارک

 

SCLK - Serial CLocK
CE   - Chip Enable (often called Chip Select)
MOSI - Master Out Slave In
MISO - Master In Slave Out
MOMI - Master Out Master In

 


فعال کردن SPI در رزبری پای


از منو رزبری پای بر روی گزینه PREFERENCES را انتخاب کنید. سپس Raspberry pi Configuration را انتخاب کنید.

فعال کردن SPI در رزبری پای از طریق منوهای کاربردی - دیجی اسپارک

 

بر روی Interface کلیک کنید. سپس SPI را فعال Enable کنید.

 

پایه های SPI در GPIO رزبری پای به صورت زیر است.

شماتیک پایه های SPI در رزبری پای - دیجی اسپارک

 

شماتیک پایه های SPI1 در رزبری پای - دیجی اسپارک

 


کتابخانه spidev


پروتکل ارتباطی SPI از SPIDEV پشتیبانی می‌کند. توسط این کتابخانه انواع دستگاه های SPI قابلیت اتصال به برد رزبری پای را دارد. هر دستگاهی که از پروتکل ارتباطی SPI پشتیبانی می‌کند میتواند به یکی از باس های SPI در برد رزبری پای متصل شود. نصب spidev

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev python3-dev
cd ~
git clone https://github.com/doceme/py-spidev.git
cd py-spidev
make
sudo make install

 

کتابخانه SPIDEV

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)
to_send = [0x01, 0x02, 0x03]
spi.xfer(to_send)

 

تنظمیات کتابخانه SPIDEV به صورت زیر است:

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)

# Settings (for example)
spi.max_speed_hz = 5000
spi.mode = 0b01

...

 

متدهای کتابخانه به صورت زیر است:

open(bus, device)

توسط این متد به دیوایس های SPI کانکت می‌شود.


 opening /dev/spidev<bus>.<device

 

readbytes(n)

برای خواندن N بایت از دیوایس SPI از این متد استفاده می‌شود.

 

writebytes(list of values)

برای رایت مقادیر در دیوایس SPI از این متد استفاده می‌شود.

 

در ادامه یک نمونه کد برای راه اندازی یاس ۵ SPI نوشته شده است.

from spidev import SpiDev
spi = SpiDev()
spi.open(5,1)
spi.max_speed_hz = 4000
msg = [0x01, 0x02, 0x03]
spi.xfer(msg)
answer = spi.readbytes(100)
print(answer)
spi.close()

 


جمع بندی لیدی پای


در بخش نهم از سری آموزش های پایتون با رزبری پای روش استفاده از پروتکل ارتباطی spi با رزبری پای و فعال کردن آن آموزش داده شده است. از ماژول ها و نمایشگرهایی که از رابط spi استفاده می‌کنند برای راه اندازی میتوانید استفاده کنید.

 


وسایل مورد نیاز


رزبری پای Raspberry Pi 400

رزبری پای Raspberry Pi 4

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه