- nRF52 विकास किट:
- सेगर एंबेडेड स्टूडियो
- DHT11 nRF52DK के साथ
- ब्लूटूथ लो एनर्जी (BLE) के साथ कैसे काम करें?
- BLE सेवा / अभिलक्षण आरेख
- nRF52 BLE कार्यक्रम स्पष्टीकरण
- NRF कनेक्ट का उपयोग करके हमारे कार्यक्रम का परीक्षण करना
फिटनेस बैंड, स्मार्टवॉच और अन्य पहनने योग्य उपकरणों के साथ ब्लूटूथ 5 / ब्लूटूथ कम ऊर्जा का उपयोग तेजी से लोकप्रिय हो रहा हैसंचार मानकों को व्यापक रूप से अपनाया जा रहा है। बीएलई हमें बहुत कम बिजली के साथ कम दूरी पर डेटा का आदान-प्रदान करने में मदद करता है, जो कि बैटरी से चलने वाले उपकरणों जैसे कि वियरेबल्स के लिए बहुत महत्वपूर्ण है। यह वायरलेस बीएलई जाल नेटवर्क स्थापित करने में भी हमारी मदद करता है, यह सुविधा घरेलू स्वचालन उपकरणों के लिए काम में आती है जहां कई उपकरणों को एक बंद वातावरण में एक दूसरे के साथ संवाद करना पड़ता है। हमने पहले से ही कुछ बुनियादी BLE फ़ंक्शन करने के लिए BLE का उपयोग रास्पबेरी पाई और BLE के साथ ESP32 के साथ किया है। इंजीनियर पोर्टेबल वायरलेस उपकरणों को डिजाइन करने के लिए BLE के साथ प्रयोग कर रहे हैं जो छोटी बैटरी पर लंबे समय तक चल सकते हैं और, BLE के साथ काम करने के लिए कई विकास किट उपलब्ध हैं। Arduino Nano 33 पर हमारी हालिया समीक्षा में, हमने यह भी देखा कि बोर्ड के पास BLE क्षमताओं के साथ nRF52840 है।
इस ट्यूटोरियल में, हम BLE का उपयोग करके तापमान और आर्द्रता को मापने के लिए nRF52 DK नामक एक और रोमांचक और लोकप्रिय विकास बोर्ड का पता लगाएंगे । डिफ़ॉल्ट रूप से, BLE एनवायरनमेंट सेंसिंग प्रोफाइल पर्यावरण के मापदंडों की एक विस्तृत श्रृंखला का समर्थन करता है, लेकिन यह ट्यूटोरियल केवल तापमान और आर्द्रता मूल्यों तक सीमित है। यह समाधान ब्लूटूथ कम ऊर्जा पर एक स्मार्टफ़ोन के साथ जोड़ता है और पर्यावरणीय मापदंडों अर्थात तापमान, आर्द्रता के बारे में लगातार अद्यतन प्रदान करता है। हम DHT1 सेंसर का उपयोग करेंगे और तापमान माप 0.01 डिग्री सेल्सियस के रिज़ॉल्यूशन के साथ और आर्द्रता माप 0.01 प्रतिशत के रिज़ॉल्यूशन के साथ किया जाएगा।
nRF52 विकास किट:
nRF52DK ब्लूटूथ लो एनर्जी और 2.4 GHz वायरलेस इंटरनेट ऑफ थिंग्स एप्लिकेशन के लिए एक पूर्ण प्रोटोटाइप प्लेटफॉर्म है। विकास किट विभिन्न मानक नॉर्डिक टूलचिन्स जैसे कि ओपन-सोर्स, जीसीसी और वाणिज्यिक एकीकृत विकास वातावरण जैसे केइल, आईएआर और सेगर एंबेडेड स्टूडियो, आदि का समर्थन करती है। नॉर्डिक nRF52 के लिए एक पूर्ण विकसित सॉफ्टवेयर विकास किट भी प्रदान करता है, जिसमें nRF52DK के लिए पूर्ण समर्थन शामिल है।
nRF52DK nRF52832 ARM Cortex-M4F माइक्रोकंट्रोलर के साथ संचालित है, जो 512Kbytes Flash मेमोर और 64 Kbytes SRAM से एकीकृत है। nRF52DK में एक एकीकृत सेगर जे-लिंक ऑन बोर्ड डिबगर है, जो बाहरी / अतिरिक्त जेट डीबग उपकरणों के बिना एक आसान और तेज़ डिबगिंग प्रदान करता है। इसमें Arduino Uno Rev3 संगत कनेक्टर भी शामिल है, जो माइक्रोप्रोसेसर के साथ एनालॉग और डिजिटल आदानों को बदलने का समर्थन करता है और इसमें मानक संचार प्रोटोकॉल जैसे I2C (इंटर-इंटीग्रेटेड सर्किट), एसपीआई (सीरियल पेरिफेरल इंटरफेस) और UART (यूनिवर्सल एसिंक्रोनस रिसीवर और ट्रांसमीटर) शामिल हैं। यह विकास किट एक एकीकृत इन-बिल्ट पीसीबी एंटीना के साथ डिज़ाइन किया गया है जो स्मार्ट फोन, लैपटॉप और टैबलेट से जुड़ने के लिए ब्लूटूथ लो एनर्जी का उपयोग करते हुए कम दूरी का वायरलेस संचार प्रदान करता है।
सेगर एंबेडेड स्टूडियो
विकास बोर्ड के कार्यक्रम के लिए, हम nRF52 के साथ सेगर एंबेडेड स्टूडियो का उपयोग करेंगे । सीगर एंबेडेड स्टूडियो एक शक्तिशाली C / C ++ एकीकृत विकास वातावरण (IDE) है जो विशेष रूप से एम्बेडेड सिस्टम विकास के लिए लक्षित है। यह एक संपूर्ण ऑल-इन-वन समाधान प्रदान करता है जिसमें एम्बेडेड सी प्रोग्रामिंग, विकास और डिबगिंग के लिए आवश्यक सब कुछ है। इसमें एम्बेडेड सिस्टम प्रोग्रामिंग और विकास के लिए पूर्ण वर्कफ़्लो शामिल हैं, जिसमें परियोजना प्रबंधन, संपादक, डीएम कॉर्टेक्स उपकरणों का समर्थन करने वाले डिबगर शामिल हैं। यह शक्तिशाली और आसान आईडीई उपयोग करने के लिए पूरी तरह से नोर्डिक ग्राहकों के लिए पूर्ण लाइसेंस के साथ बिना किसी कोड आकार प्रतिबंध के मुफ्त है। आईडीई नीचे दिए गए लिंक से डाउनलोड किया जा सकता है,
डाउनलोड सेगर एंबेडेड स्टूडियो
DHT11 nRF52DK के साथ
DHT11 एक प्रतिरोधक प्रकार आर्द्रता माप घटक और एक NTC प्रकार तापमान माप घटक के साथ एक पूर्ण विशेषताओं तापमान और आर्द्रता सेंसर है। यह उत्कृष्ट गुणवत्ता, तेजी से प्रतिक्रिया और लागत प्रभावशीलता प्रदान करता है। डिफ़ॉल्ट रूप से, सभी DHT11 सेंसर प्रयोगशाला में अंशांकित होते हैं जो अत्यधिक सटीकता और विश्वसनीयता की ओर जाता है। यह सिंगल-वायर सीरियल इंटरफ़ेस सिस्टम का उपयोग करके संचार करता है और अन्य विनिर्देश नीचे दिए गए हैं
DHT11 के विनिर्देशों:
- आर्द्रता सीमा: 20 - 90% आरएच
- तापमान सीमा: 0 - 50 डिग्री सेल्सियस
- आर्द्रता सटीकता: % 5। आरएच
- तापमान सटीकता:। 2 ℃
DHT11 का समय आरेख:
DHT11 सेंसर से डेटा पढ़ना ऊपर दिखाए गए टाइमिंग आरेख का उपयोग करके अपेक्षाकृत सरल है। प्रक्रिया किसी भी नियंत्रक के समान है और हमने पहले से ही अन्य विकास प्लेटफार्मों जैसे इस सेंसर का उपयोग किया है
- रास्पबेरी पाई के साथ DHT11 सेंसर
- PIC16F877A के साथ DHT11 सेंसर
- DHT11 सेंसर STM32F103C8 के साथ
- NHTMCU के साथ DHT11 सेंसर
NHTF52 विकास किट के साथ DHT11 तापमान और आर्द्रता सेंसर को इंटरफेस करने के लिए, नीचे दिए गए कनेक्शन आरेख का पालन करें।
मैं सेंसर को अपने बोर्ड से जोड़ने के लिए एक कनेक्टर मॉड्यूल का उपयोग कर रहा हूं, इसलिए मेरा अंतिम सेट-अप इस तरह दिखता है
DHT11 के साथ संचार के लिए फ्लो चार्ट:
नीचे प्रवाह चार्ट प्रोग्राम तार्किक प्रवाह की व्याख्या करता है जिसका उपयोग हम nRF52DK और DHT11 के बीच संवाद करने के लिए करेंगे
डेटा स्वरूप:
ब्लूटूथ लो एनर्जी (BLE) के साथ कैसे काम करें?
BLE सुविधा का उपयोग कैसे करें, यह समझने के लिए, हमें नीचे बताई गई कुछ बुनियादी शब्दावली को समझना होगा, आप BLE के बारे में अधिक जानने के लिए ESP32 BLE लेख भी पढ़ सकते हैं
सामान्य पहुंच प्रोफ़ाइल (GAP)
जेनेरिक एक्सेस प्रोफाइल बीएलई परिधीय और केंद्रीय उपकरणों के बीच संचार के लिए कनेक्शन स्थापित करने की पूरी जिम्मेदारी रखता है । जीएपी डिवाइस स्कैनिंग / डिस्कवरी, लिंक-लेयर कनेक्शन इंस्टॉलेशन, लिंक टर्मिनेशन, सिक्योरिटी फीचर्स की हैंडशेकिंग और फुल-डिवाइस डिवाइस कॉन्फ़िगरेशन सहित विभिन्न प्रक्रियाएं प्रदान करता है। GAP निम्नलिखित डिवाइस राज्यों में काम करता है
जीएपी राज्यों |
विवरण |
समर्थन करना |
रीसेट पर डिवाइस प्रारंभिक स्थिति |
विज्ञापनदाता |
डेटा के साथ डिवाइस विज्ञापन जो सर्जक स्कैनिंग के लिए मदद करता है |
चित्रान्वीक्षक |
विज्ञापनदाता को स्कैन अनुरोध भेजता है और भेजता है |
प्रारंभ करने वाला |
लिंक स्थापित करने के लिए कनेक्शन अनुरोध भेजता है |
गुलाम का मालिक |
कनेक्शन पर, डिवाइस एक गुलाम के रूप में अगर विज्ञापनदाता, मास्टर यदि एक सर्जक |
सामान्य विशेषता प्रोफ़ाइल परत (GATT)
जीएटीटी जेनेरिक एट्रीब्यूट प्रोफाइल लेयर के लिए कम है, यह दो बीएलई उपकरणों (पेरिफेरल और सेंट्रल) के बीच डेटा संचार के लिए जिम्मेदार है। डेटा संचार को विशेषताओं के रूप में चित्रित किया जाता है, जो डेटा को संचार और संग्रहीत करता है। BLE डिवाइस नीचे दिए गए डिवाइस संचार के लिए दो अलग-अलग भूमिका निभाता है,
- गैट सर्वर में विशेषताओं की जानकारी होती है जिसका उपयोग पढ़ने और लिखने के लिए किया जाएगा। हमारे ट्यूटोरियल में, DHT11 सेंसर, और देव। किट हमारा गैट सर्वर है।
- GATT क्लाइंट डेटा को GATT सर्वर से पढ़ता / लिखता है। स्मार्टफोन एक गैट क्लाइंट है जो डेटा को हमारे सेंसर बोर्ड में पढ़ता और लिखता है।
ब्लूटूथ एस.आई.जी.
ब्लूटूथ स्पेशल इंटरेस्ट ग्रुप (एसआईजी) एक मानक संगठन है जो ब्लूटूथ मानकों के विकास और ब्लूटूथ प्रौद्योगिकियों के लाइसेंस की निगरानी करता है। SIG समूह किसी भी ब्लूटूथ उत्पाद का उत्पादन या बिक्री नहीं करता है। यह ब्लूटूथ विनिर्देश और मानकीकरण को परिभाषित करता है। वे ब्लूटूथ कम ऊर्जा प्रोफ़ाइल और संबंधित विशेषताओं के लिए विशिष्ट पहचानकर्ता को परिभाषित करते हैं । GATT प्रोफाइल विनिर्देशों को नीचे दिए गए लिंक पर पाया जा सकता है
गैट प्रोफ़ाइल विनिर्देशों
उपरोक्त लिंक में दिए गए गैट स्पेसिफिकेशन के आधार पर, हमने अपनी परियोजना के लिए आवश्यक विशिष्ट पहचानकर्ता एकत्र किए हैं जो नीचे सारणीबद्ध हैं।
प्रोफ़ाइल / विशेषताएं |
UUID |
GAP (सामान्य पहुंच) |
0x1800 |
गैट (सामान्य विशेषता) |
0x1801 |
ईएसएस (पर्यावरण संवेदीकरण) |
0x181 ए |
तापमान |
0x2A6E |
नमी |
0x2A6F |
BLE सेवा / अभिलक्षण आरेख
BLE UUIDs
UUID |
16 बिट मूल्य |
128 बिट यूयूआईडी |
ईएसएस सेवा |
0x181 ए |
0000181A-0000-0000-0000-00000000000 |
अस्थायी चार |
0x2A6E |
00002A6E-0000-0000-0000-00000000000 |
आर्द्रता चार |
0x2A6F |
00002A6F-0000-0000-0000-00000000000 |
तापमान के लक्षण
संपत्ति |
विवरण |
इकाई |
0.01 डिग्री के संकल्प के साथ डिग्री सेल्सियस |
प्रारूप |
sint16 |
UUID |
0x2A6E |
दशम भाव |
२ |
पढ़ें |
अनिवार्य |
नमी के लक्षण
संपत्ति |
विवरण |
इकाई |
0.01 प्रतिशत के संकल्प के साथ प्रतिशत |
प्रारूप |
uint16 |
UUID |
0x2A6F |
दशम भाव |
२ |
पढ़ें |
अनिवार्य |
nRF52 BLE कार्यक्रम स्पष्टीकरण
हम अपने nRF52 विकास किट को प्रोग्राम करने के लिए nRF5 SDK का उपयोग करेंगे । nRF5 SDK एक संपूर्ण सॉफ्टवेयर डेवलपमेंट किट है जो nRF5 सीरीज SoCs पर सभी बाह्य उपकरणों के लिए कई ब्लूटूथ लो एनर्जी प्रोफाइल, GATT सीरियललाइज़र और ड्राइवर समर्थन के साथ एकीकृत है। यह एसडीके डेवलपर्स को एनआरएफ 52 और माइक्रोकंट्रोलर की एनआरएफ 51 श्रृंखला के साथ पूर्ण-विशेषताओं वाले, विश्वसनीय और सुरक्षित ब्लूटूथ कम ऊर्जा अनुप्रयोगों के निर्माण में मदद करता है। पूरा कार्यक्रम यहां से डाउनलोड किया जा सकता है, कोड स्पष्टीकरण इस प्रकार है।
DHT11 DATA पिन को nrf52 पर इनपुट के रूप में सक्षम करें के साथ कॉन्फ़िगर करें। पिन स्थिति यह पुष्टि करने के लिए उच्च होनी चाहिए कि nRF52 DHT11 डेटा पिन के लिए उचित PULLUP प्रदान करता है
/ * इनपुट पर सेट करें और जांचें कि क्या सिग्नल ऊपर खींचा जाता है * / Data_SetInput (); DelayUSec (50); अगर (Data_GetVal () == 0) {DHT11_NO_PULLUP लौटें; }
NRF52 माइक्रोकंट्रोलर से START सिग्नल उत्पन्न करें और स्वीकार सिग्नल के लिए जांच करें।
/ * सेंड स्टार्ट सिग्नल * / Data_SetOutput (); Data_ClrVal (); DelayMSec (20); / * कम से कम 18 एमएस के लिए संकेत कम रखें * / Data_SetInput (); DelayUSec (50); / * चेक को स्वीकार सिग्नल के लिए * / अगर (Data_GetVal ()! = 0) {/ * संकेत सेंसर द्वारा कम खींचा जाना चाहिए * / वापसी DHT11_NO_ACK_0; } / * सेंसर से एकेक सिग्नल के लिए अधिकतम 100 हमें प्रतीक्षा करें * / cntr = 18; जबकि (Data_GetVal () == 0) {/ * तब तक प्रतीक्षा करें जब तक कि संकेत ऊपर नहीं जाता है * / DelayUSec (5); अगर (--cntr == 0) {DHT11_NO_ACK_1 वापस करें; / * संकेत एसीके के लिए यहाँ होना चाहिए * /}} / * प्रतीक्षा करें जब तक यह फिर से नीचे नहीं जाता है, एसी क्रम का अंत * / cntr = 18; जबकि (Data_GetVal ()! = 0) {/ * जब तक संकेत नीचे नहीं जाता है तब तक प्रतीक्षा करें * / DelayUSec (5); if (- cntr == 0) {DHT11_NO_ACK_0 लौटाएं; / * सिग्नल शून्य से नीचे फिर से यहाँ होना चाहिए * /}}
अब 40 बिट डेटा पढ़ें जिसमें तापमान के 2 बाइट्स, नमी के 2 बाइट और एक चेकसम के 1 बाइट शामिल हैं।
/ * अब 40 बिट डेटा पढ़ें * / i = 0; डेटा = 0; लूपबिट्स = 40; do {cntr = 11; / * प्रतीक्षा करें अधिकतम 55 हमें * / जबकि (Data_GetVal () == 0) {DelayUSec (5); if (- cntr == 0) {DHT11_NO_DATA_0 लौटें; }} cntr = 15; / * प्रतीक्षा अधिकतम 75 हमें * / जबकि (Data_GetVal ()! = 0) {DelayUSec (5); अगर (--cntr == 0) {DHT11_NO_DATA_1 वापस करें; }} डेटा << = 1; / * अगला डेटा बिट * / if (cntr <10) {/ * डेटा सिग्नल उच्च> 30 us ==> डेटा बिट 1 * / डेटा - = 1; } अगर ((लूपबिट्स और 0x7) == 1) {/ * अगली बाइट * / बफर = डेटा; मैं ++; डेटा = 0; }} जबकि (- लूपबिट्स! = 0);
चेकसम की मदद से डेटा को मान्य करें।
/ * परीक्षण CRC * / if ((uint8_t) (बफर + बफर + बफर + बफर)! = बफर) {DHT11_BAD_CRC वापस करें; }
तापमान और आर्द्रता में हेरफेर और भंडारण करें
/ * कॉलर के लिए स्टोर डेटा मान * / आर्द्रता = ((इंट) बफर) * 100 + बफर; तापमान = ((इंट) बफर) * 100 + बफर;
NRF5 SDK लॉगर सेवा को प्रारंभ करें। nRF52 SDK को लॉगिंग कंट्रोल इंटरफेस के साथ चित्रित किया गया है जिसे nrf_log कहा जाता है और जानकारी लॉग करने के लिए डिफ़ॉल्ट बैकएंड का उपयोग करता है। डिफ़ॉल्ट बैकएंड एक सीरियल पोर्ट होगा। यहां हम nrf_log नियंत्रण इंटरफ़ेस और nrf_log डिफ़ॉल्ट बैकेंड दोनों को इनिशियलाइज़ करते हैं ।
ret_code_t mis_code = NRF_LOG_INIT (NULL); APP_ERROR_CHECK (इर_कोड); NRF_LOG_DEFAULT_BACKENDS_INIT ();
nRF52 एसडीके में एप्लिकेशन टाइमर कार्यक्षमता है । एप्लिकेशन टाइमर मॉड्यूल RTC1 परिधीय के आधार पर कई टाइमर इंस्टेंसेस बनाने में सक्षम बनाता है। यहां हम nRF5 एप्लिकेशन टाइमर मॉड्यूल को इनिशियलाइज़ करते हैं। इस समाधान में, डेटा अपडेट अंतराल के लिए दो एप्लिकेशन टाइमर का उपयोग किया जाता है।
ret_code_t mis_code = app_timer_init (); APP_ERROR_CHECK (इर_कोड);
NRF52 SDK में फुल फीचर पावर मैनेजमेंट मॉड्यूल है क्योंकि BLE उपकरणों को कॉइन सेल बैटरी पर कई महीनों तक काम करने की आवश्यकता होती है। BLE अनुप्रयोगों में पावर प्रबंधन एक महत्वपूर्ण भूमिका निभाता है। nRF52 पावर प्रबंधन मॉड्यूल पूरी तरह से एक ही संभालता है। यहां हम nRF5 SDK के पावर मैनेजमेंट मॉड्यूल को इनिशियलाइज़ करते हैं
ret_code_t इर_कोड; इर_कोड = nrf_pwr_mgmt_init (); APP_ERROR_CHECK (इर_कोड);
nRF52 SDK में इन-बिल्ट नॉर्डिक सॉफ्ट डिवाइस फर्मवेयर हेक्स फ़ाइल है, जिसमें ब्लूटूथ कम ऊर्जा केंद्रीय और परिधीय स्टैक की सुविधा है। इस उच्च योग्य प्रोटोकॉल स्टैक में GATT, GAP, ATT, SM, L2CAP और लिंक लेयर शामिल हैं। यहां हम आरंभीकरण अनुक्रम का पालन करते हैं, जो कि आरंभिक nRF5 BLE रेडियो स्टैक (नॉर्डिक सॉफ्ट डिवाइस)
ret_code_t इर_कोड; इर_कोड = nrf_sdh_enable_request (); APP_ERROR_CHECK (इर_कोड); // डिफ़ॉल्ट सेटिंग्स का उपयोग करके BLE स्टैक कॉन्फ़िगर करें। // एप्लिकेशन रैम का प्रारंभ पता प्राप्त करें। uint32_t ram_start = 0; ग़लती_कोड = nrf_sdh_ble_default_cfg_set (APP_BLE_CONN_CFG_TAG, और ram_start); APP_ERROR_CHECK (इर_कोड); // BLE स्टैक सक्षम करें। इर_कोड = nrf_sdh_ble_enable (& ram_start); APP_ERROR_CHECK (इर_कोड); // BLE घटनाओं के लिए एक हैंडलर रजिस्टर करें। NRF_SDH_BLE_OBSERVER (m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
जीएपी उपकरण स्कैनिंग / खोज, लिंक स्थापना, लिंक समाप्ति, सुरक्षा सुविधाओं की शुरूआत और कॉन्फ़िगरेशन के लिए जिम्मेदार है। जीएपी ने प्रमुख कनेक्शन मापदंडों जैसे कनेक्शन अंतराल, दास विलंबता, पर्यवेक्षण समय-सीमा, आदि के साथ चित्रित किया है, जिसमें जेनेरिक एक्सेस प्रोफ़ाइल कनेक्शन मापदंडों को प्रारंभ करना है।
ret_code_terr_code; ble_gap_conn_params_tgap_conn_params; ble_gap_conn_sec_mode_t sec_mode; BLE_GAP_CONN_SEC_MODE_SET_OPEN (और sec_mode); त्रुटी_कोड = sd_ble_gap_device_name_set ((sec_mode, (const uint8_t *) DEVICE_NAME, strlen (DEVICE_NAME)); APP_ERROR_CHECK (इर_कोड); मेमसेट (& gap_conn_params, 0, sizeof (gap_conn_params)); gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL; गैप_कोन_परमेश.मैक्स_कोन_इंटरवल = MAX_CONN_INTERVAL; gap_conn_params.slave_latency = SLAVE_LATENCY; gap_conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT; ग़लती_कोड = sd_ble_gap_ppcp_set ((gap_conn_params); APP_ERROR_CHECK (इर_कोड);
GATT BLE परिधीय और केंद्रीय उपकरणों के बीच डेटा संचार के लिए जिम्मेदार है। nRF52 GATT मॉड्यूल अधिकतम ATT_MTU आकार पर बातचीत और नज़र रखने के लिए सहायक है। यहाँ हम nRF52 SDK जेनेरिक विशेषता मॉड्यूल को इनिशियलाइज़ करते हैं, ret_code_t mis_code = nrf_ble_gatt_init ((m_gatt, NULL); APP_ERROR_CHECK (इर_कोड);
GATT सेवाओं और विशेषताओं के रूप में डेटा संचार करता है। यहाँ हम GATT पर्यावरण संवेदन सेवाओं को आरंभीकृत करते हैं, जिसमें तापमान और आर्द्रता जैसी विशेषताओं का आरंभ शामिल है।
ret_code_terr_code; nrf_ble_qwr_init_t qwr_init = {0}; // प्रारंभिक पंक्तिबद्ध मॉड्यूल लिखें। qwr_init.error_handler = nrf_qwr_error_handler; इर_कोड = nrf_ble_qwr_init ((m_qwr, & qwr_init); APP_ERROR_CHECK (इर_कोड); m_ess.notif_write_handler = ble_ess_notif_write_handler; इर_कोड = ब्ल्यू_से_इनिट (& m_ess); APP_ERROR_CHECK (इर_कोड);
विज्ञापन BLE अनुप्रयोग वातावरण में एक महत्वपूर्ण भूमिका निभाता है। पैकेट में पता प्रकार, विज्ञापन प्रकार, विज्ञापन डेटा, डिवाइस निर्माता-विशिष्ट डेटा और स्कैन प्रतिक्रिया डेटा की जानकारी शामिल होती है। nRF52 एसडीके में एक विज्ञापन मॉड्यूल था। यहां हम मापदंडों के साथ विज्ञापन मॉड्यूल का प्रारंभ करते हैं।
ret_code_terr_code; ble_advdata_t advdata; ble_advdata_t srdata; ble_uuid_t adv_uuids = {{ESS_UUID_SERVICE, BLE_UUID_TYPE_BLE}}; // विज्ञापन डेटा बनाएँ और सेट करें। memset (& advdata, 0, sizeof (advdata)); advdata.name_type = BLE_ADVDATA_FULL_NAME; advdata.include_appearance = true; advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; मेमसेट (& srdata, 0, sizeof (srdata)); srdata.uuids_complete.uuid_cnt = sizeof (adv_uuids) / sizeof (adv_uuids); srdata.uuids_complete.p_uuids = adv_uuids; ग़लती_कोड = ble_advdata_encode (& advdata, m_adv_data.adv_data.p_data, & m_adv_data.adv_data.len); APP_ERROR_CHECK (इर_कोड); ग़लती_कोड = ble_advdata_encode ((srdata, m_adv_data.scan_rsp_data.p_data, & m_adv_data.scan_rsp_data.len); APP_ERROR_CHECK (इर_कोड); ble_gap_adv_params_t adv_params; // विज्ञापन पैरामीटर सेट करें। मेमसेट (& adv_params, 0, sizeof (adv_params)); adv_params.primary_phy = BLE_GAP_PHY_1MBPS; adv_params.duration = APP_ADV_DURATION; adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED; adv_params.p_peer_addr = NULL; adv_params.filter_policy = BLE_GAP_ADV_FP_ANY; adv_params.interval = APP_ADV_INTERVAL; ग़लती_कोड = sd_ble_gap_adv_set_configure (& m_adv_handle, & m_adv_data, और adv_params); APP_ERROR_CHECK (इर_कोड);
BLE कनेक्शन को विभिन्न कनेक्शन मापदंडों के साथ संभाला और मॉनिटर किया जाएगा, जैसे पहले कनेक्शन params अद्यतन में देरी, अगले लगातार देरी, अद्यतन गणना, कनेक्शन इवेंट हैंडलर कॉलबैक फ़ंक्शन और कनेक्शन त्रुटि कॉलबैक इवेंट हैंडलर। यहां हम कनेक्शन घटनाओं और त्रुटि घटनाओं के लिए BLE कनेक्शन स्थापना पैरामीटर और एक कॉलबैक ईवेंट हैंडलर आरंभीकरण करते हैं।
ret_code_terr_code; ble_conn_params_init_t cp_init; मेमसेट (& cp_init, 0, sizeof (cp_init)); cp_init.p_conn_params = NULL; cp_init.first_conn_params_update_delay = FIRST_CONN_PARAMS_UPDATE_DELAY; cp_init.next_conn_params_update_delay = NEXT_CONN_PARAMS_UPDATE_DELAY; cp_init.max_conn_params_update_count = MAX_CONN_PARAMS_UPDATE_COUNT; t_on_notify_cccd_handle = BLE_GATT_HANDLE_INVALID; cp_init.disconnect_on_fail = false; cp_init.evt_handler = on_conn_params_evt; cp_init.error_handler = conn_params_error_handler; ग़लती से_दो = ble_conn_params_init (& cp_init); APP_ERROR_CHECK (इर_कोड);
सिस्टम के आरंभीकरण के पूरा होने के बाद, यहां हम BLE डिवाइस के नाम और क्षमता की जानकारी के विज्ञापन के साथ शुरू करते हैं। यहां से, यह परिधीय स्मार्टफोन बीएलई स्कैन सूची पर देखा जा सकता है।
ret_code_terr_code; ग़लती से = sd_ble_gap_adv_start (m_adv_handle, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK (इर_कोड);
मुख्य लूप 2 सेकंड के अंतराल पर चलता है, तापमान और आर्द्रता को पढ़ता है और पढ़े या अधिसूचना का उपयोग करके कनेक्टेड स्मार्ट डिवाइस पर अपडेट करता है
के लिए (;;) { uint16_t तापमान, आर्द्रता; DHTxx_ErrorCode dhtErrCode; idle_state_handle (); if (updtmrexp) { dhtErrCode = DHTxx_Read (और तापमान, और आर्द्रता); if (dhtErrCode == DHT11_OK) { NRF_LOG_INFO ("तापमान:% d आर्द्रता:% d \ n", तापमान, आर्द्रता); if (temp_notif_enabled) { ble_ess_notify_temp (m_conn_handle, & m_ess, तापमान); } और { ble_ess_update_temp ((m_ess, तापमान); } अगर (आर्द्र_नोटीफ़ेबल्ड) { ble_ess_notify_humid (m_conn_handle, & m_ess, आर्द्रता); } और { ble_ess_update_humid ((m_ess, आर्द्रता); } } updtmrexp = false; } }
NRF कनेक्ट का उपयोग करके हमारे कार्यक्रम का परीक्षण करना
nRF कनेक्ट एक शक्तिशाली ब्लूटूथ कम ऊर्जा उपकरण है जो BLE सक्षम परिधीयों को स्कैन और एक्सप्लोर करने की अनुमति देता है। nRF मोबाइल के लिए कनेक्ट ब्लूटूथ SIG द्वारा मानक प्रोफाइलों की एक विस्तृत श्रृंखला का समर्थन करता है। हम इस का उपयोग करके अपने कार्यक्रम को सत्यापित कर सकते हैं, ऐप को इंस्टॉल करने के बाद हम अपने फोन के साथ nRF52 बोर्ड को ऐप पर BLE उपकरणों के लिए स्कैन करके जोड़ सकते हैं। पर्यावरणीय संवेदन विशेषता के अंदर, हम तापमान और आर्द्रता के मूल्यों को अद्यतन करने की सूचना दे सकते हैं जैसा कि नीचे दी गई तस्वीरों में दिखाया गया है।
हरिहरन वीरप्पन एक स्वतंत्र सलाहकार है जिसका एम्बेडेड उत्पाद विकास में 15 से अधिक वर्षों का अनुभव है। वह एम्बेडेड फर्मवेयर / लिनक्स विकास में परामर्श सेवाएं प्रदान करता है, वह कॉर्पोरेट और ऑनलाइन प्रशिक्षण भी प्रदान करता है। हरिहरन इलेक्ट्रॉनिक्स और कम्युनिकेशन इंजीनियरिंग के अनुशासन में बैचलर ऑफ इंजीनियरिंग की डिग्री रखते हैं, अपने लेख और ट्यूटोरियल के माध्यम से वे सर्किट डाइजेस्ट के पाठकों के साथ अपने अनुभव और विचार साझा करते हैं।