SILICON LABS 21Q2 Bluetooth Caratteristiche Lab
Bluetooth 21Q2 Caratteristiche Manuale di laboratorio
Questo manuale di laboratorio illustra alcune delle nuove funzionalità dell'SDK Bluetooth introdotte tra la versione 20Q4 e 21Q2. In questo laboratorio creeremo un NCP example e scrivere un software host in linguaggio Python. Utilizzando la nuova funzionalità GATT dinamica, creeremo anche il database GATT dal software host invece di utilizzare il configuratore GATT. Infine la funzione LE Power Control viene presentata estendendo il software host.
Prerequisiti
Per completare questo lab, avrai bisogno di quanto segue:
- Due Thunderboard BG22 o due WSTK con qualsiasi scheda radio EFR32BG/EFR32MG o il mix di questi
- Simplicity Studio 5 installato, con Gecko SDK v3.2 incluso Bluetooth SDKv3.2
- Un PC su cui è installato Python v3.6 o successivo
Lampeggiamento dei dispositivi di destinazione per la funzionalità NCP
- Collega le tue due schede radio e apri Simplicity Studio 5
- Seleziona una delle schede radio nella scheda Debug Adapters
- Impostare l'SDK preferito su v3.2.0 in Overview scheda del programma di avvio view
- Apri l'esample scheda Progetti e demo
- Trova la nuova demo Bluetooth – NCP.
- Fare clic su Esegui per eseguire il flashing dell'immagine del bersaglio NCP sulla scheda.
(Nota: a differenza di Bluetooth – NCP Empty, questo progetto non include un database GATT predefinito, ma ha l'API GATT dinamica abilitata, che è un prerequisito per le sezioni successive)
- Ripetere gli stessi passaggi per l'altra scheda radio.
Creazione di un'applicazione server Bluetooth in Python
Iniziare
- Il pacchetto pybgapi offre la possibilità di inviare comandi BGAPI verso il dispositivo di destinazione dal PC utilizzando il linguaggio di programmazione Python. Per installare questo pacchetto digita quanto segue nella riga di comando: pip install pybgapi Per ulteriori informazioni sul pacchetto visita https://pypi.org/project/pybgapi/
- Individua l'ultima definizione BGAPI file Sotto
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi e copialo nella cartella di lavoro.
- Apri python bash (digita python nella CLI)
- Importa la libreria bgapi con il seguente comando: >>> import bgapi
- Trova il numero della porta COM (es. COM49) di una delle tue schede radio. Dovresti cercare "JLink CDC UART Port" in Gestione dispositivi o nella tua app terminale preferita.
- Collegati alla tua scheda radio:
- >>> connessione = bgapi.SerialConnector('COM49')
- Inizializza la libreria pybgapi per questo nodo:
- >>> nodo = bgapi.BGLib(connessione,'sl_bt.xapi')
- Aprire la comunicazione BGAPI verso questo nodo:
- >>> nodo.open()
- Controlla se riesci a comunicare con la scheda, usando il comando system_hello(). Dovresti ottenere una risposta system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(risultato=0)
- >>> node.bt.system.hello()
- Reimposta il tuo nodo con il seguente comando:
- nodo.bt.system.reset(0)
- Ora dovresti ottenere un evento system_boot. Per recuperare l'ultimo evento, utilizzare il comando seguente:
- evt = nodo.get_events(max_events=1)
- stampa (evt)
- [bt_evt_system_boot(principale=3, minore=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
Realizzazione del database GATT
- L'app di destinazione Bluetooth – NCP non include un database GATT predefinito. Qui creeremo il database dal codice. Innanzitutto avvia una sessione per la creazione di database:
- >>> sessione = nodo.bt.gattdb.new_session().session
- Aggiungi un nuovo servizio al database GATT. Qui aggiungeremo il servizio di Accesso Generico adottato dal Bluetooth SIG. Questo è un servizio primario (0x0) senza flag impostati (0x0) e con un UUID a 16 bit (0x1800).
- servizio = node.bt.gattdb.add_service(session, 0, 0, bytes.fromhex(“0018”)).service
- Aggiungi una nuova caratteristica al servizio. Qui aggiungeremo la caratteristica Device Name al servizio di accesso generico con proprietà READ (0x2), nessun requisito di sicurezza (0x0), nessun flag (0x0), UUID a 16 bit (0x2a00), lunghezza variabile (0x2), lunghezza massima 20 e con valore iniziale di “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(session, service, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Example','utf-8')).caratteristica
- 3.15 Attiva il nuovo servizio:
- >>> node.bt.gattdb.start_service(sessione,servizio)
- bt_rsp_gattdb_start_service(risultato=0)
- Attiva la nuova caratteristica:
- >>> node.bt.gattdb.start_characteristic(sessione, carattere)
- bt_rsp_gattdb_start_characteristic(risultato=0)
- >>> node.bt.gattdb.start_characteristic(sessione, carattere)
- Salva le modifiche e chiudi la sessione di modifica del database:
- >>> node.bt.gattdb.commit(sessione)
- bt_rsp_gattdb_commit(risultato=0)
Connessione al server
- 3.18 Ora che abbiamo un nome di dispositivo nel database GATT, possiamo iniziare a fare pubblicità. Lo stack pubblicizzerà automaticamente il dispositivo con il nome definito nel suo database GATT:
- >>> set_inserzionista = nodo.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(risultato=0)
- Avvia EFR Connect sul tuo telefono e trova la pubblicità del tuo dispositivo come "PyBGAPI Example "
- Puoi connetterti al dispositivo e scoprire il suo database GATT che ora ha la caratteristica Device Name
Nota: se vuoi un ex molto veloceample senza preoccuparti del database GATT, puoi comunque eseguire il flashing del Bluetooth – NCP Empty esample alla tua scheda, che ha un database GATT predefinito di base. In questo caso tutto ciò che devi fare sul lato host è:
- >>> importa bgapi
- >>> connessione = bgapi.SerialConnector('COM49')
- >>> nodo = bgapi.BGLib(connessione,'sl_bt.xapi')
- >>> nodo.open()
- >>> set_inserzionista = nodo.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(risultato=0)
Creazione di un'applicazione client Bluetooth in Python
- La creazione di un client è più complicata dell'implementazione di un server. Pertanto scriveremo uno script python. Apri il tuo editor di testo preferito e creane uno nuovo file, chiamiamolo client.py
- Importa quanto segue:
- Proprio come nel caso del server, ci collegheremo al nodo tramite UART. Usa qui il numero della porta COM della tua seconda scheda:
- Da qui, la nostra applicazione sarà guidata dagli eventi. Ogni volta che un evento Bluetooth viene generato dallo stack, gestiremo l'evento e porteremo avanti l'applicazione:
- Definiamo la funzione del gestore eventi e aggiungiamo un gestore per l'evento system_boot, dove inizieremo la scansione dei dispositivi periferici. Si noti che questa funzione dovrebbe essere definita prima del ciclo while (e dopo la definizione della variabile nodo).
- Una volta avviato lo scanner, il nodo riceverà i rapporti di scansione. Aggiungiamo un gestore di eventi per i rapporti di scansione all'interno della funzione sl_bt_on_event(). Se viene trovato un rapporto di scansione con il nome del dispositivo pubblicizzato "PyBGAPI Example", il client aprirà una connessione verso quel dispositivo:
- Una volta raggiunto questo punto, vale la pena controllare se il tuo client trova il server. Assicurati di aver avviato l'annuncio sull'altro dispositivo, quindi salva client.py e avvialo dalla riga di comando. Dovresti vedere qualcosa del genere:
- Il client deve scoprire servizi e caratteristiche sul server. Qui scopriremo il servizio di accesso generico e la caratteristica Device Name e infine leggeremo il valore della caratteristica Device Name. Sostituisci la tua attuale funzione sl_bt_on_event() con il seguente codice:
- Salva client.py e avvialo dalla riga di comando. Dovresti vedere qualcosa del genere:
Aggiunta della funzione di controllo dell'alimentazione LE
Lampeggiamento dei dispositivi di destinazione
LE Power Control non è abilitato nel Bluetooth esampi progetti per impostazione predefinita. Per aggiungere questa funzionalità, è necessario installare il componente software Bluetooth > Funzionalità > PowerControl.
- Apri il programma di avvio view di Simplicity Studio 5.
- Seleziona uno dei tuoi dispositivi nella scheda Debug Adapters. Assicurati che l'SDK preferito sia v3.2.
- Apri l'esample scheda Projects & Demos e trova il Bluetooth – NCP Empty example. Premere [Crea] per creare il progetto. (Questa volta non vogliamo creare il database GATT, quindi utilizziamo NCP Empty, che ne ha uno predefinito.)
- Aprire la scheda Configuratore GATT, selezionare la caratteristica Nome dispositivo e sovrascrivere “Silabs Example” valore iniziale con “PyBGAPI Example” (in modo che il client riconosca il server). Sovrascrivi anche la lunghezza del valore con 15.
- Premere ctrl-s per salvare il database.
- Nel configuratore di progetto aprire la scheda Componenti software.
- Trova il componente software Bluetooth > Funzionalità > PowerControl e fai clic su [Installa]
- Fare clic sulla ruota dentata accanto al componente del software PowerControl per controllare i limiti superiore e inferiore dell'intervallo aureo. Impostare il limite inferiore per 1M
- PHY a -45 (invece di -60). Sebbene in pratica questo valore non sia ottimale, risulterà in più regolazioni della potenza Tx, il che è buono a scopo dimostrativo.
- Nella versione SDK 3.2.0, è necessario applicare una piccola soluzione alternativa per impostare correttamente l'intervallo aureo: aprire sl_bluetooth.c file trovato nella cartella /autogen del tuo progetto e sposta il file sl_bt_init_power_control(); chiamata di funzione PRIMA sl_bt_init_stack(&config);
- Costruisci il progetto e flashalo sulla tua bacheca.
- Se le tue due schede sono dello stesso tipo, esegui il flashing della stessa immagine anche sull'altra scheda. Se la tua seconda scheda è una scheda diversa, ripeti i passaggi precedenti per la seconda scheda.
Avvio del server e del client
- Ora di nuovo, apri Python bash, connettiti alla tua prima scheda e inizia a fare pubblicità
- Modifica la tua applicazione client in modo che non esca dopo aver letto il nome del dispositivo. Trova le seguenti righe e inseriscile in un commento:
- Salva ed esegui la tua applicazione client
- py.\client.py
- Posiziona le tue due tavole lontano, quindi avvicinale lentamente l'una all'altra. Ora dovresti vedere che lo stack inizia a diminuire il suo livello di potenza da 8dBm predefinito fino a -3dBm (che è la potenza Tx minima per impostazione predefinita):
Documenti / Risorse
![]() |
SILICON LABS 21Q2 Bluetooth Caratteristiche Lab [pdf] Manuale di istruzioni 21Q2, Lab sulle funzionalità Bluetooth, Lab sulle funzionalità Bluetooth 21Q2, Lab sulle funzionalità, Lab |