SILICON LABS 21Q2 Bluetooth Features Laboratwa
Bluetooth 21Q2 Karakteristik laboratwa manyèl
Manyèl laboratwa sa a fè w konnen kèk nan nouvo karakteristik SDK Bluetooth ki te prezante ant 20Q4 ak 21Q2. Nan laboratwa sa a nou pral kreye yon ansyen NCPample epi ekri yon lojisyèl lame nan lang Python. Sèvi ak nouvo karakteristik GATT dinamik nou pral bati baz done a GATT soti nan lojisyèl lame a olye pou yo itilize GATT Configurator la. Finalman LE Power Control karakteristik prezante pa pwolonje lojisyèl lame a.
Prekondisyon
Pou konplete laboratwa sa a, w ap bezwen sa ki annapre yo:
- De Thunderboard BG22 oswa de WSTK ak nenpòt tablo radyo EFR32BG/EFR32MG oswa melanj sa yo.
- Simplicity Studio 5 enstale, ak Gecko SDK v3.2 ki gen ladan Bluetooth SDKv3.2
- Yon PC sou ki Python v3.6 oswa pita enstale
Fè flache Aparèy Sib yo pou Fonksyonalite NCP
- Tache de tablo radyo ou yo epi ouvri Simplicity Studio 5
- Chwazi youn nan tablo radyo yo sou tab la Debug Adapters
- Mete SDK pi pito a v3.2.0 sou laview tab nan lanseur la view
- Louvri Example Pwojè & Demo tab
- Jwenn nouvo Bluetooth - NCP Demo a.
- Klike sou Kouri pou flash imaj sib NCP la sou tablo a.
(Remak: Kontrèman ak Bluetooth - NCP Vide, pwojè sa a pa gen ladan yon baz done GATT prekonstwi, men li gen API dinamik GATT pèmèt, ki se yon avantou pou pwochen seksyon yo)
- Repete menm etap yo pou lòt tablo radyo a.
Kreye yon aplikasyon sèvè Bluetooth nan Python
Kòmanse
- Pake pybgapi a bay posiblite pou bay kòmandman BGAPI nan direksyon aparèy sib la nan PC a lè l sèvi avèk langaj pwogramasyon Python. Pou enstale pake sa a tape sa ki annapre yo nan liy lòd la: pip install pybgapi Pou plis enfòmasyon sou vizite pake a https://pypi.org/project/pybgapi/
- Jwenn dènye definisyon BGAPI la file anba
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi epi kopye li nan katab k ap travay ou a.
- Louvri python bash la (tape python nan CLI a)
- Enpòte bibliyotèk bgapi a ak lòd sa a: >>> enpòte bgapi
- Jwenn nimewo pò COM (eg COM49) nan youn nan tablo radyo ou yo. Ou ta dwe chèche "JLink CDC UART Port" nan Manadjè Aparèy la oswa nan aplikasyon tèminal ou pi renmen an.
- Konekte ak tablo radyo ou a:
- >>> koneksyon = bgapi.SerialConnector('COM49')
- Inisyalize bibliyotèk pybgapi pou ne sa a:
- >>> ne = bgapi.BGLib (koneksyon,'sl_bt.xapi')
- Louvri kominikasyon BGAPI nan direksyon ne sa a:
- >>> node.open()
- Tcheke si ou ka kominike ak tablo a, lè l sèvi avèk kòmandman system_hello(). Ou ta dwe jwenn yon repons system_hello:
- >>> node.bt.system.hello ()
- bt_rsp_system_hello (rezilta=0)
- >>> node.bt.system.hello ()
- Reyajiste ne ou ak lòd sa a:
- node.bt.system.reset(0)
- Koulye a, ou ta dwe jwenn yon evènman system_boot. Pou jwenn dènye evènman an, sèvi ak lòd sa a:
- evt = node.get_events(max_events=1)
- enprime (evt)
- [bt_evt_system_boot (majò = 3, minè = 2, patch = 0, bati = 774, bootloader = 17563648, hw = 1, hash = 1181938724)]
Konstwi baz done GATT
- Aplikasyon sib Bluetooth - NCP a pa gen ladan yon baz done GATT prekonstwi. Isit la nou pral bati baz done a soti nan kòd. Premye kòmanse yon sesyon pou bati baz done:
- >>> sesyon = node.bt.gattdb.new_session().session
- Ajoute yon nouvo sèvis nan baz done GATT la. Isit la nou pral ajoute sèvis Jenerik Aksè adopte pa Bluetooth SIG la. Sa a se yon sèvis prensipal (0x0) ki pa mete drapo (0x0) ak yon UUID 16bit (0x1800).
- sèvis = node.bt.gattdb.add_service (sesyon, 0, 0, bytes.fromhex ("0018")).
- Ajoute yon nouvo karakteristik nan sèvis la. Isit la nou pral ajoute karakteristik Non Aparèy la nan sèvis Aksè Jenerik la ak pwopriyete READ (0x2), pa gen okenn kondisyon sekirite (0x0), pa gen okenn drapo (0x0), 16bit UUID (0x2a00), longè varyab (0x2), longè maksimòm 20 ak ak valè inisyal "PyBGAPI
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic(sesyon, sèvis, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Egzample','utf-8′)).karakteristik
- 3.15 Aktive nouvo sèvis la:
- >>> node.bt.gattdb.start_service(sesyon,sèvis)
- bt_rsp_gattdb_start_service(rezilta=0)
- Aktive nouvo karakteristik:
- >>> node.bt.gattdb.start_characteristic(sesyon, char)
- bt_rsp_gattdb_start_characteristic(rezilta=0)
- >>> node.bt.gattdb.start_characteristic(sesyon, char)
- Sove chanjman yo epi fèmen sesyon koreksyon baz done a:
- >>> node.bt.gattdb.commit (sesyon)
- bt_rsp_gattdb_commit(rezilta=0)
Konekte ak sèvè a
- 3.18 Kounye a ke nou gen yon non aparèy nan baz done GATT, nou ka kòmanse fè piblisite. Pile a pral otomatikman fè reklam aparèy la ak non an defini nan baz done GATT li yo:
- >>> advertiser_set = node.bt.advertiser.create_set().manch
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(rezilta=0)
- Kòmanse EFR Connect sou telefòn ou, epi jwenn piblisite aparèy ou an kòm "PyBGAPI Example ”
- Ou ka konekte ak aparèy la epi dekouvri baz done GATT li yo ki kounye a gen karakteristik Non Aparèy la
Nòt: si ou vle yon ansyen trè rapidample san deranje ak baz done a GATT, ou ka toujou flash Bluetooth la - NCP Vide example nan tablo ou a, ki gen yon baz done GATT debaz prebati. Nan ka sa a tout sa ou dwe fè sou bò lame a se:
- >>> enpòte bgapi
- >>> koneksyon = bgapi.SerialConnector('COM49')
- >>> ne = bgapi.BGLib (koneksyon,'sl_bt.xapi')
- >>> node.open()
- >>> advertiser_set = node.bt.advertiser.create_set().manch
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(rezilta=0)
Kreye yon aplikasyon kliyan Bluetooth nan Python
- Kreye yon kliyan se pi konplike pase mete ann aplikasyon yon sèvè. Se poutèt sa nou pral ekri yon script python. Louvri editè tèks ou pi renmen epi kreye yon nouvo file, ann rele li client.py
- Enpòte bagay sa yo:
- Jis tankou nan ka a nan sèvè a, nou pral konekte nan ne a atravè UART. Sèvi ak nimewo pò COM nan dezyèm tablo ou a isit la:
- Soti isit la, aplikasyon nou an pral kondwi evènman. Chak fwa pile a kreye yon evènman Bluetooth, nou pral jere evènman an epi avanse aplikasyon an:
- Ann defini fonksyon moun kap okipe evènman an epi ajoute yon moun ki okipe evènman system_boot, kote nou pral kòmanse analize pou aparèy periferik yo. Remake byen, ke fonksyon sa a ta dwe defini anvan bouk la pandan y ap (ak apre definisyon an nan varyab la ne).
- Yon fwa yo eskanè a kòmanse, ne a pral resevwa rapò eskanè. Ann ajoute yon moun kap okipe evènman pou rapò eskanè nan fonksyon sl_bt_on_event(). Si yo jwenn yon rapò eskanè ak non aparèy yo pibliye a "PyBGAPI Example", kliyan an pral louvri yon koneksyon nan direksyon aparèy sa a:
- Yon fwa ou rive nan pwen sa a li vo tcheke si kliyan ou jwenn sèvè a. Asire w ke ou te kòmanse reklam la sou lòt aparèy la, Lè sa a, sove client.py, epi kòmanse li soti nan liy lan lòd. Ou ta dwe wè yon bagay tankou sa a:
- Kliyan an dwe dekouvri sèvis ak karakteristik sou sèvè a. Isit la nou pral dekouvri sèvis Aksè Jenerik la ak karakteristik Non Aparèy la, epi finalman li valè karakteristik Non Aparèy la. Ranplase fonksyon sl_bt_on_event() ou ye kounye a ak kòd sa a:
- Sove client.py epi kòmanse li nan liy lòd la. Ou ta dwe wè yon bagay tankou sa a:
Ajoute LE Power Control Feature
Fè flache Aparèy sib yo
LE Power Control pa pèmèt nan Bluetooth ex laample pwojè pa default. Pou ajoute karakteristik sa a, Bluetooth > Karakteristik > PowerControl eleman lojisyèl dwe enstale.
- Louvri lans la view nan Simplicity Studio 5.
- Chwazi youn nan aparèy ou yo nan tab la Debug Adapters. Asire w ke SDK pi pito a se v3.2.
- Louvri Examponglet Pwojè & Demo epi jwenn Bluetooth – NCP Vide example. Peze [Kreye] pou kreye pwojè a. (Fwa sa a, nou pa vle bati baz done GATT, kidonk nou itilize NCP Vide, ki gen yon sèl default.)
- Louvri tab la GATT Configurator, chwazi karakteristik Non Aparèy la, epi ranplase "Silabs Example" valè inisyal ak "PyBGAPI Egzample” (pou kliyan an rekonèt sèvè a). Epitou ranplase longè valè a ak 15.
- Peze ctrl-s pou konsève pou baz done a.
- Nan Configurator Pwojè a, louvri tab la Konpozan Lojisyèl.
- Jwenn Bluetooth > Karakteristik > eleman lojisyèl PowerControl, epi klike sou [Enstale]
- Klike sou rou dentad ki akote eleman PowerControlsoftware pou tcheke limit anwo ak pi ba yo nan seri an lò. Mete limit ki pi ba a pou 1M
- PHY a -45 (olye pou yo -60). Malgre ke nan pratik valè sa a pa pi bon, li pral lakòz plis ajisteman pouvwa Tx, ki bon pou rezon demonstrasyon.
- Nan vèsyon SDK 3.2.0, yon ti solisyon bezwen aplike pou mete seri an lò byen: louvri sl_bluetooth.c la. file yo te jwenn nan /autogen katab pwojè ou a epi deplase sl_bt_init_power_control(); apèl fonksyon ANVAN sl_bt_init_stack(&config);
- Bati pwojè a epi flash li sou tablo ou.
- Si de tablo ou yo se menm kalite, flash menm imaj la sou lòt tablo a tou. Si dezyèm tablo ou a se yon tablo diferan, Lè sa a, repete etap ki anwo yo pou dezyèm tablo a.
Kòmanse sèvè a ak kliyan an
- Koulye a, ankò, louvri bash Python la, konekte ak premye tablo ou a, epi kòmanse fè piblisite
- Modifye aplikasyon kliyan ou an pou li pa soti apre li fin li non aparèy la. Jwenn liy sa yo, epi mete yo nan yon kòmantè:
- Sove epi kouri aplikasyon kliyan ou a
- py .\client.py
- Mete de ankadreman ou yo byen lwen, epi tou dousman deplase yo pi pre youn ak lòt. Koulye a, ou ta dwe wè ke chemine a kòmanse diminye nivo pouvwa li soti nan default 8dBm desann nan -3dBm (ki se minimòm pouvwa Tx pa default):
Dokiman / Resous
![]() |
SILICON LABS 21Q2 Bluetooth Features Laboratwa [pdfManyèl Enstriksyon 21Q2, Bluetooth Features Lab, 21Q2 Bluetooth Features Lab, Features Lab, Lab |