SILICON LABS 21Q2 ब्लूटूथ वैशिष्ट्ये लॅब
ब्लूटूथ 21Q2 वैशिष्ट्ये लॅब मॅन्युअल
हे लॅब मॅन्युअल तुम्हाला 20Q4 आणि 21Q2 रिलीझ दरम्यान सादर केलेल्या काही नवीन ब्लूटूथ SDK वैशिष्ट्यांद्वारे मार्गदर्शन करते. या लॅबमध्ये आम्ही राष्ट्रवादीचे माजीample आणि पायथन भाषेत होस्ट सॉफ्टवेअर लिहा. नवीन डायनॅमिक GATT वैशिष्ट्याचा वापर करून आम्ही GATT कॉन्फिगरेटर वापरण्याऐवजी होस्ट सॉफ्टवेअरमधून GATT डेटाबेस देखील तयार करू. शेवटी LE पॉवर कंट्रोल वैशिष्ट्य होस्ट सॉफ्टवेअरचा विस्तार करून सादर केले आहे.
पूर्वतयारी
ही लॅब पूर्ण करण्यासाठी, तुम्हाला खालील गोष्टींची आवश्यकता असेल:
- कोणत्याही EFR22BG/EFR32MG रेडिओ बोर्डसह दोन थंडरबोर्ड BG32 किंवा दोन WSTK किंवा त्यांचे मिश्रण
- Bluetooth SDKv5 सह Gecko SDK v3.2 सह, Simplicity Studio 3.2 स्थापित केला आहे
- एक PC ज्यावर Python v3.6 किंवा नंतर स्थापित आहे
NCP कार्यक्षमतेसाठी लक्ष्य साधने फ्लॅश करणे
- तुमचे दोन रेडिओ बोर्ड संलग्न करा आणि Simplicity Studio 5 उघडा
- डीबग अडॅप्टर टॅबवरील रेडिओ बोर्डांपैकी एक निवडा
- ओव्हरवर प्राधान्यकृत SDK v3.2.0 वर सेट कराview लाँचरचा टॅब view
- माजी उघडाampप्रकल्प आणि डेमो टॅब
- नवीन ब्लूटूथ शोधा – NCP डेमो.
- NCP लक्ष्य प्रतिमा बोर्डवर फ्लॅश करण्यासाठी Run वर क्लिक करा.
(टीप: ब्लूटूथ – एनसीपी एम्प्टीच्या उलट, या प्रकल्पात पूर्वनिर्मित GATT डेटाबेस समाविष्ट नाही, परंतु त्यात डायनॅमिक GATT API सक्षम आहे, जे पुढील विभागांसाठी एक पूर्व शर्त आहे)
- इतर रेडिओ बोर्डसाठी समान चरणांची पुनरावृत्ती करा.
पायथनमध्ये ब्लूटूथ सर्व्हर ऍप्लिकेशन तयार करणे
प्रारंभ करणे
- pybgapi पॅकेज Python प्रोग्रामिंग भाषा वापरून PC वरून लक्ष्य उपकरणाकडे BGAPI आदेश जारी करण्याची शक्यता प्रदान करते. हे पॅकेज स्थापित करण्यासाठी कमांड लाइनमध्ये खालील टाइप करा: pip install pybgapi पॅकेजबद्दल अधिक माहितीसाठी भेट द्या https://pypi.org/project/pybgapi/
- नवीनतम BGAPI व्याख्या शोधा file अंतर्गत
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi आणि ते तुमच्या कार्यरत फोल्डरमध्ये कॉपी करा.
- पायथन बॅश उघडा (सीएलआयमध्ये पायथन टाइप करा)
- खालील आदेशासह bgapi लायब्ररी आयात करा: >>> bgapi आयात करा
- तुमच्या एका रेडिओ बोर्डचा COM पोर्ट क्रमांक (उदा. COM49) शोधा. तुम्ही डिव्हाइस मॅनेजरमध्ये किंवा तुमच्या आवडत्या टर्मिनल अॅपमध्ये “JLink CDC UART पोर्ट” शोधले पाहिजे.
- तुमच्या रेडिओ बोर्डशी कनेक्ट करा:
- >>> कनेक्शन = bgapi.SerialConnector('COM49')
- या नोडसाठी pybgapi लायब्ररी सुरू करा:
- >>> नोड = bgapi.BGLib(कनेक्शन,'sl_bt.xapi')
- या नोडकडे BGAPI संप्रेषण उघडा:
- >>> node.open()
- system_hello() कमांड वापरून तुम्ही बोर्डशी संवाद साधू शकता का ते तपासा. तुम्हाला system_hello प्रतिसाद मिळाला पाहिजे:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(परिणाम=0)
- >>> node.bt.system.hello()
- खालील आदेशासह तुमचा नोड रीसेट करा:
- node.bt.system.reset(0)
- आता तुम्हाला system_boot इव्हेंट मिळाला पाहिजे. नवीनतम कार्यक्रम आणण्यासाठी, खालील आदेश वापरा:
- evt = node.get_events(max_events=1)
- प्रिंट (ईव्हीटी)
- [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
GATT डेटाबेस तयार करणे
- ब्लूटूथ – NCP लक्ष्य अॅपमध्ये पूर्वनिर्मित GATT डेटाबेस समाविष्ट नाही. येथे आपण कोडमधून डेटाबेस तयार करू. डेटाबेस बिल्डिंगसाठी प्रथम सत्र सुरू करा:
- >>> सत्र = node.bt.gattdb.new_session().session
- GATT डेटाबेसमध्ये नवीन सेवा जोडा. येथे आम्ही Bluetooth SIG द्वारे स्वीकारलेली जेनेरिक ऍक्सेस सेवा जोडू. ही एक प्राथमिक सेवा (0x0) आहे ज्यामध्ये कोणतेही ध्वज सेट नाहीत (0x0) आणि 16bit UUID (0x1800).
- सेवा = node.bt.gattdb.add_service(सत्र, 0, 0, bytes.fromhex("0018")).सेवा
- सेवेमध्ये नवीन वैशिष्ट्य जोडा. येथे आम्ही READ गुणधर्म (0x2), कोणतीही सुरक्षा आवश्यकता (0x0), कोणतेही ध्वज नाही (0x0), 16bit UUID (0x2a00), व्हेरिएबल लांबी (0x2), कमाल लांबी 20 आणि "PyBGAPI च्या प्रारंभिक मूल्यासह
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic(सत्र, सेवा, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, बाइट्स('PyBGAPI Example','utf-8′)).वैशिष्ट्य
- 3.15 नवीन सेवा सक्रिय करा:
- >>> node.bt.gattdb.start_service(सत्र, सेवा)
- bt_rsp_gattdb_start_service(परिणाम=0)
- नवीन वैशिष्ट्य सक्रिय करा:
- >>> node.bt.gattdb.start_characteristic(सत्र, चार)
- bt_rsp_gattdb_start_characteristic(परिणाम=0)
- >>> node.bt.gattdb.start_characteristic(सत्र, चार)
- बदल जतन करा आणि डेटाबेस संपादन सत्र बंद करा:
- >>> node.bt.gattdb.commit(सत्र)
- bt_rsp_gattdb_commit(परिणाम=0)
सर्व्हरशी कनेक्ट करत आहे
- 3.18 आता आमच्याकडे GATT डेटाबेसमध्ये डिव्हाइसचे नाव आहे, आम्ही जाहिरात सुरू करू शकतो. स्टॅक स्वयंचलितपणे त्याच्या GATT डेटाबेसमध्ये परिभाषित केलेल्या नावासह डिव्हाइसची जाहिरात करेल:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(परिणाम=0)
- तुमच्या फोनवर EFR कनेक्ट सुरू करा आणि तुमच्या डिव्हाइसची जाहिरात “PyBGAPI Exampले ”
- तुम्ही डिव्हाइसशी कनेक्ट करू शकता आणि त्याचा GATT डेटाबेस शोधू शकता ज्यामध्ये आता डिव्हाइसचे नाव वैशिष्ट्यपूर्ण आहे
टीप: जर तुम्हाला खूप लवकर माजी हवे असतीलampGATT डेटाबेसचा त्रास न करता, तरीही तुम्ही ब्लूटूथ फ्लॅश करू शकता – NCP रिक्त माजीampतुमच्या बोर्डवर जा, ज्यात मूलभूत पूर्वनिर्मित GATT डेटाबेस आहे. या प्रकरणात, तुम्हाला यजमान बाजूने हे करायचे आहे:
- >>> bgapi आयात करा
- >>> कनेक्शन = bgapi.SerialConnector('COM49')
- >>> नोड = bgapi.BGLib(कनेक्शन,'sl_bt.xapi')
- >>> node.open()
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(परिणाम=0)
पायथनमध्ये ब्लूटूथ क्लायंट ऍप्लिकेशन तयार करणे
- सर्व्हर लागू करण्यापेक्षा क्लायंट तयार करणे अधिक क्लिष्ट आहे. म्हणून आपण पायथन स्क्रिप्ट लिहू. तुमचा आवडता मजकूर संपादक उघडा आणि नवीन तयार करा file, चला त्याला client.py म्हणू या
- खालील आयात करा:
- सर्व्हरच्या बाबतीत जसे, आम्ही UART द्वारे नोडशी कनेक्ट करू. तुमच्या दुसऱ्या बोर्डचा COM पोर्ट क्रमांक येथे वापरा:
- येथून, आमचा अर्ज इव्हेंट चालविला जाईल. जेव्हा जेव्हा स्टॅकद्वारे ब्लूटूथ इव्हेंट तयार केला जातो, तेव्हा आम्ही इव्हेंट हाताळू आणि ऍप्लिकेशन पुढे चालवू:
- चला इव्हेंट हँडलर फंक्शन परिभाषित करू आणि system_boot इव्हेंटसाठी हँडलर जोडू, जिथे आम्ही परिधीय उपकरणांसाठी स्कॅनिंग सुरू करू. लक्षात ठेवा, हे फंक्शन while लूपच्या आधी (आणि नोड व्हेरिएबलच्या व्याख्येनंतर) परिभाषित केले पाहिजे.
- स्कॅनर सुरू झाल्यानंतर, नोडला स्कॅन अहवाल प्राप्त होतील. sl_bt_on_event() फंक्शनमध्ये स्कॅन रिपोर्टसाठी इव्हेंट हँडलर जोडू. जाहिरात केलेल्या डिव्हाइस नावासह स्कॅन अहवाल आढळल्यास “PyBGAPI Example", क्लायंट त्या उपकरणाकडे कनेक्शन उघडेल:
- एकदा तुम्ही या टप्प्यावर पोहोचलात की तुमच्या क्लायंटला सर्व्हर सापडतो की नाही हे तपासण्यासारखे आहे. खात्री करा, की तुम्ही दुसऱ्या डिव्हाइसवर जाहिरात सुरू केली आहे, नंतर client.py सेव्ह करा आणि कमांड लाइनवरून सुरू करा. आपण असे काहीतरी पहावे:
- क्लायंटने सर्व्हरवर सेवा आणि वैशिष्ट्ये शोधली पाहिजेत. येथे आपण जेनेरिक ऍक्सेस सेवा आणि डिव्हाइस नाव वैशिष्ट्य शोधू, आणि शेवटी डिव्हाइस नाव वैशिष्ट्याचे मूल्य वाचू. तुमचे वर्तमान sl_bt_on_event() फंक्शन खालील कोडने बदला:
- client.py सेव्ह करा आणि कमांड लाइनवरून सुरू करा. आपण असे काहीतरी पहावे:
LE पॉवर कंट्रोल वैशिष्ट्य जोडत आहे
लक्ष्य साधने फ्लॅशिंग
ब्लूटूथ एक्समध्ये LE पॉवर कंट्रोल सक्षम केलेले नाहीample प्रकल्प डीफॉल्टनुसार. हे वैशिष्ट्य जोडण्यासाठी, ब्लूटूथ > वैशिष्ट्य > पॉवरकंट्रोल सॉफ्टवेअर घटक स्थापित करणे आवश्यक आहे.
- लाँचर उघडा view साधेपणा स्टुडिओ 5.
- डीबग अॅडॉप्टर टॅबमध्ये तुमच्या डिव्हाइसपैकी एक निवडा. प्राधान्य दिलेले SDK v3.2 असल्याची खात्री करा.
- माजी उघडाample Projects & Demos टॅब आणि Bluetooth शोधा – NCP रिक्त माजीampले प्रकल्प तयार करण्यासाठी [तयार करा] दाबा. (यावेळी आम्हाला GATT डेटाबेस तयार करायचा नाही, म्हणून आम्ही NCP Empty वापरतो, ज्यामध्ये डीफॉल्ट आहे.)
- GATT कॉन्फिग्युरेटर टॅब उघडा, डिव्हाइसचे नाव वैशिष्ट्य निवडा आणि "सिलॅब्स एक्स" ओव्हरराइट कराample" प्रारंभिक मूल्य "PyBGAPI Example" (जेणेकरून क्लायंट सर्व्हरला ओळखेल). तसेच मूल्य लांबी 15 ने ओव्हरराइट करा.
- डेटाबेस सेव्ह करण्यासाठी ctrl-s दाबा.
- प्रोजेक्ट कॉन्फिगरेटरमध्ये सॉफ्टवेअर घटक टॅब उघडा.
- ब्लूटूथ > वैशिष्ट्य > पॉवरकंट्रोल सॉफ्टवेअर घटक शोधा आणि [इंस्टॉल करा] वर क्लिक करा
- गोल्डन रेंजच्या वरच्या आणि खालच्या मर्यादा तपासण्यासाठी पॉवरकंट्रोलसॉफ्टवेअर घटकाच्या पुढील कॉगव्हीलवर क्लिक करा. 1M साठी कमी मर्यादा सेट करा
- PHY ते -45 (-60 ऐवजी). जरी व्यवहारात हे मूल्य इष्टतम नसले तरी, यामुळे अधिक Tx पॉवर समायोजन होईल, जे प्रात्यक्षिक हेतूंसाठी चांगले आहे.
- SDK आवृत्ती 3.2.0 मध्ये, सोनेरी श्रेणी योग्यरित्या सेट करण्यासाठी एक लहान उपाय लागू करणे आवश्यक आहे: sl_bluetooth.c उघडा file तुमच्या प्रकल्पाच्या /autogen फोल्डरमध्ये आढळले आणि sl_bt_init_power_control(); sl_bt_init_stack(&config) च्या आधी फंक्शन कॉल करा;
- प्रकल्प तयार करा आणि तो तुमच्या बोर्डवर फ्लॅश करा.
- तुमचे दोन बोर्ड एकाच प्रकारचे असल्यास, तीच प्रतिमा इतर बोर्डवर देखील फ्लॅश करा. जर तुमचा दुसरा बोर्ड वेगळा बोर्ड असेल, तर दुसऱ्या बोर्डसाठी वरील चरणांची पुनरावृत्ती करा.
सर्व्हर आणि क्लायंट सुरू करत आहे
- आता पुन्हा, पायथन बॅश उघडा, तुमच्या पहिल्या बोर्डशी कनेक्ट करा आणि जाहिरात सुरू करा
- तुमचा क्लायंट अॅप्लिकेशन बदला जेणेकरून ते डिव्हाइसचे नाव वाचल्यानंतर बाहेर पडणार नाही. खालील ओळी शोधा आणि त्या टिप्पणीमध्ये टाका:
- तुमचा क्लायंट अर्ज जतन करा आणि चालवा
- py.\client.py
- तुमचे दोन बोर्ड दूर ठेवा, नंतर हळूहळू त्यांना एकमेकांच्या जवळ हलवा. आता तुम्ही हे पहावे की स्टॅकने त्याची पॉवर लेव्हल डीफॉल्ट 8dBm वरून -3dBm पर्यंत कमी करणे सुरू केले आहे (जी डीफॉल्टनुसार किमान Tx पॉवर आहे):
कागदपत्रे / संसाधने
![]() |
SILICON LABS 21Q2 ब्लूटूथ वैशिष्ट्ये लॅब [pdf] सूचना पुस्तिका 21Q2, ब्लूटूथ फीचर्स लॅब, 21Q2 ब्लूटूथ फीचर्स लॅब, फीचर्स लॅब, लॅब |