SILICON LABS 21Q2 Maabara ya Vipengele vya Bluetooth
Mwongozo wa Maabara ya Vipengele vya Bluetooth 21Q2
Mwongozo huu wa maabara hukupitia baadhi ya vipengele vipya vya Bluetooth SDK ambavyo vilianzishwa kati ya toleo la 20Q4 na 21Q2. Katika maabara hii tutaunda NCP example na uandike programu mwenyeji katika lugha ya Python. Kwa kutumia kipengele kipya kinachobadilika cha GATT, tutaunda pia hifadhidata ya GATT kutoka kwa programu mwenyeji badala ya kutumia Kisanidi cha GATT. Hatimaye kipengele cha Udhibiti wa Nguvu cha LE kinawasilishwa kwa kupanua programu ya mwenyeji.
Masharti
Ili kukamilisha maabara hii, utahitaji zifuatazo:
- BG22 mbili za Thunderboard au WSTK mbili zilizo na ubao wowote wa redio wa EFR32BG/EFR32MG au mchanganyiko wa hizi
- Rahisi Studio 5 imesakinishwa, na Gecko SDK v3.2 ikijumuisha Bluetooth SDKv3.2
- Kompyuta ambayo Python v3.6 au baadaye imewekwa
Kumulika Vifaa Vinavyolengwa kwa Utendaji wa NCP
- Ambatisha vibao vyako viwili vya redio na ufungue Studio ya Urahisi 5
- Chagua moja ya vibao vya redio kwenye kichupo cha Adapta za Utatuzi
- Weka SDK Inayopendekezwa kuwa v3.2.0 kwenye Overview kichupo cha Kizindua view
- Fungua Exampkwenye kichupo cha Miradi na Maonyesho
- Pata onyesho jipya la Bluetooth - NCP.
- Bofya Run ili kuangaza picha lengwa ya NCP kwenye ubao.
(Kumbuka: tofauti na Bluetooth - NCP Tupu, mradi huu haujumuishi hifadhidata iliyojengwa awali ya GATT, lakini ina API ya GATT inayobadilika iliyowezeshwa, ambayo ni sharti la sehemu zinazofuata)
- Rudia hatua sawa kwa ubao mwingine wa redio.
Kuunda Programu ya Seva ya Bluetooth katika Python
Kuanza
- Kifurushi cha pybgapi hutoa uwezekano wa kutoa amri za BGAPI kuelekea kifaa lengwa kutoka kwa Kompyuta kwa kutumia lugha ya programu ya Python. Ili kusakinisha kifurushi hiki chapa ifuatayo kwenye mstari wa amri: pip install pybgapi Kwa habari zaidi kuhusu ziara ya kifurushi https://pypi.org/project/pybgapi/
- Tafuta ufafanuzi wa hivi punde zaidi wa BGAPI file chini
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi na uinakili kwenye folda yako ya kufanya kazi.
- Fungua python bash (aina chatu kwenye CLI)
- Ingiza maktaba ya bgapi kwa amri ifuatayo: >>> agiza bgapi
- Tafuta nambari ya bandari ya COM (km COM49) ya mojawapo ya vibao vyako vya redio. Unapaswa kutafuta "JLink CDC UART Port" kwenye Kidhibiti cha Kifaa au katika programu ya terminal unayoipenda.
- Unganisha kwenye ubao wako wa redio:
- >>> muunganisho = bgapi.SerialConnector('COM49')
- Anzisha maktaba ya pybgapi ya nodi hii:
- >>> nodi = bgapi.BGLib(muunganisho,'sl_bt.xapi')
- Fungua mawasiliano ya BGAPI kuelekea nodi hii:
- >>> nodi.open()
- Angalia ikiwa unaweza kuwasiliana na bodi, kwa kutumia system_hello() amri. Unapaswa kupata jibu la system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(matokeo=0)
- >>> node.bt.system.hello()
- Weka upya nodi yako kwa amri ifuatayo:
- nodi.bt.system.reset(0)
- Sasa unapaswa kupata tukio la system_boot. Ili kuleta tukio la hivi punde, tumia amri ifuatayo:
- evt = node.get_events(max_events=1)
- chapa (evt)
- [bt_evt_system_boot(kubwa=3, ndogo=2, kiraka=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
Kuunda hifadhidata ya GATT
- Programu inayolengwa ya Bluetooth - NCP haijumuishi hifadhidata iliyojengwa awali ya GATT. Hapa tutaunda hifadhidata kutoka kwa nambari. Kwanza anza kikao cha ujenzi wa hifadhidata:
- >>> kikao = node.bt.gattdb.new_session().session
- Ongeza huduma mpya kwenye hifadhidata ya GATT. Hapa tutaongeza huduma ya Ufikiaji wa Jumla iliyopitishwa na Bluetooth SIG. Hii ni huduma ya msingi (0x0) isiyo na bendera iliyowekwa (0x0) na yenye 16bit UUID (0x1800).
- service = node.bt.gattdb.add_service(kikao, 0, 0, bytes.fromhex(“0018”)).huduma
- Ongeza sifa mpya kwenye huduma. Hapa tutaongeza sifa ya Jina la Kifaa kwenye huduma ya Ufikiaji wa Jumla yenye sifa ya READ (0x2), hakuna mahitaji ya usalama (0x0), hakuna bendera (0x0), 16bit UUID (0x2a00), urefu tofauti (0x2), urefu wa juu wa 20 na yenye thamani ya awali ya “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(kikao, huduma, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, ka ('PyBGAPI Example','utf-8′)).tabia
- 3.15 Washa huduma mpya:
- >>> node.bt.gattdb.start_service(kikao,huduma)
- bt_rsp_gattdb_start_service(matokeo=0)
- Amilisha sifa mpya:
- >>> node.bt.gattdb.start_characteristic(kipindi, char)
- bt_rsp_gattdb_start_characteristic(matokeo=0)
- >>> node.bt.gattdb.start_characteristic(kipindi, char)
- Hifadhi mabadiliko na funga kipindi cha uhariri wa hifadhidata:
- >>> node.bt.gattdb.commit(kikao)
- bt_rsp_gattdb_commit(matokeo=0)
Kuunganisha kwa Seva
- 3.18 Kwa kuwa sasa tuna jina la kifaa katika hifadhidata ya GATT, tunaweza kuanza kutangaza. Rafu itatangaza kifaa kiotomatiki kwa jina lililofafanuliwa katika hifadhidata yake ya GATT:
- >>> mtangazaji_set = node.bt.advertiser.create_set().mshiko
- >>> node.bt.advertiser.start(mtangazaji_set, 2, 2)
- bt_rsp_advertiser_start(matokeo=0)
- Anzisha EFR Connect kwenye simu yako, na utafute kifaa chako kikitangaza kama “PyBGAPI Example”
- Unaweza kuunganisha kwenye kifaa na kugundua hifadhidata yake ya GATT ambayo sasa ina sifa ya Jina la Kifaa
Kumbuka: ikiwa unataka ex haraka sanaampbila kuhangaika na hifadhidata ya GATT, bado unaweza kuwaka Bluetooth - NCP Empty example kwa bodi yako, ambayo ina hifadhidata ya msingi iliyojengwa awali ya GATT. Katika kesi hii unachotakiwa kufanya kwa upande wa mwenyeji ni:
- >>> kuagiza bgapi
- >>> muunganisho = bgapi.SerialConnector('COM49')
- >>> nodi = bgapi.BGLib(muunganisho,'sl_bt.xapi')
- >>> nodi.open()
- >>> mtangazaji_set = node.bt.advertiser.create_set().mshiko
- >>> node.bt.advertiser.start(mtangazaji_set, 2, 2)
- bt_rsp_advertiser_start(matokeo=0)
Kuunda Programu ya Mteja wa Bluetooth katika Python
- Kuunda mteja ni ngumu zaidi kuliko kutekeleza seva. Kwa hivyo tutaandika hati ya python. Fungua kihariri chako cha maandishi unachopenda na uunde kipya file, tuiite client.py
- Ingiza zifuatazo:
- Kama ilivyo kwa seva, tutaunganisha kwenye nodi kupitia UART. Tumia nambari ya bandari ya COM ya ubao wako wa pili hapa:
- Kuanzia hapa, maombi yetu yataendeshwa na tukio. Wakati wowote tukio la Bluetooth linapotolewa na rafu, tutashughulikia tukio hilo na kusukuma mbele programu:
- Hebu tufafanue utendaji wa kidhibiti cha tukio na tuongeze kidhibiti cha tukio la system_boot, ambapo tutaanza kuchanganua vifaa vya pembeni. Kumbuka, kwamba kazi hii inapaswa kufafanuliwa kabla ya kitanzi cha wakati (na baada ya ufafanuzi wa kutofautisha kwa nodi).
- Mara skana inapoanzishwa, nodi itakuwa ikipokea ripoti za skanisho. Hebu tuongeze kidhibiti cha tukio kwa ripoti za kuchanganua ndani ya sl_bt_on_event() chaguo la kukokotoa. Ikiwa ripoti ya skanisho itapatikana kwa jina la kifaa kilichotangazwa “PyBGAPI Example", mteja atafungua muunganisho kuelekea kifaa hicho:
- Mara tu unapofikia hatua hii inafaa kuangalia ikiwa mteja wako atapata seva. Hakikisha, kuwa umeanzisha tangazo kwenye kifaa kingine, kisha uhifadhi mteja.py, na uanzishe kutoka kwa safu ya amri. Unapaswa kuona kitu kama hiki:
- Mteja lazima agundue huduma na sifa kwenye seva. Hapa tutagundua huduma ya Ufikiaji wa Jumla na sifa ya Jina la Kifaa, na hatimaye kusoma thamani ya sifa ya Jina la Kifaa. Badilisha chaguo lako la sasa la sl_bt_on_event() na nambari ifuatayo:
- Okoa client.py na uanze kutoka kwa safu ya amri. Unapaswa kuona kitu kama hiki:
Kuongeza Kipengele cha Udhibiti wa Nguvu ya LE
Kumulika Vifaa Vinavyolengwa
Udhibiti wa Nguvu wa LE haujawezeshwa katika zamani ya Bluetoothample miradi kwa chaguo-msingi. Ili kuongeza kipengele hiki, Bluetooth > Kipengele > kipengele cha programu ya PowerControl lazima kisakinishwe.
- Fungua kizindua view ya Urahisi Studio 5.
- Chagua moja ya vifaa vyako kwenye kichupo cha Adapta za Utatuzi. Hakikisha SDK unayopendelea ni v3.2.
- Fungua Exampkwenye kichupo cha Miradi na Maonyesho na upate Bluetooth - NCP Empty example. Bonyeza [Unda] ili kuunda mradi. (Wakati huu hatutaki kujenga hifadhidata ya GATT, kwa hivyo tunatumia NCP Empty, ambayo ina moja chaguomsingi.)
- Fungua kichupo cha Kisanidi cha GATT, chagua sifa ya Jina la Kifaa, na ubadilishe "Silabs Ex.ample" thamani ya awali yenye "PyBGAPI Example" (ili mteja atambue seva). Pia futa urefu wa thamani na 15.
- Bonyeza ctrl-s ili kuhifadhi hifadhidata.
- Katika Kisanidi cha Mradi fungua kichupo cha Vipengele vya Programu.
- Tafuta Bluetooth > Kipengele > kipengele cha programu ya PowerControl, na ubofye [Sakinisha]
- Bofya kwenye cogwheel karibu na kipengele cha PowerControlsoftware ili kuangalia mipaka ya juu na ya chini ya safu ya dhahabu. Weka kikomo cha chini cha 1M
- PHY hadi -45 (badala ya -60). Ingawa katika mazoezi thamani hii si bora, itasababisha marekebisho zaidi ya nguvu ya Tx, ambayo ni nzuri kwa madhumuni ya maonyesho.
- Katika toleo la 3.2.0 la SDK, kisuluhisho kidogo kinahitaji kutumika ili kuweka safu ya dhahabu ipasavyo: fungua sl_bluetooth.c file kupatikana kwenye /autogen folda ya mradi wako na uhamishe sl_bt_init_power_control(); piga simu KABLA sl_bt_init_stack(&config);
- Jenga mradi na uangaze kwenye ubao wako.
- Ikiwa mbao zako mbili ni za aina moja, weka picha sawa kwenye ubao mwingine pia. Ikiwa ubao wako wa pili ni ubao tofauti, basi rudia hatua zilizo hapo juu kwa ubao wa pili.
Kuanzisha Seva na Mteja
- Sasa tena, fungua Python bash, unganisha kwenye ubao wako wa kwanza, na uanze kutangaza
- Rekebisha programu ya mteja wako ili isitoke baada ya kusoma jina la kifaa. Tafuta mistari ifuatayo, na uziweke kwenye maoni:
- Hifadhi na endesha programu ya mteja wako
- py .\client.py
- Weka mbao zako mbili mbali, kisha polepole usogeze karibu na kila mmoja. Sasa unapaswa kuona kwamba stack inaanza kupunguza kiwango chake cha nguvu kutoka 8dBm chaguo-msingi hadi -3dBm (ambayo ni nguvu ndogo ya Tx kwa chaguo-msingi):
Nyaraka / Rasilimali
![]() |
SILICON LABS 21Q2 Maabara ya Vipengele vya Bluetooth [pdf] Mwongozo wa Maelekezo 21Q2, Maabara ya Vipengele vya Bluetooth, Maabara ya Vipengele vya Bluetooth 21Q2, Maabara ya Vipengele, Maabara |