विषयसूची:

Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट: 16 कदम (चित्रों के साथ)
Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट: 16 कदम (चित्रों के साथ)

वीडियो: Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट: 16 कदम (चित्रों के साथ)

वीडियो: Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट: 16 कदम (चित्रों के साथ)
वीडियो: Memory card kharab ho gaya To Aisa kijiye 2024, नवंबर
Anonim
Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट
Arduino आधारित GSM/SMS रिमोट कंट्रोल यूनिट

! ! ! सूचना !

मेरे क्षेत्र में स्थानीय सेलफोन टावर के उन्नयन के कारण, मैं अब इस जीएसएम मॉड्यूल का उपयोग करने में सक्षम नहीं हूं। नया टावर अब 2जी डिवाइस को सपोर्ट नहीं करता है। इसलिए, मैं अब इस परियोजना के लिए कोई समर्थन नहीं दे सकता।

हॉबीस्ट के लिए उपलब्ध जीएसएम मॉड्यूल की इतनी विस्तृत श्रृंखला के साथ, हम में से अधिकांश ने एक खरीदना समाप्त कर दिया। मैंने स्थानीय रूप से एक SIM800L मॉड्यूल खरीदा, और मॉड्यूल के विभिन्न आदेशों के साथ खेलना समाप्त किया।

Arduino Uno और Arduino IDE का उपयोग करके, मैं अपने विचारों को वास्तविकता में बदलने में सक्षम था। यह आसान नहीं था, सिंगल सबसे बड़ा मुद्दा केवल 2KB SRAM की सीमा के साथ था। इंटरनेट और विभिन्न मंचों पर बहुत शोध करने के बाद, मैं इस सीमा को पार करने में सफल रहा।

विभिन्न प्रोग्रामिंग तकनीकों, Arduino कंपाइलर की बेहतर समझ, और अतिरिक्त मेमोरी के लिए सिम कार्ड और EEPROM का उपयोग करके, इस परियोजना को बचाया। कोड में कुछ बदलावों के बाद, एक सप्ताह की अवधि में एक स्थिर प्रोटोटाइप का निर्माण और परीक्षण किया गया।

सीमित SRAM की एक खामी यह थी कि यूनिट को डिस्प्ले और उपयोगकर्ता कुंजियों के साथ फिट नहीं किया जा सकता था। इसके परिणामस्वरूप कोड का पूर्ण पुनर्लेखन हुआ। उपयोगकर्ता इंटरफ़ेस न होने के कारण, परियोजना को जारी रखने के लिए एकमात्र विकल्प यूनिट और साथ ही उपयोगकर्ताओं को कॉन्फ़िगर करने के लिए एसएमएस संदेशों का उपयोग करना था।

यह एक रोमांचक परियोजना साबित हुई, और विकास जारी रहने के साथ-साथ और अधिक वायदा जोड़े गए।

मेरा मुख्य लक्ष्य Arduino Uno, या इस मामले में, ATMEGA328p के साथ रहना था, और किसी भी सतह माउंट घटकों का उपयोग नहीं करना था। इससे आम जनता के लिए यूनिट की प्रतिलिपि बनाना और निर्माण करना आसान हो जाएगा।

इकाई की विशिष्टता:

  • यूनिट पर अधिकतम 250 उपयोगकर्ताओं को प्रोग्राम किया जा सकता है
  • चार डिजिटल आउटपुट
  • चार डिजिटल इनपुट
  • प्रत्येक आउटपुट को PULSE या ON/OFF आउटपुट के रूप में कॉन्फ़िगर किया जा सकता है
  • आउटपुट पल्स अवधि 0.5.. 10 सेकंड के बीच सेट की जा सकती है
  • प्रत्येक इनपुट को OFF से ON परिवर्तनों को ट्रिगर करने के लिए कॉन्फ़िगर किया जा सकता है।
  • प्रत्येक इनपुट को चालू से बंद परिवर्तनों को ट्रिगर करने के लिए कॉन्फ़िगर किया जा सकता है
  • प्रत्येक इनपुट विलंब समय 0 सेकंड और 1 घंटे के बीच सेट किया जा सकता है
  • इनपुट में बदलाव के लिए एसएमएस संदेश 5 अलग-अलग उपयोगकर्ताओं को भेजे जा सकते हैं
  • प्रत्येक इनपुट के लिए नाम और स्थिति पाठ उपयोगकर्ता द्वारा निर्धारित किया जा सकता है
  • प्रत्येक आउटपुट के लिए नाम और स्थिति टेक्स्ट उपयोगकर्ता द्वारा सेट किया जा सकता है
  • यूएसएसडी मैसेजिंग के जरिए सिम कार्ड बैलेंस मैसेज प्राप्त करने के लिए यूनिट को कॉन्फ़िगर किया जा सकता है।
  • सभी उपयोगकर्ता इकाई के I/O स्थिति अद्यतन का अनुरोध कर सकते हैं
  • सभी उपयोगकर्ता एसएमएस संदेशों के माध्यम से अलग-अलग आउटपुट को नियंत्रित कर सकते हैं
  • सभी उपयोगकर्ता यूनिट को कॉल करके अलग-अलग आउटपुट को नियंत्रित कर सकते हैं

संरक्षा विशेषताएं

  • यूनिट का प्रारंभिक सेटअप केवल यूनिट में रहते हुए ही किया जा सकता है।
  • प्रारंभिक सेटअप केवल मास्टर उपयोगकर्ता द्वारा किया जा सकता है
  • प्रारंभिक सेटअप आदेश दस मिनट के बाद स्वचालित रूप से अक्षम हो जाते हैं।
  • केवल ज्ञात उपयोगकर्ताओं से भेजे गए कॉल और एसएमएस ही इकाई को नियंत्रित कर सकते हैं
  • उपयोगकर्ता केवल मास्टर उपयोगकर्ता द्वारा उन्हें सौंपे गए आउटपुट को संचालित कर सकते हैं

