विषयसूची:

जीपीएस के साथ अपना रास्ता खोजना: 9 कदम
जीपीएस के साथ अपना रास्ता खोजना: 9 कदम

वीडियो: जीपीएस के साथ अपना रास्ता खोजना: 9 कदम

वीडियो: जीपीएस के साथ अपना रास्ता खोजना: 9 कदम
वीडियो: Track9 GPS Tracker Apps by Track9 GPS -How to use -कैसे उपयोग करे 2024, जुलाई
Anonim
जीपीएस के साथ अपना रास्ता खोजना
जीपीएस के साथ अपना रास्ता खोजना

GPS डेटा को समझने और लागू करने में एक त्वरित अभ्यास

  • आवश्यक समय: 2 घंटे
  • लागत: $75-$150

निर्माताओं के लिए, इलेक्ट्रॉनिक्स परियोजनाओं में उच्च गुणवत्ता वाले भू-स्थानिक डेटा को शामिल करना काफी सस्ता हो गया है। और पिछले कुछ वर्षों में, GPS (ग्लोबल पोजिशनिंग सिस्टम) रिसीवर मॉड्यूल बहुत अधिक विविध, शक्तिशाली और Arduino, PIC, Teensy और रास्पबेरी पाई जैसे विकास बोर्डों के साथ एकीकृत करने में आसान हो गए हैं। यदि आप GPS के आसपास निर्माण करने के बारे में सोच रहे हैं, तो आपने आरंभ करने के लिए एक अच्छा समय चुना है।

चरण 1: यह कैसे काम करता है

एक जीपीएस मॉड्यूल एक छोटा रेडियो रिसीवर है जो उपग्रहों के बेड़े द्वारा ज्ञात आवृत्तियों पर प्रसारित संकेतों को संसाधित करता है। ये उपग्रह पृथ्वी के चारों ओर मोटे तौर पर गोलाकार कक्षाओं में चक्कर लगाते हैं, जो बेहद सटीक स्थिति और घड़ी के आंकड़ों को नीचे की जमीन पर पहुंचाते हैं। यदि अर्थबाउंड रिसीवर इन उपग्रहों में से पर्याप्त "देख" सकता है, तो यह उनका उपयोग अपने स्थान और ऊंचाई की गणना करने के लिए कर सकता है।

जब एक जीपीएस संदेश आता है, तो रिसीवर पहले अपने प्रसारण टाइमस्टैम्प का निरीक्षण करता है कि यह कब भेजा गया था। क्योंकि अंतरिक्ष में एक रेडियो तरंग की गति एक ज्ञात स्थिरांक (सी) है, रिसीवर प्रसारण की तुलना कर सकता है और सिग्नल की यात्रा की दूरी निर्धारित करने के लिए समय प्राप्त कर सकता है। एक बार जब यह चार या अधिक ज्ञात उपग्रहों से अपनी दूरी स्थापित कर लेता है, तो अपनी स्थिति की गणना करना 3D त्रिभुज की काफी सरल समस्या है। लेकिन इसे जल्दी और सटीक रूप से करने के लिए, रिसीवर को एक बार में 20 डेटा स्ट्रीम से संख्याओं को कम करने में सक्षम होना चाहिए। चूंकि जीपीएस सिस्टम का पृथ्वी पर हर जगह प्रयोग करने योग्य होने का एक प्रकाशित लक्ष्य है, सिस्टम को यह सुनिश्चित करना चाहिए कि कम से कम चार उपग्रह - अधिमानतः अधिक - दुनिया के हर बिंदु से हर समय दिखाई दे रहे हैं। वर्तमान में २०,००० किलोमीटर ऊँचे विरल बादल में ३२ जीपीएस उपग्रह सावधानीपूर्वक नृत्य नृत्य कर रहे हैं।

चरण 2: फैन तथ्य

