Arduino IDE کا استعمال کرتے ہوئے ESP32 میں SPI (سیریل پیریفرل انٹرفیس)

Arduino Ide Ka Ast Mal Krt Wy Esp32 My Spi Syryl Pyryfrl An Rfys



ESP32 بورڈز کو متعدد کمیونیکیشن پروٹوکولز کے لیے سپورٹ حاصل ہے۔ ان پروٹوکول میں سیریل USART، I2C (IIC) اور SPI شامل ہیں۔ ان ESP32 بورڈز کے ساتھ وائرلیس کمیونیکیشن پروٹوکول بھی دستیاب ہیں جیسے وائی فائی، ڈوئل بلوٹوتھ، ESP-Now، LoRa اور بہت کچھ۔ آج ہم ESP32 SPI (سیریل پیریفرل انٹرفیس) پروٹوکول پر توجہ مرکوز کریں گے۔

ESP32 میں SPI (سیریل پیریفرل انٹرفیس)

ایس پی آئی یا سیریل پیریفرل انٹرفیس ایک مختصر فاصلے کا مواصلاتی پروٹوکول ہے جو متعدد مائیکرو کنٹرولر آلات جیسے ESP32 میں استعمال ہوتا ہے۔ یہ ایک ہم وقت ساز کمیونیکیشن پروٹوکول ہے جو بنیادی طور پر مائیکرو کنٹرولرز اپنے پیری فیرلز کے ساتھ بات چیت کے لیے استعمال کرتے ہیں، اس طرح کہ ہم اس پروٹوکول کو ان آلات کو پڑھنے اور کنٹرول کرنے کے لیے استعمال کر سکتے ہیں جو SPI پروٹوکول کو سپورٹ کرتے ہیں۔







ایس پی آئی کمیونیکیشن ماسٹر سلیو کنفیگریشن کو سپورٹ کرتی ہے ہمیشہ ایک ہوتی ہے۔ ایک ماسٹر جو متعدد غلاموں کو کنٹرول کرتا ہے۔ یہ ایک ہے مکمل ڈوپلیکس مواصلات تاکہ ڈیٹا کا تبادلہ بیک وقت آقا سے غلام اور غلام سے آقا میں ہو سکے۔




ESP32 میں SPI مواصلات کی ضرورت ہے۔ چار آلات پر ڈیٹا منتقل کرنے اور وصول کرنے کے لیے مختلف پن۔ وہ چار پن درج ذیل ہیں:



  1. SCK: کلاک لائن ٹرانسمیشن کی رفتار کا تعین کرتی ہے۔
  2. MISO: ماسٹر ان لیو آؤٹ ایک غلام سے ماسٹر تک ٹرانسمیشن پن ہے۔
  3. دھواں: ماسٹر آؤٹ سلیو ان غلام کو ماسٹر ڈیٹا کے لیے ٹرانسمیشن لائن ہے۔
  4. ایس ایس: غلام سلیکٹ لائن ESP32 کو کسی خاص غلام کو منتخب کرنے اور اس غلام سے ڈیٹا منتقل کرنے یا وصول کرنے میں مدد کرتی ہے۔

نوٹ: کچھ آلات جو صرف غلام ہیں اور ان کے پن کا نام مختلف ہے جیسے کہ:





    • ایم آئی ایس او کے ساتھ تبدیل کیا جاتا ہے ایس ڈی او (سیریل ڈیٹا آؤٹ)
    • دھواں کے ساتھ تبدیل کیا جاتا ہے ایس ڈی آئی (سیریل ڈیٹا ان)

ESP32 میں SPI پن

ESP32 بورڈ کے ساتھ آتا ہے۔ 4 مختلف SPI پیری فیرلز اس کے مائیکرو کنٹرولر کے ساتھ مربوط ہیں۔

    • SPI0: صرف اندرونی میموری مواصلات کے لیے- بیرونی SPI آلات کے ساتھ استعمال نہیں کیا جا سکتا
    • SPI1: صرف اندرونی میموری مواصلات کے لیے- بیرونی SPI آلات کے ساتھ استعمال نہیں کیا جا سکتا
    • SPI2: (HSPI) کے پاس آزاد بس سگنلز ہیں۔ ہر بس نکل سکتی ہے۔ 3 غلام آلات
    • SPI3: (VSPI) بس سگنل آزاد ہے۔ ہر بس نکل سکتی ہے۔ 3 غلام آلات

زیادہ تر ESP32 بورڈز SPI2 اور SPI3 دونوں کے لیے پہلے سے تفویض کردہ SPI پنوں کے ساتھ آتے ہیں۔ تاہم، اگر تفویض نہیں کیا گیا ہے تو ہم ہمیشہ کوڈ میں SPI پن تفویض کر سکتے ہیں۔ مندرجہ ذیل ایس پی آئی پن ہیں جو زیادہ تر ESP32 بورڈ میں پائے جاتے ہیں جو پہلے سے تفویض کیے گئے ہیں:



ایس پی آئی انٹرفیس دھواں ایم آئی ایس او ایس سی ایل کے سی ایس
وی ایس پی آئی جی پی آئی او 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15



اوپر بیان کردہ SPI پن بورڈ کی قسم کے لحاظ سے مختلف ہو سکتے ہیں۔ اب ہم Arduino IDE کا استعمال کرتے ہوئے ESP32 SPI پنوں کو چیک کرنے کے لیے ایک کوڈ لکھیں گے۔

ESP32 ڈیفالٹ SPI پن کیسے تلاش کریں۔

ذیل میں لکھا گیا کوڈ ESP32 بورڈ میں پہلے سے طے شدہ SPI پنوں کو تلاش کرنے میں مدد کرے گا۔ پی سی کے ساتھ Arduino IDE کنیکٹ ESP32 کھولیں، صحیح پورٹ منتخب کریں اور کوڈ اپ لوڈ کریں۔ پھر آؤٹ پٹ کا انتظار کریں۔ یہی ہے! یہ کتنا آسان ہے

ESP32 ڈیفالٹ SPI پن تلاش کرنے کے لیے کوڈ

ذیل میں دیا گیا کوڈ ESP32 ڈیفالٹ SPI پنوں کو سیریل مانیٹر پر پرنٹ کرے گا۔

باطل سیٹ اپ ( ) {
سیریل شروع کریں۔ ( 115200 ) ;
سیریل۔ پرنٹ ( 'MOSI GPIO پن:' ) ;
Serial.println ( دھواں ) ;
سیریل۔ پرنٹ ( 'MISO GPIO پن:' ) ;
Serial.println ( ایم آئی ایس او ) ;
سیریل۔ پرنٹ ( 'SCK GPIO پن:' ) ;
Serial.println ( ایس سی کے ) ;
سیریل۔ پرنٹ ( 'SS GPIO پن:' ) ;
Serial.println ( ایس ایس ) ;
}
باطل لوپ ( ) {
}


کوڈ بوڈ ریٹ کی وضاحت سے شروع ہوتا ہے اور ESP32 SPI کمیونیکیشن پروٹوکول کے لیے ڈیفالٹ GPIO پن کو کال کرکے جاری رہتا ہے۔

آؤٹ پٹ

یہاں ہمارے معاملے میں سیریل مانیٹر نے بالترتیب MOSI، MISO، SCK اور SS کے لیے پن 23، 19، 18، اور 5 ظاہر کیا۔

ESP32 میں کسٹم SPI پنوں کا استعمال کیسے کریں۔

ESP32 ملٹی پلیکسنگ خصوصیات کی بدولت ESP32 بورڈ کے کسی بھی پن کو UART، I2C، SPI اور PWM کے طور پر ترتیب دینا ممکن ہے۔ کسی کو صرف انہیں کوڈ میں تفویض کرنے کی ضرورت ہے۔ اب ہم نئے SPI پنوں کی وضاحت کریں گے اور تصدیق کے لیے انہیں سیریل مانیٹر پر پرنٹ کریں گے۔

نیچے دیا گیا کوڈ Arduino IDE ایڈیٹر میں ٹائپ کریں۔

# شامل کریں
باطل سیٹ اپ ( ) {
سیریل شروع کریں۔ ( 115200 ) ;
سیریل۔ پرنٹ ( 'پہلے سے طے شدہ MOSI GPIO پن:' ) ;
Serial.println ( دھواں ) ;
سیریل۔ پرنٹ ( 'پہلے سے طے شدہ MISO GPIO پن:' ) ;
Serial.println ( ایم آئی ایس او ) ;
سیریل۔ پرنٹ ( 'پہلے سے طے شدہ SCK GPIO پن:' ) ;
Serial.println ( ایس سی کے ) ;
سیریل۔ پرنٹ ( 'پہلے سے طے شدہ SS GPIO پن:' ) ;
Serial.println ( ایس ایس ) ;
#SCK 25 کی وضاحت کریں۔
#MISO 32 کی وضاحت کریں۔
#موسی 26 کی وضاحت کریں۔
# CS 33 کی وضاحت کریں۔
/* لائبریری_نام سینسر_نام ( CS، MOSI، MISO، SCK ) ; // نئے SPI پنوں کو کال کریں۔ */
سیریل۔ پرنٹ ( 'موسی نیا جی پی آئی او پن:' ) ;
Serial.println ( دھواں ) ;
سیریل۔ پرنٹ ( 'MISO نیا GPIO پن:' ) ;
Serial.println ( ایم آئی ایس او ) ;
سیریل۔ پرنٹ ( 'SCK نیا GPIO پن:' ) ;
Serial.println ( ایس سی کے ) ;
سیریل۔ پرنٹ ( 'SS NEW GPIO پن:' ) ;
Serial.println ( ایس ایس ) ;
}
باطل لوپ ( ) {
}


یہاں اوپر کے کوڈ میں، ہم SPI سیریل لائبریری کو شامل کرتے ہیں پھر پہلے سے طے شدہ SPI پنوں کو سیریل مانیٹر پر پرنٹ کرتے ہیں۔ اگر ضرورت نہ ہو تو کوئی کوڈ کے اس حصے کو چھوڑ سکتا ہے۔ اس کے بعد define کا استعمال کرتے ہوئے ہم SPI کو نئے پن تفویض کرتے ہیں اور انہیں سیریل مانیٹر پر ایک ایک کرکے پرنٹ کرتے ہیں۔

آؤٹ پٹ

سیریل مانیٹر پر ظاہر ہونے والا آؤٹ پٹ ESP32 بورڈ کے لیے تمام نئے SPI پنوں کو پرنٹ کرتا ہے۔

ESP32 ایک سے زیادہ SPI آلات کے ساتھ

ESP32 میں دو SPI بسیں ہیں، اور ہر بس کنٹرول کر سکتی ہے۔ 3 ڈیوائسز جس کا مطلب ہے کہ ESP32 کے SPI کا استعمال کرتے ہوئے کل 6 ڈیوائسز کو کنٹرول کیا جا سکتا ہے۔ مزید آلات کو کنٹرول کرنے کے لیے، ہم ملٹی پلیکسنگ کی مختلف تکنیکیں استعمال کر سکتے ہیں۔

متعدد غلام آلات کو کنٹرول کرنے کے دوران ESP32 ان تینوں لائنوں MISO کے لیے ایک ماسٹر کے طور پر کام کرے گا، MOSI SCLK ان کے لیے ایک جیسا ہوگا صرف فرق CS کلاک سگنل لائن کا ہے۔ کسی غلام ڈیوائس کو ڈیٹا بھیجنے کے لیے اس غلام ڈیوائس کا CS پن کم پر سیٹ ہونا چاہیے۔


اگر ہم CS کو LOW پر سیٹ کرنا چاہتے ہیں تو درج ذیل نحو کی پیروی کی جائے گی۔

ڈیجیٹل رائٹ ( CS، LOW ) ;


فرض کریں کہ ہم کسی دوسرے ڈیوائس سے ڈیٹا پڑھنا چاہتے ہیں، تو ہمیں اسے غیر فعال کرنے کے لیے پہلے غلام ڈیوائس کے CS پن کو ہائی کے طور پر سیٹ کرنا چاہیے۔

ڈیجیٹل رائٹ ( CS_1، ہائی ) ; // SLAVE کے CS پن کو غیر فعال کریں۔ 1
ڈیجیٹل رائٹ ( CS_2، کم ) ; // SLAVE کے CS پن کو فعال کریں۔ دو

نتیجہ

سیریل پیریفرل انٹرفیس وائرڈ کمیونیکیشن پروٹوکول ہے جسے ESP32 مائیکرو کنٹرولر متعدد غلام آلات کے درمیان ڈیٹا کا تبادلہ کرنے کے لیے استعمال کرتا ہے۔ ESP32 SPI 3 غلام آلات کو کنٹرول کرنے کی ہر بس کی صلاحیت کے ساتھ مواصلات کے لیے دو مختلف بسوں کو سپورٹ کرتا ہے۔ پہلے سے طے شدہ طور پر، ESP32 SPI پنوں کے ساتھ آتا ہے۔ تاہم، ہم کوڈ کا استعمال کرتے ہوئے اپنی مرضی کے پنوں کی وضاحت اور استعمال بھی کر سکتے ہیں۔