विषयसूची:
- चरण 1: नैनो V2 रिप्लेसमेंट क्यों?
- चरण 2: घटक चयन और निर्माण
- चरण 3: निर्माण
- चरण 4: NRF52 कोडिंग सुरक्षा ध्वज हटाना
- चरण 5: SKYLAB SKB369 की प्रोग्रामिंग
- चरण 6: एक नया Arduino NRF52 बोर्ड परिभाषा बनाना
- चरण 7: निष्कर्ष
वीडियो: Arduino भाग 3 में आसान बहुत कम पावर BLE - नैनो V2 प्रतिस्थापन - Rev 3: 7 चरण (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
अपडेट: 7 अप्रैल 2019 - lp_BLE_TempHumidity का रेव 3, डेटा भेजते समय pfodApp V3.0.362+ और ऑटो थ्रॉटलिंग का उपयोग करके दिनांक/समय प्लॉट जोड़ता है
अपडेट: 24 मार्च 2019 - lp_BLE_TempHumidity का रेव 2, अधिक प्लॉट विकल्प और i2c_ClearBus जोड़ता है, GT832E_01 समर्थन जोड़ता है
परिचय
यह ट्यूटोरियल, ए रेडबियर नैनो वी२ रिप्लेसमेंट, ३ का भाग ३ है। यह इस परियोजना का संशोधन २ है। संशोधन 2 पीसीबी में कॉइन सेल और सेंसर के लिए माउंटिंग शामिल है, निर्माण को सरल करता है और इसे सीधे धूप से बचाते हुए सेंसर के चारों ओर वायु प्रवाह में सुधार करता है। संशोधन 1 यहाँ है।
भाग 1 - बहुत कम शक्ति वाले BLE उपकरणों का निर्माण Arduino कवर के साथ आसान बनाया गया, Arduino को nRF52 कम बिजली वाले उपकरणों, प्रोग्रामिंग मॉड्यूल को कोड करने और आपूर्ति वर्तमान को मापने के लिए सेट किया गया। यह विशेष कम पावर टाइमर और तुलनित्र और विवादित इनपुट को भी कवर करता है और nRF52 डिवाइस से कनेक्ट और नियंत्रित करने के लिए pfodApp का उपयोग करता है।
भाग 2 - एक बहुत कम बिजली तापमान आर्द्रता मॉनिटर एक कम बिजली की बैटरी / सौर मॉनिटर बनाने के लिए रेडबियर नैनो वी 2 मॉड्यूल और एक Si7021 तापमान / आर्द्रता सेंसर का उपयोग करके कवर करता है। इसमें कम पावर होने के लिए Si7021 लाइब्रेरी को संशोधित करना, BLE डिवाइस को इसकी वर्तमान खपत को <29uA तक कम करने और आपके मोबाइल के लिए एक कस्टम तापमान/आर्द्रता डिस्प्ले डिज़ाइन करना शामिल है।
भाग 3 - एक रेडबियर नैनो V2 रिप्लेसमेंट, यह एक, नैनो V2 के बजाय अन्य nRF52 आधारित मॉड्यूल का उपयोग करके कवर करता है। इसमें आपूर्ति घटकों का चयन, निर्माण, nRF52 चिप प्रोग्रामिंग सुरक्षा को हटाना, NFC पिन को सामान्य GPIO के रूप में उपयोग करना और Arduino में एक नए nRF52 बोर्ड को परिभाषित करना शामिल है।
यह निर्देशयोग्य भाग 1 बिल्डिंग वेरी लो पावर BLE उपकरणों का एक व्यावहारिक अनुप्रयोग है जिसे नैनो V2 प्रतिस्थापन के रूप में SKYLAB SBK369 बोर्ड का उपयोग करके बहुत कम पावर BLE तापमान और आर्द्रता मॉनिटर का निर्माण करके Arduino के साथ आसान बनाया गया है। यह ट्यूटोरियल कवर करता है कि एक नई बोर्ड परिभाषा कैसे बनाई जाए और इसे फिर से प्रोग्राम करने की अनुमति देने के लिए nRF52 प्रोग्रामिंग प्रोटेक्ट को कैसे हटाया जाए। यह ट्यूटोरियल कम बिजली की खपत के लिए समान ट्यून किए गए BLE मापदंडों के साथ भाग 2 के समान स्केच का उपयोग करता है और इसे केवल बैटरी या बैटरी + सौर या सौर से संचालित किया जा सकता है। कम शक्ति के लिए BLE मापदंडों की ट्यूनिंग को भाग 2. में शामिल किया गया था
lp_BLE_TempHumidity का Rev 3 डेटा को केवल Arduino मिलिस () का उपयोग करके दिनांक और समय के विरुद्ध प्लॉट करता है। pfodApp (V3.0.362+) के नवीनतम संस्करण का उपयोग करके मिलिस () और pfodApp का उपयोग करके Arduino दिनांक और समय देखें।
pfod_lp_nrf52.zip का रेव 4 भी GT832E_01 मॉड्यूल का समर्थन करता है और यह ट्यूटोरियल NFC nRF52 पिन को मानक GPIO के रूप में उपयोग करता है।
यहां बनाया गया मॉनिटर कॉइन सेल या 2 x AAA बैटरी पर सालों तक चलेगा, यहां तक कि सोलर असिस्ट से भी लंबा। वर्तमान तापमान और आर्द्रता को प्रदर्शित करने के साथ-साथ, मॉनिटर पिछले 36 घंटे की 10 मिनट की रीडिंग और पिछले 10 दिनों की घंटे की रीडिंग को स्टोर करता है। इन्हें आपके एंड्रॉइड मोबाइल और लॉग फ़ाइल में सहेजे गए मानों पर चार्ट किया जा सकता है। कोई Android प्रोग्रामिंग की आवश्यकता नहीं है, pfodApp वह सब संभालता है। एंड्रॉइड डिस्प्ले और चार्टिंग पूरी तरह से आपके Arduino स्केच द्वारा नियंत्रित किया जाता है ताकि आप इसे आवश्यकतानुसार अनुकूलित कर सकें।
भाग 2 ने nRF52832 BLE घटक के लिए Redbear Nano V2 बोर्ड का उपयोग किया। यह प्रोजेक्ट उसे सस्ते SKYLAB SKB369 बोर्ड से बदल देता है। जैसा कि भाग 2 में है, तापमान/आर्द्रता सेंसर के लिए स्पार्कफुन Si7021 ब्रेकआउट बोर्ड का उपयोग किया जाता है। एक संशोधित कम शक्ति पुस्तकालय का उपयोग Si7021 के साथ किया जाता है।
चरण 1: नैनो V2 रिप्लेसमेंट क्यों?
i) नैनो V2 कई महीनों के लिए उत्पादन से बाहर था और यह Particle.io लाइन अप में फिट नहीं लगता है, इसलिए यह स्पष्ट नहीं है कि यह कितने समय के लिए उपलब्ध होगा।
ii) नैनो V2 अधिक महंगा है। हालाँकि इसमें अतिरिक्त सुविधाएँ भी हैं। निचे देखो।
iii) नैनो V2 में दोनों तरफ घटक होते हैं जो इसे एक उच्च प्रोफ़ाइल देता है और इसे माउंट करना अधिक कठिन बनाता है।
iv) नैनो V2 में सीमित I/O पिन उपलब्ध हैं और D6 से D10 का उपयोग करने के लिए उड़ान लीड की आवश्यकता होती है।
हालांकि नैनो V2 बोर्ड SKYLAB SKB369 बोर्ड की तुलना में अधिक महंगा है, ~ US17 बनाम ~ US5, नैनो V2 में अधिक विशेषताएं हैं। नैनो V2 में 3.3V रेगुलेटर और सप्लाई कैपेसिटर, nRF52 DC/DC कनवर्टर विकल्प का उपयोग करने के लिए अतिरिक्त घटक, एक चिप एंटीना और एक uFL SMT एंटीना कनेक्टर शामिल हैं।
एक अन्य विकल्प www.homesmartmesh.com द्वारा उपयोग किया जाने वाला GT832E_01 मॉड्यूल है। pfod_lp_nrf52.zip का रेव 4 भी GT832E_01 मॉड्यूल की प्रोग्रामिंग का समर्थन करता है। SKYLAB SKB369 और GT832E_01 https://www.aliexpress.com से उपलब्ध हैं।
Redbear (Particle.io) में 3V3 नियामक, DC/DC घटकों या 32Khz क्रिस्टल घटकों के बिना एक नंगे मॉड्यूल भी है।
रेखांकित करें
इस परियोजना के 4 सापेक्ष स्वतंत्र भाग हैं:-
घटक चयन और निर्माण nRF52 कोडिंग सुरक्षा ध्वज को हटाना और स्केच प्रोग्रामिंग करना एक नया Arduino nRF52 बोर्ड परिभाषा बनाना nRF52 NFC पिन को GPIO के रूप में पुन: कॉन्फ़िगर करना
चरण 2: घटक चयन और निर्माण
घटक चयन
भाग 2 में चयनित nRF52832 और Si7021 घटकों के अलावा, यह प्रोजेक्ट 3.3V नियामक और आपूर्ति कैपेसिटर जोड़ता है।
वोल्टेज नियामक घटक
यहां इस्तेमाल किया जाने वाला नियामक MC87LC33-NRT है। यह 12V इनपुट तक संभाल सकता है और इसमें <3.6uA, आमतौर पर 1.1uA का एक मौन प्रवाह होता है। नैनो V2 में एक TLV704 रेगुलेटर का उपयोग किया गया है, जिसमें थोड़ा अधिक मौन करंट होता है, आमतौर पर 3.4uA और 24V तक के उच्च इनपुट वोल्टेज को संभाल सकता है। MC87LC33-NRT को इसके बजाय चुना गया था क्योंकि इसकी डेटाशीट निर्दिष्ट करती है कि यह कैसे प्रतिक्रिया करता है क्योंकि इनपुट वोल्टेज 3.3V से नीचे आता है जबकि TLV704 डेटाशीट नहीं करता है।
TLV704 न्यूनतम 2.5V के इनपुट वोल्टेज को निर्दिष्ट करता है और डेटाशीट से यह स्पष्ट नहीं है कि उसके नीचे क्या होगा। nRF52832 1.7V तक चलेगा और Si7023 1.9V तक नीचे चला जाएगा। दूसरी ओर MC87LC33-NRT कम धाराओं के लिए इनपुट / आउटपुट वोल्टेज अंतर को 0V तक निर्दिष्ट करता है (डेटाशीट का चित्र 18)। इसलिए घटकों की पसंद को देखते हुए, MC87LC33-NRT को चुना गया क्योंकि इसमें निर्दिष्ट प्रदर्शन है।
आपूर्ति संधारित्र
MC87LC33-NRT नियामक को स्थिरता और प्रतिक्रिया के लिए कुछ आपूर्ति कैपेसिटर की आवश्यकता होती है। डेटाशीट पर आउटपुट कैपेसिटर> 0.1uF की सिफारिश की जाती है। SKYLAB SBK369 बोर्ड के करीब आपूर्ति पर 10uF/0.1uF कैपेसिटर भी निर्दिष्ट करता है। बड़े कैपेसिटर nRF52 TX करंट स्पाइक्स की आपूर्ति में सहायता करते हैं। यहां 4 x 22uF 25V और 3 x 0.1uF 50V सिरेमिक कैपेसिटर का उपयोग किया गया था। एक 22uF और एक 0.1uF संधारित्र को SKYLAB SBK369 के पास रखा गया था, एक 0.1uF को स्थिरता सुनिश्चित करने के लिए MC87LC33-NRT के आउटपुट के करीब रखा गया था और MC87LC33-NRT के इनपुट पर एक 22uF और 0.1uF रखा गया था। आगे 2 x 22uF कैपेसिटर जहां एक और वर्तमान जलाशय के रूप में विन / जीएनडी पिन में मिलाप किया गया। तुलना के लिए NanoV2 बोर्ड में TLV704 रेगुलेटर के इनपुट पर 22uF / 0.1uF और इसके आउटपुट पर 0.1uF है।
3.3V नियामक के इनपुट पर अतिरिक्त वर्तमान जलाशय कैपेसिटर स्थापित किए गए थे ताकि सौर कोशिकाओं के साथ चलने पर वे उच्च वोल्टेज पर चार्ज हो सकें। उच्च वोल्टेज पर चार्ज करना Tx स्पाइक्स की आपूर्ति के लिए अधिक करंट को स्टोर करने के बराबर है।
सिरेमिक X5R कैपेसिटर का उपयोग किया जाता है क्योंकि उनके पास कम श्रृंखला प्रतिरोध और कम रिसाव चालू होता है। प्रतिरोध आमतौर पर 100, 000MΩ या 1000MΩ - µF जो भी कम हो। तो 22uF के लिए हमारे पास 22000MΩ है, यानी 3.3V पर 0.15nA रिसाव या चार 22uF कैपेसिटर के लिए 0.6nA। यह नगण्य है। तुलना के लिए लो ईएसआर, लो लीकेज पैनासोनिक इलेक्ट्रोलाइटिक कैपेसिटर में <0.01CV का लीकेज करंट होता है। तो एक 22uF 16V संधारित्र के लिए रिसाव <10uA है। नोट: यह इस मामले में रेटेड वोल्टेज, 16V पर रिसाव है। रिसाव कम वोल्टेज पर कम होता है, यानी <2.2uA 3.3V पर।
हिस्सों की सूची
दिसंबर 2018 में प्रति यूनिट अनुमानित लागत, ~US$61, भाग 1 से शिपिंग और प्रोग्रामर को छोड़कर
- SKYLAB SKB369 ~ US$5 जैसे Aliexpress
- स्पार्कफुन Si7021 ब्रेकआउट बोर्ड ~ US$8
- 2 x 53 मिमी x 30 मिमी 0.15W 5V सौर सेल उदा। ओवरफ्लाई ~US$1.10
- 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ US$25 5 के लिए www.pcbcart.com पर छूट
- 1 x MC78LC33 3.3V नियामक, उदा। डिजिके MC78LC33NTRGOSCT-ND ~US$1
- 2 x 0.1uF 50V सिरेमिक C1608X5R1H104K080A उदा। डिजिके 445-7456-1-एनडी ~US$0.3
- 4 x 22uF 16V सिरेमिक GRM21BR61C226ME44L उदा। डिजिके 490-10747-1-एनडी ~ यूएस$2
- 1 x BAT54CW, उदा. डिजिके 497-12749-1-एनडी ~US$0.5
- 1 x 470R 0.5W 1% रोकनेवाला उदा। डिजिके 541-470TCT-ND ~US$0.25
- 1 x 10V 1W जेनर SMAZ10-13-F उदा। डिजिके SMAZ10-FDICT-ND ~US$0.5
- 3 मिमी x 12 मिमी नायलॉन स्क्रू, उदा। Jaycar HP0140 ~ AUD$3
- 3 मिमी x 12 मिमी नायलॉन नट, उदा। Jaycar HP0146 ~ AUD$3
- स्कॉच परमानेंट माउंटिंग टेप कैट 4010 उदा. अमेज़न से ~ US$6.6
- CR2032 बैटरी धारक, उदा। एचयू२०३२-एलएफ ~ यूएस$१.५
- CR2032 बैटरी ~US$1
- पर्सपेक्स शीट, 3.5 मिमी और 8 मिमी
- pfodApp ~US$10
- सोल्डर पेस्ट उदा। जयकार NS-3046 ~ AUD$13
चरण 3: निर्माण
परियोजना का निर्माण एक छोटे पीसीबी पर किया गया है। PCB का निर्माण pcbcart.com द्वारा इन Gerber फाइलों से किया गया था, SKYLAB_TempHumiditySensor_R2.zip पीसीबी नैनो V2 पिन की नकल करता है और अन्य BLE परियोजनाओं के लिए उपयोग किए जाने के लिए पर्याप्त सामान्य उद्देश्य है।
यह योजनाबद्ध (पीडीएफ संस्करण) है
पहले SMD घटकों को मिलाप करें, फिर SKYLAB SKB369 बोर्ड को माउंट करें
लगभग सभी घटक सरफेस माउंट डिवाइस (एसएमडी) हैं। कैपेसिटर और आईसी को हाथ से मिलाप करना मुश्किल हो सकता है। सुझाई गई विधि है कि पीसीबी को एक वाइस में रखा जाए और पैड पर थोड़ी मात्रा में सोल्डर पेस्ट लगाया जाए और पीसीबी पर SKB369 बोर्ड को छोड़कर, SMD घटकों को रखा जाए। फिर एक हीट गन का उपयोग करते हुए, पीसीबी के नीचे की तरफ गर्मी लागू करें जब तक कि सोल्डर पेस्ट पिघल न जाए और फिर बोर्ड के शीर्ष पर एक त्वरित पास करें, सावधान रहें कि घटकों को उड़ा न दें। अंत में एक छोटे से टिप सोल्डरिंग आयरन के साथ घटकों को स्पर्श करें। कैपेसिटर और रेसिस्टर से सावधान रहें क्योंकि दोनों सिरों को पिघलाना आसान है और एक छोर को सोल्डर करते समय घटक ढीले हो जाते हैं।
यह संशोधन अतिरिक्त 22uF 16V सिरेमिक कैपेसिटर जोड़ता है। ये अतिरिक्त कैपेसिटर बैटरी से खींचे गए वर्तमान स्पाइक्स को कम करते हैं और सौर कोशिकाओं से संचालित होने पर वोल्टेज डिप्स को भी कम करते हैं। जब तक सौर सेल से वोल्टेज बैटरी वोल्टेज से ऊपर रहता है तब तक बैटरी से कोई करंट नहीं खींचा जाता है।
SMD घटकों को माउंट करने के बाद, आप SKYLAB SKB369 बोर्ड में मिलाप कर सकते हैं। SKB369 टैब के एक तरफ दो परीक्षण बिंदु छेद हैं। SKB369 बोर्ड की स्थिति के लिए कार्डबोर्ड बेस में दो पिन का उपयोग करें और पिन को ध्यान से संरेखित करें। (संशोधन 1 पीसीबी का उपयोग करके ऊपर का उदाहरण फोटो देखें) फिर दूसरे पिन को टांका लगाने से पहले बोर्ड को पकड़ने के लिए विपरीत दिशा के एक पिन को मिलाएं।
समाप्त भाग में CLK से GND तक Gnd लिंक वायर को नोट करें। यह CLK इनपुट पर शोर को nRF52 चिप को उच्च वर्तमान डिबग मोड में ट्रिगर करने से रोकने के लिए प्रोग्रामिंग के बाद स्थापित किया गया है।
बढ़ते मामले
बढ़ते मामले को पर्सपेक्स के दो टुकड़ों से बनाया गया था, 110 मिमी x 35 मिमी, 3 मिमी मोटा। सौर कोशिकाओं के नीचे 3.5 मिमी के टुकड़े को 3 मिमी नायलॉन के स्क्रू लेने के लिए टैप किया गया था। यह संशोधित निर्माण रेव 1 के बाद सरलीकृत है और सेंसर के चारों ओर वायु प्रवाह में सुधार करता है। उदाहरण के लिए केबल संबंधों का उपयोग करते हुए, प्रत्येक छोर पर अतिरिक्त छेद बढ़ते के लिए हैं।
चरण 4: NRF52 कोडिंग सुरक्षा ध्वज हटाना
ऊपर दिखाए गए अनुसार भाग 1 में वर्णित प्रोग्रामर से तापमान/आर्द्रता बोर्ड कनेक्ट करें।
सौर सेल और बैटरी अनप्लग होने के साथ, विन और Gnd प्रोग्रामर के Vdd और Gnd (येलो और ग्रीन लीड) से जुड़े होते हैं और SWCLK और SWDIO प्रोग्रामर हेडर बोर्ड (व्हाइट और ग्रे लीड) के Clk और SIO से कनेक्ट होते हैं।
nRF52 प्रोग्राम सुरक्षा हटाना
नॉर्डिक सेमी से - डीबग और ट्रेस पेज डीएपी - डीबग एक्सेस पोर्ट। एक बाहरी डिबगर डिवाइस को डीएपी के माध्यम से एक्सेस कर सकता है। DAP एक मानक ARM® CoreSight™ सीरियल वायर डिबग पोर्ट (SW-DP) लागू करता है। SW-DP सीरियल वायर डिबग प्रोटोकॉल (SWD) को लागू करता है जो दो-पिन सीरियल इंटरफ़ेस, SWDCLK और SWDIO है
महत्वपूर्ण: SWDIO लाइन में एक आंतरिक पुल-अप रोकनेवाला है। SWDCLK लाइन में एक आंतरिक पुल-डाउन रोकनेवाला है।
CTRL-AP - कंट्रोल एक्सेस पोर्ट। कंट्रोल एक्सेस पोर्ट (CTRL-AP) एक कस्टम एक्सेस पोर्ट है जो डिवाइस के नियंत्रण को सक्षम बनाता है, भले ही DAP में अन्य एक्सेस पोर्ट एक्सेस पोर्ट सुरक्षा द्वारा अक्षम किए जा रहे हों। एक्सेस पोर्ट प्रोटेक्शन डिबगर को सभी सीपीयू रजिस्टरों और मेमोरी-मैप किए गए पतों तक पढ़ने और लिखने से रोकता है। एक्सेस पोर्ट सुरक्षा अक्षम करें। एक्सेस पोर्ट सुरक्षा को केवल CTRL-AP के माध्यम से ERASEALL कमांड जारी करके अक्षम किया जा सकता है। यह कमांड फ्लैश, यूआईसीआर और रैम को मिटा देगा।
कण डीबगर के लिए प्रोग्रामर के रूप में CMSIS-DAP का चयन करें और nRF5 फ्लैश सॉफ़्टडिवाइस चुनें
यदि फ्लैश काम करता है, तो यह ठीक है, लेकिन अक्सर मॉड्यूल को री-प्रोग्रामिंग के खिलाफ संरक्षित किया गया होगा और आपको यह त्रुटि आउटपुट Arduino विंडो में मिलेगा
ऑन-चिप डीबगर खोलें 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13)जीएनयू जीपीएल v2 के तहत लाइसेंस प्राप्त बग रिपोर्ट के लिए, https://openocd.org/doc/doxygen/bugs.html पढ़ें डिबग_लेवल: 2 जानकारी: केवल एक परिवहन विकल्प; स्वत: चयन 'swd' एडेप्टर गति: 10000 kHz प्रांतस्था_m रीसेट_कॉन्फिग sysresetreq जानकारी: CMSIS-DAP: SWD समर्थित जानकारी: CMSIS-DAP: इंटरफ़ेस आरंभिक (SWD) जानकारी: CMSIS-DAP: FW संस्करण = 1.10 जानकारी: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 जानकारी: CMSIS-DAP: इंटरफ़ेस तैयार जानकारी: गति अनुरोध कम करें: 10000kHz से 5000kHz अधिकतम जानकारी: घड़ी की गति 10000 kHz जानकारी: SWD IDCODE 0x2ba01477 त्रुटि: MEM नहीं मिल सका -एपी कोर को नियंत्रित करने के लिए त्रुटि: लक्ष्य की अभी तक जांच नहीं की गई सॉफ्टडिवाइस को फ्लैश करते समय त्रुटि।
उस स्थिति में आपको मेमोरी को साफ़ करने और डिवाइस को फिर से प्रोग्राम करने योग्य बनाने के लिए nRF52 में ERASEALL कमांड रजिस्टर सेट करना होगा। संदीपमिस्ट्री nRF52 के साथ आपूर्ति किए गए ओपनओसीडी के संस्करण में ERASEALL कमांड रजिस्टर में लिखने के लिए आवश्यक apreg कमांड शामिल नहीं है, इसलिए आपको बाद के संस्करण को स्थापित करने की आवश्यकता है।
OpenOCD संस्करण OpenOCD-20181130 या उच्चतर स्थापित करें। विंडोज़ पूर्व-संकलित संस्करण https://gnutoolchains.com/arm-eabi/openocd/ से उपलब्ध है। नवीनतम कोड https://gnutoolchains.com/arm-eabi/openocd/ से उपलब्ध है।
एक कमांड प्रॉम्प्ट खोलें और dir को OpenOCD इंस्टॉल डायरेक्टरी में बदलें और कमांड दर्ज करें
bin\openocd.exe -d2 -f इंटरफ़ेस/cmsis-dap.cfg -f लक्ष्य/nrf52.cfg
प्रतिक्रिया है
ओपन ऑन-चिप डीबगर 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]जीएनयू जीपीएल v2 के तहत लाइसेंस प्राप्त बग रिपोर्ट के लिए, https://openocd.org/doc/doxygen/ पढ़ें Bugs.html debug_level: 2 जानकारी: पहले उपलब्ध सत्र परिवहन "swd" का स्वतः चयन। ओवरराइड करने के लिए 'ट्रांसपोर्ट सिलेक्ट' का उपयोग करें। एडेप्टर गति: १००० kHz कोर्टेक्स_एम रीसेट_कॉन्फिग sysresetreq जानकारी: tcl कनेक्शन के लिए पोर्ट ६६६६ पर सुनना जानकारी: टेलनेट कनेक्शन के लिए पोर्ट ४४४४ पर सुनना जानकारी: CMSIS-DAP: SWD समर्थित जानकारी: CMSIS-DAP: परिवार कल्याण संस्करण = १.१० जानकारी: CMSIS-DAP: इंटरफ़ेस आरंभिक (SWD) जानकारी: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 जानकारी: CMSIS-DAP: इंटरफ़ेस तैयार जानकारी: घड़ी की गति 1000 kHz जानकारी: SWD DPIDR 0x2ba01477 त्रुटि: कोर जानकारी को नियंत्रित करने के लिए एमईएम-एपी नहीं मिला: जीडीबी कनेक्शन के लिए पोर्ट 3333 पर सुनना
फिर एक टर्मिनल विंडो खोलें उदा। TeraTerm (Windows) या CoolTerm (Mac) और 127.0.0.1 पोर्ट 4444. से कनेक्ट करें
टेलनेट विंडो एक > दिखाएगा और कमांड प्रॉम्प्ट जानकारी दिखाएगा: टीसीपी/4444 पर 'टेलनेट' कनेक्शन स्वीकार करना
टेलनेट विंडो (यानी TeraTerm) में typenrf52.dap apreg 1 0x04यह रिटर्न 0x00000000 दिखाता है कि चिप सुरक्षित है। फिर टाइप करें rf52.dap apreg 1 0x04 0x01और फिर nnrf52.dap apreg 1 0x04यह 0x00000001 लौटाता है जो दिखाता है कि चिप अब अगले पुनरारंभ पर ERASEALL पर सेट है।
टेलनेट कनेक्शन को बंद करें और कमांड प्रॉम्प्ट में ओपनओसीडी प्रोग्राम से बाहर निकलने के लिए Ctrl-C का भी उपयोग करें और फिर nRF52 मॉड्यूल को पावर साइकिल करें और यह अब प्रोग्राम के लिए तैयार हो जाएगा।
अब सॉफ्टडिवाइस को फ्लैश करने का पुनः प्रयास करें।
अब आप Arduino से nRF52 मॉड्यूल प्रोग्राम कर सकते हैं।
चरण 5: SKYLAB SKB369 की प्रोग्रामिंग
Arduino को बंद करें और pfod_lp_nrf52 हार्डवेयर समर्थन निर्देशों को स्थापित करके pfod_lp_nrf52 समर्थन के नवीनतम संस्करण को फिर से स्थापित करें। नवीनतम pfod_lp_nrf52 में SKYLAB SKB369 Nano2 प्रतिस्थापन बोर्ड शामिल है। इसे बोर्ड के रूप में चुनें और फिर आप इसे lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip के संशोधन 3 के साथ प्रोग्राम कर सकते हैं, जैसा कि भाग 2 में वर्णित है।
यदि प्रोग्रामिंग विफल हो जाती है। सभी Arduino विंडो बंद करें, USB केबल निकालें, Arduino को पुनरारंभ करें और प्रोग्रामर USB केबल को वापस प्लग इन करें और nRF52 मॉड्यूल की USB आपूर्ति को वापस प्लग इन करें और पुनः प्रयास करें।
फिर वर्तमान और ऐतिहासिक तापमान और आर्द्रता प्रदर्शित करने के लिए pfodApp के माध्यम से कनेक्ट करें। एक बार जब आप ऐतिहासिक प्लॉट प्रदर्शित कर लेते हैं, तो मिलीसेकंड टाइमस्टैम्प के साथ रीडिंग आपके मोबाइल पर लॉग फ़ाइल में सहेजी जाती हैं और कच्चे डेटा स्क्रीन में भी उपलब्ध होती हैं।
लॉग फ़ाइल में स्प्रैडशीट में दिनांक और समय प्लॉट को फिर से बनाने के लिए आवश्यक अतिरिक्त डेटा भी होता है। विवरण के लिए मिलिस () और pfodApp का उपयोग करके Arduino दिनांक और समय देखें
चरण 6: एक नया Arduino NRF52 बोर्ड परिभाषा बनाना
एक नए nRF52 बोर्ड का समर्थन करने के लिए आपको a) बोर्ड फ़ाइलों के साथ वेरिएंट निर्देशिका के तहत एक नई निर्देशिका जोड़ने की आवश्यकता है और b) Arduino में नया बोर्ड जोड़ने के लिए Boards.txt फ़ाइल को संपादित करें।
एक नया nRF52 बोर्ड संस्करण जोड़ना
जैसा कि भाग 1 में वर्णित है, pfod_lp_nrf52 हार्डवेयर समर्थन को स्थापित करते हुए, संदीपमिस्त्री पैकेज की हार्डवेयर उप-निर्देशिका खोजें जिसे आपने pfod_lp_nrf52 समर्थन के साथ अद्यतन किया है। \हार्डवेयर\nRF5\0.6.0\variants उप-निर्देशिका खोलें और अपने नए बोर्ड के लिए एक नई निर्देशिका बनाएं, उदाहरण के लिए SKYLAB_SKB369_Nano2replacement नए \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2प्रतिस्थापन निर्देशिका में तीन फ़ाइलें वैरिएंट बनाएं। वैरिएंट.cpp और pins_arduino.h आप उन्हें अन्य बोर्ड वेरिएंट निर्देशिकाओं से कॉपी कर सकते हैं। SKYLAB_SKB369_Nano2प्रतिस्थापन के लिए, मैंने शुरुआत में RedBear_BLENano2 संस्करण से फ़ाइलों की प्रतिलिपि बनाई।
pins_arduino.h फ़ाइल
Pins_arduino.h फ़ाइल को बदलने की आवश्यकता नहीं है। इसमें केवल वैरिएंट.एच फ़ाइल शामिल है
वैरिएंट.एच फ़ाइल
आपके बोर्ड में पिनों की कुल संख्या निर्धारित करने के लिए वैरिएंट.h फ़ाइल संपादित करें, PINS_COUNT
नोट: संदीपमिस्ट्री पैकेज में, NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS और NUM_ANALOG_OUTPUTS सेटिंग्स को अनदेखा किया जाता है।
यदि आपका बोर्ड कमोबेश एनालॉग पिन उपलब्ध कराता है, तो वेरिएंट.एच फ़ाइल के /* एनालॉग पिन */ अनुभाग को अपडेट करें।
नोट: NanoV2 और SKYLAB बोर्डों के लिए एनालॉग पिन को डिजिटल पिन A0 == D0 आदि में मैप किया जाता है
यह जरूरी नहीं है। आप किसी भी सुविधाजनक Arduino पिन को एनालॉग इनपुट असाइन कर सकते हैं। एक उदाहरण के लिए फिर blue/variant.h और blue/variant.cpp फ़ाइलें देखें।
NRF52832 चिप में 8 एनालॉग इनपुट पिन हैं, लेकिन SKYLAB_SKB369_Nano2रिप्लेसमेंट बोर्ड उनमें से केवल 6 को Nano2 से मिलान करने के लिए उपलब्ध कराता है।
वेरिएंट.एच फ़ाइल में RESET_PIN को छोड़कर सभी पिन नंबर Arduino पिन नंबर हैं। वह है #define PIN_A0 (0) का तात्पर्य है कि arduino स्केच में D0 A0 के समान पिन है। RESET_PIN अपवाद है। वह नंबर nRF52823 चिप पिन नंबर है और 21 ही एकमात्र वैध विकल्प है। हालाँकि pfod_lp_nrf52 समर्थन nRF52832 पर रीसेट पिन को सक्षम नहीं करता है
वैरिएंट.cpp फ़ाइल
वैरिएंट.cpp फ़ाइल में केवल एक प्रविष्टि है, g_ADigitalPinMap सरणी जो Arduino पिन नंबर को nRF52832 चिप P0.. पिन में मैप करती है
नोट: NanoV2 और SKYLAB बोर्डों में, Arduino एनालॉग पिन A0, A1 … Arduino डिजिटल पिन D0, D1 … के समान हैं, इसलिए g_ADigitalPinMap में पहली प्रविष्टियाँ nRF52832 चिप पर AINx पिन नंबरों को मैप करना चाहिए।
आपके बोर्ड द्वारा उपलब्ध कराए गए एनालॉग इनपुट के लिए, g_ADigitalPinMap में उन प्रविष्टियों को nRF52832 AIN0, AIN1, AIN2, आदि पिन नंबरों को मैप करना होगा। यानी AIN0 चिप पिन P0.02 है, AIN1 चिप पिन P0.03 है आदि ऊपर nRF52832 पिन लेआउट देखें।
अमान्य मैपिंग के लिए (uint32_t)-1 का उपयोग करें। उदाहरण के लिए SKYLAB_SKB369_Nano2रिप्लेसमेंट बोर्ड में एलईडी, D13 में निर्मित नहीं है, इसलिए इसकी स्थिति (uint32_t) -1 पर मैप की जाती है
pfod_lp_nrf52.zip में Redbear NanoV2, SKYLAB SKB369 और GT832E_01 वेरिएंट की उप-निर्देशिकाओं में वैरिएंट.cpp द्वारा सेट किए गए मैपिंग दिखाने वाली छवियां हैं। (ऊपर चित्र देखें)
SKYLAB SKB369 के मामले में, चुनने के लिए बहुत सारे पिन हैं। NanoV2 से मिलान करने के लिए केवल पर्याप्त मैप किए गए हैं। GT832E_01 के मामले में, सभी उपलब्ध पिनों को मैप करने की आवश्यकता है। फिर भी NanoV2 पर छह (6) के बजाय केवल तीन (3) एनालॉग इनपुट उपलब्ध हैं। इसके साथ ही दो NFC पिन, P0.09 और P0.10, को GPIO के रूप में पुन: कॉन्फ़िगर करने की आवश्यकता है। नीचे GPIO के रूप में nRF52 NFC पिन को फिर से कॉन्फ़िगर करना देखें।
Boards.txt फ़ाइल को अपडेट करना
यहाँ बोर्ड.txt फ़ाइल में SKYLAB_SKB369_Nano2प्रतिस्थापन प्रविष्टि है।
## SKYLAB_SKB369 Nano2 रिप्लेसमेंटSKYLAB_SKB369_NANO2_REPLACEMENT.name=*SKYLAB SKB369 Nano2 रिप्लेसमेंट
SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd
SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size. PLB_SKB369 चुनें। SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.seative_usb
SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd
SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=cortex-m4
SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=हार्ड -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409,600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld
बोर्ड.txt सेटिंग्स
टिप्पणियाँ - # से शुरू होने वाली पंक्तियाँ टिप्पणियाँ हैं।
उपसर्ग - प्रत्येक बोर्ड को अपने मूल्यों की पहचान करने के लिए एक अद्वितीय उपसर्ग की आवश्यकता होती है। यहां उपसर्ग SKYLAB_SKB369_NANO2_REPLACEMENT है।
नाम - SKYLAB_SKB369_NANO2_REPLACEMENT.name लाइन Arduino के बोर्ड मेनू में दिखाने के लिए इस बोर्ड का नाम निर्दिष्ट करती है।
अपलोड टूल - SKYLAB_SKB369_NANO2_REPLACEMENT.upload ब्लॉक निर्दिष्ट करता है कि अपलोड करने के लिए किस टूल का उपयोग करना है। यदि आप पार्टिकल डीबगर का उपयोग कर रहे हैं तो प्रोटोकॉल = सेमीसिस-डीएपी का उपयोग करें जैसा कि ऊपर दिखाया गया है।
बूटलोडर - यह लाइन इस बोर्ड के सभी बोर्डों के लिए समान है
बिल्ड - इस ब्लॉक में केवल दो लाइनों को अपडेट करने की आवश्यकता है। SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant लाइन इस बोर्ड के निर्देशिका नाम को भिन्न उप-निर्देशिका में निर्दिष्ट करती है। SKYLAB_SKB369_NANO2_REPLACEMENT.build.board वह मान है जिसे ARDUINO_ से जोड़ा जाता है और फिर कोड को संकलित करते समय परिभाषित किया जाता है। जैसे -DARDUINO_SKYLAB_SKB369_Nano2प्रतिस्थापन यह आपको विशिष्ट बोर्डों के लिए कोड के कुछ हिस्सों को सक्षम/अक्षम करने देता है।
कम आवृत्ति घड़ी - यह लाइन, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, कम आवृत्ति वाली घड़ी के स्रोत को निर्दिष्ट करती है, जिसका उपयोग lp_timer के लिए किया जाता है। तीन विकल्प हैं, -DUSE_LFXO, -DUSE_LFRC और -DUSE_LFSYNT। सबसे अच्छा विकल्प है -DUSE_LFXO, यदि बोर्ड में बाहरी 32Khz क्रिस्टल है। यदि नहीं तो -DUSE_LFRC का उपयोग करें, जो एक आंतरिक RC थरथरानवाला का उपयोग करता है और थोड़ा अधिक करंट खींचता है, ~10uA अधिक, और बहुत कम गुना कम सटीक है। -DUSE_LFSYNT का उपयोग न करें क्योंकि यह चिप को हर समय चालू रखता है जिसके परिणामस्वरूप mAs करंट ड्रॉ होता है।
सॉफ्टडिवाइस - pfod_lp_nrf52 केवल nRF52 चिप्स और सॉफ्टडिवाइस s132 का समर्थन करता है, इसलिए उपसर्ग के अलावा इस ब्लॉक के लिए किसी भी बदलाव की आवश्यकता नहीं है।
GPIO के रूप में nRF52 NFC पिन को पुन: कॉन्फ़िगर करना
nRF52 पिन पर डिफ़ॉल्ट रहें, P0.09 और P0.10 NFC के रूप में उपयोग के लिए कॉन्फ़िगर किए गए हैं और NFC एंटीना से कनेक्ट होने की अपेक्षा करते हैं। यदि आपको इन्हें सामान्य प्रयोजन I/O पिन (GPIO) के रूप में उपयोग करने की आवश्यकता है, तो आपको उस बोर्ड के …menu.softdevice.s132.build.extra_flags संकलन सेटिंग्स में बोर्ड.txt फ़ाइल में एक परिभाषित, -DCONFIG_NFCT_PINS_AS_GPIOS जोड़ने की आवश्यकता है।
उदाहरण के लिए pfod_lp_nrf52.zip, I/O के रूप में उपयोग के लिए GT832E_01 पिन को पुन: कॉन्फ़िगर करता है। इस बोर्ड के GT832E_01 अनुभाग में, बोर्ड.txt फ़ाइल में, निम्नलिखित परिभाषा जोड़ी गई है:
GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS
pfod_lp_nrf52.zip में लिंकर स्क्रिप्ट को भी इस सेटिंग को संरक्षित करने के लिए संशोधित किया गया है और इसे बदलने की आवश्यकता नहीं है।
चरण 7: निष्कर्ष
इस ट्यूटोरियल ने SKYLAB SKB369 मॉड्यूल का उपयोग करके Redbear NanoV2 के लिए एक प्रतिस्थापन प्रस्तुत किया है। SKYLAB मॉड्यूल के लिए Arduino में एक बैटरी/सौर संचालित तापमान आर्द्रता मॉनिटर का उपयोग एक उदाहरण के रूप में बहुत कम बिजली BLE प्रोजेक्ट के रूप में किया गया था। ~29uA की आपूर्ति धाराएं जहां कनेक्शन मापदंडों को ट्यून करके हासिल की जाती हैं। इसके परिणामस्वरूप CR2032 सिक्का सेल बैटरी जीवन ~ 10 महीने हो गया। उच्च क्षमता वाले सिक्का कोशिकाओं और बैटरी के लिए लंबा। दो सस्ते सोलर सेलों को जोड़ने से बैटरी का जीवनकाल आसानी से 50% या उससे अधिक बढ़ जाता है। एक उज्ज्वल कमरे की रोशनी या एक डेस्क लैंप सौर कोशिकाओं से मॉनिटर को बिजली देने के लिए पर्याप्त है।
इस ट्यूटोरियल में पूर्व-प्रोग्राम किए गए nRF52 से चिप सुरक्षा को हटाने और अपने स्वयं के पीसीबी / सर्किट से मेल खाने के लिए एक नई बोर्ड परिभाषा कैसे सेट करें, यह भी शामिल है।
कोई Android प्रोग्रामिंग की आवश्यकता नहीं है। pfodApp वह सब संभालता है।
सिफारिश की:
Arduino भाग 2 में आसान बहुत कम पावर बीएलई - तापमान/आर्द्रता मॉनिटर - रेव 3: 7 चरण
Arduino भाग 2 में आसान बहुत कम पावर BLE - तापमान / आर्द्रता मॉनिटर - रेव 3: अपडेट: 23 नवंबर 2020 - 15 जनवरी 2019 से 2 x AAA बैटरी का पहला प्रतिस्थापन यानी 2xAAA अल्कलाइन के लिए 22 महीने अपडेट: 7 अप्रैल 2019 - रेव 3 का lp_BLE_TempHumidity, pfodApp V3.0.362+ और ऑटो थ्रॉटलिंग व्हे का उपयोग करके दिनांक/समय प्लॉट जोड़ता है
स्वचालित पानी, इंटरनेट कनेक्शन और बहुत कुछ के साथ बहुत बढ़िया ग्रीनहाउस: 7 कदम (चित्रों के साथ)
स्वचालित पानी, इंटरनेट कनेक्शन और बहुत कुछ के साथ बहुत बढ़िया ग्रीनहाउस: इस निर्देश में आपका स्वागत है। मार्च की शुरुआत में, मैं एक बगीचे की दुकान में था और कुछ ग्रीनहाउस देखे। और चूंकि मैं लंबे समय से पौधों और इलेक्ट्रॉनिक्स के साथ एक प्रोजेक्ट बनाना चाहता था, इसलिए मैंने आगे बढ़कर एक खरीदा: https://www.instagram.com/p
ईज़ी-पेलिकन - टिकाऊ, बनाने में आसान और रेडियो कंट्रोल प्लेन उड़ाने में आसान: 21 कदम (चित्रों के साथ)
ईज़ी-पेलिकन - टिकाऊ, बनाने में आसान और रेडियो कंट्रोल प्लेन उड़ाने में आसान: इस गाइड में मैं आपको दिखाऊंगा कि ईज़ी-पेलिकन कैसे बनाया जाता है! यह एक रेडियो नियंत्रित हवाई जहाज है जिसे मैंने डिजाइन किया है। इसकी मुख्य विशेषताएं हैं: सुपर टिकाऊ - कई दुर्घटनाओं को संभालने में सक्षम बनाने में आसान बनाने में आसान सस्ती उड़ान भरने में आसान! इसके कुछ अंश प्रेरणादायी हैं
मोटर मूल बातें - एक प्रयोग के साथ समझने में बहुत आसान अवधारणा: 7 कदम (चित्रों के साथ)
मोटर मूल बातें | एक प्रयोग के साथ समझने में सुपर आसान अवधारणा: इस निर्देश में मैं आपको मोटर्स के अंतर्निहित मौलिक सिद्धांत के बारे में सिखाने जा रहा हूं। हमारे आसपास की सभी मोटरें इसी सिद्धांत पर काम करती हैं। जनरेटर भी इस नियम के पारस्परिक कथन पर काम करते हैं। मैं फ्लेमिंग के लेफ्ट-हैंड आरयू के बारे में बात कर रहा हूँ
एक-क्लिक विंडोज और लिनक्स एप्लिकेशन (32-बिट और 64-बिट) के साथ DIY MusiLED, म्यूजिक सिंक्रोनाइज्ड एलईडी। रीक्रिएट करने में आसान, उपयोग में आसान, पोर्ट करने में आसान: 3 चरण
एक-क्लिक विंडोज और लिनक्स एप्लिकेशन (32-बिट और 64-बिट) के साथ DIY MusiLED, म्यूजिक सिंक्रोनाइज्ड एलईडी। रीक्रिएट करने में आसान, उपयोग में आसान, पोर्ट करने में आसान: यह प्रोजेक्ट आपको 18 LED (6 रेड + 6 ब्लू + 6 येलो) को अपने Arduino बोर्ड से कनेक्ट करने और आपके कंप्यूटर के साउंड कार्ड के रियल-टाइम सिग्नल का विश्लेषण करने और उन्हें रिले करने में मदद करेगा। एल ई डी बीट इफेक्ट (स्नेयर, हाई हैट, किक) के अनुसार उन्हें रोशन करने के लिए