अन्य सुविधाओं

  • इस इकाई में कॉल निःशुल्क है, क्योंकि कॉल का उत्तर कभी नहीं मिलता।
  • जब यूनिट को कॉल किया जाता है, तो कॉल केवल 2 सेकंड के बाद ही बंद हो जाएगी। यह कॉल करने वाले की पुष्टि है कि यूनिट ने कॉल का जवाब दिया।
  • यदि सिम कार्ड सेवा प्रदाता यूएसएसडी संदेशों का समर्थन करता है, तो मास्टर उपयोगकर्ता द्वारा शेष राशि की पूछताछ की जा सकती है। शेष राशि वाले यूएसएसडी संदेश को मास्टर उपयोगकर्ता को अग्रेषित किया जाएगा।

चरण 1: बिजली की आपूर्ति

बिजली की आपूर्ति
बिजली की आपूर्ति

यह सुनिश्चित करने के लिए कि यूनिट को मानक सुरक्षा प्रणालियों (अलार्म सिस्टम, इलेक्ट्रिक गैरेज दरवाजे, इलेक्ट्रिक गेट मोटर्स) से जोड़ा जा सकता है, यूनिट को 12 वी डीसी से संचालित किया जाएगा जो सामान्य रूप से ऐसे सिस्टम पर उपलब्ध होता है।

बिजली 12V IN और 0V टर्मिनलों पर लागू होती है, और 1A फ्यूज द्वारा संरक्षित होती है। अतिरिक्त 12V OUT टर्मिनल उपलब्ध हैं, और फ्यूज द्वारा भी सुरक्षित हैं।

डायोड D1 12V लाइनों पर रिवर्स पोलरिटी कनेक्शन के खिलाफ यूनिट की सुरक्षा करता है।

कैपेसिटर C1 और C2 12V आपूर्ति लाइनों पर मौजूद किसी भी शोर को फ़िल्टर करते हैं। यूनिट के रिले को बिजली देने के लिए 12 वी आपूर्ति का उपयोग किया जाता है।

5V आपूर्ति में LM7805L वोल्टेज नियामक होता है, और SIM800L GSM मॉड्यूल के साथ-साथ माइक्रो प्रोसेसर के लिए आवश्यक एक स्थिर + 5V आउटपुट होता है। कैपेसिटर C3 और C4 किसी भी शोर को फ़िल्टर करते हैं जो +5V आपूर्ति लाइन पर मौजूद हो सकता है। सापेक्ष बड़े आकार के इलेक्ट्रोलाइटिक कैपेसिटर का उपयोग किया गया था, क्योंकि SIM800L GSM मॉड्यूल ट्रांसमिट करते समय काफी शक्ति का उपयोग करता है।

वोल्टेज रेगुलेटर पर हीट सिंक की आवश्यकता नहीं होती है।

चरण 2: डिजिटल इनपुट

डिजिटल इनपुट्स
डिजिटल इनपुट्स
डिजिटल इनपुट्स
डिजिटल इनपुट्स

डिजिटल इनपुट सिग्नल सभी 12V हैं, और इन्हें 5V माइक्रो कंट्रोलर के साथ इंटरफेस किया जाना चाहिए। इसके लिए ऑप्टो कप्लर्स का उपयोग 12V सिग्नल को 5V सिस्टम से अलग करने के लिए किया जाता है।

1K इनपुट रोकनेवाला ऑप्टो कपलर में इनपुट करंट को लगभग 10mA तक सीमित करता है।

स्थान की सीमाओं के कारण, पीसी बोर्ड पर 5V पुल-अप प्रतिरोधों के लिए कोई स्थान उपलब्ध नहीं था। इनपुट पिन कमजोर पुल-अप को सक्षम करने के लिए माइक्रो नियंत्रक स्थापित किया गया है।

ऑप्टो कपलर के इनपुट (LOW) पर कोई सिग्नल मौजूद नहीं होने से, ऑप्टो कपलर एलईडी से कोई करंट प्रवाहित नहीं होगा। इस प्रकार ऑप्टो कपलर ट्रांजिस्टर बंद हो जाता है। माइक्रो कंट्रोलर का कमजोर पुल-अप कलेक्टर को लगभग 5V तक खींच लेगा, और इसे माइक्रो कंट्रोलर द्वारा लॉजिक हाई के रूप में देखा जाएगा।

ऑप्टो कपलर के इनपुट में 12V लागू (हाई) के साथ, ऑप्टो कपलर एलईडी के माध्यम से लगभग 10mA प्रवाहित होगा। इस प्रकार ऑप्टो कपलर ट्रांजिस्टर चालू हो जाएगा। यह कलेक्टर को लगभग 0V तक खींच लेगा, और इसे माइक्रो कंट्रोलर द्वारा लॉजिक LOW के रूप में देखा जाएगा।

ध्यान दें कि माइक्रो कंट्रोलर द्वारा देखा गया इनपुट 12V इनपुट की तुलना में उल्टा है।

इनपुट पिन को पढ़ने के लिए सामान्य कोड निम्नानुसार दिखता है:

बूलियन इनपुट = डिजिटल रीड (इनपुटपिन);

उल्टे सिग्नल को ठीक करने के लिए, निम्नलिखित कोड का उपयोग करें:

बूलियन इनपुट = डिजिटल रीड (इनपुटपिन); // ध्यान दें ! पढ़ने के सामने

अब, माइक्रो कंट्रोलर द्वारा देखा गया इनपुट 12V इनपुट पर इनपुट के अनुरूप होगा।

अंतिम इनपुट सर्किट में 4 डिजिटल इनपुट होते हैं। प्रत्येक इनपुट पीसी बोर्ड पर टर्मिनलों से जुड़ा होता है।

चरण 3: डिजिटल आउटपुट

डिजिटल आउटपुट
डिजिटल आउटपुट
डिजिटल आउटपुट
डिजिटल आउटपुट
डिजिटल आउटपुट
डिजिटल आउटपुट

आम तौर पर, एक सर्किट के साथ केवल न्यूनतम संख्या में रिले ड्राइविंग के साथ, ट्रांजिस्टर ड्राइवर सर्किट का उपयोग करने का सबसे अच्छा तरीका दिखाया गया है। यह सरल, कम लागत और प्रभावी है।

