- आवश्यक घटक:
- जीपीएस मॉड्यूल और इसके कार्य:
- जीएसएम मॉड्यूल:
- एक्सेलेरोमीटर:
- सर्किट स्पष्टीकरण:
- कार्य स्पष्टीकरण:
- प्रोग्रामिंग स्पष्टीकरण:
हमारे पिछले ट्यूटोरियल्स में, हमने सीखा है कि कंप्यूटर के साथ GPS मॉड्यूल को कैसे इंटरफ़ेस करें, Arduino GPS Clock कैसे बनाएं और GSM और GPS का उपयोग करके वाहन को कैसे ट्रैक करें। यहां इस परियोजना में, हम जीपीएस, जीएसएम और एक्सेलेरोमीटर का उपयोग करते हुए एक Arduino आधारित वाहन दुर्घटना चेतावनी प्रणाली का निर्माण करने जा रहे हैं । एक्सेलेरोमीटर वाहन के कुल्हाड़ियों में अचानक परिवर्तन का पता लगाता है और जीएसएम मॉड्यूल दुर्घटना के स्थान के साथ आपके मोबाइल फोन पर अलर्ट संदेश भेजता है। जीपीएस मॉड्यूल से अक्षांश और देशांतर से प्राप्त Google मानचित्र लिंक के रूप में दुर्घटना का स्थान भेजा जाता है। संदेश में गांठों में वाहन की गति भी शामिल है। देखें डेमो वीडियोअतं मै। इस वाहन दुर्घटना सतर्कता परियोजना का उपयोग केवल हार्डवेयर और सॉफ्टवेयर में कुछ परिवर्तन करके, ट्रैकिंग सिस्टम के रूप में किया जा सकता है।
आवश्यक घटक:
- अरुडिनो उनो
- GSM मॉड्यूल (SIM900A)
- GPS मॉड्यूल (SIM28ML)
- एक्सेलेरोमीटर (ADXL335)
- 16x2 एलसीडी
- बिजली की आपूर्ति
- तारों को जोड़ना
- 10 के-पॉट
- ब्रेडबोर्ड या पीसीबी
- बिजली की आपूर्ति 12v 1amp
प्रोजेक्ट में जाने से पहले, हम GPS, GSM और Accelerometer के बारे में चर्चा करेंगे।
जीपीएस मॉड्यूल और इसके कार्य:
GPS ग्लोबल पोजिशनिंग सिस्टम के लिए है और इसका उपयोग सटीक UTC समय (यूनिवर्सल टाइम कोऑर्डिनेटेड) के साथ पृथ्वी पर किसी भी स्थान के अक्षांश और देशांतर का पता लगाने के लिए किया जाता है। जीपीएस मॉड्यूल का उपयोग हमारी परियोजना में दुर्घटना के स्थान को ट्रैक करने के लिए किया जाता है। यह उपकरण उपग्रह से प्रत्येक और हर सेकंड के लिए समय और तिथि के साथ निर्देशांक प्राप्त करता है। हमने पहले अक्षांश और देशांतर निर्देशांक खोजने के लिए वाहन ट्रैकिंग सिस्टम में $ GPGGA स्ट्रिंग निकाली है ।
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 के इको के लिए
(जीएसएम मॉड्यूल के बारे में अधिक जानने के लिए, यहां विभिन्न माइक्रोकंट्रोलर के साथ हमारी विभिन्न जीएसएम परियोजनाओं की जांच करें)
एक्सेलेरोमीटर:
एक्सीलरोमीटर का पिन विवरण:
- Vcc 5 वोल्ट की आपूर्ति इस पिन पर कनेक्ट होनी चाहिए।
- एक्स-आउट यह पिन एक्स डायरेक्शन में एनालॉग आउटपुट देता है
- Y-OUT यह पिन y दिशा में एक एनालॉग आउटपुट देता है
- Z-OUT यह पिन z दिशा में एक एनालॉग आउटपुट देता है
- जीएनडी ग्राउंड
- ST यह पिन सेंसर की सेट संवेदनशीलता के लिए उपयोग किया जाता है
Accelerometer: Ping Pong Game का उपयोग करके Arduino और Accelerometer based Hand Gesture Controller Robot का उपयोग करके हमारी अन्य परियोजनाओं की भी जाँच करें।
सर्किट स्पष्टीकरण:
इस वाहन दुर्घटना चेतावनी प्रणाली परियोजना के सर्किट कनेक्शन सरल हैं। यहां जीपीएस मॉड्यूल का Tx पिन सीधे Arduino के डिजिटल पिन नंबर 10 से जुड़ा है। यहां सॉफ्टवेयर सीरियल लाइब्रेरी का उपयोग करके, हमने पिन 10 और 11 पर धारावाहिक संचार की अनुमति दी है, और उन्हें क्रमशः आरएक्स और टीएक्स बना दिया है और जीपीएस मॉड्यूल के आरएक्स पिन को खुला छोड़ दिया है। डिफ़ॉल्ट रूप से Arduino के Pin 0 और 1 का उपयोग धारावाहिक संचार के लिए किया जाता है, लेकिन SoftwareSerial लाइब्रेरी का उपयोग करके, हम Arduino के अन्य डिजिटल पिन पर धारावाहिक संचार की अनुमति दे सकते हैं। GPS मॉड्यूल को पावर देने के लिए 12 वोल्ट सप्लाई का इस्तेमाल किया जाता है।
GSM मॉड्यूल के Tx और Rx पिन सीधे Arduino के D2 और D3 से जुड़े हुए हैं। जीएसएम इंटरफेसिंग के लिए, यहां हमने सॉफ्टवेयर सीरियल लाइब्रेरी का भी उपयोग किया है। जीएसएम मॉड्यूल भी 12v आपूर्ति द्वारा संचालित है। एक वैकल्पिक एलसीडी का डेटा D4, D5, D6 और D7 पिन नंबर 6, 7, 8 और Arduino के 9 से जुड़ा है। कमांड पिन RS और LCD का EN, Arduino के पिन नंबर 4 और 5 से जुड़ा हुआ है और RW पिन सीधे जमीन से जुड़ा हुआ है। एलसीडी के विपरीत या चमक की स्थापना के लिए एक पोटेंशियोमीटर का भी उपयोग किया जाता है।
एक एक्सलेरोमीटर इस सिस्टम में एक दुर्घटना का पता लगाने के लिए जोड़ा जाता है और इसके x, y, और z- अक्ष ADC आउटपुट पिन को सीधे Arduino ADC पिन A1, A2, और A3 से जोड़ा जाता है।
कार्य स्पष्टीकरण:
इस परियोजना में, Arduino का उपयोग GPS रिसीवर और GSM मॉड्यूल के साथ पूरी प्रक्रिया को नियंत्रित करने के लिए किया जाता है । GPS रिसीवर का उपयोग वाहन के निर्देशांक का पता लगाने के लिए किया जाता है, GSM मॉड्यूल का उपयोग निर्देशांक और Google मानचित्र के लिंक के साथ अलर्ट एसएमएस भेजने के लिए किया जाता है। एक्सेलेरोमीटर अर्थात् ADXL335 किसी भी धुरी में दुर्घटना या अचानक परिवर्तन का पता लगाने के लिए उपयोग किया जाता है। और एक वैकल्पिक 16x2 एलसीडी का उपयोग स्थिति संदेश या निर्देशांक प्रदर्शित करने के लिए भी किया जाता है। हमने GPS मॉड्यूल SIM28ML और GSM मॉड्यूल SIM900A का उपयोग किया है।
जब हम प्रोग्रामिंग के बाद अपने हार्डवेयर के साथ तैयार होते हैं, तो हम इसे अपने वाहन में स्थापित कर सकते हैं और इसे शक्ति प्रदान कर सकते हैं। अब जब भी कोई दुर्घटना होती है, तो कार झुक जाती है और एक्सेलेरोमीटर अपने अक्ष के मान को बदल देता है। ये मान Arduino द्वारा पढ़े जाते हैं और जांचते हैं कि क्या किसी भी धुरी में कोई परिवर्तन होता है। यदि कोई परिवर्तन होता है, तो Arduino GPS मॉड्यूल डेटा (ऊपर काम किया गया GPS) से $ GPGGA स्ट्रिंग निकाल कर निर्देशांक पढ़ता है और पूर्वनिर्धारित नंबर पर पुलिस या एम्बुलेंस या परिवार के सदस्य को दुर्घटना स्थान के निर्देशांक के साथ एसएमएस भेजता है। संदेश में दुर्घटना स्थान के लिए Google मानचित्र लिंक भी है, ताकि उस स्थान को आसानी से ट्रैक किया जा सके। जब हमें संदेश प्राप्त होता है तो हमें केवल लिंक पर क्लिक करना होगा और हम Google मानचित्र पर रीडायरेक्ट करेंगे और फिर हम वाहन का सही स्थान देख सकते हैं। वाहनों की गति, समुद्री मील में(1.852 KPH), एसएमएस में भी भेजा जाता है और एलसीडी पैनल पर प्रदर्शित होता है। चेक पूर्ण डेमो वीडियो परियोजना नीचे।
यहाँ इस परियोजना में, हम कोड में न्यूनतम और अधिकतम मूल्य डालकर एक्सेलेरोमीटर की संवेदनशीलता निर्धारित कर सकते हैं ।
यहाँ डेमो में दिए गए मानों का उपयोग किया गया है:
# डेफ़िन मिनिवैल -50 # डेफ़िन मैक्सवेल 50
लेकिन बेहतर परिणामों के लिए आप 50 की जगह 200 का उपयोग कर सकते हैं, या अपनी आवश्यकता के अनुसार सेट कर सकते हैं।
प्रोग्रामिंग स्पष्टीकरण:
कोड अनुभाग में पूरा कार्यक्रम नीचे दिया गया है; यहाँ हम इसके विभिन्न कार्यों को संक्षेप में बता रहे हैं।
पहले हमने सभी आवश्यक पुस्तकालयों या हेडर फ़ाइलों को शामिल किया है और गणना और डेटा को संग्रहीत करने के लिए विभिन्न चर घोषित किए हैं।
इसके बाद, हमने GSM मॉड्यूल को इनिशियलाइज़ करने और AT कमांड्स के उपयोग से इसकी प्रतिक्रिया की जाँच करने के लिए एक फ़ंक्शन शून्य initModule (स्ट्रिंग cmd, char * res, int t) बनाया है।
शून्य initModule (स्ट्रिंग cmd, char * res, int t) {जबकि (1) {Serial.println (cmd); धारावाहिक 1. छापल (cmd); देरी (100); जबकि (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); देरी (टी); वापसी; } और {Serial.println ("त्रुटि"); }} देरी (टी); }}
इसके बाद, शून्य सेटअप () फ़ंक्शन में, हमने हार्डवेयर और सॉफ्टवेयर सीरियल संचार, एलसीडी, जीपीएस, जीएसएम मॉड्यूल और एक्सेलेरोमीटर को इनिशियलाइज़ किया है।
शून्य सेटअप () {Serial1.begin (9600); सीरियल.बेगिन (9600); lcd.begin (16,2); lcd.print ("एक्सीडेंट अलर्ट"); lcd.setCursor (0,1); lcd.print ("सिस्टम"); देरी (2000); lcd.clear ();…………………
एक्सेलेरोमीटर अंशांकन प्रक्रिया भी सेटअप लूप में की जाती है। इसमें, हमने कुछ नमूने लिए हैं और फिर एक्स-एक्सिस, वाई-एक्सिस और जेड-एक्सिस के लिए औसत मान पाते हैं। और उन्हें एक चर में संग्रहीत करें। तब हमने इन नमूना मूल्यों का उपयोग एक्सीलरोमीटर धुरी में परिवर्तन को पढ़ने के लिए किया है जब वाहन झुकाव (दुर्घटना) हो जाता है।
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("एक्सेलेरोमीटर"); for (int i = 0; मैं;
इसके बाद, शून्य लूप () फ़ंक्शन में, हमने एक्सेलेरोमीटर अक्ष मूल्यों को पढ़ा है और कैलिब्रेशन में लिए गए नमूनों की मदद से परिवर्तनों को निकालने के लिए गणना की है। अब यदि कोई परिवर्तन कम या ज्यादा है तो परिभाषित स्तर है तो Arduino पूर्वनिर्धारित संख्या में एक संदेश भेजता है।
शून्य लूप () {int value1 = analogRead (x); int value2 = analogRead (y); int value3 = analogRead (z); int xValue = xsample-value1; int yValue = ysample-value2; int zValue = zsample-value3; सीरियल.प्रिंट ("x ="); सीरियल.प्रिंटलेन (xValue); सीरियल.प्रिंट ("वाई ="); सीरीयल.प्रिंट (yValue); सीरियल.प्रिंट ("z ="); सीरीयल.प्रिंट (zValue);…………………
यहां हमने विभिन्न निर्देशकों के लिए कुछ अन्य फ़ंक्शन भी बनाए हैं, जैसे कि GPS निर्देशांक प्राप्त करने के लिए void gpsEvent () , void निर्देशांक 2dec () GPS स्ट्रिंग से निर्देशांक निकालने और उन्हें दशमलव मानों में परिवर्तित करने के लिए, void showcoordinate () सीरियल मॉनिटर पर मान प्रदर्शित करने के लिए। पूर्वनिर्धारित नंबर पर अलर्ट एसएमएस भेजने के लिए एलसीडी, और अंत में शून्य भेजें () ।
पूरा कोड और डेमो वीडियो नीचे दिया गया है, आप कोड में सभी कार्यों की जांच कर सकते हैं।