- सामग्री की आवश्यकता:
- जीएसएम मॉड्यूल:
- एटी कमांड का उपयोग करके जीएसएम मॉड्यूल के साथ संचार:
- सर्किट आरेख:
- प्रोग्रामिंग आप PIC माइक्रोकंट्रोलर:
- सिमुलेशन:
- GSM और PIC का उपयोग करके कॉल करना और प्राप्त करना:
जीएसएम मॉड्यूल विशेष रूप से उपयोग करने के लिए आकर्षक हैं जब हमारी परियोजना को दूरस्थ पहुंच की आवश्यकता होती है। ये मॉड्यूल वे सभी कार्य कर सकते हैं जो हमारा सामान्य मोबाइल फोन कर सकता है, जैसे कॉल करना / प्राप्त करना, एसएमएस भेजना / प्राप्त करना, जीपीआरएस का उपयोग करके इंटरनेट से जुड़ना आदि। आप इस मॉड्यूल में एक सामान्य माइक्रोफोन और स्पीकर को भी कनेक्ट कर सकते हैं और अपने को समझ सकते हैं। मोबाइल कॉल। यदि यह एक माइक्रोकंट्रोलर के साथ हस्तक्षेप किया जा सकता है तो यह बहुत सारी रचनात्मक परियोजनाओं के लिए दरवाजे खोल देगा। इसलिए इस ट्यूटोरियल में हम सीखेंगे कि हम अपने PIC माइक्रोकंट्रोलर से GSM मॉड्यूल (SIM900A) को कैसे इंटरफेस कर सकते हैं और GSM मॉड्यूल का उपयोग करके कॉल प्राप्त और प्राप्त करके इसे प्रदर्शित करेंगे। हमने पहले कॉलिंग और मैसेजिंग के लिए इसे Arduino और Raspberry Pi के साथ इंटर किया है:
- Arduino और GSM मॉड्यूल का उपयोग करके कॉल और संदेश
- रास्पबेरी पाई और जीएसएम मॉड्यूल का उपयोग करके कॉल और टेक्स्ट
सामग्री की आवश्यकता:
- PIC माइक्रोकंट्रोलर (PIC16F877A)
- GSM मॉड्यूल (SIM900 या कोई अन्य)
- तारों को जोड़ना
- 12 वी एडाप्टर
- PicKit 3
जीएसएम मॉड्यूल:
एटी कमांड मोड का उपयोग करके जीएसएम मॉड्यूल को बिना किसी माइक्रोकंट्रोलर के भी उपयोग किया जा सकता है। जैसा कि GSM मॉड्यूल के ऊपर दिखाया गया है, एक USART एडाप्टर के साथ आता है जिसे MAX232 मॉड्यूल या Tx और Rx पिन का उपयोग करके सीधे कंप्यूटर से इंटरफेयर किया जा सकता है और इसे माइक्रोकंट्रोलर से कनेक्ट करने के लिए इस्तेमाल किया जा सकता है। आप एमआईसी +, एमआईसी-, एसपी +, एसपी- आदि जैसे अन्य पिनों को भी नोटिस कर सकते हैं जहां एक माइक्रोफोन या स्पीकर कनेक्ट किया जा सकता है। मॉड्यूल को सामान्य डीसी बैरल जैक के माध्यम से 12V एडाप्टर द्वारा संचालित किया जा सकता है।
मॉड्यूल के स्लॉट में अपना सिम कार्ड डालें और इसे चालू करें, आपको एक बिजली एलईडी चालू करना चाहिए। अब एक या एक मिनट के लिए प्रतीक्षा करें, और आपको हर 3 सेकंड के लिए एक बार एक लाल (या किसी अन्य रंग) एलईडी फ्लैशिंग दिखाई देनी चाहिए। इसका मतलब है कि आपका मॉड्यूल आपके सिम कार्ड के साथ कनेक्शन स्थापित करने में सक्षम था। अब आप फोन या किसी भी माइक्रोकंट्रोलर के साथ मॉड्यूल को जोड़ने के लिए आगे बढ़ सकते हैं।
एटी कमांड का उपयोग करके जीएसएम मॉड्यूल के साथ संचार:
जैसा कि आपने अनुमान लगाया होगा, जीएसएम मॉड्यूल सीरियल संचार के माध्यम से संवाद कर सकता है और केवल एक ही भाषा को समझ सकता है और वह है " एटी कमांड "। जो कुछ भी आप जीएसएम मॉड्यूल को बताना या पूछना चाहते हैं वह केवल एटी कमांड के माध्यम से होना चाहिए। उदाहरण के लिए यदि आप जानना चाहते हैं कि आपका मॉड्यूल सक्रिय है या नहीं। आपको "AT" जैसी कमांड (भेजना) चाहिए और आपका मॉड्यूल "ओके" का जवाब देगा।
इन एटी कमांडों को इसकी डेटा शीट में अच्छी तरह से समझाया गया है और इसकी आधिकारिक डेटाशीट में यहां पाया जा सकता है। ठीक है! ठीक है! यह 271 पेज की डेटाशीट है और आपको इनके माध्यम से पढ़ने में कुछ दिन लग सकते हैं। इसलिए मैंने आपके लिए कुछ सबसे महत्वपूर्ण AT कमांड दिए हैं ताकि आप इसे उठा सकें और जल्द ही चल सकें।
पर |
ठीक है आभार के साथ जवाब |
AT + CPIN? |
सिग्नल की गुणवत्ता की जाँच करें |
AT + COPS? |
सेवा प्रदाता का नाम खोजें |
ATD96XXXXXXXX; |
विशिष्ट संख्या पर कॉल करें, अर्ध-बृहदान्त्र के साथ समाप्त होता है |
AT + CNUM |
सिम कार्ड की संख्या ज्ञात करें (कुछ सिम के लिए काम नहीं कर सकते हैं) |
एटीए |
इनकमिंग कॉल का उत्तर दें |
एथलीट |
वर्तमान आवक कॉल बंद करें |
AT + COLP |
इनकमिंग कॉल नंबर दिखाएं |
एटी + वीटीएस = (संख्या) |
DTMF नंबर भेजें। आप (नंबर) के लिए अपने मोबाइल कीपैड पर किसी भी नंबर का उपयोग कर सकते हैं |
एटी + सीएमजीआर |
AT + CMGR = 1 पहले स्थान पर संदेश पढ़ता है |
AT + CMGD = 1 |
संदेश को पहली स्थिति में हटाएं |
AT + CMGDA = "DEL ALL" |
सिम से सभी संदेश हटाएं |
AT + CMGL = "सभी" |
सिम से गड़बड़ सभी पढ़ें |
AT + CMGF = 1 |
SMS कॉन्फ़िगरेशन सेट करें। "1" केवल पाठ मोड के लिए है |
AT + CMGS = "+91 968837XXXX" > सर्किटडिगेस्ट टेक्स्ट
|
एसएमएस एक विशेष संख्या में यहां 968837XXXX पर भेजता है। जब आप ">" देखते हैं तो पाठ दर्ज करना शुरू करें। टेक्स्ट भेजने के लिए Ctrl + Z दबाएं। |
AT + CGATT? |
सिम कार्ड पर इंटरनेट कनेक्शन की जांच करने के लिए |
AT + CIPSHUT |
टीसीपी कनेक्शन बंद करने के लिए, फॉर्म इंटरनेट को डिस्कनेक्ट करने का अर्थ है |
AT + CSTT = "APN", "उपयोगकर्ता नाम", "पास" |
अपने APN और पास कुंजी के साथ GPRS से कनेक्ट करें। नेटवर्क प्रदाता से प्राप्त किया जा सकता है। |
AT + CIICR |
जांचें कि क्या सिम कार्ड में डेटा पैक है |
AT + CIFSR |
सिम नेटवर्क का आईपी प्राप्त करें |
AT + CIPSTART = "TCP", "सर्वर IP", "पोर्ट" |
टीसीपी आईपी कनेक्शन सेट करने के लिए उपयोग किया जाता है |
AT + CIPSEND |
इस कमांड का उपयोग सर्वर में डेटा भेजने के लिए किया जाता है |
सर्किट आरेख:
PIC माइक्रोकंट्रोलर के साथ इंटरफैसिंग जीएसएम मॉड्यूल के लिए कनेक्शन आरेख नीचे दिखाया गया है।
हमने क्रमशः GSM MC मॉड्यूल के Tx और Rx पिन को PIC MCU PIC16F877A के Rx और Tx पिन के साथ इंटरफेयर किया है। यह दोनों के बीच एक सीरियल कनेक्शन स्थापित करेगा। इसके अलावा, इसलिए जीएसएम और पीआईसी मॉड्यूल दोनों के लिए सामान्य आधार को न भूलें। हमने अपने GSM मॉड्यूल की स्थिति जानने के लिए LCD डिस्प्ले का भी उपयोग किया है। एक बार कनेक्शन हो जाने के बाद आपका हार्डवेयर नीचे कुछ दिखाई देगा।
PIC परफेक्ट बोर्ड हमारी PIC ट्यूटोरियल श्रृंखला के लिए बनाया गया था, जिसमें हमने PIC माइक्रोकंट्रोलर का उपयोग करना सीखा। आप MPLABX और XC8 का उपयोग करके उन PIC माइक्रोकंट्रोलर ट्यूटोरियल पर वापस जाना चाह सकते हैं यदि आप नहीं जानते कि पिकेट 3 का उपयोग करके किसी प्रोग्राम को कैसे जलाया जाए, क्योंकि मैं उन सभी बुनियादी जानकारी को छोड़ दूंगा।
प्रोग्रामिंग आप PIC माइक्रोकंट्रोलर:
इस परियोजना का पूरा कार्यक्रम इस ट्यूटोरियल में सबसे नीचे पाया जा सकता है। यहां मैं कुछ महत्वपूर्ण कार्यों और कोड के टुकड़ों की व्याख्या करूंगा। इस कार्यक्रम में एक एलसीडी कोड भी है जो PIC माइक्रोकंट्रोलर के साथ इंटरफेंसिंग एलसीडी से थे, आप उस ट्यूटोरियल पर जा सकते हैं यदि आप यह जानने के लिए उत्सुक हैं कि एलसीडी को माइक्रोकंट्रोलर के साथ कैसे उपयोग किया जा सकता है।
जैसा कि पहले कहा गया था, हम संचार के सीरियल मोड के माध्यम से एटी कमांड का उपयोग करके PIC और GSM के बीच संवाद करने जा रहे हैं। इसलिए, पहले हमें प्रारंभिक PICSS900 () का उपयोग करके अपने PIC माइक्रोकंट्रोलर में USART संचार मॉड्यूल को इनिशियलाइज़ करना होगा; समारोह। इस फ़ंक्शन के अंदर हम टीएक्स और आरएक्स पिन की घोषणा करते हैं और 9600 बॉड दर और 8-बिट मोड पर अतुल्यकालिक रिसेप्शन और ट्रांसमिशन को इनिशियलाइज़ करते हैं।
// *** SIM900 के लिए प्रारंभिक UART ** // void Initialize_SIM900 (शून्य) {// **** सेटिंग I / O पिन UART के लिए **** // TRISC6 = 0; // TX पिन आउटपुट TRISC7 = 1 के रूप में सेट; // RX पिन सेट के रूप में इनपुट // ________ I / O पिन सेट __________ // / ** आवश्यक बॉड दर के लिए SPBRG रजिस्टर शुरू करें और तेजी से बॉड_रेट के लिए BRGH सेट करें ** / SPBRG = 129; // SIM900 9600 बॉड दर से संचालित होता है इसलिए 129 BRGH = 1; // हाई बॉड_रेट के लिए // _________ बॉड_रेट की समाप्ति _________ // // **** एसिंक्रोनस सीरियल पोर्ट को सक्षम करें ******* // SYNC = 0; // एसिंक्रोनस एसपीएन = 1; // सीरियल पोर्ट पिन सक्षम करें // _____ अतुल्यकालिक सीरियल पोर्ट सक्षम _______ // // ** ट्रांसमिशन और रिसेप्शन के लिए तैयार करें ** // TXEN = 1; // सक्षम संचरण CREN = 1; // सक्षम रिसेप्शन // __ UART मॉड्यूल अप और ट्रांसमिशन और रिसेप्शन के लिए तैयार __ // // ** 8-बिट मोड का चयन करें ** // TX9 = 0; // 8-बिट रिसेप्शन चयनित RX9 = 0;// 8-बिट रिसेप्शन मोड चयनित // __ 8-बिट मोड चयनित __ //} // ________ UART मॉड्यूल प्रारंभिक __________ //
अब हमें अपने GSM मॉड्यूल से / से जानकारी पढ़ने और लिखने की आवश्यकता है। इसके लिए हम _SIM900_putch (), _SIM900_getch (), _SIM900_send_string (), _SIM900_print () का उपयोग करते हैं। ये फ़ंक्शंस ट्रांसमिट का उपयोग करते हैं और डेटा प्राप्त करने या लिखने के लिए TXREG और RCREG जैसे बफर रजिस्टर प्राप्त करते हैं।
// ** UART को तारीख का एक बाइट भेजने का कार्य ** // void _SIM900_putch (char bt) {{(TXF); // प्रोग्राम को तब तक पकड़ें जब तक कि TX बफर फ्री TXREG = bt; // प्राप्त मान के साथ ट्रांसमीटर बफ़र लोड करें // // _____________ फ़ंक्शन का अंत ________________ // // ** कार्य से एक बाइट पाने के लिए फ़ंक्शन ** // char _SIM900_getch () {अगर (OERR) त्रुटि की जांच करें { CREN = 0; // यदि त्रुटि -> रीसेट CREN = 1; // यदि त्रुटि -> रीसेट} जबकि (! RCIF); // कार्यक्रम को पकड़ें जब तक कि आरएक्स बफर मुफ्त रिटर्न आरसीआरईजी न हो; // मान प्राप्त करें और इसे मुख्य फ़ंक्शन के लिए भेजें} // _____________ फ़ंक्शन का अंत ________________ // // ** स्ट्रिंग को बाइट में बदलने का कार्य ** // void SIM900_send_string (char * st_pt) {जबकि (* स्टेप) // अगर वहाँ एक चार _SIM900_putch (* st_pt ++) है;// इसे एक बाइट डेटा के रूप में प्रोसेस करें} // ___________ फ़ंक्शन का अंत ______________ // // ** संशोधित कोड्स का अंत ** // void _SIM900_print (अहस्ताक्षरित कॉन्स्ट चार्ट * ptr) {जबकि (* ptr! = 0} {_SIM900_putch (*) पीटीआर ++); }
उपरोक्त कार्य सार्वभौमिक हैं और किसी भी अनुप्रयोग के लिए इसे बदलने की आवश्यकता नहीं है। उन्हें केवल एक मोटा परिचय देने के लिए समझाया गया था। यदि आप समझ के माध्यम से चाहते हैं, तो आप उनमें गहरा गोता लगा सकते हैं।
अब हमारे मुख्य कार्य के अंदर, हम USART कनेक्शन को इनिशियलाइज़ करते हैं और जाँचते हैं कि क्या हम "ठीक" प्राप्त करने में सक्षम हैं जब हम नीचे की लाइन का उपयोग करके "एटी" भेजते हैं
do {Lcd_Set_Cursor (2,1); Lcd_Print_String ("मॉड्यूल नहीं मिला"); } जबकि (SIM900_isStarted ()); // प्रतीक्षा करें जब तक जीएसएम "ओके" Lcd_Set_Cursor (2,1) वापस भेजने के लिए; Lcd_Print_String ("मॉड्यूल पता लगाया गया"); __delay_ms (1500);
फ़ंक्शन SIM900_isStarted (); जीएसएम को "एटी" भेजेगा और इसके लिए "ओके" प्रतिक्रिया का इंतजार करेगा। यदि हाँ, यह 1 और 0 लौटाएगा;
यदि मॉड्यूल का पता नहीं चला है या यदि कोई कनेक्शन समस्या है, तो एलसीडी "मॉड्यूल नहीं मिला" दिखाएगा, अन्यथा यह मॉड्यूल का पता लगाएगा और अगले चरण पर आगे बढ़ेगा, जहां हम जांचते हैं कि सिम कार्ड नीचे से पता लगाया जा सकता है कोड की लाइन।
/ * जांचें कि क्या सिम कार्ड का पता चला है * / do {Lcd_Set_Cursor (2,1); Lcd_Print_String ("सिम नहीं मिली"); } जबकि (SIM900_isReady ()); // GSM तक प्रतीक्षा करें "+ CPIN: READY" Lcd_Set_Cursor (2,1); Lcd_Print_String ("सिम पता लगाया गया"); __delay_ms (1500);
फ़ंक्शन SIM900_isReady () "AT + CPIN?" भेजेगा जीएसएम के लिए और प्रतिक्रिया का इंतजार कर रहा है "+ सीपीआईएन: पढ़ें" से। यदि हाँ, यह 1 और 0 लौटाएगा;
अगर एक सिम कार्ड मिलता है तो हमें एलसीडी पर प्रदर्शित सिम का पता चलेगा। फिर, हम कमांड " एटीडी मोबिलनंबर " का उपयोग करके कॉल करने का प्रयास कर सकते हैं ; ”। यहाँ एक उदाहरण के रूप में मैंने अपना नंबर ATD93643159XX; आपको वहां अपना संबंधित मोबाइल नंबर बदलना होगा।
/ * एक फ़ोन कॉल करें * / do {_SIM900_print ("ATD93643XXXXX; \ r \ _ i"); // यहाँ हम नंबर 93643XXXXX Lcd_Set_Cursor (1,1) पर कॉल कर रहे हैं; Lcd_Print_String ("प्लेसिंग कॉल…."); } जबकि (_SIM900_waitResponse ()! = SIM900_OK); // तब तक प्रतीक्षा करें जब तक ईएसपी वापस "ओके" Lcd_Set_Cursor (1,1) न भेजें; Lcd_Print_String ("कॉल किया गया…."); __delay_ms (1500);
कॉल लगाते ही एलसीडी कॉल प्लेस्ड प्रदर्शित करेगा और आपको उस निर्दिष्ट नंबर पर एक इनकमिंग कॉल प्राप्त करना चाहिए।
आप जीएसएम मॉड्यूल से जुड़े मोबाइल नंबर पर भी कॉल कर सकते हैं और नीचे दिए गए कोड का उपयोग करके अपने एलसीडी स्क्रीन y पर इसके बारे में सूचित कर सकते हैं
जबकि (1) {if (_SIM900_waitResponse () == SIM900_RING) // चेक करें कि क्या कोई इनकमिंग कॉल {Lcd_Set_Cursor (2,1) है; Lcd_Print_String ("आने वाली कॉल !!"); }}
जब जीएसएम मॉड्यूल एक इनकमिंग कॉल का पता लगाता है तो यह एलसीडी मॉड्यूल की दूसरी लाइन पर इनकमिंग कॉल प्रदर्शित करेगा। फ़ंक्शन _SIM900_waitResponse () GSM मॉड्यूल से आने वाले डेटा की जांच करेगा। जब यह SIM900_RING को प्राप्त करता है, जो कि WaitResponce () के कारण "रिंग" के बराबर है, तो हम "इनकमिंग कॉल" स्थिति प्रदर्शित करेंगे।
आप जीएसएम मॉड्यूल का उपयोग कर लगभग सभी प्रकार की गतिविधियों को करने के लिए इस तरह से अपने स्वयं के कार्य बना सकते हैं। यदि आप हार्डकोड करना चाहते हैं, तो आप नीचे दिए गए किसी भी एटी कमांड को भेजने के लिए __SIM900_print () फ़ंक्शन का उपयोग कर सकते हैं।
_SIM900_print ("AT + CPIN? \ R \ n");
याद रखें कि कमांड को समाप्त करने का संकेत देने के लिए आपको सभी आदेशों का पालन "\ r \ n" के साथ किया जाना चाहिए।
सिमुलेशन:
एक बार जब आप समझ गए कि प्रोग्राम कैसे काम करता है तो आप अपनी आवश्यकताओं को पूरा करने के लिए अनुकरण करने और बदलाव करने की कोशिश कर सकते हैं। सिमुलेशन आपको बहुत समय बचाएगा। सिमुलेशन प्रोटीन का उपयोग करके किया जाता है और यह नीचे की तरह दिखता है।
जैसा कि आप देख सकते हैं कि प्रोग्राम में अपेक्षित रूप से प्रतिक्रिया दे रहा है या नहीं यह जांचने के लिए हमने प्रोटियस में वर्चुअल टर्मिनल विकल्प का उपयोग किया है। हम पॉप-अप संवाद बॉक्स के माध्यम से मूल्यों में फ़ीड कर सकते हैं। उदाहरण के लिए, जैसे ही हम रन मारते हैं, ऊपर एक ब्लैक डायलॉग बॉक्स दिखाई देगा और एटी प्रदर्शित करेगा, इसका मतलब है कि इसने जीएसएम मॉड्यूल एटी भेज दिया है, अब हम बॉक्स में "ओके" टाइप करके पीआईसी को जवाब दे सकते हैं और एंट्री मार सकते हैं और तस्वीर इसका जवाब देगी। इसी तरह हम सभी AT कमांड के लिए प्रयास कर सकते हैं।
GSM और PIC का उपयोग करके कॉल करना और प्राप्त करना:
एक बार जब आप समझ जाते हैं कि कोड और हार्डवेयर कैसे काम करते हैं, तो बस नीचे दिए गए प्रोग्राम को मॉड्यूल पर PIC और पॉवर पर अपलोड करें। अगर सब कुछ ठीक चल रहा है तो आपके एलसीडी को "मॉड्यूल डिटेक्ट", "सिम डिटेक्ट" और "कॉल प्लेस" प्रदर्शित करना चाहिए। एक बार जब आप "कॉल रखा" देखते हैं, तो आपको प्रोग्राम में निर्दिष्ट नंबर पर एक इनकमिंग कॉल मिलेगी।
आप जीएसएम मॉड्यूल में मौजूद नंबर पर कॉल करने का भी प्रयास कर सकते हैं और आपका एलसीडी "इनकमिंग कॉल" प्रदर्शित करेगा यह इंगित करने के लिए सिम को बुलाया जा रहा है।
परियोजना का पूरा काम नीचे दिए गए वीडियो में दिखाया गया है । आशा है कि आप इस परियोजना को समझ गए हैं और इसे करने में मज़ा आया है। यदि आपको काम करने में कोई समस्या है, तो अपना प्रश्न टिप्पणी अनुभाग या हमारे मंचों पर पोस्ट करें और मुझे आपकी मदद करने में खुशी होगी।