रेसिस्टर्स पुल-डाउन टू ग्राउंड, और ट्रांजिस्टर बेस करंट लिमिटेशन प्रदान करते हैं। ट्रांजिस्टर का उपयोग रिले को चलाने के लिए उपलब्ध करंट को बढ़ाने के लिए किया जाता है। माइक्रो कंट्रोलर पिन से केवल 1mA के साथ, ट्रांजिस्टर 100mA के लोड को स्विच कर सकता है। अधिकांश प्रकार के रिले के लिए पर्याप्त से अधिक। डायोड एक फ्लाई-बैक डायोड है, जो रिले स्विचिंग के दौरान सर्किट को उच्च वोल्टेज स्पाइक्स से बचाता है। इस सर्किट का उपयोग करने का अतिरिक्त लाभ यह है कि रिले ऑपरेटिंग वोल्टेज माइक्रो कंट्रोलर के वोल्टेज से अलग हो सकता है। इस प्रकार, 5V रिले का उपयोग करने के बजाय, कोई भी 48V तक के किसी भी DC वोल्टेज का उपयोग कर सकता है।

पेश है ULN2803

एक परियोजना को जितने अधिक रिले की आवश्यकता होती है, घटक की संख्या उतनी ही अधिक होती है। यह पीसीबी डिजाइन को और अधिक कठिन बना देगा, और मूल्यवान पीसीबी स्थान का उपयोग कर सकता है। लेकिन ULN2803 की तरह एक ट्रांजिस्टर सरणी का उपयोग निश्चित रूप से पीसीबी के आकार को छोटा रखने में सहायता करेगा। ULN2803 एक माइक्रो कंट्रोलर से 3.3V और 5V इनपुट के लिए आदर्श रूप से अनुकूल है, और 48V DC तक रिले चला सकता है। इस ULN2803 में 8 व्यक्तिगत ट्रांजिस्टर सर्किट हैं, प्रत्येक सर्किट रिले को स्विच करने के लिए आवश्यक सभी घटकों से सुसज्जित है।

अंतिम आउटपुट सर्किट में ULN3803 होता है, जिसमें 4 12V DC आउटपुट रिले होते हैं। रिले का प्रत्येक संपर्क पीसी बोर्ड के टर्मिनलों पर उपलब्ध है।

चरण 4: माइक्रो नियंत्रक थरथरानवाला

माइक्रो नियंत्रक थरथरानवाला
माइक्रो नियंत्रक थरथरानवाला
माइक्रो नियंत्रक थरथरानवाला
माइक्रो नियंत्रक थरथरानवाला
माइक्रो नियंत्रक थरथरानवाला
माइक्रो नियंत्रक थरथरानवाला

थरथरानवाला सर्किट

माइक्रो कंट्रोलर को ठीक से काम करने के लिए एक ऑसिलेटर की जरूरत होती है। Arduino Uno डिज़ाइन को बनाए रखने के लिए, सर्किट मानक 16MHz थरथरानवाला का उपयोग करेगा। दो विकल्प उपलब्ध हैं:

क्रिस्टल

यह विधि दो लोडिंग कैपेसिटर से जुड़े क्रिस्टल का उपयोग करती है। यह सबसे आम विकल्प है।

गुंजयमान यंत्र

एक गुंजयमान यंत्र मूल रूप से एक सिंगल 3-पिन पैकेज में एक क्रिस्टल और दो लोडिंग कैपेसिटर होता है। यह घटकों की मात्रा को कम करता है, और पीसी बोर्ड पर उपलब्ध स्थान को बढ़ाता है।

घटक संख्या को यथासंभव कम रखने के लिए, मैंने 16 मेगाहर्ट्ज गुंजयमान यंत्र का उपयोग करने का विकल्प चुना।

चरण 5: संकेत एल ई डी

संकेत एल ई डी
संकेत एल ई डी
संकेत एल ई डी
संकेत एल ई डी

कुछ एल ई डी के बिना कोई सर्किट क्या होगा? पीसी बोर्ड पर 3 एमएम एलईडी का प्रावधान किया गया था।

1K प्रतिरोधों का उपयोग एलईडी के माध्यम से वर्तमान को 5mA से कम तक सीमित करने के लिए किया जाता है, 3 मिमी उच्च-उज्ज्वल एलईडी का उपयोग करते समय, चमक उत्कृष्ट होती है।

स्थिति एल ई डी की आसान व्याख्या के लिए, दो रंगों का उपयोग किया जाता है। दो एलईडी को फ्लैशिंग संकेतों के साथ जोड़कर, केवल दो एलईडी से काफी जानकारी प्राप्त की जा सकती है।

लाल एलईडी

लाल एलईडी का उपयोग गलती की स्थिति, लंबी देरी, किसी भी गलत कमांड को इंगित करने के लिए किया जाता है।

हरी एलईडी

हरे रंग की एलईडी का उपयोग स्वस्थ और/या सही इनपुट और कमांड को इंगित करने के लिए किया जाता है।

चरण 6: माइक्रो प्रोसेसर रीसेट सर्किट

माइक्रो प्रोसेसर रीसेट सर्किट
माइक्रो प्रोसेसर रीसेट सर्किट

सुरक्षा कारणों से, यूनिट के कुछ कार्य यूनिट को चालू करने के बाद पहले 10 मिनट में ही उपलब्ध होते हैं।

रीसेट बटन के साथ, यूनिट को रीसेट करने के लिए यूनिट को पावर बंद करने की आवश्यकता नहीं होती है।

यह काम किस प्रकार करता है

10K रोकनेवाला RESET लाइन को 5V के करीब रखेगा। जब बटन दबाया जाता है, तो रीसेट लाइन 0V तक खींची जाएगी, इस प्रकार माइक्रो नियंत्रक को रीसेट में रखा जाएगा। जब बटन छोड़ा जाता है, तो रीसेट लाइन माइक्रो कंट्रोलर को पुन: स्थापित करते हुए %v पर वापस आ जाती है।

चरण 7: SIM800L मॉड्यूल

SIM800L मॉड्यूल
SIM800L मॉड्यूल
SIM800L मॉड्यूल
SIM800L मॉड्यूल
SIM800L मॉड्यूल
SIM800L मॉड्यूल

यूनिट का दिल SIM800L GSM मॉड्यूल है। यह मॉड्यूल माइक्रो कंट्रोलर पर केवल 3 I/O पिन का उपयोग करता है।

