SILICON LABS 21Q2 Bluetooth Features Lab
Bluetooth 21Q2 Ezaugarrien Lab eskuliburua
Laborategiko eskuliburu honek 20Q4 eta 21Q2 bertsioen artean sartu ziren Bluetooth SDK eginbide berrien berri ematen dizu. Laborategi honetan NCP bat sortuko duguample eta ostalari software bat idatzi Python hizkuntzan. GATT funtzio dinamiko berria erabiliz GATT datu-basea ostalari softwaretik ere eraikiko dugu GATT konfiguratzailea erabili beharrean. Azkenik LE Power Control funtzioa ostalari softwarea zabalduz aurkezten da.![]()
Aurrebaldintzak
Laborategi hau burutzeko, honako hauek beharko dituzu:
- Bi Thunderboard BG22 edo bi WSTK edozein EFR32BG/EFR32MG irrati-plaka edo hauen nahasketarekin
- Simplicity Studio 5 instalatuta, Gecko SDK v3.2 Bluetooth SDKv3.2 barne
- Python v3.6 edo berriagoa instalatuta dagoen ordenagailu bat
NCP funtzionalitaterako helburuko gailuak keinuka
- Lotu zure bi irrati-plakak eta ireki Simplicity Studio 5
- Hautatu irrati-plaketako bat Araztu egokitzaileak fitxan
- Ezarri Preferred SDK v3.2.0-n Over-enview Abiarazlearen fitxa view
- Ireki Example Proiektuak eta Demos fitxa
- Aurkitu Bluetooth - NCP demo berria.
- Egin klik Exekutatu NCP helburuko irudia arbelean bistaratzeko.

(Oharra: Bluetooth - NCP Hutsa, proiektu honek ez du aurrez eraikitako GATT datu-baserik, baina GATT API dinamikoa gaituta dauka, hurrengo ataletarako ezinbesteko baldintza da)
- Errepikatu urrats berdinak beste irrati-taularekin.
Python-en Bluetooth zerbitzariaren aplikazio bat sortzea
Hasteko
- Pybgapi paketeak helburuko gailura BGAPI komandoak igortzeko aukera ematen du PCtik Python programazio-lengoaia erabiliz. Pakete hau instalatzeko, idatzi honako hau komando lerroan: pip install pybgapi Paketeari buruzko informazio gehiago lortzeko, bisitatu https://pypi.org/project/pybgapi/
- Bilatu azken BGAPI definizioa file azpian
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi eta kopiatu zure laneko karpetan.
- Ireki python bash (idatzi python CLI-n)
- Inportatu bgapi liburutegia komando honekin: >>> inportatu bgapi
- Bilatu zure irrati-plaketako baten COM atakaren zenbakia (adibidez, COM49). "JLink CDC UART Port" bilatu beharko zenuke Gailu-kudeatzailean edo zure terminal gogokoen aplikazioan.

- Konektatu zure irrati-plakara:
- >>> konexioa = bgapi.SerialConnector('COM49')
- Hasieratu pybgapi liburutegia nodo honetarako:
- >>> nodoa = bgapi.BGLib (konexioa,'sl_bt.xapi')
- Ireki BGAPI komunikazioa nodo honetara:
- >>> node.open()
- Egiaztatu arbelarekin komunikatzeko gai zaren, system_hello() komandoa erabiliz. system_hello erantzuna jaso beharko zenuke:
- >>> node.bt.system.hello()
- bt_rsp_system_hello (emaitza=0)
- >>> node.bt.system.hello()
- Berrezarri zure nodoa komando honekin:
- node.bt.system.reset(0)
- Orain system_boot gertaera bat lortu beharko zenuke. Azken gertaera eskuratzeko, erabili komando hau:
- evt = node.get_events(max_events=1)
- inprimatu (evt)
- [bt_evt_system_boot(major=3, minor=2, adabaki=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
GATT datu-basea eraikitzea
- Bluetooth - NCP xede aplikazioak ez du aurrez eraikitako GATT datu-baserik. Hemen datu-basea kodetik sortuko dugu. Lehenik eta behin, hasi datu-basea eraikitzeko saio bat:
- >>> saioa = node.bt.gattdb.new_session().session
- Gehitu zerbitzu berri bat GATT datu-basean. Hemen Bluetooth SIG-ek hartutako Sarbide Orokorra zerbitzua gehituko dugu. Hau zerbitzu nagusi bat da (0x0), bandera ezarri gabe (0x0) eta 16 biteko UUID (0x1800) duena.
- zerbitzua = node.bt.gattdb.add_service(saioa, 0, 0, bytes.fromhex(“0018”)).zerbitzua
- Gehitu ezaugarri berri bat zerbitzuari. Hemen Gailuaren Izenaren ezaugarria gehituko dugu Sarbide Orokorraren zerbitzura, IRAKURTZEKO propietatearekin (0x2), segurtasun-baldintzarik gabe (0x0), banderarik gabe (0x0), 16bit UUID (0x2a00), luzera aldakorra (0x2), gehienezko 20 luzera eta hasierako balioarekin “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(saioa, zerbitzua, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Adibample','utf-8′)).ezaugarri
- 3.15 Aktibatu zerbitzu berria:
- >>> node.bt.gattdb.start_service(saioa,zerbitzua)
- bt_rsp_gattdb_start_service (emaitza=0)
- Aktibatu ezaugarri berria:
- >>> node.bt.gattdb.start_characteristic(saioa, karaktere)
- bt_rsp_gattdb_start_characteristic (emaitza=0)
- >>> node.bt.gattdb.start_characteristic(saioa, karaktere)
- Gorde aldaketak eta itxi datu-basea editatzeko saioa:
- >>> node.bt.gattdb.commit(saioa)
- bt_rsp_gattdb_commit(emaitza=0)
Zerbitzariarekin konektatzen
- 3.18 Orain, GATT datu-basean gailuaren izena daukagunez, iragarkiak egiten has gaitezke. Pilak automatikoki iragarriko du gailua bere GATT datu-basean zehaztutako izenarekin:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(iragarle_multzoa, 2, 2)
- bt_rsp_advertiser_start(emaitza=0)
- Hasi EFR Connect zure telefonoan eta aurkitu zure gailuaren publizitatea "PyBGAPI Example ”
- Gailura konekta zaitezke eta orain Gailuaren Izenaren ezaugarria duen GATT datu-basea aurki dezakezu
Oharra: oso azkar bat nahi baduzuample GATT datu-basearekin kezkatu gabe, oraindik Bluetooth-a flash dezakezu - NCP Hutsa adibidezample zure taulara, aurrez eraikitako oinarrizko GATT datu-base bat duena. Kasu honetan ostalariaren aldetik egin behar duzun guztia hau da:
- >>> inportatu bgapi
- >>> konexioa = bgapi.SerialConnector('COM49')
- >>> nodoa = bgapi.BGLib (konexioa,'sl_bt.xapi')
- >>> node.open()
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(iragarle_multzoa, 2, 2)
- bt_rsp_advertiser_start(emaitza=0)
Python-en Bluetooth Bezeroaren Aplikazio bat sortzea
- Bezero bat sortzea zerbitzari bat ezartzea baino zailagoa da. Horregatik, python script bat idatziko dugu. Ireki zure gogoko testu-editorea eta sortu berri bat file, deitu dezagun client.py
- Inportatu hauek:

- Zerbitzariaren kasuan bezala, UART bidez nodora konektatuko gara. Erabili zure bigarren plakaren COM atakaren zenbakia hemen:

- Hemendik aurrera, gure aplikazioa gertakarien araberakoa izango da. Pilak Bluetooth gertaera bat sortzen duen bakoitzean, gertaera kudeatuko dugu eta aplikazioa aurrera eramango dugu:

- Definitu dezagun gertaeren kudeatzailea funtzioa eta gehi dezagun kudeatzaile bat system_boot gertaerarako, non gailu periferikoak bilatzen hasiko garen. Kontuan izan, funtzio hau while begiztaren aurretik (eta nodoaren aldagaiaren definizioaren ondoren) definitu behar dela.

- Eskanerra abiarazitakoan, nodoak eskaneatu txostenak jasoko ditu. Gehitu dezagun gertaeren kudeatzaile bat eskaneatzeko txostenetarako sl_bt_on_event() funtzioaren barruan. Iragarritako gailuaren izena duen eskaneatu txosten bat aurkitzen bada "PyBGAPI Example", bezeroak konexio bat irekiko du gailu horrekin:

- Puntu honetara iritsitakoan, zure bezeroak zerbitzaria aurkitzen duen egiaztatzea merezi du. Ziurtatu iragarkia beste gailu batean hasi duzula, gero gorde client.py eta abiarazi komando-lerrotik. Horrelako zerbait ikusi beharko zenuke:

- Bezeroak zerbitzarian zerbitzuak eta ezaugarriak aurkitu behar ditu. Hemen Sarbide Orokorra zerbitzua eta Gailuaren Izenaren ezaugarria ezagutuko ditugu eta, azkenik, Gailuaren Izenaren ezaugarriaren balioa irakurriko dugu. Ordeztu zure uneko sl_bt_on_event() funtzioa kode honekin:

- Gorde client.py eta hasi komando-lerrotik. Horrelako zerbait ikusi beharko zenuke:

LE Power Control Ezaugarri gehitzea
Helburuko gailuak keinuka
LE Power Control ez dago gaituta Bluetooth-en adibidezample proiektuak lehenespenez. Eginbide hau gehitzeko, Bluetooth > Eginbidea > PowerControl software osagaia instalatu behar da.
- Ireki abiarazlea view Simplicity Studio 5-en.
- Hautatu zure gailuetako bat Araztu egokitzaileak fitxan. Ziurtatu hobetsitako SDK v3.2 dela.
- Ireki Example Projects & Demos fitxa eta aurkitu Bluetooth - NCP Hutsik adibidezample. Sakatu [Sortu] proiektua sortzeko. (Oraingoan ez dugu GATT datu-basea eraiki nahi, beraz, NCP Empty erabiltzen dugu, lehenetsitakoa duena).
- Ireki GATT Konfiguratzailea fitxa, hautatu Gailuaren izenaren ezaugarria eta gainidatzi "Silabs Example" hasierako balioa "PyBGAPI Example” (bezeroak zerbitzaria ezagutu dezan). Gainera, gainidatzi balioaren luzera 15-rekin.
- Sakatu ctrl-s datu-basea gordetzeko.
- Proiektuaren konfiguratzailean ireki Software osagaiak fitxa.
- Bilatu Bluetooth > Eginbidea > PowerControl software-osagaia eta egin klik [Instalatu]

- Egin klik PowerControlsoftware osagaiaren ondoan dagoen gurpilean urrezko barrutiaren goiko eta beheko mugak egiaztatzeko. Ezarri beheko muga 1M-rako
- PHY -45era (-60 ordez). Praktikan balio hori optimoa ez den arren, Tx potentzia doikuntza gehiago eragingo ditu, eta hori ona da erakustaldietarako.
- SDK 3.2.0 bertsioan, konponbide txiki bat aplikatu behar da urrezko barrutia behar bezala ezartzeko: ireki sl_bluetooth.c. file zure proiektuko /autogen karpetan aurkitu eta mugitu sl_bt_init_power_control(); funtzio-deia BEFORE sl_bt_init_stack(&config);

- Eraiki proiektua eta flash ezazu zure arbelean.
- Zure bi taulak mota berekoak badira, flash irudi bera beste taulan ere. Zure bigarren taula beste taula bat bada, errepikatu goiko urratsak bigarren taularako.
Zerbitzaria eta Bezeroa abiaraztea
- Orain berriro, ireki Python bash, konektatu zure lehen taulara eta hasi iragarkiak egiten

- Aldatu zure bezeroaren aplikazioa gailuaren izena irakurri ondoren irten ez dadin. Bilatu lerro hauek, eta jarri iruzkin batean:

- Gorde eta exekutatu zure bezeroaren aplikazioa
- py .\client.py
- Jarri zure bi oholak urrun, eta gero, poliki-poliki, hurbil itzazu elkarrengana. Orain ikusi beharko zenuke pila bere potentzia maila jaisten hasten dela 8dBm lehenetsitik -3dBm-ra (hau da lehenespenez Tx potentzia minimoa):

Dokumentuak / Baliabideak
![]() |
SILICON LABS 21Q2 Bluetooth Features Lab [pdf] Argibideen eskuliburua 21Q2, Bluetooth Ezaugarrien Laborategia, 21Q2 Bluetooth Ezaugarrien Laborategia, Ezaugarrien Laborategia, Laborategia |


