विषयसूची:

वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना: 4 कदम (चित्रों के साथ)
वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना: 4 कदम (चित्रों के साथ)

वीडियो: वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना: 4 कदम (चित्रों के साथ)

वीडियो: वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना: 4 कदम (चित्रों के साथ)
वीडियो: Drones | ये कैसे काम करते हैं ? 2024, नवंबर
Anonim
वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना
वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना
वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना
वाईफाई पर शुद्ध डेटा को नियंत्रित करने के लिए कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड का उपयोग करना

क्या आप कभी हावभाव नियंत्रण के साथ प्रयोग करना चाहते हैं? अपने हाथ की लहर से चीजों को आगे बढ़ाएं? अपनी कलाई के एक मोड़ के साथ संगीत को नियंत्रित करें? यह निर्देश आपको दिखाएगा कि कैसे!

कॉम्प्लेक्स आर्ट्स सेंसर बोर्ड (complexarts.net) ESP32 WROOM पर आधारित एक बहुमुखी माइक्रोकंट्रोलर है। इसमें ESP32 प्लेटफॉर्म की सभी विशेषताएं हैं, जिसमें बिल्ट-इन वाईफाई और ब्लूटूथ, और 23 कॉन्फ़िगर करने योग्य GPIO पिन शामिल हैं। सेंसर बोर्ड में बीएनओ_085 आईएमयू - एक 9 डीओएफ गति प्रोसेसर भी शामिल है जो ऑनबोर्ड सेंसर फ्यूजन और क्वाटरनियन समीकरणों को निष्पादित करता है, जो सुपर सटीक अभिविन्यास, गुरुत्वाकर्षण वेक्टर और रैखिक त्वरण डेटा प्रदान करता है। सेंसर बोर्ड को Arduino, MicroPython, या ESP-IDF का उपयोग करके प्रोग्राम किया जा सकता है, लेकिन इस पाठ के लिए हम Arduino IDE के साथ बोर्ड की प्रोग्रामिंग करेंगे। यह ध्यान रखना महत्वपूर्ण है कि ESP32 मॉड्यूल मूल रूप से Arduino IDE से प्रोग्राम करने योग्य नहीं हैं, लेकिन इसे संभव बनाना बहुत सरल है; यहां एक महान ट्यूटोरियल है: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ जिसे पूरा होने में लगभग 2 मिनट लगने चाहिए। सेटअप का आखिरी टुकड़ा जो हमें चाहिए वह है सेंसर बोर्ड पर यूएसबी-टू-यूएआरटी चिप के लिए ड्राइवर, जो यहां पाया जा सकता है: https://www.silabs.com/products/development-tools/software/usb-to -यूआर्ट-ब्रिज-वीसीपी-ड्राइवर। बस अपना ओएस चुनें और इंस्टॉल करें, जिसमें लगभग 2 मिनट और लगने चाहिए। एक बार यह हो जाने के बाद, हम जाने के लिए तैयार हैं!

[यह पाठ या तो Arduino या Pure डेटा के साथ कोई परिचित नहीं है, हालांकि यह उनकी स्थापना को कवर नहीं करेगा। Arduino aduino.cc पर पाया जा सकता है। शुद्ध डेटा Puredata.info पर पाया जा सकता है। दोनों साइटों में इंस्टॉलेशन और सेटअप के लिए आसान-से-पालन निर्देश हैं।]

साथ ही… इस ट्यूटोरियल में शामिल अवधारणाएं, जैसे कि यूडीपी कनेक्शन स्थापित करना, Arduino के साथ ESP32 प्रोग्रामिंग करना, और बेसिक प्योर डेटा पैच बिल्डिंग - बिल्डिंग ब्लॉक्स हैं जिन्हें अनगिनत प्रोजेक्ट्स के लिए लागू किया जा सकता है, इसलिए एक बार जब आप कर लें तो यहां रुकें नहीं। इन अवधारणाओं को नीचे मिला!

आपूर्ति

1. जटिल कला सेंसर बोर्ड

2. अरुडिनो आईडीई

3. शुद्ध डेटा

चरण 1: कोड की जांच करना:

कोड की जांच
कोड की जांच
कोड की जांच
कोड की जांच

सबसे पहले, हम Arduino कोड को देखेंगे। (स्रोत https://github.com/ComplexArts/SensorBoardArduino पर उपलब्ध है। यह अनुशंसा की जाती है कि आप जैसे ही हम जाते हैं कोड के साथ पालन करें।) हमें कुछ पुस्तकालयों की आवश्यकता है, जिनमें से एक कोर Arduino लाइब्रेरी नहीं है, इसलिए आप इसे स्थापित करने की आवश्यकता हो सकती है। यह प्रोजेक्ट SparkFun_BNO080_Arduino_Library.h फ़ाइल पर निर्भर करता है, इसलिए यदि आपके पास ऐसा नहीं है, तो आपको स्केच -> लाइब्रेरी शामिल करें -> लाइब्रेरी प्रबंधित करें पर जाना होगा। “bno080” टाइप करें और उपर्युक्त लाइब्रेरी दिखाई देगी। प्रेस स्थापित करें।

अन्य तीन पुस्तकालय जिनका उपयोग किया जाता है, उन्हें डिफ़ॉल्ट रूप से Arduino के साथ आना चाहिए। सबसे पहले, हम बीएनओ के साथ संवाद करने के लिए एसपीआई पुस्तकालय का उपयोग करेंगे। ईएसपी 32 और बीएनओ के बीच यूएआरटी का उपयोग करना भी संभव है, लेकिन चूंकि स्पार्कफुन में पहले से ही एक पुस्तकालय है जो एसपीआई का उपयोग करता है, हम उसी के साथ रहेंगे। (धन्यवाद, SparkFun!) SPI.h फ़ाइल को शामिल करने से हमें यह चुनने की अनुमति मिलेगी कि हम SPI संचार के लिए कौन से पिन और पोर्ट का उपयोग करना चाहते हैं।

वाईफाई लाइब्रेरी में ऐसे कार्य होते हैं जो हमें वायरलेस नेटवर्क पर जाने की अनुमति देते हैं। वाईफाईयूडीपी में ऐसे कार्य होते हैं जो हमें उस नेटवर्क पर डेटा भेजने और प्राप्त करने की अनुमति देते हैं। अगली दो पंक्तियाँ हमें नेटवर्क पर लाती हैं - अपना नेटवर्क नाम और पासवर्ड दर्ज करें। उसके बाद की दो पंक्तियाँ उस नेटवर्क पते और पोर्ट को निर्दिष्ट करती हैं जिस पर हम अपना डेटा भेज रहे हैं। इस मामले में, हम केवल प्रसारण करेंगे, जिसका अर्थ है कि इसे हमारे नेटवर्क पर किसी को भी भेज दें जो सुन रहा है। पोर्ट नंबर निर्धारित करता है कि कौन सुन रहा है, जैसा कि हम थोड़ा देखेंगे।

ये अगली दो पंक्तियाँ उनके संबंधित वर्गों के लिए सदस्य बनाती हैं ताकि हम बाद में उनके कार्यों तक आसानी से पहुँच सकें।

इसके बाद, हम ईएसपी के उचित पिनों को बीएनओ पर उनके संबंधित पिनों को असाइन करते हैं।

अब हम SPI वर्ग के सदस्य की स्थापना करते हैं, साथ ही SPI पोर्ट की गति भी निर्धारित करते हैं।

अंत में हम सेटअप फ़ंक्शन पर पहुंच जाते हैं। यहां, हम एक सीरियल पोर्ट शुरू करेंगे ताकि अगर हम चाहें तो अपने आउटपुट की निगरानी कर सकें। फिर हम वाईफाई शुरू करते हैं। ध्यान दें कि प्रोग्राम आगे बढ़ने से पहले वाईफाई कनेक्शन की प्रतीक्षा करता है। वाईफाई कनेक्ट होने के बाद, हम यूडीपी कनेक्शन शुरू करते हैं, फिर हमारे नेटवर्क का नाम और हमारे आईपी पते को सीरियल मॉनिटर पर प्रिंट करते हैं। उसके बाद हम एसपीआई पोर्ट शुरू करते हैं और ईएसपी और बीएनओ के बीच संचार की जांच करते हैं। अंत में, हम फ़ंक्शन को "enableRotationVector(50);" कहते हैं। क्योंकि हम इस पाठ के लिए केवल रोटेशन वेक्टर का उपयोग करेंगे।

चरण 2: बाकी कोड…।

बाकी कोड…
बाकी कोड…

मुख्य लूप () में जाने से पहले, हमारे पास "मैपफ्लोट" नामक एक फ़ंक्शन है।

यह एक कस्टम फ़ंक्शन है जिसे हमने मानचित्र, या स्केल, मानों को अन्य मानों में जोड़ने के लिए जोड़ा है। Arduino में बिल्ट-इन मैप फ़ंक्शन केवल पूर्णांक मैपिंग की अनुमति देता है, लेकिन BNO से हमारे सभी प्रारंभिक मान -1 और 1 के बीच होंगे, इसलिए हमें उन्हें मैन्युअल रूप से उन मानों पर स्केल करना होगा जो हम वास्तव में चाहते हैं। कोई चिंता नहीं, हालांकि - यहाँ ऐसा करने के लिए सरल कार्य है:

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

अब हमें उन मूल्यों को मैप करने की जरूरत है।

[यूडीपी संचार के बारे में एक शब्द: डेटा को यूडीपी पर 8-बिट पैकेट में स्थानांतरित किया जाता है, या 0-255 से मान। 255 से अधिक की कोई भी चीज़ अगले पैकेट पर धकेल दी जाएगी, जिससे उसका मूल्य बढ़ जाएगा। इसलिए, हमें यह सुनिश्चित करने की आवश्यकता है कि 255 से अधिक कोई मान नहीं है।]

जैसा कि पहले उल्लेख किया गया है, हमारे पास आने वाले मान -1 - 1 की सीमा में हैं। यह हमें काम करने के लिए बहुत कुछ नहीं देता है, क्योंकि 0 से नीचे की कोई भी चीज़ काट दी जाएगी (या 0 के रूप में दिखाई देगी) और हम ऐसा नहीं कर सकते 0 - 1 के बीच के मूल्यों के साथ एक टन। हमें पहले अपने मैप किए गए मान को रखने के लिए एक नया चर घोषित करना होगा, फिर हम उस प्रारंभिक चर को लेते हैं और इसे -1 - 1 से 0 - 255 तक मैप करते हैं, परिणाम को हमारे नए चर को निर्दिष्ट करते हैं जिसे कहा जाता है एनएक्स।

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

अंत में, हम अपने मैप किए गए निर्देशांक को सीरियल मॉनीटर पर प्रिंट करते हैं। अब Arduino कोड हो गया है! सेंसर बोर्ड को कोड फ्लैश करें और यह सुनिश्चित करने के लिए सीरियल मॉनिटर की जांच करें कि सब कुछ अपेक्षित रूप से काम कर रहा है। आपको quaternion मानों के साथ-साथ मैप किए गए मानों को भी देखना चाहिए।

चरण 3: शुद्ध डेटा से जुड़ना…

शुद्ध डेटा से कनेक्ट हो रहा है…
शुद्ध डेटा से कनेक्ट हो रहा है…

अब शुद्ध डेटा के लिए! शुद्ध डेटा खोलें और एक नया पैच (ctrl n) शुरू करें। हम जो पैच बनाएंगे, वह बहुत ही सरल है, जिसमें केवल सात ऑब्जेक्ट होंगे। सबसे पहले हम [netreceive] ऑब्जेक्ट बनाने जा रहे हैं। यह हमारे पैच की रोटी और मक्खन है, जो सभी यूडीपी संचार को संभाल रहा है। ध्यान दें कि [netreceive] ऑब्जेक्ट के लिए तीन तर्क हैं; -यू यूडीपी निर्दिष्ट करता है, -बी बाइनरी निर्दिष्ट करता है, और 7401 निश्चित रूप से वह बंदरगाह है जिसे हम सुन रहे हैं। आप अपने पोर्ट को निर्दिष्ट करने के लिए [netreceive] पर "सुनो 7401" संदेश भी भेज सकते हैं।

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

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

चरण 4:

हमने ऊपर जो किया है वह सेंसर बोर्ड और शुद्ध डेटा के बीच संचार स्थापित करना है। यदि आप अधिक मज़ा लेना शुरू करना चाहते हैं, तो अपने डेटा आउटपुट को कुछ ऑसिलेटर्स से जोड़ दें! वॉल्यूम नियंत्रण के साथ खेलें! शायद कुछ देरी के समय या reverb को नियंत्रित करें! दुनिया तुम्हारी मुठ्ठी में है!

सिफारिश की: