SILICON LABS 21Q2 Bluetooth Features Lab
Manuale di laboratoriu di funzioni Bluetooth 21Q2
Stu manuale di laboratoriu vi guida à traversu alcune di e novi funzioni di SDK Bluetooth chì sò state introdutte trà a versione 20Q4 è 21Q2. In stu labburatoriu avemu da creà un NCP example è scrive un software host in lingua Python. Utilizendu a nova funzione GATT dinamica, custruiremu ancu a basa di dati GATT da u software host invece di utilizà u GATT Configurator. Infine, a funzione LE Power Control hè presentata allargendu u software host.
Prerequisites
Per compie stu labburatoriu, avete bisognu di i seguenti:
- Dui Thunderboard BG22 o dui WSTK cù qualsiasi scheda radio EFR32BG/EFR32MG o u mischju di questi
- Simplicity Studio 5 installatu, cù Gecko SDK v3.2 cumpresu Bluetooth SDKv3.2
- Un PC nantu à quale Python v3.6 o più tardi hè stallatu
Flashing i Dispositivi Target per a Funzionalità NCP
- Attaccate e vostre duie schede radio è apre Simplicity Studio 5
- Selezziunate unu di i bordi di radiu nantu à a scheda Debug Adapters
- Pone u SDK Preferitu à v3.2.0 nantu à u Overview tab di u Launcher view
- Aprite l'Example Projects & Demos tab
- Truvate a nova demo Bluetooth - NCP.
- Cliccate Run per lampà l'imaghjini di destinazione NCP à u bordu.
(Nota: in cuntrastu cù Bluetooth - NCP Empty, stu prughjettu ùn include micca una basa di dati GATT precustruita, ma hà l'API GATT dinamica attivata, chì hè un prerequisite per e sezioni seguenti)
- Repetite i stessi passi per l'altra scheda radio.
Crea una applicazione di u servitore Bluetooth in Python
Cuminciatu
- U pacchettu pybgapi furnisce a pussibilità di emette cumandamenti BGAPI versu u dispositivu di destinazione da u PC utilizendu a lingua di prugrammazione Python. Per installà stu pacchettu scrivite u seguente in a linea di cummanda: pip install pybgapi Per più infurmazione nantu à u pacchettu visitate https://pypi.org/project/pybgapi/
- Truvate l'ultima definizione BGAPI file sottu
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi è copiate in u vostru cartulare di travagliu.
- Aprite u python bash (type python in a CLI)
- Importa a biblioteca bgapi cù u cumandimu seguente: >>> impurta bgapi
- Truvate u numeru di portu COM (per esempiu COM49) di una di e vostre schede radio. Duvete cercà u "JLink CDC UART Port" in u Manager di Dispositivi o in a vostra app terminal preferita.
- Cunnettete à a vostra scheda radio:
- >>> cunnessione = bgapi.SerialConnector('COM49')
- Inizializza a biblioteca pybgapi per questu node:
- >>> node = bgapi.BGLib (cunnessione,'sl_bt.xapi')
- Apertura a cumunicazione BGAPI versu stu nodu:
- >>> node.open()
- Verificate se pudete cumunicà cù u bordu, usendu u cumandamentu system_hello (). Duvete ottene una risposta system_hello:
- >>> node.bt.system.hello ()
- bt_rsp_system_hello (result=0)
- >>> node.bt.system.hello ()
- Resettate u vostru node cù u cumandimu seguente:
- node.bt.system.reset (0)
- Avà duvete ottene un eventu system_boot. Per piglià l'ultimu avvenimentu, utilizate u cumandimu seguitu:
- evt = node.get_events(max_events=1)
- stampa (evt)
- [bt_evt_system_boot (major = 3, minor = 2, patch = 0, build = 774, bootloader = 17563648, hw = 1, hash = 1181938724)]
Custruì a basa di dati GATT
- L'app di destinazione Bluetooth - NCP ùn include micca una basa di dati GATT predefinita. Quì avemu da custruisce a basa di dati da u codice. Prima cuminciate una sessione per a creazione di basa di dati:
- >>> sessione = node.bt.gattdb.new_session().session
- Aghjunghjite un novu serviziu à a basa di dati GATT. Quì aghjunghjemu u serviziu di Accessu Generic aduttatu da u Bluetooth SIG. Questu hè un serviziu primariu (0x0) senza bandieri (0x0) è cù un UUID 16bit (0x1800).
- serviziu = node.bt.gattdb.add_service (sessione, 0, 0, bytes.fromhex ("0018")).
- Aghjunghjite una nova caratteristica à u serviziu. Quì aghjunghjemu a caratteristica di u nome di u dispositivu à u serviziu d'accessu genericu cù a pruprietà READ (0x2), senza esigenze di sicurezza (0x0), senza bandiera (0x0), UUID 16bit (0x2a00), lunghezza variabile (0x2), lunghezza massima di 20 è cù u valore iniziale di "PyBGAPI
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic (sessione, serviziu, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Example','utf-8′)).caratteristicu
- 3.15 Attivà u novu serviziu:
- >>> node.bt.gattdb.start_service (sessione, serviziu)
- bt_rsp_gattdb_start_service (result=0)
- Attivà a nova caratteristica:
- >>> node.bt.gattdb.start_characteristic (sessione, char)
- bt_rsp_gattdb_start_characteristic(result=0)
- >>> node.bt.gattdb.start_characteristic (sessione, char)
- Salvà i cambiamenti è chjude a sessione di edizione di basa di dati:
- >>> node.bt.gattdb.commit (sessione)
- bt_rsp_gattdb_commit(result=0)
Cunnessu à u Servitore
- 3.18 Avà chì avemu un nome di u dispositivu in a basa di dati GATT, pudemu inizià a publicità. A pila annunzierà automaticamente u dispusitivu cù u nome definitu in a so basa di dati GATT:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start (advertiser_set, 2, 2)
- bt_rsp_advertiser_start(result=0)
- Cumincià EFR Connect nant'à u vostru telefunu, è truvate a publicità di u vostru dispositivu cum'è "PyBGAPI Example "
- Pudete cunnette à u dispusitivu è scopre a so basa di dati GATT chì avà hà a caratteristica di u nome di u dispositivu
Nota: se vulete un ex assai rapiduample senza fastidiu cù a basa di dati GATT, pudete sempre lampà u Bluetooth - NCP Empty example à u vostru bordu, chì hà una basa di basa di basa GATT prebuilt. In questu casu, tuttu ciò chì avete da fà da u latu di l'ospite hè:
- >>> impurtà bgapi
- >>> cunnessione = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib (cunnessione,'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(result=0)
Crià una Applicazione Cliente Bluetooth in Python
- A creazione di un cliente hè più complicata chè l'implementazione di un servitore. Dunque scriveremu un script python. Aprite u vostru editore di testu preferitu è creanu un novu file, chjamemu client.py
- Importa i seguenti:
- Cum'è in u casu di u servitore, avemu da cunnette à u node via UART. Aduprate u numeru di portu COM di a vostra seconda scheda quì:
- Da quì, a nostra applicazione serà guidata da eventi. Ogni volta chì un avvenimentu Bluetooth hè generatu da a pila, gestioneremu l'avvenimentu è guidà l'applicazione:
- Definimu a funzione di gestione di l'avvenimentu è aghjunghje un gestore per l'avvenimentu system_boot, induve avemu da principià a scanning per i dispositi periferichi. Nota, chì sta funzione deve esse definita prima di u ciclu while (è dopu a definizione di a variabile di node).
- Una volta chì u scanner hè iniziatu, u node riceverà rapporti di scansione. Aghjunghjemu un gestore di eventi per i rapporti di scansione in a funzione sl_bt_on_event (). Se si trova un rapportu di scansione cù u nome di u dispositivu annunziatu "PyBGAPI Example", u cliente apre una cunnessione versu quellu dispusitivu:
- Una volta ghjuntu à questu puntu, vale a pena verificà se u vostru cliente trova u servitore. Assicuratevi chì avete principiatu l'annunziu nantu à l'altru dispusitivu, dopu salvà client.py, è principià da a linea di cumanda. Duvete vede qualcosa cum'è questu:
- U cliente deve scopre servizii è caratteristiche nantu à u servitore. Quì scupreremu u serviziu di Accessu Generic è a caratteristica di u Nome di u Dispositivu, è infine leghje u valore di a caratteristica di u Nome di u Dispositivu. Sustituisce a vostra funzione attuale sl_bt_on_event () cù u codice seguente:
- Salvà client.py è inizià da a linea di cummanda. Duvete vede qualcosa cum'è questu:
Adding LE Power Control Feature
Flashing i Dispositivi Target
LE Power Control ùn hè micca attivatu in u Bluetooth example prughjetti per difettu. Per aghjunghje sta funzione, u cumpunente di u software Bluetooth> Funzione> PowerControl deve esse installatu.
- Aprite u launcher view di Simplicity Studio 5.
- Selezziunate unu di i vostri dispositi in a tabulazione Debug Adapters. Assicuratevi chì u SDK preferitu hè v3.2.
- Aprite l'Example Projects & Demos tab è truvà u Bluetooth - NCP Empty example. Press [Create] per creà u prugettu. (Questa volta ùn vulemu micca custruisce a basa di dati GATT, cusì usemu NCP Empty, chì hà un predeterminatu).
- Apertura a tabulazione GATT Configurator, selezziunate a caratteristica di u nome di u dispositivu, è sovrascrive u "Silabs Example" valore iniziale cù "PyBGAPI Example" (per chì u cliente ricunnosce u servitore). Sovrascrivi ancu a lunghezza di u valore cù 15.
- Press ctrl-s per salvà a basa di dati.
- In u Configuratore di u Prughjettu apre a tabulazione Componenti Software.
- Truvate u Bluetooth> Funzione> Cumpunente di u software PowerControl, è cliccate [Installa]
- Cliccate nant'à u cogwheel accantu à u cumpunenti PowerControlsoftware à verificà i limiti supiriuri è bassu di a gamma d'oru. Stabbilisce u limitu minimu per 1M
- PHY à -45 (invece di -60). Ancu s'ellu in a pratica, stu valore ùn hè micca ottimali, hà da risultatu in più aghjustamenti di putenza Tx, chì hè bonu per scopi di dimostrazione.
- In a versione SDK 3.2.0, una piccula soluzione deve esse applicata per stabilisce a gamma d'oru bè: apre u sl_bluetooth.c file trovu in u cartulare / autogen di u vostru prughjettu è move u sl_bt_init_power_control (); chjama di funzione BEFORE sl_bt_init_stack(&config);
- Custruite u prugettu è lampate à u vostru bordu.
- Se i vostri dui tavulini sò di u stessu tipu, lampate a stessa maghjina à l'altru tavulu ancu. Se a vostra seconda tavola hè una tavola sfarente, ripetite i passi sopra per a seconda tavola.
Partendu u Servitore è u Cliente
- Avà torna, apre u Python bash, cunnette à u vostru primu bordu, è cuminciate a publicità
- Mudificà a vostra applicazione cliente in modu chì ùn esce micca dopu avè lettu u nome di u dispusitivu. Truvate e seguenti linee, è mette in un cumentu:
- Salvà è eseguisce a vostra applicazione cliente
- py .\client.py
- Pone i vostri dui tavulini luntanu, poi avvicinassi lentamente l'un à l'altru. Avà duvete vede chì a pila principia à diminuisce u so livellu di putenza da 8dBm predeterminatu finu à -3dBm (chì hè a putenza Tx minima per difettu):
Documenti / Risorse
![]() |
SILICON LABS 21Q2 Bluetooth Features Lab [pdfManuale d'istruzzioni 21Q2, Lab di Funzioni Bluetooth, 21Q2 Lab di Funzioni Bluetooth, Lab di Funzioni, Lab |