- सामग्री की आवश्यकता
- सॉफ्टवेयर का इस्तेमाल किया
- जीएसएम मॉड्यूल
- एटी कमांड्स का उपयोग करके जीएसएम मॉड्यूल के साथ संचार
- ATMega16 GSM मॉड्यूल इंटरफेजिंग सर्किट डायग्राम
- CodeVision का उपयोग करके ATmega16 के लिए प्रोजेक्ट बनाना
- कोड और स्पष्टीकरण
- प्रोजेक्ट बनाएं
- कोड को Atmega16 पर अपलोड करें
जीएसएम मॉड्यूल विशेष रूप से उपयोग करने के लिए दिलचस्प हैं जब हमारी परियोजना को दूरस्थ पहुंच की आवश्यकता होती है। ये मॉड्यूल वे सभी कार्य कर सकते हैं जो हमारा सामान्य मोबाइल फोन कर सकता है, जैसे कॉल करना / प्राप्त करना, एसएमएस भेजना / प्राप्त करना, जीपीआरएस का उपयोग करके इंटरनेट से जुड़ना आदि। आप इस मॉड्यूल में एक सामान्य माइक्रोफोन और स्पीकर को भी कनेक्ट कर सकते हैं और अपने को समझ सकते हैं। मोबाइल कॉल। यदि यह एक माइक्रोकंट्रोलर के साथ हस्तक्षेप किया जा सकता है तो यह बहुत सारी रचनात्मक परियोजनाओं के लिए दरवाजे खोल देगा। इसलिए इस ट्यूटोरियल में हम जानेंगे कि हम AVR माइक्रोकंट्रोलर ATmega16 के साथ GSM मॉड्यूल (SIM900A) को कैसे इंटरफ़ेस कर सकते हैं और जीएसएम मॉड्यूल का उपयोग करके संदेश भेजकर और प्राप्त करके इसे प्रदर्शित करेंगे ।
सामग्री की आवश्यकता
- Atmega16
- GSM मॉड्यूल (SIM900 या कोई अन्य)
- एलसीडी प्रदर्शन
- पुश बटन
- 10k रेसिस्टर्स, पोटेंशियोमीटर
- तारों को जोड़ना
- 12 वी एडाप्टर
- USBasp प्रोग्रामर
- 10 पिन एफआरसी केबल
सॉफ्टवेयर का इस्तेमाल किया
हम अपने कोड को लिखने के लिए CodeVisionAVR सॉफ्टवेयर और USBASP प्रोग्रामर का उपयोग करके Atmega16 पर अपना कोड अपलोड करने के लिए SinaProg सॉफ्टवेयर का उपयोग करेंगे।
आप इन सॉफ्टवेयर्स को दिए गए लिंक से डाउनलोड कर सकते हैं:
CodeVisionAVR:
सिनाप्रोग:
योजनाबद्ध और कोड में जाने से पहले, हम जीएसएम मॉड्यूल और इसके काम के बारे में सीखते हैं।
जीएसएम मॉड्यूल
एटी कमांड मोड का उपयोग करके जीएसएम मॉड्यूल को बिना किसी माइक्रोकंट्रोलर के भी उपयोग किया जा सकता है। जैसा कि GSM मॉड्यूल के ऊपर दिखाया गया है, एक USART एडाप्टर के साथ आता है जिसे MAX232 मॉड्यूल या Tx और Rx पिन का उपयोग करके सीधे कंप्यूटर से इंटरफेयर किया जा सकता है और इसे माइक्रोकंट्रोलर से कनेक्ट करने के लिए इस्तेमाल किया जा सकता है। आप एमआईसी +, एमआईसी-, एसपी +, एसपी- आदि जैसे अन्य पिनों को भी नोटिस कर सकते हैं जहां एक माइक्रोफोन या स्पीकर कनेक्ट किया जा सकता है। मॉड्यूल को सामान्य डीसी बैरल जैक के माध्यम से 12V एडाप्टर द्वारा संचालित किया जा सकता है।
मॉड्यूल के स्लॉट में अपना सिम कार्ड डालें और इसे चालू करें, आपको एक बिजली एलईडी चालू करना चाहिए। अब एक या एक मिनट के लिए प्रतीक्षा करें, और आपको हर 3 सेकंड के लिए एक बार एक लाल (या किसी अन्य रंग) एलईडी फ्लैशिंग दिखाई देनी चाहिए। इसका मतलब है कि आपका मॉड्यूल आपके सिम कार्ड के साथ कनेक्शन स्थापित करने में सक्षम था। अब आप फोन या किसी भी माइक्रोकंट्रोलर के साथ मॉड्यूल को जोड़ने के लिए आगे बढ़ सकते हैं।
आप जीएसएम मॉड्यूल का उपयोग करके कई शांत परियोजनाओं का निर्माण कर सकते हैं जैसे:
- जीएसएम और Arduino का उपयोग कर वायरलेस नोटिस बोर्ड
- Arduino और GSM मॉड्यूल का उपयोग करके स्वचालित कॉल आंसरिंग मशीन
- Arduino का उपयोग करके जीएसएम आधारित होम ऑटोमेशन
- पीर सेंसर और जीएसएम आधारित सुरक्षा प्रणाली
इसके अलावा सभी जीएसएम संबंधित परियोजनाओं की जाँच करें।
एटी कमांड्स का उपयोग करके जीएसएम मॉड्यूल के साथ संचार
जैसा कि आपने अनुमान लगाया होगा, जीएसएम मॉड्यूल सीरियल संचार के माध्यम से संवाद कर सकता है और केवल एक ही भाषा को समझ सकता है और वह है " एटी कमांड "। जो कुछ भी आप जीएसएम मॉड्यूल को बताना या पूछना चाहते हैं वह केवल एटी कमांड के माध्यम से होना चाहिए। उदाहरण के लिए यदि आप जानना चाहते हैं कि आपका मॉड्यूल सक्रिय है या नहीं। आपको "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 |
इस कमांड का उपयोग सर्वर में डेटा भेजने के लिए किया जाता है |
यहां हम संदेश भेजने के लिए AT + CMGF और AT + CMGS कमांड का उपयोग करेंगे ।
यदि आपने Arduino के साथ GSM मॉड्यूल का उपयोग किया है, तो संदेश प्राप्त करते समय आप + CMT का उपयोग कर सकते हैं : सीरियल मॉनीटर पर मोबाइल नंबर और पाठ संदेश देखने के लिए आदेश। चित्र में दिखाए अनुसार पाठ संदेश दूसरी पंक्ति पर आता है।
हम इस + सीएमटी को स्कैन करेंगे: यह जांचने के लिए कमांड कि संदेश उपलब्ध है या नहीं।
ATMega16 GSM मॉड्यूल इंटरफेजिंग सर्किट डायग्राम
कनेक्शन निम्नानुसार होंगे
- Tx और Rx (Pin14) के लिए जीएसएम मॉड्यूल के Rx और Atmega16 के Tx (Pin15) क्रमशः।
- पुश बटन को PD5 (Pin19) और PD6 (Pin20)।
- एलसीडी कनेक्शन:
- आरएस - पीए 0
- आर / डब्ल्यू - पीए 1
- एन - पीए २
- डी 4 - पीए 4
- डी 5 - पीए 5
- डी 6 - पीए 6
- डी 7 - पीए 7
CodeVision का उपयोग करके ATmega16 के लिए प्रोजेक्ट बनाना
CodeVisionAVR और SinaProg सॉफ्टवेयर स्थापित करने के बाद , परियोजना और लेखन कोड बनाने के लिए नीचे दिए गए चरणों का पालन करें:
पहले ही अपलोड किया जा चुका है
चरण 1 । Open CodeVision फ़ाइल पर क्लिक करें -> नया -> प्रोजेक्ट । पुष्टि संवाद बॉक्स दिखाई देगा। Yes पर क्लिक करें
Step 2. CodeWizard खुल जाएगा। पहले विकल्प यानी AT90 पर क्लिक करें, और ठीक पर क्लिक करें।
चरण 3: - अपनी माइक्रोकंट्रोलर चिप चुनें, यहाँ हम दिखाए गए अनुसार Atmega16L लेंगे।
स्टेप 4: - USART पर क्लिक करें । उस पर क्लिक करके रिसीवर और ट्रांसमीटर चुनें । जैसा की नीचे दिखाया गया:
चरण 5: - अल्फ़ान्यूमेरिक एलसीडी पर क्लिक करें और सक्षम अल्फ़ान्यूमेरिक एलसीडी समर्थन का चयन करें ।
चरण 6: - प्रोग्राम पर क्लिक करें -> उत्पन्न, सहेजें और बाहर निकलें । अब, हमारे आधे से अधिक काम पूरा हो गया है
चरण 7: - डेस्कटॉप पर एक नया फ़ोल्डर बनाएं, ताकि हमारी फाइलें फ़ोल्डर में बनी रहें अन्यथा यह पूरी डेस्कटॉप विंडो पर बिखर जाएगा। अपने फ़ोल्डर को नाम दें जैसा आप चाहते हैं और मेरा सुझाव है कि प्रोग्राम फ़ाइलों को सहेजने के लिए उसी नाम का उपयोग करें।
हम फ़ाइलों को सहेजने के लिए एक के बाद एक तीन संवाद बॉक्स होंगे।
अन्य दो संवाद बॉक्स के साथ भी ऐसा ही करें जो आपके द्वारा पहले सेव करने के बाद दिखाई देगा।
अब, आपका कार्यक्षेत्र इस तरह दिख रहा है।
हमारे अधिकांश कार्य विज़ार्ड की सहायता से पूरे होते हैं। अब, हमें केवल GSM के लिए कोड लिखना होगा।
कोड और स्पष्टीकरण
प्रोजेक्ट बनाने के बाद सभी हेडर फाइलें स्वचालित रूप से संलग्न हो जाती हैं, आपको बस देरी दर्ज करनी होती है। हेडर फाइल और सभी चर घोषित करते हैं। इस ट्यूटोरियल के अंत में पूरा कोड दिया गया है।
#शामिल
UDR रजिस्टर से डेटा प्राप्त करने के लिए एक फंक्शन बनाएं । यह फ़ंक्शन प्राप्त डेटा लौटाएगा।
अहस्ताक्षरित चार प्राप्त_वायु (शून्य) { जबकि (! (UCSRA & 1 <)
उस समय लूप में आएं जिसमें हम दो बनाते हैं यदि कथन, एक संदेश भेजने के लिए और दूसरा प्राप्त करने के लिए । भेजें बटन ATmega के PIND6 के साथ जुड़ा हुआ है और PIND5 के साथ संदेश बटन प्राप्त करता है।
जब PIND6 (Send Button) को पहले दबाया जाता है यदि स्टेटमेंट निष्पादित होगा और संदेश भेजने के सभी कमांड एक-एक करके निष्पादित होंगे।
जबकि (1) { // lcd_clear (); lcd_putsf ("भेजें-> बीटीएन 1"); lcd_gotoxy (0,1); lcd_putsf ("प्राप्त करें-> बटना 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("संदेश भेजना…"); for (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); }..
यदि प्राप्त संदेश बटन दबाया जाता है, जबकि (b! = '+') लूप यह जाँच करेगा कि CMT कमांड मौजूद है या नहीं। यदि मौजूद है, तो दूसरी जबकि लूप निष्पादित होगा और कमांड की दूसरी पंक्ति पर जाएगा और एलसीडी पर एक-एक करके संदेश प्रिंट करेगा।
जबकि (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("प्राप्त संदेश…"); बी = प्राप्त_वायु (); जबकि (बी! = '+') { बी = प्राप्त_वायु (); } बी = प्राप्त_वायु (); if (b == 'C') { b = प्राप्त_वायु (); … ..
यह लूप प्रोग्राम को कमांड की दूसरी पंक्ति में ले जाता है और संदेश को सरणी में संग्रहीत करता है।
जबकि (बी! = 0x0a) { बी = प्राप्त_वायु (); } के लिए (बी = 0; बी <3; बी ++) { सी = प्राप्त_वायु (); संदेश = सी; } .. ..
इस के लिए पाश एलसीडी पर संदेश प्रदर्शित करने के लिए है।
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // एलसीडी देरी में PRINT_ms (10); }
डेमो वीडियो के साथ पूरा कोड नीचे दिया गया है, अब हमें अपनी परियोजना का निर्माण करना होगा।
प्रोजेक्ट बनाएं
जैसा दिखाया गया है प्रोजेक्ट आइकॉन बनाएँ पर क्लिक करें ।
प्रोजेक्ट के निर्माण के बाद, डिबग-> Exe फ़ोल्डर में एक HEX फ़ाइल उत्पन्न होती है, जो उस फ़ोल्डर में पाई जा सकती है जिसे आपने अपनी परियोजना को बचाने के लिए पहले बनाया है। हम इस HEX फाइल को Atapga16 में Sinaprog सॉफ्टवेयर का उपयोग करके अपलोड करने के लिए उपयोग करेंगे ।
कोड को Atmega16 पर अपलोड करें
Atmega16 प्रोग्राम के लिए दिए गए आरेख के अनुसार अपने सर्किट को कनेक्ट करें। USBASP प्रोग्रामर को FRC केबल के एक तरफ हुकअप और दूसरे पक्ष को नीचे वर्णित माइक्रोकंट्रोलर के SPI पिन से जोड़ा जाएगा:
- FRC महिला कनेक्टर का पिन 1 -> पिन 6, एटमेगा 16 का MOSI
- पिन 2 atmega16 के Vcc से जुड़ा हुआ है यानी Pin 10
- पिन 5 atmega16 के रीसेट से जुड़ा है यानी पिन 9
- Pin 7 atmega16 के SCK से जुड़ा है यानी Pin 8
- Pin 9 atmega16 के MISO यानी Pin 7 से जुड़ा
- Pin 8 atmega16 के GND से जुड़ा है यानी Pin 11
हम Sinaprog का उपयोग करके उपरोक्त उत्पन्न हेक्स फ़ाइल को अपलोड करेंगे, इसलिए इसे खोलें और डिवाइस ड्रॉप डाउन मेनू से Atmega16 चुनें। दिखाए गए अनुसार डिबग-> Exe फ़ोल्डर से HEX फ़ाइल चुनें।
अब, प्रोग्राम पर क्लिक करें और आपका कोड ATmega16 माइक्रोकंट्रोलर में जल जाएगा।
आप कर रहे हैं और आपके माइक्रोकंट्रोलर को प्रोग्राम किया गया है। बस संदेशों को भेजने और प्राप्त करने के लिए बटन दबाएं जीएसएम और एटीमेगा 16 माइक्रोकंट्रोलर।
पूरा कोड और प्रदर्शन वीडियो नीचे दिया गया है।