मॉड्यूल एक मानक सीरियल पोर्ट के माध्यम से माइक्रो नियंत्रक के लिए इंटरफेस करता है।

  • यूनिट को सभी कमांड मानक एटी कमांड का उपयोग करके सीरियल पोर्ट के माध्यम से भेजे जाते हैं।
  • इनकमिंग कॉल के साथ, या जब कोई एसएमएस प्राप्त होता है, तो ASCII टेक्स्ट का उपयोग करके सीरियल पोर्ट के माध्यम से माइक्रो कंट्रोलर को सूचना भेजी जाती है।

स्थान बचाने के लिए, जीएसएम मॉड्यूल एक 7-पिन हेडर के माध्यम से पीसी बोर्ड से जुड़ा हुआ है। यह GSM मॉड्यूल को हटाना आसान बनाता है। यह उपयोगकर्ता को मॉड्यूल के नीचे सिम कार्ड को आसानी से डालने/निकालने में सक्षम बनाता है।

एक सक्रिय सिम कार्ड की आवश्यकता है, और सिम कार्ड एसएमएस संदेश भेजने और प्राप्त करने में सक्षम होना चाहिए।

SIM800L GSM मॉड्यूल का सेटअप

यूनिट को चालू करने पर, जीएसएम मॉड्यूल रीसेट पिन एक सेकंड के लिए नीचे खींच लिया जाता है। यह सुनिश्चित करता है कि बिजली आपूर्ति स्थिर होने के बाद ही जीएसएम मॉड्यूल शुरू होता है। GSM मॉड्यूल को रीबूट होने में कुछ सेकंड का समय लगता है, इसलिए मॉड्यूल को कोई भी AT कमांड भेजने से पहले 5 सेकंड प्रतीक्षा करें।

यह सुनिश्चित करने के लिए कि जीएसएम मॉड्यूल माइक्रो नियंत्रक के साथ सही ढंग से संचार करने के लिए कॉन्फ़िगर किया गया है, स्टार्टअप के दौरान निम्नलिखित एटी कमांड का उपयोग किया जाता है:

पर

यह निर्धारित करने के लिए उपयोग किया जाता है कि क्या GSM मॉड्यूल उपलब्ध है

एटी+सीआरईजी?

सेलफोन नेटवर्क पर जीएसएम मॉड्यूल पंजीकृत होने तक इस आदेश को मतदान

एटी+सीएमजीएफ=1

एसएमएस संदेश मोड को ASCII पर सेट करें

एटी+सीएनएमआई=1, 2, 0, 0, 0

यदि एसएमएस उपलब्ध है, तो एसएमएस विवरण जीएसएम मॉड्यूल सीरियल पोर्ट पर भेजें

एटी+सीएमजीडी=1, 4

सिम कार्ड पर संग्रहीत कोई भी एसएमएस संदेश हटाएं

एटी+सीपीबीएस=\"एसएम

GSM मॉड्यूल की फ़ोन बुक को सिम कार्ड पर सेट करें

AT+COPS=2, फिर AT+CLTS=1, फिर AT+COPS=0

सेलफोन नेटवर्क समय के लिए जीएसएम मॉड्यूल समय सेट करें

समय निर्धारित होने के लिए 5 सेकंड प्रतीक्षा करें

एटी+सीयूएसडी=1

यूएसएसडी मैसेजिंग फंक्शन सक्षम करें

चरण 8: माइक्रो नियंत्रक

माइक्रो नियंत्रक
माइक्रो नियंत्रक
माइक्रो नियंत्रक
माइक्रो नियंत्रक
माइक्रो नियंत्रक
माइक्रो नियंत्रक

माइक्रो नियंत्रक एक मानक AtMega328p है, जैसा कि Arduino Uno पर उपयोग किया जाता है। इस प्रकार कोड दोनों के साथ तुलनीय है। आसान ऑन-बोर्ड प्रोग्रामिंग की अनुमति देने के लिए, पीसी बोर्ड पर एक 6-पिन प्रोग्रामिंग हेडर उपलब्ध है।

इकाई के विभिन्न खंड माइक्रो प्रोसेसर से जुड़े हैं, और इसमें निम्नलिखित शामिल हैं:

  • चार डिजिटल इनपुट
  • चार डिजिटल आउटपुट
  • थरथरानवाला
  • दो संकेत एलईडी
  • सर्किट रीसेट करें
  • SIM800L जीएसएम मॉड्यूल

जीएसएम मॉड्यूल से और उसके लिए सभी संचार SoftwareSerial() फ़ंक्शन का उपयोग करके किया जाता है। विकास चरण के दौरान Arduino IDE के लिए मुख्य सीरियल पोर्ट को मुक्त करने के लिए इस पद्धति का उपयोग किया गया था।

केवल 2KB SRAM, और 1KB EEPROM के साथ, यूनिट से लिंक किए जा सकने वाले दो से अधिक उपयोगकर्ताओं को संग्रहीत करने के लिए पर्याप्त मेमोरी नहीं है। एसआरएएम को मुक्त करने के लिए, सभी उपयोगकर्ता जानकारी जीएसएम मॉड्यूल पर सिम कार्ड पर संग्रहीत की जाती है। इस व्यवस्था के साथ, इकाई 250 विभिन्न उपयोगकर्ताओं को पूरा कर सकती है।

यूनिट का कॉन्फ़िगरेशन डेटा EEPROM में संग्रहीत किया जाता है, इस प्रकार उपयोगकर्ता डेटा और सिस्टम डेटा को एक दूसरे से अलग करता है।

अभी भी कई अतिरिक्त I/O पिन उपलब्ध हैं, हालांकि, सॉफ्टवेयरसेरियल () द्वारा बफ़र्स प्राप्त करने और संचारित करने के लिए बड़ी मात्रा में SRAM के उपयोग के कारण LCD डिस्प्ले और/या कीबोर्ड जोड़ने का विकल्प संभव नहीं था, यूनिट पर किसी भी प्रकार के यूजर इंटरफेस की कमी के कारण, सभी सेटिंग्स और उपयोगकर्ताओं को एसएमएस संदेशों का उपयोग करके प्रोग्राम किया जाता है।

चरण 9: SRAM मेमोरी का अनुकूलन

SRAM मेमोरी का अनुकूलन
SRAM मेमोरी का अनुकूलन

विकास के चरण में काफी पहले, Arduino IDE ने कोड संकलित करते समय कम SRAM मेमोरी की सूचना दी। इससे उबरने के लिए कई तरीके अपनाए गए।

