विषयसूची:

डिजिटल कम्पास और शीर्षक खोजक: 6 कदम
डिजिटल कम्पास और शीर्षक खोजक: 6 कदम

वीडियो: डिजिटल कम्पास और शीर्षक खोजक: 6 कदम

वीडियो: डिजिटल कम्पास और शीर्षक खोजक: 6 कदम
वीडियो: अपने मोबाइल से प्लॉट की Direction कैसे देखे | How to use your phone as compass | Gopal Architecture 2024, जुलाई
Anonim
डिजिटल कम्पास और शीर्षक खोजक
डिजिटल कम्पास और शीर्षक खोजक

लेखक:

कलन पहलन

एंड्रयू लूफ़्ट

ब्लेक जॉनसन

पावती:

कैलिफोर्निया समुद्री अकादमी

इवान चांग-सिउ

परिचय:

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

आपूर्ति:

- DIYmall 6M GPS मॉड्यूल

- HiLetgo MPU9250/6500 9-एक्सिस 9 डीओएफ 16 बिट

- एडफ्रूट नियोपिक्सल रिंग 16

- मेकरफोकस 4 पीसीएस 3.7 वी लिथियम रिचार्जेबल बैटरी

- ELEGOO MEGA 2560 R3 बोर्ड

- एडफ्रूट मिनी लिपो डब्ल्यू/मिनी-बी यूएसबी जैक - यूएसबी लीओन/लिपोली चार्जर - v1

- 2.8 टचस्क्रीन ब्रेकआउट बोर्ड w/MicroSD सॉकेट के साथ TFT LCD

चरण 1: परियोजना की कार्यक्षमता को डिजाइन करना

परियोजना की कार्यक्षमता को डिजाइन करना
परियोजना की कार्यक्षमता को डिजाइन करना

पहला कदम तर्क और अंतिम परिचालन कार्यक्षमता को समझ रहा है। यह तर्क आरेख तीन डिवाइस राज्यों और दो सेंसर राज्यों को दर्शाता है।

राज्य 1: लोड हो रहा है राज्य

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

राज्य 2: कम्पास मोड

इस स्थिति में डिवाइस एक डिजिटल कंपास की तरह काम करेगा। डिवाइस के उन्मुखीकरण के संबंध में उत्तर की दिशा को इंगित करने के लिए NeoPixel रिंग प्रकाश करेगा। डिवाइस के अक्षांश और देशांतर के साथ-साथ ट्रू डिवाइस हेडिंग भी एलसीडी स्क्रीन पर प्रदर्शित होगी। यह इस राज्य के भीतर भी होगा कि उपयोगकर्ता राज्य 3 में प्रदर्शित होने वाले उपयोगकर्ता शीर्षक में प्रवेश करने में सक्षम होगा।

राज्य 3: शीर्षक ट्रैकिंग मोड

इस स्थिति में डिवाइस अब उपयोगकर्ता को उनके वांछित शीर्षक पर स्थापित होने में मदद करेगा। डिवाइस अब डिवाइस हेडिंग और उपयोगकर्ताओं को एलसीडी स्क्रीन पर अक्षांश और देशांतर डेटा के साथ प्रदर्शित करेगा। NeoPixel रिंग अब उपयोगकर्ताओं को डिवाइस ओरिएंटेशन के संबंध में इंगित करने के लिए प्रकाशमान करेगी।

राज्य 2 और राज्य 3 दोनों के भीतर दो सेंसर राज्य हैं, ये सेंसर राज्य डिवाइस को सेंसर से डेटा खींचने की अनुमति देते हैं जो डिवाइस की परिचालन स्थिति के आधार पर सबसे सटीक डेटा प्रदान करता है।

सेंसर राज्य 1: एमपीयू

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

सेंसर स्टेट 2: जीपीएस

यदि डिवाइस चल रहा है तो हेडिंग डेटा जीपीएस चिप से खींचा जाएगा क्योंकि यह इस स्थिति में सबसे सटीक डेटा है।

