SILICON LABS 21Q2 Bluetooth funktsioonide labor
Bluetooth 21Q2 funktsioonide laborijuhend
See laborijuhend tutvustab teile mõningaid uusi Bluetoothi SDK funktsioone, mis võeti kasutusele väljaannete 20Q4 ja 21Q2 vahel. Selles laboris loome NCP example ja kirjutage Pythoni keeles hostitarkvara. Kasutades uut dünaamilist GATT-i funktsiooni, loome GATT-i konfiguraatori kasutamise asemel hostitarkvarast ka GATT-i andmebaasi. Lõpuks esitatakse LE Power Control funktsiooni hostitarkvara laiendamise kaudu.![]()
Eeldused
Selle labori lõpuleviimiseks vajate järgmist.
- Kaks Thunderboard BG22 või kaks WSTK-d mis tahes EFR32BG/EFR32MG raadioplaadiga või nende kombinatsiooniga
- Installitud Simplicity Studio 5 koos Gecko SDK v3.2-ga, sealhulgas Bluetoothi SDKv3.2-ga
- Arvuti, kuhu on installitud Python v3.6 või uuem
Sihtseadmete vilkumine NCP funktsionaalsuse jaoks
- Ühendage kaks raadioplaati ja avage Simplicity Studio 5
- Valige vahekaardil Silumisadapterid üks raadioplaatidest
- Määrake Eelistatud SDK-ks versioonis 3.2.0view Käivitaja vahekaart view
- Avage Exampvahekaart Projektid ja demod
- Leidke uus Bluetooth – NCP demo.
- NCP-sihtpildi tahvlile vilkumiseks klõpsake nuppu Käivita.

(Märkus: erinevalt Bluetoothist – NCP Empty ei sisalda see projekt eelehitatud GATT-i andmebaasi, kuid sellel on lubatud dünaamiline GATT API, mis on järgmiste jaotiste eeltingimus)
- Korrake samu samme teise raadioplaadiga.
Bluetoothi serverirakenduse loomine Pythonis
Alustamine
- Pybgapi pakett annab võimaluse anda Pythoni programmeerimiskeelt kasutades arvutist sihtseadmele BGAPI-käske. Selle paketi installimiseks tippige käsureale järgmine tekst: pip install pybgapi Lisateabe saamiseks paketi kohta külastage https://pypi.org/project/pybgapi/
- Leidke uusim BGAPI definitsioon file all
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi ja kopeerige see oma töökausta.
- Avage python bash (tippige CLI-sse python)
- Importige bgapi teek järgmise käsuga: >>> import bgapi
- Leidke ühe oma raadioplaadi COM-pordi number (nt COM49). Peaksite seadmehaldurist või oma lemmikterminalirakendusest otsima „JLink CDC UART-porti”.

- Ühendage raadioplaadiga:
- >>> ühendus = bgapi.SerialConnector('COM49')
- Initsialiseerige selle sõlme pybgapi teek:
- >>> node = bgapi.BGLib(ühendus,'sl_bt.xapi')
- Avage BGAPI side selle sõlme suunas:
- >>> node.open()
- Kontrollige, kas saate tahvliga suhelda, kasutades käsku system_hello(). Peaksite saama vastuse system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(result=0)
- >>> node.bt.system.hello()
- Lähtestage oma sõlm järgmise käsuga:
- node.bt.system.reset(0)
- Nüüd peaksite saama sündmuse system_boot. Viimase sündmuse toomiseks kasutage järgmist käsku:
- evt = node.get_events(max_events=1)
- print (evt)
- [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
GATT-i andmebaasi loomine
- Bluetooth – NCP sihtrakendus ei sisalda eelehitatud GATT-i andmebaasi. Siin loome andmebaasi koodist. Esmalt alustage andmebaasi loomise seanssi:
- >>> seanss = node.bt.gattdb.new_session().session
- Lisage GATT-i andmebaasi uus teenus. Siia lisame Bluetooth SIG-i poolt vastu võetud üldise juurdepääsu teenuse. See on esmane teenus (0x0), millel ei ole lippe (0x0) ja 16-bitine UUID (0x1800).
- teenus = node.bt.gattdb.add_service(session, 0, 0, bytes.fromhex(“0018”)).teenus
- Lisage teenusele uus omadus. Siin lisame üldise juurdepääsu teenusele seadme nime tunnuse, millel on atribuut READ (0x2), turvanõuded puuduvad (0x0), lipud puuduvad (0x0), 16-bitine UUID (0x2a00), muutuv pikkus (0x2), maksimaalne pikkus 20 ja algväärtusega "PyBGAPI
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic(session, service, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, baiti ('PyBGAPI Example','utf-8')).iseloomulik
- 3.15 Aktiveerige uus teenus:
- >>> node.bt.gattdb.start_service(session,service)
- bt_rsp_gattdb_start_service(result=0)
- Aktiveerige uus omadus:
- >>> node.bt.gattdb.start_characteristic(session, char)
- bt_rsp_gattdb_start_characteristic(tulemus=0)
- >>> node.bt.gattdb.start_characteristic(session, char)
- Salvestage muudatused ja sulgege andmebaasi redigeerimise seanss:
- >>> node.bt.gattdb.commit(session)
- bt_rsp_gattdb_commit(result=0)
Serveriga ühenduse loomine
- 3.18 Nüüd, kui meil on GATT-i andmebaasis seadme nimi, saame hakata reklaamima. Virn reklaamib seadet automaatselt selle GATT-i andmebaasis määratletud nimega:
- >>> reklaamija_komplekt = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(result=0)
- Käivitage oma telefonis EFR Connect ja leidke, et teie seade reklaamitakse kui „PyBGAPI Example "
- Saate seadmega ühenduse luua ja avastada selle GATT-i andmebaasi, millel on nüüd seadme nimi
Märkus: kui soovite väga kiiret eksample ilma GATT-i andmebaasiga vaeva nägemata, saab ikka Bluetoothi vilkuma – NCP Empty example oma tahvlile, millel on põhiline eelehitatud GATT-andmebaas. Sel juhul peate hosti poolel tegema ainult järgmist:
- >>> importige bgapi
- >>> ühendus = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(ühendus,'sl_bt.xapi')
- >>> node.open()
- >>> reklaamija_komplekt = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(result=0)
Bluetoothi kliendirakenduse loomine Pythonis
- Kliendi loomine on keerulisem kui serveri juurutamine. Seetõttu kirjutame pythoni skripti. Avage oma lemmiktekstiredaktor ja looge uus file, nimetagem seda kliendiks.py
- Importige järgmised asjad:

- Nii nagu serveri puhul, loome sõlmega ühenduse UART-i kaudu. Kasutage oma teise tahvli COM-pordi numbrit siin:

- Siit edasi on meie rakendus sündmustepõhine. Kui virn genereerib Bluetoothi sündmuse, käsitleme sündmust ja edastame rakenduse:

- Defineerime sündmuste käitleja funktsiooni ja lisame sündmusele system_boot käitleja, kus alustame välisseadmete otsimist. Pange tähele, et see funktsioon tuleks defineerida enne while-tsüklit (ja pärast sõlmemuutuja määratlust).

- Kui skanner on käivitatud, saab sõlm skannimisaruandeid. Lisame funktsiooni sl_bt_on_event() skannimisaruannete jaoks sündmuste käitleja. Kui leitakse skannimisaruanne reklaamitud seadmenimega „PyBGAPI Example”, avab klient ühenduse selle seadmega:

- Kui olete sellesse punkti jõudnud, tasub kontrollida, kas teie klient leiab serveri. Veenduge, et olete teises seadmes reklaami käivitanud, seejärel salvestage client.py ja käivitage see käsurealt. Peaksite nägema midagi sellist:

- Klient peab avastama serverist teenused ja omadused. Siin avastame üldise juurdepääsu teenuse ja tunnuse Seadme nimi ning lõpuks loeme välja tunnuse Seadme nimi väärtuse. Asendage oma praegune funktsioon sl_bt_on_event() järgmise koodiga:

- Salvestage client.py ja käivitage see käsurealt. Peaksite nägema midagi sellist:

LE Power Control funktsiooni lisamine
Sihtseadmete vilkumine
LE Power Control ei ole Bluetoothi puhul lubatudample projektid vaikimisi. Selle funktsiooni lisamiseks peab olema installitud Bluetooth > Funktsioon > PowerControl tarkvarakomponent.
- Avage käivitaja view Simplicity Studio 5-st.
- Valige vahekaardil Silumisadapterid üks oma seadmetest. Veenduge, et eelistatud SDK oleks v3.2.
- Avage Exampvahekaart Projektid ja demod ja leidke Bluetooth – NCP tühi example. Projekti loomiseks vajutage [Loo]. (Seekord me ei soovi GATT-i andmebaasi luua, seega kasutame NCP Empty'i, millel on vaikeseade.)
- Avage vahekaart GATT Configurator, valige omadus Seadme nimi ja kirjutage üle "Silabs Example” algväärtus koos „PyBGAPI Example” (et klient tunneks serveri ära). Samuti kirjutage väärtuse pikkus üle 15-ga.
- Andmebaasi salvestamiseks vajutage ctrl-s.
- Avage projekti konfiguraatoris vahekaart Tarkvarakomponendid.
- Otsige üles Bluetooth > Funktsioon > PowerControli tarkvarakomponent ja klõpsake [Install]

- Kuldse vahemiku ülemise ja alumise piiri kontrollimiseks klõpsake PowerControl tarkvarakomponendi kõrval olevat hammasratast. Määrake 1M alampiir
- PHY kuni -45 (-60 asemel). Kuigi praktikas pole see väärtus optimaalne, toob see kaasa rohkem Tx-i võimsuse reguleerimisi, mis on hea demonstratsiooni eesmärgil.
- SDK versioonis 3.2.0 tuleb kuldse vahemiku õigeks seadistamiseks rakendada väikest lahendust: avage fail sl_bluetooth.c file leitud teie projekti kaustast /autogen ja teisaldage sl_bt_init_power_control(); funktsiooni väljakutse ENNE sl_bt_init_stack(&config);

- Koostage projekt ja viige see oma tahvlile.
- Kui teie kaks tahvlit on sama tüüpi, välgatage sama pilt ka teisele tahvlile. Kui teie teine tahvel on erinev, korrake ülaltoodud samme teise tahvli jaoks.
Serveri ja kliendi käivitamine
- Nüüd avage uuesti Pythoni bash, looge ühendus oma esimese tahvliga ja alustage reklaamimist

- Muutke oma klientrakendust nii, et see ei väljuks pärast seadme nime lugemist. Otsige üles järgmised read ja lisage need kommentaaridesse:

- Salvestage ja käivitage oma kliendirakendus
- py .\client.py
- Place your two boards far away, then slowly move them closer to each other. Now you should see that the stack starts decreasing its power level from the default 8dBm down to -3dBm (which isthe minimal Tx power by default):

Dokumendid / Ressursid
![]() |
SILICON LABS 21Q2 Bluetooth funktsioonide labor [pdfKasutusjuhend 21Q2, Bluetoothi funktsioonide labor, 21Q2 Bluetoothi funktsioonide labor, funktsioonide labor, labor |


