पिछले ट्यूटोरियल में, हमने सीखा है कि कंप्यूटर के साथ जीपीएस मॉड्यूल को कैसे इंटरफ़ेस करें और जीएसएम और जीपीएस का उपयोग करके वाहन को कैसे ट्रैक करें। हमने Arduino और एक्सेलेरोमीटर का उपयोग करके वाहन दुर्घटना अलर्ट सिस्टम भी बनाया। यहां हम फिर से उसी परियोजना का निर्माण कर रहे हैं लेकिन इस बार वाहन दुर्घटना का पता लगाने के लिए एक MSP430 लॉन्चपैड और एक कंपन सेंसर का उपयोग किया जाएगा। तो यह प्रोजेक्ट MSP430 लॉन्चपैड के साथ एक वाइब्रेशन सेंसर को इंटरफेस करने के बारे में भी बताएगा। आप यहाँ अधिक MSP430 प्रोजेक्ट पा सकते हैं।
यहां कंपन सेंसर मॉड्यूल वाहन के कंपन का पता लगाता है और MSP430 लॉन्चपैड को एक संकेत भेजता है। फिर MSP430 जीपीएस मॉड्यूल से डेटा प्राप्त करता है और इसे जीएसएम मॉड्यूल का उपयोग करके एसएमएस के माध्यम से उपयोगकर्ता के मोबाइल फोन पर भेजता है। दुर्घटना चेतावनी संकेत के रूप में एक एलईडी भी चमक जाएगी, इस एलईडी को कुछ अलार्म से बदला जा सकता है। जीपीएस मॉड्यूल से अक्षांश और देशांतर से प्राप्त दुर्घटना का स्थान Google मानचित्र लिंक के रूप में भेजा जाता है । आखिर में डेमो वीडियो देखें ।
GPS मॉड्यूल वास्तविक समय में ट्रैकिंग स्थिति से संबंधित डेटा भेजता है, और यह NMEA प्रारूप में कई डेटा भेजता है (नीचे स्क्रीनशॉट देखें)। NMEA प्रारूप में कई वाक्य होते हैं, जिसमें हमें केवल एक वाक्य की आवश्यकता होती है। यह वाक्य $ GPGGA से शुरू होता है और इसमें निर्देशांक, समय और अन्य उपयोगी जानकारी होती है। इस GPGGA को ग्लोबल पोजिशनिंग सिस्टम फिक्स डेटा के लिए संदर्भित किया जाता है । NMEA वाक्यों और GPS डेटा को पढ़ने के बारे में यहाँ और जानें।
हम स्ट्रिंग में अल्पविराम की गणना करके $ GPGGA स्ट्रिंग से समन्वय कर सकते हैं। मान लीजिए कि आप $ GPGGA स्ट्रिंग पाते हैं और इसे एक सरणी में संग्रहीत करते हैं, तो अक्षांश को दो अल्पविराम के बाद और देशांतर को चार अल्पविराम के बाद पाया जा सकता है। अब, इस अक्षांश और देशांतर को अन्य सरणियों में रखा जा सकता है।
नीचे $ GPGGA स्ट्रिंग है, इसके विवरण के साथ:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M, * 47 $ GPGGA, HHMMSS.SSS, अक्षांश, N, देशांतर, E, FQ, NOS, HDP।, ऊंचाई, एम, ऊंचाई, एम,, चेकसम डेटा
पहचानकर्ता |
विवरण |
$ GPGGA |
ग्लोबल पोजिशनिंग सिस्टम डेटा को ठीक करता है |
HHMMSS.SSS |
घंटे मिनट सेकंड और मिलीसेकंड प्रारूप में समय। |
अक्षांश |
अक्षांश (समन्वय) |
एन |
दिशा एन = उत्तर, एस = दक्षिण |
देशान्तर |
देशांतर (समन्वय) |
इ |
दिशा ई = पूर्व, डब्ल्यू = पश्चिम |
एफक्यू |
गुणवत्ता डेटा को ठीक करें |
ओपन स्कूल |
प्रयुक्त होने वाले उपग्रहों की संख्या |
एच.डी.पी. |
परिशुद्धता के क्षैतिज कमजोर पड़ने |
ऊंचाई |
ऊंचाई (समुद्र तल से मीटर ऊपर) |
म |
मीटर |
ऊंचाई |
ऊंचाई |
अंततः, |
चेकसम डेटा |
जीएसएम मॉड्यूल
SIM900 एक पूर्ण क्वाड-बैंड GSM / GPRS मॉड्यूल है जिसे ग्राहक या शौक़ीन द्वारा आसानी से उपयोग किया जा सकता है। SIM900 GSM मॉड्यूल एक उद्योग-मानक इंटरफ़ेस प्रदान करता है। SIM900 आवाज, एसएमएस, कम बिजली की खपत वाले डेटा के लिए GSM / GPRS 850/900/1800 / 1900MHz प्रदर्शन प्रदान करता है। यह बाजार में आसानी से उपलब्ध है।
- SIM900 को AMR926EJ-S कोर को एकीकृत करते हुए सिंगल-चिप प्रोसेसर का उपयोग करके बनाया गया है
- क्वाड-बैंड जीएसएम / जीपीआरएस मॉड्यूल छोटे आकार में।
- जीपीआरएस सक्षम
एटी कमांड्स
AT का मतलब ATTENTION है। इस कमांड का उपयोग GSM मॉड्यूल को नियंत्रित करने के लिए किया जाता है। कॉलिंग और मैसेजिंग के लिए कुछ कमांड हैं जिनका उपयोग हमने अपने पिछले जीएसएम प्रोजेक्ट्स में कई Arduino के साथ किया है। GSM मॉड्यूल के परीक्षण के लिए हमने AT कमांड का उपयोग किया। एटी कमांड जीएसएम मॉड्यूल प्राप्त करने के बाद ओके के साथ जवाब दें। इसका मतलब है कि जीएसएम मॉड्यूल ठीक काम कर रहा है। नीचे कुछ AT कमांड्स हैं जिनका उपयोग हमने इस परियोजना में किया है:
ATE0 गूंज के लिए
AT + CNMI = 2,2,0,0,0
एटीडी
AT + CMGF = 1
AT + CMGS = "मोबाइल नंबर"
>> अब हम अपना संदेश लिख सकते हैं
>> एक संदेश लिखने के बाद
Ctrl + Z संदेश कमांड (दशमलव में 26) भेजता है।
ENTER = 0x0d HEX में
(जीएसएम मॉड्यूल के बारे में अधिक जानने के लिए, यहां विभिन्न माइक्रोकंट्रोलर के साथ हमारी विभिन्न जीएसएम परियोजनाओं की जांच करें)
कंपन सेंसर मॉड्यूल
इस MSP430 दुर्घटना चेतावनी प्रणाली परियोजना में, हमने एक कंपन सेंसर मॉड्यूल का उपयोग किया है जो कंपन या अचानक संशोधन का पता लगाता है। कंपन सेंसर मॉड्यूल मॉड्यूल के आधार पर एक डिजिटल आउटपुट हाई / लो लॉजिक देता है। हमारे मामले में, हमने एक सक्रिय उच्च तर्क कंपन सेंसर मॉड्यूल का उपयोग किया है। इसका मतलब है कि जब भी कंपन सेंसर कंपन का पता लगाएगा तो यह माइक्रोकंट्रोलर को उच्च तर्क देगा।
सर्किट स्पष्टीकरण
इस वाहन दुर्घटना चेतावनी प्रणाली परियोजना के सर्किट कनेक्शन सरल हैं। यहां जीपीएस मॉड्यूल का Tx पिन सीधे MSP430 लॉन्चपैड (हार्डवेयर सीरियल) के डिजिटल पिन नंबर P1_1 से जुड़ा है और 5v का उपयोग जीपीएस मॉड्यूल को पावर करने के लिए किया जाता है। यहां सॉफ्टवेयर सीरियल लाइब्रेरी का उपयोग करके, हमने पिन P_6 और P1_7 पर धारावाहिक संचार की अनुमति दी है, और उन्हें क्रमशः आरएक्स और टीएक्स बना दिया और जीएसएम मॉड्यूल से जुड़ा । जीएसएम मॉड्यूल को बिजली देने के लिए 12 वोल्ट की आपूर्ति का उपयोग किया जाता है। कंपन सेंसर P1_3 पर जुड़ा हुआ है। दुर्घटना का पता लगाने के लिए एक एलईडी का भी उपयोग किया जाता है। बाकी कनेक्शन सर्किट आरेख में दिखाए जाते हैं।
प्रोग्रामिंग स्पष्टीकरण
जीपीएस भाग को छोड़कर इस परियोजना के लिए प्रोग्रामिंग आसान है। प्रोजेक्ट के अंत में पूरा कोड दिया गया है। MSP430 में कोड लिखने या संकलित करने के लिए हमने Energia IDE का उपयोग किया है जो Arduino संगत है। अधिकांश Arduino IDE फ़ंक्शन का उपयोग सीधे इस Energia IDE में किया जा सकता है।
इसलिए सबसे पहले हमने एक आवश्यक पुस्तकालयों को शामिल किया और पिन और चर घोषित किए।
#शामिल
दिए गए फ़ंक्शन का उपयोग कंपन सेंसर सिग्नल पढ़ने के लिए किया जाता है । यह फ़ंक्शन छोटे या झूठे कंपन को भी फ़िल्टर करेगा।
#define count_max 25 चार SensorRead (int पिन) // पढ़ने sw debounce साथ { चार count_low = 0, count_high = 0; do { विलंब (1); if (digitalRead (pin) == High) { count_high ++; count_low = 0; } और { count_high = 0; count_low ++; } } जबकि (count_low <count_max && count_high <count_max); if (count_low> = count_max) LOW लौटें; और अधिक वापसी; }
नीचे फ़ंक्शन कंपन का पता लगाता है और GPS समन्वय प्राप्त करने के लिए gpsEvent () फ़ंक्शन को कॉल करता है और अंत में SMS भेजने के लिए Send () फ़ंक्शन को कॉल करता है ।
शून्य लूप () { if (SensorRead (vibrSensor) == High) { digitalWrite (एलईडी, हाई); gpsEvent (); भेजें (); digitalWrite (एलईडी, कम); देरी (2000); } }
दिया गया फ़ंक्शन GPS मॉड्यूल से GPS स्ट्रिंग्स प्राप्त करने के लिए ज़िम्मेदार है, उनसे निर्देशांक निकालें और उन्हें डिग्री-दशमलव प्रारूप में परिवर्तित करें।
शून्य gpsEvent () { चार gpsString; char test = "RMC"; i = 0; जबकि (1) { जबकि (Serial.available ()) // GPS से सीरियल इनकमिंग डेटा { char inhar = (char) Serial.read (); gpsString =Char; // स्टोर इनकमिंग डेटा GPS से टेम्पररी स्ट्रिंग str i ++; if (i <4) { if (gpsString! = test) // राइट स्ट्रिंग के लिए जाँच करें i = 0; }
int डिग्री = 0; डिग्री = gpsString-48; डिग्री * = 10; डिग्री + = gpsString-48; int minut_int = 0; minut_int = gpsString-48; minut_int * = 10; minut_int + = gpsString-48; int minut_dec = 0; minut_dec + = (gpsString-48) * 10000; minut_dec + = (gpsString-48) * 1000; minut_dec + = (gpsString-48) * 100; minut_dec + = (gpsString-48) * 10; minut_dec + = (gpsString-48); float minut = ((float) minut_int + ((float) minut_dec / 100000.0)) / 60.0; अक्षांश = ((फ्लोट) डिग्री + मिनट);
और अंत में, Send () फ़ंक्शन का उपयोग कोड के इस हिस्से में डाले गए उपयोगकर्ता नंबर पर एसएमएस भेजने के लिए किया जाता है।
शून्य भेजें () { GSM.print ("AT + CMGS ="); GSM.print ('' ''); GSM.print ("961 **** 059"); // अपना मोबाइल नंबर दर्ज करें GSM.println ('' '); देरी (500); // GSM.print ("अक्षांश:"); // GSM.println (अक्षांश); GSM.println ("दुर्घटना हुई"); देरी (500); // GSM.print ("देशांतर:"); // GSM.println (logitude); GSM.println ("स्थान देखने के लिए लिंक पर क्लिक करें"); GSM.print ("http://maps.google.com/maps?&z=15&mrt=yp&t=k&q="); GSM.print (अक्षांश, 6); GSM.print ("+"); GSM.print (logitude, 6); GSM.write (26); देरी (4000); }
पूरा कोड और डेमो वीडियो नीचे दिया गया है, आप कोड में सभी कार्यों की जांच कर सकते हैं।