डिवाइस किसी भी समय यूनिट बदलने की उपयोग स्थितियों के हिसाब से इनके बीच सेंसर राज्यों में स्विच कर सकता है। यह डिवाइस के संचालन के लिए महत्वपूर्ण है क्योंकि डिवाइस में उपयोग किए गए दोनों सेंसर में ऐसी स्थितियां हैं जो उनके द्वारा प्रदान किए गए डेटा की सटीकता को प्रभावित करती हैं। एमपीयू के मामले में चिप आसानी से इमारतों में कारों और धातु निर्माण सामग्री के कारण स्थानीय चुंबकीय क्षेत्रों से प्रभावित हो सकती है। इस प्रकार एक जीपीएस चिप का उपयोग किया जाता है जो अधिक सटीक शीर्षक प्रदान कर सकता है जो समान प्रभावों से प्रभावित नहीं होता है। हालाँकि, GPS केवल चलते समय हेडिंग डेटा प्रदान कर सकता है क्योंकि यह अक्षांश और देशांतर डेटा में परिवर्तन का उपयोग करके शीर्षक की गणना करता है। इसलिए चिप्स एक दूसरे के पूरक हैं और दो सेंसर राज्यों का उपयोग करके सबसे सटीक और विश्वसनीय डिवाइस कार्यक्षमता प्रदान करते हैं।

चरण 2: सेटअप और वायर आरेख

सेटअप और वायर आरेख
सेटअप और वायर आरेख
सेटअप और वायर आरेख
सेटअप और वायर आरेख
सेटअप और वायर आरेख
सेटअप और वायर आरेख

परियोजना का उपयोग करता है और ऊपर के बोर्ड के समान Arduino मेगा क्लोन बोर्ड। परियोजना के सभी घटकों को इस बोर्ड से जोड़ा जाएगा। इस परियोजना के लिए घटकों को कैसे तारित किया जाए, इसके विस्तृत चित्र ऊपर दिए गए हैं। बटनों में विस्तृत सर्किट नहीं होता है क्योंकि इन्हें कई तरीकों से सेट किया जा सकता है। इस परियोजना में वे एक 100K पुल डाउन रेसिस्टर और एक साधारण बटन का उपयोग करके अपने नियत पिन पर 3 वोल्ट का सिग्नल भेजते हैं।

चरण 3: परीक्षण घटक और मूल कोड

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

आवश्यक पुस्तकालय:

Adafruit_ILI9341_Albert.h

एसपीआई.एच

Adafruit_GFX.h

Adafruit_ILI9341.h

टाइनीजीपीएस++.एच

Adafruit_NeoPixel.h

एमपीयू९२५०.एच

इन सभी को ऊपर दिए गए शीर्षकों को खोज कर पाया जा सकता है। मैं लिंक पोस्ट नहीं करूंगा क्योंकि इन पुस्तकालयों की कई प्रतियां कई स्रोतों से हैं और केवल मूल से लिंक करने के सामुदायिक मानक का पालन करते हुए मैं आपको इन्हें अपने लिए ढूंढने दूंगा।

चरण 4: एमपीयू अंशांकन

एमपीयू अंशांकन
एमपीयू अंशांकन

राज्य 2 और राज्य 3 में MPU के माध्यम से मिले शीर्षक को चार चतुर्थांशों में विभाजित किया गया था। यह आवश्यक था क्योंकि अंशांकन की हमारी पद्धति में मैग्नेटोमीटर से इसके x और y अक्षों के साथ न्यूनतम और अधिकतम परिमाण ज्ञात करना आवश्यक था। यह पृथ्वी के अलावा किसी भी महत्वपूर्ण विद्युत चुम्बकीय क्षेत्र से मुक्त, अपने तीन अक्षों के बारे में डिवाइस को बेतरतीब ढंग से घुमाने के माध्यम से किया गया था। फिर हमने x और y अक्ष के साथ न्यूनतम और अधिकतम मान लिए और उन्हें एक स्केलिंग समीकरण में प्लग किया ताकि ऋणात्मक एक और एक के मानों के बीच परिमाण को सीमित किया जा सके। उपरोक्त आकृति में, BigX और BigY क्रमशः x और y-अक्ष के साथ मैग्नेटोमीटर डेटा के अधिकतम मान हैं, LittleX और LittleY क्रमशः x और y-अक्ष के साथ मैग्नेटोमीटर डेटा के न्यूनतम मान हैं, IMU.getMagX_uT() और IMU.getMagY_uT() किसी भी समय मैग्नेटोमीटर से क्रमशः x और y-अक्ष के साथ खींचे जा रहे मान हैं, और Mx और My नए स्केल किए गए मान हैं जिनका उपयोग शीर्षक की गणना के लिए किया जाता है।

चरण 5: अंतिम कोड

अंतिम कोड
अंतिम कोड
अंतिम कोड
अंतिम कोड
अंतिम कोड
अंतिम कोड
अंतिम कोड
अंतिम कोड

अंतिम चरण अंतिम कोड बनाना है। मैंने परियोजनाओं के अंतिम कोड की एक प्रति संलग्न की है। कोड को नेविगेट करने में मदद करने के लिए नोट्स के भीतर बनाया गया है। इस सेक्शन की सबसे बड़ी चुनौती क्वाड्रंट्स को सही तरीके से काम करना था। चतुर्भुजों का कार्यान्वयन हमारे अनुमान से कहीं अधिक थकाऊ और तर्क-विहीन साबित हुआ। हमने शुरू में एक बुनियादी आर्कटन (My/Mx) लागू किया और फिर रेडियन से डिग्री में परिवर्तित किया, क्योंकि Arduino डिफ़ॉल्ट रूप से रेडियन में आउटपुट करता है। हालांकि, इसमें काम करने वाला एकमात्र क्वाड्रेंट 90 डिग्री से 180 डिग्री तक था, जिसने हमें एक नकारात्मक आउटपुट दिया और क्वाड्रेंट III के रूप में समाप्त हुआ। इसका समाधान निरपेक्ष मूल्य ले रहा था, क्योंकि यह अभी भी सही ढंग से बढ़ा है। यह मान तब 360 से घटाया गया था ताकि राज्य 2 में सही NeoPixel LED को रोशन किया जा सके और इसी तरह के गणितीय ऑपरेशन का उपयोग राज्य 3 में किया गया था, यदि शीर्षक उपयोगकर्ता के इनपुट शीर्षक से बड़ा या छोटा था, जो दोनों में देखा जा सकता है उपरोक्त कोड। उपरोक्त आंकड़ों में, हेडिंग NeoPixel लाइट से मेल खाती है जो डिवाइस हेडिंग और स्टेट 2 के मामले में उत्तर से विचलन और यूजर हेडिंग के बीच के अंतर के आधार पर प्रकाशित होगी। इस मामले में, 90 से 180 डिग्री क्वाड्रेंट III से मेल खाती है। दोनों ही मामलों में, tft.print स्क्रीन को डिवाइस के उत्तर से हेडिंग को पढ़ने का कारण बनता है।

अन्य तीन चतुर्भुजों के लिए, आर्कटान (My/Mx) के कार्यान्वयन के कारण वृद्धि का उलटा हुआ क्योंकि डिवाइस को घुमाया गया था, यानी हेडिंग एंगल की गिनती तब होगी जब इसे गिनना चाहिए था और इसके विपरीत। इस समस्या का समाधान आर्कटिक को आर्कटान (Mx/My) के रूप में बदलना था। हालांकि इसने इंक्रीमेंटेशन इनवर्जन को हल किया, लेकिन इसने सही डिवाइस हेडिंग नहीं दी, जो कि क्वाड्रंट्स खेलने में आया। इसका सरल समाधान संबंधित चतुर्थांश के आधार पर एक बदलाव जोड़ना था। इसे निम्नलिखित आंकड़ों में देखा जा सकता है, जो एक बार फिर प्रत्येक चतुर्थांश के राज्यों 2 और 3 के कोड के टुकड़े हैं।

यदि एमपीयू समीकरण द्वारा परिकलित शीर्षक उपयोक्ता शीर्षक से अधिक है तो पहला यदि कथन किया जाता है। इस स्थिति के तहत उपयोगकर्ता के इनपुट हेडिंग को डिवाइस हेडिंग में जोड़ा जाता है और संबंधित मान को 360 से घटाया जाता है। यदि अन्य स्टेटमेंट किया जाता है, तो MPU हेडिंग इक्वेशन को यूजर के इनपुट हेडिंग से घटा दिया जाता है। इन शर्तों को न केवल NeoPixel के लिए एक सटीक मान प्राप्त करने के लिए लागू किया गया था, बल्कि स्वीकार्य सीमा के बाहर एक मान प्राप्त करने से बचने के लिए, जो कि 0 से 359 डिग्री तक है।

सिफारिश की: