ESP32 में Arduino IDE का उपयोग करके SPI (सीरियल पेरिफेरल इंटरफ़ेस)।

Esp32 Mem Arduino Ide Ka Upayoga Karake Spi Siriyala Peripherala Intarafesa



ESP32 बोर्डों के पास कई संचार प्रोटोकॉल के लिए समर्थन है। इन प्रोटोकॉल में सीरियल USART, I2C (IIC) और SPI शामिल हैं। इन ESP32 बोर्डों के साथ वायरलेस संचार प्रोटोकॉल भी उपलब्ध हैं जैसे WiFi, डुअल ब्लूटूथ, ESP-Now, LoRa और बहुत कुछ। आज हम ESP32 SPI (सीरियल पेरिफेरल इंटरफ़ेस) प्रोटोकॉल पर ध्यान केंद्रित करेंगे।

ESP32 में SPI (सीरियल पेरिफेरल इंटरफ़ेस)।

SPI या सीरियल पेरिफेरल इंटरफ़ेस एक छोटी दूरी का संचार प्रोटोकॉल है जिसका उपयोग ESP32 जैसे कई माइक्रोकंट्रोलर उपकरणों में किया जाता है। यह एक तुल्यकालिक संचार प्रोटोकॉल है जिसका उपयोग मुख्य रूप से माइक्रोकंट्रोलर्स द्वारा इसके बाह्य उपकरणों के साथ संचार करने के लिए किया जाता है, जैसे कि हम इस प्रोटोकॉल का उपयोग एसपीआई प्रोटोकॉल का समर्थन करने वाले उपकरणों को पढ़ने और नियंत्रित करने के लिए कर सकते हैं।







SPI संचार मास्टर स्लेव कॉन्फ़िगरेशन का समर्थन करता है, हमेशा एक होता है एक मालिक जो कई दासों को नियंत्रित करता है। यह है एक फुल डुप्लेक्स संचार इसलिए डेटा को मास्टर से दास और दास से मास्टर तक एक साथ आदान-प्रदान किया जा सकता है।




ESP32 जरूरतों में SPI संचार चार उपकरणों को डेटा संचारित करने और प्राप्त करने के लिए विभिन्न पिन। निम्नलिखित चार पिन हैं:



  1. एससीके: क्लॉक लाइन ट्रांसमिशन की गति निर्धारित करती है
  2. मीसो: मास्टर इन स्लेव आउट, स्लेव से मास्टर तक ट्रांसमिशन पिन है
  3. धुआँ: मास्टर आउट स्लेव इन मास्टर डेटा से स्लेव के लिए ट्रांसमिशन लाइन है
  4. एसएस: स्लेव सेलेक्ट लाइन ESP32 को एक विशेष स्लेव का चयन करने और उस स्लेव से डेटा संचारित या प्राप्त करने में मदद करती है

टिप्पणी: कुछ उपकरण जो केवल दास हैं और मास्टर के रूप में कार्य नहीं कर सकते हैं, उनके पिन नामकरण अलग हैं जैसे:





    • मीसो से प्रतिस्थापित किया जाता है एसडीओ (सीरियल डेटा आउट)
    • धुआँ से प्रतिस्थापित किया जाता है एसडीआई (सीरियल डेटा इन)

ESP32 में SPI पिन

ESP32 बोर्ड के साथ आता है 4 विभिन्न SPI बाह्य उपकरणों को इसके माइक्रोकंट्रोलर के साथ एकीकृत किया गया है।

    • एसपीआई0: केवल आंतरिक मेमोरी संचार के लिए- बाहरी SPI उपकरणों के साथ उपयोग नहीं किया जा सकता
    • एसपीआई1: केवल आंतरिक मेमोरी संचार के लिए- बाहरी SPI उपकरणों के साथ उपयोग नहीं किया जा सकता
    • एसपीआई2: (HSPI) के पास स्वतंत्र बस सिग्नल हैं। प्रत्येक बस प्राप्त कर सकते हैं 3 दास उपकरण
    • एसपीआई3: (वीएसपीआई) बस सिग्नल स्वतंत्र है। प्रत्येक बस प्राप्त कर सकते हैं 3 दास उपकरण

अधिकांश ESP32 बोर्ड SPI2 और SPI3 दोनों के लिए पहले से निर्दिष्ट SPI पिन के साथ आते हैं। हालाँकि, यदि असाइन नहीं किया गया है तो हम हमेशा कोड में SPI पिन असाइन कर सकते हैं। अधिकांश ESP32 बोर्डों में पाए जाने वाले SPI पिन निम्नलिखित हैं जिन्हें पहले से असाइन किया गया है:



एसपीआई इंटरफ़ेस धुआँ मीसो एससीएलके सीएस
वीएसपीआई जीपीआईओ 23 जीपीआईओ 19 जीपीआईओ 18 जीपीआईओ 5
एचएसपीआई जीपीआईओ 13 जीपीआईओ 12 जीपीआईओ 14 जीपीआईओ 15



उपर्युक्त SPI पिन बोर्ड के प्रकार के आधार पर भिन्न हो सकते हैं। अब हम Arduino IDE का उपयोग करके ESP32 SPI पिन की जाँच करने के लिए एक कोड लिखेंगे।

ESP32 डिफ़ॉल्ट SPI पिन कैसे खोजें

नीचे लिखा कोड ESP32 बोर्ड में डिफ़ॉल्ट SPI पिन खोजने में मदद करेगा। ओपन Arduino IDE ESP32 को PC से कनेक्ट करें, सही पोर्ट का चयन करें और कोड अपलोड करें। फिर आउटपुट का इंतजार करें। इतना ही! यह कितना सरल है

ESP32 डिफ़ॉल्ट SPI पिन खोजने के लिए कोड

नीचे दिया गया कोड ESP32 डिफ़ॉल्ट SPI पिन को सीरियल मॉनीटर पर प्रिंट करेगा।

व्यर्थ व्यवस्था ( ) {
सीरियल.शुरू ( 115200 ) ;
सीरियल.प्रिंट ( 'MOSI GPIO पिन:' ) ;
सीरियल.प्रिंट ( धुआँ ) ;
सीरियल.प्रिंट ( 'मिसो जीपीआईओ पिन:' ) ;
सीरियल.प्रिंट ( मीसो ) ;
सीरियल.प्रिंट ( 'SCK GPIO पिन:' ) ;
सीरियल.प्रिंट ( एससीके ) ;
सीरियल.प्रिंट ( 'एसएस जीपीआईओ पिन:' ) ;
सीरियल.प्रिंट ( एसएस ) ;
}
शून्य पाश ( ) {
}


कोड बॉड दर को परिभाषित करके शुरू होता है और ESP32 SPI संचार प्रोटोकॉल के लिए डिफ़ॉल्ट GPIO पिन को कॉल करके जारी रहता है।

उत्पादन

यहाँ हमारे मामले में सीरियल मॉनिटर ने क्रमशः MOSI, MISO, SCK और SS के लिए पिन 23, 19, 18 और 5 प्रदर्शित किए।

ESP32 में कस्टम SPI पिन का उपयोग कैसे करें

ESP32 मल्टीप्लेक्सिंग सुविधाओं के लिए धन्यवाद, ESP32 बोर्ड के किसी भी पिन को UART, I2C, SPI और PWM के रूप में कॉन्फ़िगर करना संभव है। एक को उन्हें कोड में असाइन करने की आवश्यकता है। अब हम नए एसपीआई पिन को परिभाषित करेंगे और पुष्टि करने के लिए उन्हें सीरियल मॉनिटर पर प्रिंट करेंगे।

नीचे दिए गए कोड को Arduino IDE एडिटर में टाइप करें।

#शामिल
व्यर्थ व्यवस्था ( ) {
सीरियल.शुरू ( 115200 ) ;
सीरियल.प्रिंट ( 'डिफ़ॉल्ट MOSI GPIO पिन:' ) ;
सीरियल.प्रिंट ( धुआँ ) ;
सीरियल.प्रिंट ( 'डिफ़ॉल्ट MISO GPIO पिन:' ) ;
सीरियल.प्रिंट ( मीसो ) ;
सीरियल.प्रिंट ( 'डिफ़ॉल्ट SCK GPIO पिन:' ) ;
सीरियल.प्रिंट ( एससीके ) ;
सीरियल.प्रिंट ( 'डिफ़ॉल्ट SS GPIO पिन:' ) ;
सीरियल.प्रिंट ( एसएस ) ;
# एससीके 25 को परिभाषित करें
#MISO 32 को परिभाषित करें
#MOSI 26 को परिभाषित करें
# सीएस 33 को परिभाषित करें
/* लाइब्रेरी_नाम सेंसर_नाम ( सीएस, एमओएसआई, मिसो, एससीके ) ; // नए SPI पिन को कॉल करें */
सीरियल.प्रिंट ( 'MOSI न्यू GPIO पिन:' ) ;
सीरियल.प्रिंट ( धुआँ ) ;
सीरियल.प्रिंट ( 'मिसो न्यू जीपीआईओ पिन:' ) ;
सीरियल.प्रिंट ( मीसो ) ;
सीरियल.प्रिंट ( 'एससीके न्यू जीपीआईओ पिन:' ) ;
सीरियल.प्रिंट ( एससीके ) ;
सीरियल.प्रिंट ( 'एसएस न्यू जीपीआईओ पिन:' ) ;
सीरियल.प्रिंट ( एसएस ) ;
}
शून्य पाश ( ) {
}


यहाँ उपरोक्त कोड में, हम SPI सीरियल लाइब्रेरी को शामिल करते हैं, फिर सीरियल मॉनिटर पर डिफ़ॉल्ट SPI पिन प्रिंट करते हैं। जरूरत न होने पर कोड के इस हिस्से को छोड़ सकते हैं। अगले परिभाषित का उपयोग करके हम एसपीआई को नए पिन असाइन करते हैं और उन्हें सीरियल मॉनीटर पर एक-एक करके प्रिंट करते हैं।

उत्पादन

सीरियल मॉनिटर पर प्रदर्शित आउटपुट ESP32 बोर्ड के लिए सभी नए SPI पिन प्रिंट करता है।

एकाधिक SPI उपकरणों के साथ ESP32

ESP32 में दो SPI बसें हैं, और प्रत्येक बस नियंत्रित कर सकती है 3 डिवाइस जिसका अर्थ है कि ESP32 के SPI का उपयोग करके कुल 6 उपकरणों को नियंत्रित किया जा सकता है। अधिक उपकरणों को नियंत्रित करने के लिए, हम विभिन्न बहुसंकेतन तकनीकों का उपयोग कर सकते हैं।

कई गुलाम उपकरणों को नियंत्रित करते समय ESP32 उनके लिए तीनों लाइनों MISO, MOSI SCLK के लिए एक मास्टर के रूप में कार्य करेगा, केवल अंतर CS क्लॉक सिग्नल लाइन है। किसी स्लेव डिवाइस को डेटा भेजने के लिए उस स्लेव डिवाइस का CS पिन लो पर सेट होना चाहिए।


यदि हम CS को LOW पर सेट करना चाहते हैं तो निम्नलिखित सिंटैक्स का पालन किया जाएगा।

digitalWrite ( सीएस, कम ) ;


मान लीजिए कि हम किसी अन्य डिवाइस से डेटा पढ़ना चाहते हैं, तो हमें इसे निष्क्रिय करने के लिए पहले स्लेव डिवाइस के सीएस पिन को हाई के रूप में सेट करना होगा।

digitalWrite ( सीएस_1, हाई ) ; // SLAVE का CS पिन अक्षम करें 1
digitalWrite ( CS_2, कम ) ; // SLAVE का CS पिन सक्षम करें दो

निष्कर्ष

सीरियल पेरिफेरल इंटरफ़ेस वायर्ड संचार प्रोटोकॉल है जिसका उपयोग ESP32 माइक्रोकंट्रोलर द्वारा कई गुलाम उपकरणों के बीच डेटा का आदान-प्रदान करने के लिए किया जाता है। ESP32 SPI 3 गुलाम उपकरणों को नियंत्रित करने की प्रत्येक बस क्षमता के साथ संचार के लिए दो अलग-अलग बसों का समर्थन करता है। डिफ़ॉल्ट रूप से, ESP32 SPI पिन के साथ आता है; हालाँकि, हम कोड का उपयोग करके कस्टम पिन को परिभाषित और उपयोग भी कर सकते हैं।