आइंस्टीन के सापेक्षता के सिद्धांत के बिना जीपीएस काम नहीं कर सकता था, क्योंकि पृथ्वी के गुरुत्वाकर्षण क्षेत्र में समय के फैलाव से प्रत्येक दिन 38 माइक्रोसेकंड के लिए मुआवजा दिया जाना चाहिए जो परिक्रमा करने वाली परमाणु घड़ियों को प्राप्त होता है।

चरण 3: आरंभ करना

शुरू करना
शुरू करना

आपका प्रोजेक्ट जो भी हो, GPS को एकीकृत करना आसान है। अधिकांश रिसीवर मॉड्यूल एक सीधे सीरियल प्रोटोकॉल के साथ संचार करते हैं, इसलिए यदि आप अपने नियंत्रक बोर्ड पर एक अतिरिक्त सीरियल पोर्ट पा सकते हैं, तो भौतिक कनेक्शन बनाने के लिए इसे केवल कुछ मुट्ठी भर तारों को लेना चाहिए। और यदि नहीं भी, तो अधिकांश नियंत्रक एक नकली "सॉफ़्टवेयर" सीरियल मोड का समर्थन करते हैं जिसका उपयोग आप मनमाने पिन से कनेक्ट करने के लिए कर सकते हैं।

शुरुआती लोगों के लिए, एडफ्रूट का अल्टीमेट जीपीएस ब्रेकआउट मॉड्यूल एक अच्छा विकल्प है। बाजार में बहुत सारे प्रतिस्पर्धी उत्पाद हैं, लेकिन अल्टीमेट एक उचित मूल्य पर एक ठोस प्रदर्शन है, जिसमें बड़े थ्रू-होल होते हैं जो सोल्डर या ब्रेडबोर्ड से जुड़ना आसान होता है।

सबसे पहले, जमीन और बिजली को कनेक्ट करें। Arduino के शब्दों में, इसका मतलब है कि एक माइक्रोकंट्रोलर GND पिन को मॉड्यूल के GND से जोड़ना, और +5V पिन को मॉड्यूल के VIN से जोड़ना। डेटा ट्रांसफर को प्रबंधित करने के लिए, आपको मॉड्यूल के TX और RX पिन को Arduino से कनेक्ट करना होगा। मैं इस उद्देश्य के लिए मनमाने ढंग से Arduino पिन 2 (TX) और 3 (RX) का चयन करने जा रहा हूं, भले ही पिन 0 और 1 विशेष रूप से "हार्डवेयर सीरियल पोर्ट" या UART के रूप में उपयोग के लिए डिज़ाइन किए गए हों।क्यों? क्योंकि मैं इन लो-एंड AVR प्रोसेसर के केवल UART को बर्बाद नहीं करना चाहता। Arduino का UART ऑनबोर्ड USB कनेक्टर से हार्ड-वायर्ड है, और मैं इसे डिबगिंग के लिए अपने कंप्यूटर से कनेक्ट रखना पसंद करता हूं।

चरण 4: डेटास्ट्रीम में एक पैर की अंगुली

डेटास्ट्रीम में एक पैर की अंगुली
डेटास्ट्रीम में एक पैर की अंगुली

जैसे ही आप पावर लागू करते हैं, एक GPS मॉड्यूल अपनी TX लाइन पर टेक्स्ट डेटा के टुकड़े भेजना शुरू कर देता है। यह अभी तक एक भी उपग्रह नहीं देख सकता है, बहुत कम "फिक्स" है, लेकिन डेटा नल तुरंत आता है, और यह देखना दिलचस्प है कि क्या निकलता है। हमारा पहला सरल स्केच (नीचे) इस असंसाधित डेटा को प्रदर्शित करने के अलावा कुछ नहीं करता है।

#शामिल करें #RXPin 2 परिभाषित करें

#टीएक्सपिन 3 परिभाषित करें#जीपीएसबॉड 4800 परिभाषित करें

#डिफाइन कंसोलबॉड 115200

// GPS डिवाइस से सीरियल कनेक्शनSoftwareSerial ss(RXPin, TXPin);

व्यर्थ व्यवस्था(){

सीरियल.बेगिन (कंसोलबॉड);

ss.begin (GPSBaud);

Serial.println ("जीपीएस उदाहरण 1");

Serial.println ("जीपीएस मॉड्यूल द्वारा प्रेषित कच्चे एनएमईए डेटा प्रदर्शित करना।");

Serial.println ("मिकल हार्ट द्वारा"); सीरियल.प्रिंट्लन ();

}

शून्य लूप ()

{ अगर (ss.उपलब्ध ()> 0) // जैसे ही प्रत्येक वर्ण आता है…

सीरियल.राइट (ss.read ()); // … इसे कंसोल पर लिखें।

}

नोट: स्केच रिसीव पिन (RXPin) को 2 के रूप में परिभाषित करता है, भले ही हमने पहले कहा था कि ट्रांसमिट (TX) पिन पिन 2 से जुड़ा होगा। यह भ्रम का एक सामान्य स्रोत है। RXPin Arduino के दृष्टिकोण से प्राप्त पिन (RX) है। स्वाभाविक रूप से, इसे मॉड्यूल के ट्रांसमिट (TX) पिन से जोड़ा जाना चाहिए, और इसके विपरीत।

इस स्केच को अपलोड करें और सीरियल मॉनिटर को 115, 200 बॉड पर खोलें। यदि सब कुछ काम कर रहा है, तो आपको अल्पविराम द्वारा अलग किए गए टेक्स्ट स्ट्रिंग्स की एक घनी, अंतहीन धारा दिखाई देनी चाहिए। प्रत्येक पैराग्राफ की शुरुआत में दूसरी छवि की तरह कुछ दिखाई देगा।

इन विशिष्ट स्ट्रिंग्स को एनएमईए वाक्यों के रूप में जाना जाता है, इसलिए कहा जाता है क्योंकि प्रारूप का आविष्कार राष्ट्रीय समुद्री इलेक्ट्रॉनिक्स एसोसिएशन द्वारा किया गया था। NMEA आवश्यक (स्थान और समय) से लेकर गूढ़ (उपग्रह सिग्नल-टू-शोर अनुपात, चुंबकीय विचरण, आदि) तक नेविगेशनल डेटा के लिए इनमें से कई वाक्यों को परिभाषित करता है। निर्माता असंगत हैं कि उनके रिसीवर किस प्रकार के वाक्य का उपयोग करते हैं, लेकिन जीपीआरएमसी आवश्यक है। एक बार जब आपका मॉड्यूल ठीक हो जाता है, तो आपको इन GPRMC वाक्यों की उचित संख्या दिखाई देनी चाहिए।

चरण 5: अपने आप को ढूँढना

आपके प्रोग्राम द्वारा वास्तव में उपयोग की जा सकने वाली जानकारी में रॉ मॉड्यूल आउटपुट को परिवर्तित करना तुच्छ नहीं है। सौभाग्य से, आपके लिए ऐसा करने के लिए पहले से ही कुछ बेहतरीन पुस्तकालय उपलब्ध हैं। यदि आप उनके अल्टीमेट ब्रेकआउट का उपयोग कर रहे हैं तो लिमोर फ्राइड की लोकप्रिय एडफ्रूट जीपीएस लाइब्रेरी एक सुविधाजनक विकल्प है। यह अल्टीमेट (जैसे आंतरिक डेटा लॉगिंग) के लिए अद्वितीय सुविधाओं को सक्षम करने के लिए लिखा गया है और अपनी खुद की कुछ आकर्षक घंटियाँ और सीटी जोड़ता है। मेरी पसंदीदा पार्सिंग लाइब्रेरी, हालांकि - और यहां मैं पूरी तरह से निष्पक्ष हूं - जिसे मैंने टाइनीजीपीएस ++ कहा है। मैंने इसे व्यापक, शक्तिशाली, संक्षिप्त और उपयोग में आसान बनाने के लिए डिज़ाइन किया है। चलो इसे एक स्पिन के लिए लेते हैं।

चरण 6: TinyGPS++. के साथ कोडिंग

प्रोग्रामर के दृष्टिकोण से, TinyGPS++ का उपयोग करना बहुत सरल है:

1) एक वस्तु जीपीएस बनाएँ।

2) प्रत्येक वर्ण को रूट करें जो मॉड्यूल से ऑब्जेक्ट तक जीपीएस.एन्कोड () का उपयोग करके आता है।

3) जब आपको अपनी स्थिति या ऊंचाई या समय या तिथि जानने की आवश्यकता हो, तो बस जीपीएस ऑब्जेक्ट को क्वेरी करें।

#शामिल करें #शामिल करें

#आरएक्सपिन 2 परिभाषित करें

#टीएक्सपिन 3 परिभाषित करें

# परिभाषित करें GPSBaud 4800

#डिफाइन कंसोलबॉड 115200

// GPS डिवाइस से सीरियल कनेक्शनSoftwareSerial ss(RXPin, TXPin);

// टाइनीजीपीएस++ ऑब्जेक्ट

टाइनीजीपीएसप्लस जीपीएस;

व्यर्थ व्यवस्था(){

सीरियल.बेगिन (कंसोलबॉड);

ss.begin (GPSBaud);

Serial.println ("जीपीएस उदाहरण 2");

Serial.println ("टिनीजीपीएस ++ का उपयोग कर एक साधारण ट्रैकर।");

Serial.println ("मिकल हार्ट द्वारा");

सीरियल.प्रिंट्लन ();

}