सीरियल पोर्ट पर प्राप्त डेटा को सीमित करें

जीएसएम मॉड्यूल सीरियल पोर्ट के माइक्रो कंट्रोलर को सभी संदेशों की रिपोर्ट करेगा। कुछ एसएमएस संदेश प्राप्त करते समय, प्राप्त संदेश की कुल लंबाई 200 वर्णों से अधिक हो सकती है। यह AtMega चिप पर उपलब्ध सभी SRAM का शीघ्रता से उपभोग कर सकता है, और स्थिरता की समस्या पैदा करेगा।

इसे रोकने के लिए, GSM मॉड्यूल से प्राप्त किसी भी संदेश के केवल पहले 200 वर्णों का ही उपयोग किया जाएगा। नीचे दिया गया उदाहरण दिखाता है कि चर काउंटर में प्राप्त वर्णों की गणना करके यह कैसे किया जाता है।

// सॉफ्टवेयर सीरियल पोर्ट से डेटा के लिए स्कैन करें

//------------------------------------- आरएक्सस्ट्रिंग = ""; काउंटर = 0; जबकि (SSerial.उपलब्ध ()) {देरी (1); // नए डेटा को बफर में रखने के लिए समय देने में कम देरी // नया वर्ण प्राप्त करें RxChar = char (SSerial.read ()); // स्ट्रिंग करने के लिए पहले 200 वर्ण जोड़ें अगर (काउंटर <200) {RxString.concat(RxChar); काउंटर = काउंटर + 1; } }

सीरियल.प्रिंट () कोड को कम करना

हालांकि विकास के दौरान आसान, Arduino सीरियल मॉनिटर बहुत सारे SRAM का उपयोग कर सकता है। कोड को यथासंभव कम से कम Serial.print() कोड का उपयोग करके विकसित किया गया था। कोड के एक सेक्शन का काम करने के लिए परीक्षण किया गया है, कोड के उस हिस्से से सभी Serial.print() कोड हटा दिए गए थे।

Serial.print(F(("")) कोड का उपयोग करना

सामान्य रूप से Arduino सीरियल मॉनिटर पर प्रदर्शित होने वाली बहुत सारी जानकारी विवरण जोड़े जाने पर अधिक समझ में आती है। निम्नलिखित उदाहरण लें:

Serial.println ("विशिष्ट कार्यों की प्रतीक्षा कर रहा है");

स्ट्रिंग "विशिष्ट कार्यों की प्रतीक्षा कर रहा है" तय है, और बदल नहीं सकता है।

कोड के संकलन के दौरान, कंपाइलर FLASH मेमोरी में "वेटिंग फॉर स्पेसिफिक एक्शन्स" स्ट्रिंग को शामिल करेगा।

इसके अतिरिक्त, कंपाइलर देखता है कि स्ट्रिंग एक स्थिर है, जिसका उपयोग "Serial.print" या "Serial.println" निर्देश द्वारा किया जाता है। माइक्रो के बूट-अप के दौरान, इस स्थिरांक को SRAM मेमोरी में भी रखा जाता है।

Serial.print() फ़ंक्शंस में "F" उपसर्ग का उपयोग करके, यह कंपाइलर को बताता है कि यह स्ट्रिंग केवल FLASH मेमोरी में उपलब्ध है। इस उदाहरण के लिए, स्ट्रिंग में 28 वर्ण हैं। यह 28 बाइट्स है जिसे SRAM में मुक्त किया जा सकता है।

Serial.println (एफ ("विशिष्ट कार्यों की प्रतीक्षा कर रहा है"));

यह विधि SoftwareSerial.print() कमांड पर भी लागू होती है। चूंकि GSM मॉड्यूल AT कमांड पर काम करता है, कोड में कई SoftwareSerial.print("xxxx") कमांड होते हैं। "F" उपसर्ग का उपयोग करने से SRAM के लगभग 300 बाइट्स मुक्त हो गए।

हार्डवेयर सीरियल पोर्ट का उपयोग न करें

कोड डिबगिंग के बाद, सभी सीरियल.प्रिंट () कमांड को हटाकर हार्डवेयर सीरियल पोर्ट को अक्षम कर दिया गया था। इसने SRAM के कुछ अतिरिक्त बाइट्स को मुक्त कर दिया।

कोड में बिना किसी सीरियल.प्रिंट () कमांड के, SRAM के अतिरिक्त 128 बाइट्स उपलब्ध कराए गए थे। यह हार्डवेयर सीरियल पोर्ट को कोड से हटाकर किया गया था। इसने 64 बाइट ट्रांसमिट और 64 बाइट को बफ़र्स प्राप्त किया।

// सीरियल.बेगिन (९६००); // हार्डवेयर सीरियल पोर्ट अक्षम

स्ट्रिंग्स के लिए EEPROM का उपयोग करना

प्रत्येक इनपुट और आउटपुट के लिए, तीन स्ट्रिंग्स को सहेजने की आवश्यकता होती है। वे चैनल का नाम, चैनल चालू होने पर स्ट्रिंग और चैनल बंद होने पर स्ट्रिंग हैं।

कुल 8 I/O चैनलों के साथ, उनका होगा

  • चैनल के नाम वाले 8 तार, प्रत्येक 10 वर्ण लंबे
  • चैनल युक्त 8 तार विवरण पर, प्रत्येक 10 वर्ण लंबा
  • चैनल बंद विवरण वाले 8 तार, प्रत्येक 10 वर्ण लंबा

यह SRAM के 240 बाइट्स तक का विज्ञापन करता है। इन स्ट्रिंग्स को SRAM में स्टोर करने के बजाय, उन्हें EEPROM में स्टोर किया जाता है। इसने SRAM के अतिरिक्त 240 बाइट्स को मुक्त कर दिया।

सही लंबाई के साथ स्ट्रिंग घोषित करना

चर सामान्य रूप से कोड की शुरुआत में घोषित किए जाते हैं। एक स्ट्रिंग वेरिएबल घोषित करते समय एक सामान्य गलती यह है कि हम स्ट्रिंग को वर्णों की सही संख्या के साथ घोषित नहीं करते हैं।

स्ट्रिंग GSM_Nr = "";

स्ट्रिंग GSM_Name = ""; स्ट्रिंग GSM_Msg = "";

स्टार्टअप के दौरान, माइक्रो कंट्रोलर इन वेरिएबल्स के लिए SRAM में मेमोरी आवंटित नहीं करेगा। यह बाद में अस्थिरता पैदा कर सकता है जब इन स्ट्रिंग्स का उपयोग किया जाता है।

इसे रोकने के लिए, स्ट्रिंग को सॉफ़्टवेयर में उपयोग किए जाने वाले वर्णों की सही संख्या के साथ घोषित करें।

स्ट्रिंग GSM_Nr = "1000000000";

स्ट्रिंग GSM_Name = "2000000000"; स्ट्रिंग GSM_Msg = "3000000000";

ध्यान दें कि मैंने समान वर्णों के साथ तार कैसे घोषित नहीं किया। यदि आप इन सभी स्ट्रिंग्स को "1234567890" कहते हुए घोषित करते हैं, तो कंपाइलर तीन चरों में एक ही स्ट्रिंग को देखेगा, और केवल एक स्ट्रिंग के लिए SRAM में पर्याप्त मेमोरी आवंटित करेगा।

चरण 10: सॉफ्टवेयर सीरियल बफर साइज

सॉफ्टवेयर सीरियल बफर साइज
सॉफ्टवेयर सीरियल बफर साइज

निम्नलिखित कोड में, आप देखेंगे कि सॉफ्टवेयर सीरियल पोर्ट से 200 अक्षर तक पढ़े जा सकते हैं।

// सॉफ्टवेयर सीरियल पोर्ट से डेटा के लिए स्कैन करें

//------------------------------------- आरएक्सस्ट्रिंग = ""; काउंटर = 0; जबकि (SSerial.उपलब्ध ()) {देरी (1); // नए डेटा को बफर में रखने के लिए समय देने में कम देरी // नया वर्ण प्राप्त करें RxChar = char (SSerial.read ()); // स्ट्रिंग में पहले 200 वर्ण जोड़ें यदि (काउंटर <200) {RxString.concat(RxChar); काउंटर = काउंटर + 1; } }

इसके लिए सॉफ्टवेयर सीरियल पोर्ट के लिए भी कम से कम 200 बाइट्स के बफर की आवश्यकता होती है। डिफ़ॉल्ट रूप से, सॉफ्टवेयर सीरियल पोर्ट बफर केवल 64 बाइट्स है। इस बफ़र को बढ़ाने के लिए, निम्न फ़ाइल खोजें:

SoftwareSerial.h

फ़ाइल को टेक्स्ट एडिटर के साथ खोलें, और बफर आकार को 200 में बदलें।

/******************************************************************************

* परिभाषाएं *****************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX बफर आकार #endif

चरण 11: पीसी बोर्ड बनाना

पीसी बोर्ड बनाना
पीसी बोर्ड बनाना

पीसी बोर्ड को कैडसॉफ्ट ईगल के फ्रीवेयर संस्करण का उपयोग करके डिजाइन किया गया था (मेरा मानना है कि नाम बदल गया है)।

  • पीसी बोर्ड एक तरफा डिजाइन है।
  • कोई सतह माउंट घटकों का उपयोग नहीं किया जाता है।
  • SIM800L मॉड्यूल सहित सभी घटक पीसी बोर्ड पर लगे होते हैं।
  • कोई बाहरी घटक या कनेक्शन की आवश्यकता नहीं है
  • क्लीनर लुक के लिए वायर जंपर्स घटकों के नीचे छिपे होते हैं।

मैं पीसी बोर्ड बनाने के लिए निम्नलिखित विधि का उपयोग करता हूं:

  • पीसी बोर्ड की छवि लेजर प्रिंटर का उपयोग करके प्रेस-एन-पील पर मुद्रित होती है।
  • प्रेस-एन-पील को फिर पीसी बोर्ड के एक साफ टुकड़े के ऊपर रखा जाता है, और कुछ टेप से सुरक्षित किया जाता है।
  • पीसी बोर्ड की छवि को लेमिनेटर के माध्यम से बोर्ड को पास करके प्रेस-एन-पील से रिक्त पीसी बोर्ड में स्थानांतरित किया जाता है। मेरे लिए, 10 पास सबसे अच्छा काम करते हैं।
  • पीसी बोर्ड के कमरे के तापमान तक ठंडा होने के बाद, प्रेस-एन-पील को धीरे-धीरे बोर्ड से हटा लिया जाता है।
  • फिर पीसी बोर्ड को गर्म पानी में घुले अमोनियम पर्सल्फेट क्रिस्टल का उपयोग करके उकेरा जाता है।
  • नक़्क़ाशी के बाद, कुछ एसीटोन के साथ नक़्क़ाशीदार पीसी बोर्ड को साफ करके नीला प्रेस-एन-पील और काला टोनर हटा दिया जाता है।
  • फिर बोर्ड को एक ड्रेमेल के साथ आकार में काटा जाता है
  • सभी थ्रू-होल घटकों के लिए छेद 1 मिमी ड्रिल बिट का उपयोग करके ड्रिल किए जाते हैं।
  • टर्मिनल स्क्रू कनेक्टर्स को 1.2 मिमी ड्रिल बिट का उपयोग करके ड्रिल किया जाता है।

चरण 12: पीसी बोर्ड की असेंबली

पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा
पीसी बोर्ड की सभा

असेंबली पहले सबसे छोटे घटकों को जोड़कर की जाती है, और सबसे बड़े घटकों तक अपने तरीके से काम करती है।

SIM800 मॉड्यूल को छोड़कर, इस निर्देश का उपयोग करने वाले सभी घटकों को मेरे स्थानीय आपूर्तिकर्ता से प्राप्त किया गया था। हमेशा स्टॉक रखने के लिए उनके बारे में सोचता है। कृपया उनकी दक्षिण अफ़्रीकी वेबसी पर एक नज़र डालें:

www.shop.rabtron.co.za/catalog/index.php

ध्यान दें! ATMEGA328p IC के तहत स्थित दो जंपर्स को पहले सोल्डर करना।

आदेश इस प्रकार है:

  • प्रतिरोध और डायोड
  • बटन को रीसेट करें
  • आईसी सॉकेट
  • विद्युत् दाब नियामक
  • हैडर पिन
  • छोटे संधारित्र
  • एल ई डी
  • फ्यूज होल्डर
  • सिरीय पिंडक
  • रिले
  • इलेक्ट्रोलाइटिक कैपेसिटर

IC डालने से पहले, यूनिट को 12V से कनेक्ट करें, और सभी वोल्टेज को सही होने का परीक्षण करें।

अंत में, कुछ स्पष्ट लाह का उपयोग करके, इसे तत्वों से बचाने के लिए पीसी बोर्ड के तांबे के हिस्से को कवर करें।

जब लाह सूख जाए, तो IC डालें, लेकिन GSM मॉड्यूल को तब तक छोड़ दें जब तक कि AtMega को प्रोग्राम नहीं किया गया हो।

चरण 13: AtMega328p. की प्रोग्रामिंग

AtMega328p. प्रोग्रामिंग
AtMega328p. प्रोग्रामिंग
AtMega328p. प्रोग्रामिंग
AtMega328p. प्रोग्रामिंग
AtMega328p. प्रोग्रामिंग
AtMega328p. प्रोग्रामिंग

# # फर्मवेयर को संस्करण 3.02 में अपग्रेड करें # #

डिवाइस में बिजली बहाल होने पर सक्षम एसएमएस मास्टर उपयोगकर्ता को भेजा जाएगा।

मैं यूनिट को प्रोग्राम करने के लिए प्रोग्रामिंग शील्ड के साथ एक Arduino Uno का उपयोग कर रहा हूं। एक प्रोग्रामर के रूप में Arduino Uno का उपयोग कैसे करें, इस बारे में अधिक जानकारी के लिए, इस निर्देश को देखें:

Arduino UNO AtMega328P प्रोग्रामर के रूप में

प्रोग्रामिंग हेडर तक पहुंच प्राप्त करने के लिए जीएसएम मॉड्यूल को पीसी बोर्ड से हटाने की जरूरत है। ध्यान रखें कि GSM मॉड्यूल को हटाते समय एंटीना के तार को नुकसान न पहुंचे।

पीसी बोर्ड पर प्रोग्रामिंग हेडर का उपयोग करके प्रोग्रामर और यूनिट के बीच प्रोग्रामिंग केबल को कनेक्ट करें, और स्केच को यूनिट में अपलोड करें।

यूनिट को प्रोग्राम करने के लिए बाहरी 12V आपूर्ति की आवश्यकता नहीं है। पीसी बोर्ड प्रोग्रामिंग केबल के माध्यम से Arduino से संचालित होगा।

Arduino IDE में संलग्न फ़ाइल खोलें, और इसे यूनिट में प्रोग्राम करें।

प्रोग्रामिंग के बाद, प्रोग्रामिंग केबल को हटा दें, और जीएसएम मॉड्यूल डालें।

इकाई अब उपयोग के लिए तैयार है।

चरण 14: इकाई को जोड़ना

यूनिट को जोड़ना
यूनिट को जोड़ना
यूनिट को जोड़ना
यूनिट को जोड़ना
यूनिट को जोड़ना
यूनिट को जोड़ना

यूनिट के सभी कनेक्शन स्क्रू टर्मिनलों के माध्यम से किए जाते हैं।

यूनिट को शक्ति देना

सुनिश्चित करें कि आपने जीएसएम मॉड्यूल में एक पंजीकृत सिम कार्ड डाला है, और यह कि सिम कार्ड एसएमएस संदेश भेजने और प्राप्त करने में सक्षम है।

12V DC बिजली की आपूर्ति को 12V IN और किसी भी 0V टर्मिनल से कनेक्ट करें। एक बार संचालित होने के बाद, पीसी बोर्ड पर लाल एलईडी चालू हो जाएगी। लगभग एक मिनट में, GSM मॉड्यूल सेलफोन नेटवर्क से कनेक्ट हो जाना चाहिए था। लाल एलईडी बंद हो जाएगी, और जीएसएम मॉड्यूल पर एक लाल एलईडी तेजी से फ्लैश होगी।

एक बार इस चरण तक पहुंचने के बाद, इकाई कॉन्फ़िगर करने के लिए तैयार है।

इनपुट कनेक्शन

डिजिटल इनपुट 12V पर काम करता है। किसी इनपुट को चालू करने के लिए, इनपुट पर 12V लगाने की आवश्यकता होती है। 12V को हटाने से इनपुट बंद हो जाएगा।

आउटपुट कनेक्शन

प्रत्येक आउटपुट में एक परिवर्तन-ओवर संपर्क होता है। आवश्यकतानुसार प्रत्येक संपर्क को तार दें।

चरण 15: प्रारंभिक सेटअप

प्रारंभिक व्यवस्था
प्रारंभिक व्यवस्था

यूनिट का प्रारंभिक सेटअप यह सुनिश्चित करने के लिए किया जाना चाहिए कि सभी पैरामीटर फ़ैक्टरी डिफ़ॉल्ट पर सेट हैं, और उपयोगकर्ता की जानकारी को सही प्रारूप में स्वीकार करने के लिए सिम कार्ड कॉन्फ़िगर किया गया है।

चूंकि सभी कमांड एसएमएस आधारित हैं, आपको सेटअप करने के लिए दूसरे फोन की आवश्यकता होगी।

प्रारंभिक सेटअप के लिए, आपको इकाई में होना चाहिए।

मास्टर यूजर टेलीफोन नंबर सेट करें

चूंकि केवल मास्टर उपयोगकर्ता ही इकाई को कॉन्फ़िगर कर सकता है, इस चरण को पहले पूरा किया जाना चाहिए।

  • इकाई संचालित होनी चाहिए।
  • रीसेट बटन को दबाएं और छोड़ें, और पीसी बोर्ड पर लाल एलईडी के बंद होने की प्रतीक्षा करें।
  • जीएसएम मॉड्यूल पर नेट एलईडी तेजी से फ्लैश होगी।
  • इकाई अब प्रारंभिक सेटअप आदेशों को स्वीकार करने के लिए तैयार है। यह 10 मिनट के भीतर किया जाना चाहिए।
  • यूनिट टेलीफोन नंबर पर मास्टर, विवरण युक्त एक एसएमएस संदेश भेजें।
  • प्राप्त होने पर, पीसी बोर्ड पर हरी एलईडी दो बार फ्लैश होगी।
  • MASTER USER को अब प्रोग्राम किया गया है।

इकाई को फ़ैक्टरी डिफ़ॉल्ट पर पुनर्स्थापित करें

मास्टर उपयोगकर्ता को प्रोग्राम किए जाने के बाद, यूनिट की सेटिंग्स को फ़ैक्टरी डिफ़ॉल्ट पर सेट किया जाना चाहिए।

  • यूनिट टेलीफोन नंबर पर केवल CLEARALL के साथ एक एसएमएस संदेश भेजें।
  • प्राप्त होने पर, पीसी बोर्ड पर हरे और लाल एलईडी एक सेकंड में एक बार वैकल्पिक रूप से फ्लैश करेंगे। फ़ैक्टरी डिफ़ॉल्ट सेटिंग्स के साथ इकाई को पुनर्स्थापित कर दिया गया है।
  • सभी सेटिंग्स को फ़ैक्टरी डिफ़ॉल्ट पर पुनर्स्थापित कर दिया गया है।
  • यूनिट को रीबूट करने के लिए रीसेट बटन दबाएं और छोड़ें।

सिम कार्ड को फॉर्मेट करना

अंतिम चरण सिम कार्ड पर संग्रहीत सभी सूचनाओं को मिटाना है, और इसे इस इकाई में उपयोग के लिए कॉन्फ़िगर करना है।

  • रीसेट बटन को दबाएं और छोड़ें, और पीसी बोर्ड पर लाल एलईडी के बंद होने की प्रतीक्षा करें।
  • जीएसएम मॉड्यूल पर नेट एलईडी तेजी से फ्लैश होगी।
  • इकाई अब प्रारंभिक सेटअप आदेशों को स्वीकार करने के लिए तैयार है। यह 10 मिनट के भीतर किया जाना चाहिए।
  • यूनिट टेलीफोन नंबर पर केवल ERASESIM के साथ एक एसएमएस संदेश भेजें।
  • प्राप्त होने पर, पीसी बोर्ड पर हरी एलईडी ट्री बार फ्लैश करेगी।

इकाई अब कॉन्फ़िगर की गई है, और उपयोग के लिए तैयार है।

चरण 16: एसएमएस कमांड

एसएमएस कमांड
एसएमएस कमांड

यूनिट द्वारा उपयोग किए जाने वाले तीन अलग-अलग प्रकार के कमांड हैं। सभी आदेश एसएमएस के माध्यम से भेजते हैं, और सभी निम्नलिखित प्रारूप में हैं:

कमान,,,,,

  • NORMAL USER कमांड को छोड़कर सभी कमांड केस संवेदी होते हैं।
  • पैरामीटर केस संवेदी नहीं हैं।

प्रारंभिक सेटअप आदेश

मास्टर, नाम

एसएमएस भेजने वाले के फोन नंबर का इस्तेमाल मास्टर यूजर फोन नंबर के रूप में किया जाता है। इकाई के लिए विवरण यहां जोड़ा जा सकता है।

सभी साफ करें

इकाई को फ़ैक्टरी डिफ़ॉल्ट पर रीसेट करें

क्लीयरसिम

सिम कार्ड से सभी डेटा मिटाएं

रीसेट

यूनिट को रिबूट करें

यूनिट को कॉन्फ़िगर करने के लिए मास्टर यूजर कमांड

आउटमोड, सी, एम, टी नोट! ! ! अभी तक लागू नहीं

स्पंदित, TIMED या LATCHING आउटपुट रखने के लिए विशिष्ट चैनल सेट करें। t TIMED आउटपुट के लिए मिनटों में समय अवधि है

पल्स, सीसीसी

स्पंदित आउटपुट के लिए विशिष्ट चैनल सेट करें। यदि सेट नहीं है, तो चैनल LATCHING आउटपुट के रूप में सेट हो जाएंगे।

PULSETIME, सेकंड में स्पंदित आउटपुट अवधि सेट करता है (0.. 10s)

इनपुट, सीसीसी

उन चैनलों को सेट करें जिन्हें चालू होना चाहिए, और जब राज्य बंद से चालू हो जाता है तो एक एसएमएस संदेश भेजें

इनपुटऑफ़, cccc

उन चैनलों को सेट करें जिन्हें चालू से बंद में राज्य बदलने पर ट्रिगर होना चाहिए, और एक एसएमएस संदेश भेजना चाहिए

INTIME, सी, टी

सेकंड में स्थिति परिवर्तन का पता लगाने के लिए इनपुट विलंब समय सेट करता है

पाठ, ch, नाम, चालू, बंद

प्रत्येक इनपुट चैनल का नाम टेक्स्ट और ऑफ टेक्स्ट पर सेट करें

OUTTEXT, ch, नाम, चालू, बंद

प्रत्येक आउटपुट चैनल का नाम टेक्स्ट और ऑफ टेक्स्ट पर सेट करें

जोड़ें, स्थान, संख्या, कॉलआउट, एसएमएस आउटपुट, इनपुट

उपयोगकर्ता को दिए गए आउटपुट और इनपुट चैनलों के साथ मेमोरी 'लोकेशन' पर सिम कार्ड में उपयोगकर्ता जोड़ें

डेल, स्थान

उपयोगकर्ता को सिम कार्ड मेमोरी 'स्थान' से हटाएं

चैनल का नाम

चैनलनाम नाम से पल्स आउटपुट होगा

ChannelName, onText, या ChannelName, offText

ChannelName के नाम से आउटपुट चालू/बंद कर देगा, और onText/offText

यूनिट को नियंत्रित करने के लिए सामान्य उपयोगकर्ता कमांड

????अनुरोध I/O स्थिति अद्यतन। स्थिति एसएमएस प्रवर्तक को भेजा जाएगा।

चैनल का नाम

चैनलनाम नाम के साथ पल्स आउटपुट होगा

चैनलनाम, पाठ पर

चैनलनाम के नाम से आउटपुट को चालू कर देगा, और टेक्स्ट पर स्थिति टेक्स्ट

ChannelName, offText चैनलनाम के नाम से आउटपुट को बंद कर देगा, और स्थिति टेक्स्ट को बंद कर देगा

आदेशों के अधिक विवरण विवरण के लिए, कृपया संलग्न पीडीएफ दस्तावेज़ देखें।

सिफारिश की: