SILICON LABS 21Q2 Bluetooth Features Lab
Manwal tal-Lab tal-Karatteristiċi tal-Bluetooth 21Q2
Dan il-manwal tal-laboratorju jmexxik permezz ta' xi wħud mill-karatteristiċi ġodda tal-Bluetooth SDK li ġew introdotti bejn ir-rilaxx 20Q4 u 21Q2. F'dan il-laboratorju se noħolqu NCP example u ikteb softwer ospitanti bil-lingwa Python. Bl-użu tal-karatteristika dinamika ġdida tal-GATT aħna se nibnu wkoll id-database tal-GATT mis-software ospitanti minflok ma nużaw il-Konfiguratur GATT. Fl-aħħarnett LE Power Control karatteristika hija ppreżentata billi testendi s-softwer ospitanti.
Prerekwiżiti
Biex tlesti dan il-laboratorju, ser ikollok bżonn dan li ġej:
- Żewġ Thunderboard BG22s jew żewġ WSTKs bi kwalunkwe bord tar-radju EFR32BG/EFR32MG jew it-taħlita ta’ dawn
- Simplicity Studio 5 installat, b'Gecko SDK v3.2 inkluż Bluetooth SDKv3.2
- PC li fuqu huwa installat Python v3.6 jew aktar tard
Li jteptep l-Apparat fil-mira għall-Funzjonalità NCP
- Waħħal iż-żewġ bordijiet tar-radju tiegħek u iftaħ Simplicity Studio 5
- Agħżel wieħed mill-bords tar-radju fuq it-tab Debug Adapters
- Issettja l-SDK Preferut għal v3.2.0 fuq Overview tab tal-Launcher view
- Iftaħ l-Eżample Proġetti & Demos tab
- Sib il-ġdida Bluetooth – NCP demo.
- Ikklikkja Run biex itteptep l-immaġni tal-mira NCP lill-bord.
(Nota: b'kuntrast ma' Bluetooth - NCP Vojt, dan il-proġett ma jinkludix database GATT mibnija minn qabel, iżda għandu l-API GATT dinamika attivata, li hija prerekwiżit għat-taqsimiet li jmiss)
- Irrepeti l-istess passi għall-bord tar-radju l-ieħor.
Ħolqien ta 'Applikazzjoni għal Server Bluetooth f'Python
Nibdew
- Il-pakkett pybgapi jipprovdi l-possibbiltà li joħorġu kmandi BGAPI lejn l-apparat fil-mira mill-PC bl-użu tal-lingwa ta 'programmar Python. Biex tinstalla dan il-pakkett ittajpja dan li ġej fil-linja tal-kmand: pip install pybgapi Għal aktar informazzjoni dwar il-pakkett żur https://pypi.org/project/pybgapi/
- Sib l-aħħar definizzjoni BGAPI file taħt
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi u kkopjah fil-folder tax-xogħol tiegħek.
- Iftaħ il-python bash (ittajpja python fis-CLI)
- Importa l-librerija bgapi bil-kmand li ġej: >>> importazzjoni bgapi
- Sib in-numru tal-port COM (eż. COM49) ta' wieħed mill-bords tar-radju tiegħek. Għandek tfittex il-"JLink CDC UART Port" fil-Maniġer tal-Apparat jew fl-app tat-terminal favorita tiegħek.
- Qabbad mal-bord tar-radju tiegħek:
- >>> konnessjoni = bgapi.SerialConnector('COM49')
- Inizjalizza l-librerija pybgapi għal dan in-node:
- >>> node = bgapi.BGLib (konnessjoni,'sl_bt.xapi')
- Iftaħ il-komunikazzjoni BGAPI lejn dan in-node:
- >>> node.open()
- Iċċekkja jekk tistax tikkomunika mal-bord, billi tuża l-kmand system_hello(). Għandek tirċievi rispons system_hello:
- >>> node.bt.system.hello ()
- bt_rsp_system_hello (riżultat=0)
- >>> node.bt.system.hello ()
- Irrisettja n-node tiegħek bil-kmand li ġej:
- node.bt.system.reset(0)
- Issa għandek tikseb avveniment system_boot. Biex iġġib l-aħħar avveniment, uża l-kmand li ġej:
- evt = node.get_events(max_events=1)
- stampa (evt)
- [bt_evt_system_boot(maġġuri=3, minuri=2, garża=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
Bini tad-database tal-GATT
- L-app fil-mira Bluetooth – NCP ma tinkludix database GATT mibnija minn qabel. Hawnhekk se nibnu d-database mill-kodiċi. L-ewwel ibda sessjoni għall-bini tad-database:
- >>> sessjoni = node.bt.gattdb.new_session().sessjoni
- Żid servizz ġdid fid-database tal-GATT. Hawnhekk se nżidu s-servizz ta 'Aċċess Ġeneriku adottat mill-Bluetooth SIG. Dan huwa servizz primarju (0x0) mingħajr bnadar stabbiliti (0x0) u b'UUID ta' 16-il bit (0x1800).
- servizz = node.bt.gattdb.add_service(sessjoni, 0, 0, bytes.fromhex(“0018”)).service
- Żid karatteristika ġdida lis-servizz. Hawnhekk se nżidu l-karatteristika tal-Isem tal-Apparat mas-servizz tal-Aċċess Ġeneriku bi proprjetà READ (0x2), l-ebda rekwiżiti tas-sigurtà (0x0), l-ebda bnadar (0x0), 16bit UUID (0x2a00), tul varjabbli (0x2), tul massimu ta '20 u b'valur inizjali ta' “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(sessjoni, servizz, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Eżample','utf-8′)).karatteristika
- 3.15 Attiva s-servizz il-ġdid:
- >>> node.bt.gattdb.start_service(sessjoni,servizz)
- bt_rsp_gattdb_start_service (riżultat=0)
- Attiva l-karatteristika l-ġdida:
- >>> node.bt.gattdb.start_characteristic(sessjoni, char)
- bt_rsp_gattdb_start_characteristic (riżultat=0)
- >>> node.bt.gattdb.start_characteristic(sessjoni, char)
- Issejvja l-bidliet u agħlaq is-sessjoni tal-editjar tad-database:
- >>> node.bt.gattdb.commit(sessjoni)
- bt_rsp_gattdb_commit (riżultat=0)
Konnessjoni mas-Server
- 3.18 Issa li għandna isem tal-apparat fid-database tal-GATT, nistgħu nibdew nirriklamaw. Il-munzell awtomatikament jirreklama l-apparat bl-isem definit fid-database GATT tiegħu:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(riżultat=0)
- Ibda l-EFR Connect fuq it-telefon tiegħek, u sib ir-reklamar tat-tagħmir tiegħek bħala "PyBGAPI Example ”
- Tista' tikkonnettja mal-apparat u tiskopri d-database GATT tagħha li issa għandha l-karatteristika tal-Isem tal-Apparat
Nota: jekk trid ex malajr ħafnaample mingħajr ma tiddejjaq bid-database tal-GATT, xorta tista' flash il-Bluetooth – NCP Empty example lill-bord tiegħek, li għandu database GATT bażika mibnija minn qabel. F'dan il-każ kull ma għandek tagħmel min-naħa tal-ospitanti huwa:
- >>> importazzjoni bgapi
- >>> konnessjoni = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib (konnessjoni,'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(riżultat=0)
Ħolqien ta 'Applikazzjoni Klijent Bluetooth f'Python
- Il-ħolqien ta' klijent huwa aktar ikkumplikat mill-implimentazzjoni ta' server. Għalhekk se niktbu script python. Iftaħ l-editur tat-test favorit tiegħek u oħloq ġdid file, ejja nsejħulha client.py
- Importa dawn li ġejjin:
- Eżatt bħal fil-każ tas-server, aħna se nikkonnettjaw man-node permezz tal-UART. Uża n-numru tal-port COM tat-tieni bord tiegħek hawn:
- Minn hawn, l-applikazzjoni tagħna se tkun immexxija mill-avvenimenti. Kull meta avveniment Bluetooth jiġi ġġenerat mill-munzell, aħna se nittrattaw l-avveniment u nwasslu l-applikazzjoni:
- Ejja niddefinixxu l-funzjoni tal-immaniġġjar tal-avvenimenti u żid handler għall-avveniment system_boot, fejn nibdew niskennjaw għal apparati periferali. Innota, li din il-funzjoni għandha tkun definita qabel il-loop while (u wara d-definizzjoni tal-varjabbli tan-node).
- Ladarba l-iskaner jinbeda, in-nodu jkun qed jirċievi rapporti tal-iskannjar. Ejja nżidu handler tal-avvenimenti għar-rapporti tal-iskanjar fi ħdan il-funzjoni sl_bt_on_event(). Jekk jinstab rapport tal-iskan bl-isem tal-apparat reklamat “PyBGAPI Example”, il-klijent se jiftaħ konnessjoni lejn dak l-apparat:
- Ladarba inti laħaq dan il-punt ta 'min iċċekkja jekk il-klijent tiegħek isib is-server. Kun żgur, li bdejt ir-reklam fuq l-apparat l-ieħor, imbagħad issalva client.py, u ibdah mil-linja tal-kmand. Għandek tara xi ħaġa bħal din:
- Il-klijent irid jiskopri servizzi u karatteristiċi fuq is-server. Hawnhekk se niskopru s-servizz tal-Aċċess Ġeneriku u l-karatteristika tal-Isem tal-Apparat, u finalment naqraw il-valur tal-karatteristika tal-Isem tal-Apparat. Ibdel il-funzjoni attwali tiegħek sl_bt_on_event() bil-kodiċi li ġej:
- Ħlief client.py u ibda mill-linja tal-kmand. Għandek tara xi ħaġa bħal din:
Żieda LE Power Control Feature
Li jteptep l-Apparati fil-mira
LE Power Control mhuwiex attivat fil-Bluetooth example proġetti awtomatikament. Biex iżżid din il-karatteristika, irid jiġi installat il-komponent tas-software Bluetooth > Feature > PowerControl.
- Iftaħ il-lanċjar view ta' Simplicity Studio 5.
- Agħżel wieħed mill-apparati tiegħek fit-tab Debug Adapters. Kun żgur li l-SDK preferut huwa v3.2.
- Iftaħ l-Eżample Proġetti & Demos tab u ssib il-Bluetooth – NCP Empty example. Agħfas [Oħloq] biex toħloq il-proġett. (Din id-darba ma rridux nibnu d-database tal-GATT, għalhekk nużaw NCP Empty, li għandha waħda default.)
- Iftaħ it-tab tal-Konfiguratur GATT, agħżel il-karatteristika tal-Isem tal-Apparat, u ikteb fuq il-post "Silabs Example” valur inizjali b’“PyBGAPI Example” (sabiex il-klijent jagħraf is-server). Ikteb ukoll fuq it-tul tal-valur b'15.
- Agħfas ctrl-s biex issalva d-database.
- Fil-Konfiguratur tal-Proġett iftaħ it-tab tal-Komponenti tas-Software.
- Sib il-Bluetooth > Karatteristika > komponent tas-softwer PowerControl, u kklikkja [Installa]
- Ikklikkja fuq il-cogwheel ħdejn il-komponent tas-software PowerControl biex tiċċekkja l-limiti ta 'fuq u t'isfel tal-firxa tad-deheb. Issettja l-limitu aktar baxx għal 1M
- PHY sa -45 (minflok -60). Għalkemm fil-prattika dan il-valur mhuwiex ottimali, se jirriżulta f'aktar aġġustamenti tal-qawwa Tx, li huwa tajjeb għal skopijiet ta 'dimostrazzjoni.
- Fil-verżjoni SDK 3.2.0, jeħtieġ li tiġi applikata soluzzjoni żgħira biex tissettja l-firxa tad-deheb kif suppost: tiftaħ is-sl_bluetooth.c file misjuba fil-folder / autogen tal-proġett tiegħek u ċċaqlaq is-sl_bt_init_power_control(); sejħa tal-funzjoni QABEL sl_bt_init_stack(&config);
- Ibni l-proġett u flash lill-bord tiegħek.
- Jekk iż-żewġ bordijiet tiegħek huma tal-istess tip, flash l-istess immaġni lill-bord l-ieħor ukoll. Jekk it-tieni bord tiegħek huwa bord differenti, imbagħad irrepeti l-passi ta 'hawn fuq għat-tieni bord.
Jibda s-Server u l-Klijent
- Issa għal darb'oħra, iftaħ il-bash Python, qabbad mal-ewwel bord tiegħek, u ibda r-reklamar
- Immodifika l-applikazzjoni tal-klijent tiegħek sabiex ma toħroġx wara li taqra l-isem tal-apparat. Sib il-linji li ġejjin, u poġġihom f'kumment:
- Issejvja u mexxi l-applikazzjoni tal-klijent tiegħek
- py .\client.py
- Poġġi ż-żewġ bordijiet tiegħek 'il bogħod, imbagħad ċċaqlaqhom bil-mod eqreb lejn xulxin. Issa għandek tara li l-munzell jibda jnaqqas il-livell tal-qawwa tiegħu minn 8dBm default 'l isfel għal -3dBm (li hija l-qawwa Tx minima b'mod awtomatiku):
Dokumenti / Riżorsi
![]() |
SILICON LABS 21Q2 Bluetooth Features Lab [pdfManwal tal-Istruzzjonijiet 21Q2, Laboratorju tal-Karatteristiċi tal-Bluetooth, Laboratorju tal-Karatteristiċi tal-Bluetooth 21Q2, Laboratorju tal-Karatteristiċi, Laboratorju |