शून्य लूप () {

// यदि GPS से कोई वर्ण आया है, /

/ उन्हें TinyGPS++ ऑब्जेक्ट पर भेजें

जबकि (एसएस उपलब्ध ()> 0)

जीपीएस.एन्कोड (एसएस.रीड ());

// आइए नए स्थान और ऊंचाई को प्रदर्शित करें

// जब भी उनमें से किसी एक को अपडेट किया गया हो।

अगर (gps.location.isUpdated() || gps.altitude.isUpdated ())

{

सीरियल.प्रिंट ("स्थान:");

सीरियल.प्रिंट (gps.location.lat (), 6);

सीरियल.प्रिंट ("", ");

सीरियल.प्रिंट (gps.location.lng (), 6);

सीरियल.प्रिंट ("ऊंचाई:");

Serial.println (gps.altitude.meters ());

}

}

हमारा दूसरा एप्लिकेशन पार्सिंग में सहायता के लिए TinyGPS++ का उपयोग करते हुए लगातार रिसीवर के स्थान और ऊंचाई को प्रदर्शित करता है। एक वास्तविक डिवाइस में, आप इस डेटा को एक एसडी कार्ड में लॉग इन कर सकते हैं या इसे एलसीडी पर प्रदर्शित कर सकते हैं। पुस्तकालय को पकड़ो और FindYourself.ino (ऊपर) स्केच करें। लाइब्रेरी को हमेशा की तरह Arduino लाइब्रेरी फ़ोल्डर में स्थापित करें। अपने Arduino पर स्केच अपलोड करें और 115, 200 बॉड पर सीरियल मॉनिटर खोलें। आपको वास्तविक समय में अपना स्थान और ऊंचाई अपडेट होते हुए देखना चाहिए। यह देखने के लिए कि आप कहां खड़े हैं, कुछ परिणामी अक्षांश/देशांतर निर्देशांकों को Google मानचित्र में चिपकाएं। अब अपने लैपटॉप को कनेक्ट करें और टहलने या ड्राइव पर जाएं। (लेकिन सड़क पर नजर रखना याद रखें!)

चरण 7: "चौथा आयाम"

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

FindYourself.ino को एक सुपर-सटीक घड़ी में बदलने के लिए, बस अंतिम कुछ पंक्तियों को इस तरह बदलें:

अगर (gps.time.isUpdated ()) {

चार बफ [८०];

sprintf (buf, "समय% 02d:% 02d:% 02d", gps.time.hour (), gps.time.minute (), gps.time.second ()); Serial.println (buf);

}

चरण 8: अपना रास्ता खोजना

अपना रास्ता खुद ढूंढ़ना
अपना रास्ता खुद ढूंढ़ना

हमारा तीसरा और अंतिम आवेदन कोड की 100 से कम पंक्तियों में एक पठनीय TinyGPS++ स्केच लिखने के लिए एक व्यक्तिगत चुनौती का परिणाम है, जो एक उपयोगकर्ता को "सीधे रखें" या "वीर बाएं" जैसे सरल पाठ निर्देशों का उपयोग करके एक गंतव्य के लिए मार्गदर्शन करेगा।

#शामिल करें #शामिल करें

#आरएक्सपिन 2 परिभाषित करें

#टीएक्सपिन 3 परिभाषित करें

# परिभाषित करें GPSBaud 4800

#डिफाइन कंसोलबॉड 115200

// GPS डिवाइस से सीरियल कनेक्शनSoftwareSerial ss(RXPin, TXPin);

// TinyGPS++ ऑब्जेक्ट TinyGPSPlus gps;

अहस्ताक्षरित लंबा अंतिम अद्यतन समय = 0;

#define EIFFEL_LAT 48.85823#परिभाषित EIFFEL_LNG 2.29438

/* यह उदाहरण एक बुनियादी ढांचा दिखाता है कि आप किसी व्यक्ति (या ड्रोन) को गंतव्य तक ले जाने के लिए पाठ्यक्रम और दूरी का उपयोग कैसे कर सकते हैं। यह गंतव्य एफिल टॉवर है। इसे आवश्यकतानुसार बदलें।

अक्षांश/लंबा निर्देशांक प्राप्त करने का सबसे आसान तरीका Google मानचित्र (maps.google.com) में गंतव्य पर राइट-क्लिक करना है, और "यहां क्या है?" चुनें। यह सटीक मानों को खोज बॉक्स में रखता है।

*/

व्यर्थ व्यवस्था(){

सीरियल.बेगिन (कंसोलबॉड);

ss.begin (GPSBaud);

Serial.println ("जीपीएस उदाहरण 3");

Serial.println ("एक गैर-व्यापक मार्गदर्शन प्रणाली");

Serial.println ("मिकल हार्ट द्वारा");

सीरियल.प्रिंट्लन ();

}

शून्य लूप () {

// यदि GPS से कोई वर्ण आया है, // उन्हें TinyGPS++ ऑब्जेक्ट पर भेजें जबकि (ss.उपलब्ध ()> 0) gps.encode(ss.read());

// हर 5 सेकंड में एक अपडेट करें।

अगर (मिली () - अंतिम अद्यतन समय> = 5000)

{

अंतिम अद्यतन समय = मिली ();

सीरियल.प्रिंट्लन ();

// हमारी वर्तमान स्थिति स्थापित करें

डबल डिस्टेंस टूडेस्टिनेशन = टाइनीजीपीएसप्लस::डिस्टेंसबीच

gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);

डबल कोर्स टूडेस्टिनेशन = टाइनीजीपीएसप्लस:: कोर्स टू

gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);

const char *directionToDestination = TinyGPSPlus::cardinal(courseToDestination);

int courseChangeNeeded = (int)(360 + courseToDestination - gps.course.deg ())% 360;

// डीबग सीरियल.प्रिंट ("डीबग: कोर्स 2 डेस्ट:");

सीरियल.प्रिंट (कोर्स टू डेस्टिनेशन);

सीरियल.प्रिंट ("करकोर्स:");

सीरियल.प्रिंट (gps.course.deg ());

सीरियल.प्रिंट ("Dir2Dest:");

सीरियल.प्रिंट (दिशा टूडेस्टिनेशन);

सीरियल.प्रिंट ("रिले कोर्स:");

सीरियल.प्रिंट (कोर्सचेंजनेडेड);

सीरियल.प्रिंट ("कर्सपीडी:");

Serial.println (gps.speed.kmph ());

// गंतव्य के 20 मीटर के भीतर? यहा थे

अगर (दूरी से गंतव्य <= 20.0)

{ Serial.println ("बधाई: आप आ गए!");

बाहर निकलें(1);

}

सीरियल.प्रिंट ("दूरी:"); सीरियल.प्रिंट (दूरी से गंतव्य);

Serial.println ("मीटर जाने के लिए।");

सीरियल.प्रिंट ("निर्देश:");

// यथास्थिति? बस इंगित करें कि किस दिशा में जाना है।

अगर (gps.speed.kmph() <2.0)

{

सीरियल.प्रिंट ("हेड");

सीरियल.प्रिंट (दिशा टूडेस्टिनेशन);

सीरियल.प्रिंट्लन ("।");

वापसी;

}

अगर (कोर्स चेंजनीड> = 345 || कोर्स चेंजनीड <15) सीरियल.प्रिंट्लन ("सीधे आगे बढ़ें!");

और अगर (कोर्सचेंजनीड>= ३१५ && कोर्स चेंजनीड <३४५)

Serial.println ("थोड़ा बाईं ओर वीर।");

और अगर (कोर्सचेंजनीड>= 15 && कोर्स चेंजनीड <45)

Serial.println ("दाईं ओर थोड़ा सा वीर।");

और अगर (कोर्सचेंजनीड>= 255 && कोर्स चेंजनीड <315)

Serial.println ("बाईं ओर मुड़ें।");

और अगर (कोर्सचेंजनीड>= 45 && कोर्स चेंजनीड <105)

Serial.println ("दाईं ओर मुड़ें।");

अन्यथा

Serial.println ("पूरी तरह से मुड़ें।");

}

}

प्रत्येक 5 सेकंड में कोड उपयोगकर्ता के स्थान और पाठ्यक्रम (यात्रा की दिशा) को पकड़ लेता है और TinyGPS++ courseTo() पद्धति का उपयोग करके असर (गंतव्य की दिशा) की गणना करता है। जैसा कि नीचे दिखाया गया है, दो वैक्टर की तुलना करने से सीधे चलते रहने या मुड़ने का सुझाव मिलता है।

FindYourWay.ino (ऊपर) स्केच को कॉपी करें और इसे Arduino IDE में पेस्ट करें। 1 किमी या 2 किमी दूर एक गंतव्य सेट करें, स्केच को अपने Arduino पर अपलोड करें, इसे अपने लैपटॉप पर चलाएं, और देखें कि क्या यह आपको वहां मार्गदर्शन करेगा। लेकिन इससे भी महत्वपूर्ण बात यह है कि कोड का अध्ययन करें और समझें कि यह कैसे काम करता है।

चरण 9: आगे जाना

जीपीएस की रचनात्मक क्षमता विशाल है। मेरे द्वारा बनाई गई सबसे संतोषजनक चीजों में से एक जीपीएस-सक्षम पहेली बॉक्स था जो केवल एक प्रीप्रोग्राम्ड स्थान पर खुलता है। यदि आपका शिकार खजाने को अंदर बंद करना चाहता है, तो उसे यह पता लगाना होगा कि वह गुप्त स्थान कहाँ है और शारीरिक रूप से वहाँ बॉक्स लाना होगा। एक लोकप्रिय पहला प्रोजेक्ट विचार कुछ प्रकार का लॉगिंग डिवाइस है जो मिनट से मिनट की स्थिति और ट्रांस-पेनिन ट्रेल पर चलने वाले एक हाइकर की ऊंचाई को रिकॉर्ड करता है। या उन डरपोक चुंबकीय ट्रैकर्स में से एक के बारे में क्या है जो बुरे लोगों की कारों पर ब्रेकिंग बैड स्टिक में डीईए एजेंट हैं? दोनों पूरी तरह से व्यवहार्य हैं, और शायद निर्माण करने में मजेदार होंगे, लेकिन मैं आपको अधिक विस्तार से सोचने के लिए प्रोत्साहित करता हूं, जो सामान आप पहले से ही अमेज़ॅन पर खरीद सकते हैं। यह बाहर एक बड़ी दुनिया है। जितना हो सके दूर-दूर घूमें।

सिफारिश की: