विषयसूची:
- आपूर्ति
- चरण 1: कस्टम सेवाओं और विशेषताओं को डिज़ाइन करें
- चरण 2: Arduino कोड
- चरण 3: एंड्रॉइड स्टूडियो कोड
- चरण 4: अंतिम आवेदन
वीडियो: एक पहनने योग्य मोशन ट्रैकर बनाएं (Arduino से एक कस्टम Android स्टूडियो ऐप में BLE): 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:18
ब्लूटूथ लो एनर्जी (बीएलई) लो पावर ब्लूटूथ संचार का एक रूप है। प्रेडिक्टिव वियर में मेरे द्वारा डिजाइन किए जाने वाले स्मार्ट गारमेंट्स जैसे पहनने योग्य उपकरणों को बैटरी लाइफ बढ़ाने के लिए जहां भी संभव हो बिजली की खपत को सीमित करना चाहिए, और अक्सर बीएलई का उपयोग करना चाहिए। ब्लूटूथ स्पेशल इंटरेस्ट ग्रुप (एसआईजी) कई विशिष्टताओं को परिभाषित करता है जिन्हें एक डिवाइस को ब्लूटूथ डिवाइस के साथ इंटरैक्ट करने के लिए लागू करना चाहिए, जिसे वे "प्रोफाइल" कहते हैं। अधिकांश एप्लिकेशन प्रोफ़ाइल BLE लिंक पर डेटा भेजने के लिए सामान्य विशेषता प्रोफ़ाइल (GATT) का उपयोग करती हैं। BLE में तीन मूलभूत अवधारणाएँ हैं: प्रोफ़ाइल, सेवाएँ और विशेषताएँ।
ब्लूटूथ एसआईजी ने कई सामान्य प्रोफाइल, सेवाओं और विशेषताओं को मानकीकृत किया है। हालांकि, कस्टम हार्डवेयर बनाते समय अक्सर कस्टम सेवाओं और विशेषताओं को बनाने की आवश्यकता होती है और कई ट्यूटोरियल उपलब्ध नहीं होते हैं। मामलों को और अधिक कठिन बनाने के लिए, Adafruit अपने BLE मॉड्यूल के साथ युग्मित करने के लिए मोबाइल एप्लिकेशन को डिज़ाइन करने पर कोई मार्गदर्शन प्रदान नहीं करता है और उनके अनुप्रयोगों के स्रोत कोड को रिवर्स इंजीनियर करना मुश्किल है।
इस ट्यूटोरियल का उद्देश्य व्याख्या करना है:
- कस्टम GATT सेवाओं और विशेषताओं को कैसे डिज़ाइन करें
- इन कस्टम सेवाओं और विशेषताओं के लिए GATT सर्वर के रूप में कार्य करने के लिए Adafruit Bluefruit LE SPI फ्रेंड को कैसे प्रोग्राम करें
- GATT सर्वर से डेटा पढ़ने के लिए GATT क्लाइंट के रूप में कार्य करने के लिए Android डिवाइस को कैसे प्रोग्राम करें
इस ट्यूटोरियल का उद्देश्य उत्पादन-तैयार एप्लिकेशन में अनुवाद करने योग्य नहीं है - यह केवल बीएलई के लिए एक परिचय है।
पृष्ठभूमि पढ़ना:
- एडफ्रूट ब्लूफ्रूट ले एसपीआई फ्रेंड डॉक्यूमेंटेशन
- यदि आप GATT या BLE से परिचित नहीं हैं
आपूर्ति
- 1x - एक Arduino डिवाइस (मैं इस ट्यूटोरियल के लिए UNO का उपयोग कर रहा हूं)
- 1x - एडफ्रूट ब्लूफ्रूट ले एसपीआई फ्रेंड
- 8x - पुरुष से पुरुष जम्पर तार
- बेसिक सोल्डरिंग उपकरण (एसपीआई फ्रेंड पर सोल्डर हेडर पिन के लिए)
- एक कंप्यूटर (Arduino डिवाइस और Android डिवाइस को प्रोग्राम करने के लिए)
चरण 1: कस्टम सेवाओं और विशेषताओं को डिज़ाइन करें
परिचय
कस्टम सेवाओं और विशेषताओं को डिज़ाइन करने का तरीका बताते हुए यह लेख बहुत अच्छा काम करता है। मैं इस लेख के माध्यम से पढ़ने की अत्यधिक अनुशंसा करता हूं। मैं नीचे एक बहुत ही सरल अवलोकन प्रदान करता हूं जो सरलता के पक्ष में सूक्ष्मताओं की उपेक्षा करता है।
GATT सेवाएँ विशेषताओं का एक संग्रह हैं।
GATT विशेषताओं में एक गुण, एक मान और शून्य या अधिक विवरणक होते हैं।
- संपत्ति: क्लाइंट (एंड्रॉइड ऐप) द्वारा डेटा को कैसे संभाला जाना चाहिए उदा। बिना किसी प्रतिक्रिया के पढ़ें, लिखें, लिखें, सूचित करें और इंगित करें।
- मान: विशेषता का वास्तविक मूल्य उदा। 1089
- विवरणक: यह मूल्य के बारे में जानकारी है उदा। इकाई, मिलीसेकंड
डिजाईन
ठीक है, अब आप जानते हैं कि सेवाएँ और विशेषताएँ क्या हैं, हमें यह पता लगाने की आवश्यकता है कि अपना कस्टम डेटा प्राप्त करने के लिए कुछ सेवाओं और विशेषताओं को कैसे डिज़ाइन करें और इसे अपने GATT सर्वर (Arduino) से क्लाइंट (Android ऐप) को भेजें। आइए एक Arduino डिवाइस पर विचार करें जो एक्सेलेरोमीटर-जाइरोस्कोप मॉड्यूल (एजीएम) से डेटा एकत्र कर रहा है। हम तीन स्थानिक अक्षों से जाइरोस्कोप और त्वरण माप एकत्र करना चाहते हैं और जिस समय ये माप लिए गए थे और इस डेटा को हमारे मोबाइल एप्लिकेशन तक पहुंचाना चाहते हैं। हम यह भी जानना चाहते हैं कि हमें डिवाइस को कब चार्ज करने की आवश्यकता है, इसलिए हम बैटरी स्तर को पढ़ना चाहते हैं और उसे अपने मोबाइल एप्लिकेशन में ट्रांसमिट करना चाहते हैं।
1. क्या हम किसी भी मानक सेवाओं और विशेषताओं का उपयोग कर सकते हैं?
ब्लूटूथ एसआईजी ने कई सामान्य सेवाओं और विशेषताओं को मानकीकृत किया है। सबसे पहले, यह देखने के लिए जांचें कि क्या आप किसी भी मानकीकृत सेवाओं और विशेषताओं का सह-चयन कर सकते हैं। मानक सेवाएं और विशेषताएँ बहुत छोटे डेटा पैकेट का उपयोग कर सकती हैं क्योंकि यूनिवर्सली यूनिक आइडेंटिफ़ायर (यूयूआईडी) 16 बिट्स हैं जबकि कस्टम सेवाओं और विशेषताओं को अपने यूयूआईडी के लिए 128 बिट्स का उपयोग करना चाहिए। यूयूआईडी के बारे में बाद में। हमारी खोज से, हमें एक मानकीकृत "बैटरी सेवा" मिली, जिसमें एक विशेषता "बैटरी स्तर" शामिल है।
2. उन सभी डेटा मानों को अलग करें जिन्हें आप BLE को विशेषताओं और सेवाओं में भेजना चाहते हैं
हम अपने कस्टम डेटा बिंदुओं को एक कस्टम सेवा के भीतर सात कस्टम विशेषताओं में विभाजित कर सकते हैं। हम इस सेवा को "एजीएम सेवा" कहेंगे। इसमें 7 विशेषताएँ होंगी: x-त्वरण, y-त्वरण, z-त्वरण, x-gyroscope, y-gyroscope, z-gyroscope, और एक समय संदर्भ।
3. प्रत्येक विशेषता के लिए आवश्यक गुण निर्धारित करें
एक विशेषता में कई गुण हो सकते हैं।
- पढ़ें: क्लाइंट (एंड्रॉइड ऐप) GATT सर्वर (Arduino) से एक मान पढ़ सकता है
- लिखें: क्लाइंट GATT सर्वर से एक मान बदल सकता है
- इंगित करें: क्लाइंट को सूचित किया जाएगा यदि GATT सर्वर से कोई मान बदलता है और क्लाइंट से GATT सर्वर को पुष्टि भेजने की अपेक्षा की जाती है
- सूचित करें: क्लाइंट को सूचित किया जाएगा यदि GATT सर्वर से कोई मान बदलता है और क्लाइंट से GATT सर्वर को पुष्टि भेजने की उम्मीद नहीं है
इस ट्यूटोरियल के लिए, हम अपनी सभी विशेषताओं को पढ़ने के लिए सेट करेंगे, बैटरी स्तर के अपवाद के साथ, जिसमें सूचना और पढ़ने के गुण होंगे।
4. कस्टम सेवाओं और विशेषताओं के लिए यूयूआईडी उत्पन्न करें और मानक यूयूआईडी खोजें
जैसा कि मैंने पहले संक्षेप में उल्लेख किया है, ब्लूटूथ एसआईजी मानकीकृत सेवाएं और विशेषताएं 16 बिट यूयूआईडी का उपयोग करती हैं जबकि कस्टम सेवाएं और विशेषताएं 128 बिट यूयूआईडी का उपयोग करती हैं। उदाहरण के लिए, ब्लूटूथ SIG पर बैटरी सेवा असाइन किया गया नंबर देखें। निर्दिष्ट संख्या 0x180F 128 बिट UUID "0000180F-0000-1000-8000-00805F9B34FB" का प्रतिनिधित्व करती है। बोल्ड में चार अंक (16 बिट) विशिष्ट मानकीकृत सेवा या विशेषता के लिए अद्वितीय हैं जबकि अन्य वर्ण सभी मानकीकृत सेवाओं और विशेषताओं के बीच संरक्षित हैं। चूंकि क्लाइंट और GATT सर्वर दोनों जानते हैं कि मानकीकृत सेवाएं और विशेषताएँ केवल बोल्ड किए गए अंकों से भिन्न होती हैं, डेटा के पैकेट आकार को काफी हद तक कम किया जा सकता है। हालाँकि, कस्टम सेवाएँ और विशेषताएँ इसी धारणा के तहत काम नहीं कर सकती हैं।
इसके बजाय, कस्टम सेवाओं और विशेषताओं को संक्षिप्त 128 बिट UUIDs का उपयोग करना चाहिए। यहां एक ऑनलाइन यूयूआईडी जनरेटर है। मानकीकृत यूयूआईडी के अलावा कोई भी यूयूआईडी कस्टम यूयूआईडी के लिए स्वीकार्य है। हालाँकि, एक विशिष्ट नामकरण परंपरा एक कस्टम सेवा 00000001-… और उस कस्टम सेवा 00000002-… के भीतर की विशेषताओं को निरूपित करना है।
यहां सेवाओं और विशेषताओं की एक सारांश स्प्रेडशीट है जिसे हम उनके यूयूआईडी के साथ लागू करेंगे।
चरण 2: Arduino कोड
ब्लूफ्रूट ले स्पी फ्रेंड को अपडेट करें
सबसे पहले, Adafruit Bluefruit LE SPI फ्रेंड को हुक अप करें जैसा कि वे अपने हुकअप गाइड में निर्दिष्ट करते हैं और Arduino डिवाइस को पावर देते हैं। सुनिश्चित करें कि ब्लूटूथ डिवाइस के लिए स्कैन करते समय आप अपने एंड्रॉइड डिवाइस पर एडफ्रूट ब्लूफ्रूट ले एसपीआई मित्र ढूंढ सकते हैं। ब्लूफ्रूट कनेक्ट ऐप डाउनलोड करें, एडफ्रूट ब्लूफ्रूट ले एसपीआई फ्रेंड से कनेक्ट करें और इसे डिवाइस पर फर्मवेयर अपडेट करने दें। यह कदम महत्वपूर्ण है। यदि आप फर्मवेयर को अपडेट नहीं करते हैं, तो आपके द्वारा Arduino के माध्यम से डिवाइस जारी करने वाले आदेश विफल हो जाएंगे और समस्या क्या है, यह जानने के लिए आपके लिए कोई स्पष्ट त्रुटि नहीं होगी।
यहाँ इस परियोजना के लिए मेरा रेपो। आप यहां पूरा Arduino कोड देख सकते हैं।
अवलोकन
ध्यान देने योग्य कुछ महत्वपूर्ण बातें:
- सेटअप () विधि में, सभी कस्टम यूयूआईडी में प्रत्येक दो वर्णों के बीच "-" होना चाहिए। उदाहरण के लिए, "AT+GATTADDCHAR=UUID128=00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" काम करेगा। "AT+GATTADDCHAR=UUID128=00000005-627E-47E5-A3fCDDABD97AA966" काम नहीं करेगा।
- ध्यान दें कि सेटअप () विधि में, "battery.begin(true);" कॉल "ble.reset ();" खुद ब खुद। यदि आप बैटरी सेवा का उपयोग नहीं करते हैं जैसा कि मेरे पास है, तो आपको ब्ली मॉड्यूल ("ble.reset();" का उपयोग करें) को रीसेट करने की आवश्यकता है, जहां मेरे पास "battery.begin(true);" कमांड है।
- यदि आप डिबग करना चाहते हैं तो सेटअप () विधि में, "if (!ble.begin(false))" को "if (!ble.begin(true))" में बदलें।
यह कोड काफी आत्म-व्याख्यात्मक है। मैंने प्रत्येक कस्टम विधि का विवरण शामिल किया। सेटअप विधि BLE मॉड्यूल को GATT सर्वर के रूप में कार्य करने के लिए तैयार करती है। लूप विधि एक्सेलेरोमीटर जाइरोस्कोप मॉड्यूल (एजीएम) के नकली स्वीप के माध्यम से जाती है और इन मूल्यों के लिए 1 से 100 तक एक यादृच्छिक संख्या उत्पन्न करती है। बैटरी के उपयोग का अनुकरण करने के लिए बैटरी 1% कम हो जाती है। आप इस कोड को वास्तविक सेंसर मानों से आसानी से बदल सकते हैं। यह कोड मानता है कि आप एजीएम डेटा की एक सरणी प्रसारित करेंगे, 6 माप लंबे, एक माप के बजाय एजीएम डेटा की एक विंडो का विश्लेषण डेटा के एक बिंदु से अधिक उपयोगी होने की संभावना है। यदि आप सरणी का आकार बदलते हैं, तो ध्यान दें कि एंड्रॉइड स्टूडियो कोड में आवश्यक परिवर्तन होंगे। डेटा की एक सरणी को कैप्चर करने के लिए, आपको उस डेटा के साथ एक काउंटर पास करना होगा जिसे आप भेजना चाहते हैं। यह काउंटर आपको एंड्रॉइड स्टूडियो एप्लिकेशन से यह पता लगाने की अनुमति देता है कि आप विंडो में कहां हैं ताकि आप विंडो में लापता डेटा बिंदुओं को सुनने के लिए प्रतीक्षा कर सकें। काउंटर के बिना या एक अलग आकार के सरणी के साथ, एंड्रॉइड स्टूडियो प्रोजेक्ट या तो डेटा बिंदुओं को याद करेगा या शेष डेटा बिंदुओं की प्रतीक्षा में लूप में फंस जाएगा।
चरण 3: एंड्रॉइड स्टूडियो कोड
यहाँ इस परियोजना के लिए मेरा रेपो। आप यहां पूरा एंड्रॉइड स्टूडियो कोड देख सकते हैं।
अवलोकन
मैं इसे और अधिक गहन अवलोकन के साथ अपडेट करता रहूंगा कि कैसे arduino और android कोड विस्तार से काम करते हैं … ऐप पूरी तरह कार्यात्मक है इसलिए इस बीच कोड को स्वयं देखने के लिए स्वतंत्र महसूस करें।
चरण 4: अंतिम आवेदन
बधाई हो! आपका एप्लिकेशन आपके फोन पर डाउनलोड हो गया है और आपका पहनने योग्य उपकरण चार्ज हो गया है और डेटा संचारित कर रहा है।
ऐप लॉन्च करें
आरंभ करने के लिए, एप्लिकेशन के लिए लॉन्चर आइकन पर क्लिक करें।
अनुदान की अनुमति
ऐप के ठीक से काम करने के लिए आपको कुछ अनुमतियों के उपयोग को मंजूरी देनी होगी।
उपकरणों के लिए स्कैन
इसके बाद, ऐप के ऊपरी बाएं कोने में "स्कैन" बटन पर क्लिक करें।
अपना पहनने योग्य उपकरण चुनें
इसके बाद, उपलब्ध BLE उपकरणों की सूची से अपने पहनने योग्य उपकरण का चयन करें। इसका नाम "बीएलई अरुडिनो हार्डवेयर" है। डेटा प्राप्त करें, जबकि ऐप को एजीएम डेटा मिलता है और यह निर्धारित करता है कि उपयोगकर्ता अभी भी है या चल रहा है। अपने परिणाम देखें स्क्रीन पर परिणाम देखें! डेटा की एक और रीडिंग प्राप्त करने के लिए सिंक बटन पर क्लिक करें।
सिफारिश की:
[पहनने योग्य माउस] विंडोज १० और लिनक्स के लिए ब्लूटूथ-आधारित पहनने योग्य माउस नियंत्रक: ५ कदम
[पहनने योग्य माउस] विंडोज 10 और लिनक्स के लिए ब्लूटूथ-आधारित पहनने योग्य माउस नियंत्रक: मैंने एक ब्लूटूथ-आधारित माउस नियंत्रक बनाया है जिसका उपयोग माउस पॉइंटर को नियंत्रित करने और किसी भी सतह को छुए बिना मक्खी पर पीसी-माउस से संबंधित संचालन करने के लिए किया जा सकता है। इलेक्ट्रॉनिक सर्किटरी, जो एक दस्ताने पर एम्बेडेड है, का उपयोग एच को ट्रैक करने के लिए किया जा सकता है
पहनने योग्य स्मार्ट सेंसिंग धूप में सुखाना: 13 कदम (चित्रों के साथ)
पहनने योग्य स्मार्ट सेंसिंग धूप में सुखाना: पैरों द्वारा लगाए गए बल के उन्मुखीकरण और वितरण को समझना चोट को रोकने और विभिन्न गतिविधियों में प्रदर्शन का आकलन और सुधार करने में बेहद उपयोगी हो सकता है। अपनी स्कीइंग तकनीक में सुधार करना चाहता हूं और एक प्यार के साथ
लघु पहनने योग्य लॉक-इन एम्पलीफायर (और पहनने योग्य, आदि के लिए सोनार सिस्टम ..): 7 कदम
लघु पहनने योग्य लॉक-इन एम्पलीफायर (और पहनने योग्य, आदि के लिए सोनार सिस्टम ..): एक लघु कम लागत वाला लॉक-इन एम्पलीफायर बनाएं जिसे चश्मे के फ्रेम में एम्बेड किया जा सके और अंधे के लिए सोनार दृष्टि प्रणाली, या एक साधारण अल्ट्रासाउंड बनाया जा सके। मशीन जो लगातार आपके दिल की निगरानी करती है और मानव-मशीन लर्निंग का उपयोग पी
पहनने योग्य कस्टम लाइट पैनल (प्रौद्योगिकी अन्वेषण पाठ्यक्रम - TfCD - Tu Delft): 12 कदम (चित्रों के साथ)
पहनने योग्य कस्टम लाइट पैनल (प्रौद्योगिकी अन्वेषण पाठ्यक्रम - TfCD - Tu Delft): इस निर्देश में आप सीखेंगे कि आप अपनी खुद की रोशन छवि कैसे बना सकते हैं जिसे आप पहन सकते हैं! यह विनाइल डिकल से ढकी ईएल तकनीक का उपयोग करके और इसमें बैंड लगाकर किया जाता है ताकि आप इसे अपनी बांह के चारों ओर पहन सकें। आप इस p के कुछ हिस्सों को भी बदल सकते हैं
LCD स्टूडियो में एक कस्टम डिस्प्ले बनाएं (G15 कीबोर्ड और LCD स्क्रीन के लिए): 7 कदम
LCD स्टूडियो में एक कस्टम डिस्प्ले बनाएँ (G15 कीबोर्ड और LCD स्क्रीन के लिए) अपना खुद का बनाने के लिए। यह उदाहरण एक डिस्प्ले बना रहा होगा जो केवल आधार दिखाता है