SILICON LABS 21Q2 Fitur Bluetooth Lab
Bluetooth 21Q2 Fitur Lab Manual
Manual lab iki nuntun sampeyan liwat sawetara fitur Bluetooth SDK anyar sing dikenalake ing antarane rilis 20Q4 lan 21Q2. Ing lab iki kita bakal nggawe mantan NCPample lan nulis piranti lunak inang ing basa Python. Nggunakake fitur GATT dinamis anyar uga bakal mbangun database GATT saka piranti lunak inang tinimbang nggunakake GATT Configurator. Akhire fitur LE Power Control presented dening ndawakake piranti lunak inang.
Prasyarat
Kanggo ngrampungake lab iki, sampeyan butuh:
- Loro Thunderboard BG22 utawa loro WSTK kanthi papan radio EFR32BG / EFR32MG utawa campuran kasebut
- Simplicity Studio 5 diinstal, karo Gecko SDK v3.2 kalebu Bluetooth SDKv3.2
- A PC kang Python v3.6 utawa mengko wis diinstal
Flashing Piranti Target kanggo Fungsi NCP
- Pasang loro papan radio lan bukak Simplicity Studio 5
- Pilih salah siji saka papan radio ing tab Debug Adapters
- Setel SDK Preferred kanggo v3.2.0 ing Swaraview tab saka Launcher view
- Bukak Examptab Proyek & Demo
- Temokake Bluetooth anyar - demo NCP.
- Klik Run kanggo kerlip gambar target NCP menyang papan.
(Wigati: ing kontras kanggo Bluetooth - NCP Empty, project iki ora kalebu database GATT prebuilt, nanging wis aktif GATT API dinamis, kang prasyarat kanggo bagean sabanjuré)
- Baleni langkah sing padha kanggo papan radio liyane.
Nggawe Aplikasi Server Bluetooth ing Python
Miwiti
- Paket pybgapi menehi kamungkinan kanggo ngetokake printah BGAPI menyang piranti target saka PC nggunakake basa pemrograman Python. Kanggo nginstal paket iki ketik ing ngisor iki ing baris printah: pip install pybgapi Kanggo informasi luwih lengkap babagan kunjungan paket https://pypi.org/project/pybgapi/
- Goleki definisi BGAPI paling anyar file ing ngisor
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi lan nyalin menyang folder kerja.
- Bukak python bash (ketik python ing CLI)
- Ngimpor perpustakaan bgapi kanthi printah ing ngisor iki: >>> ngimpor bgapi
- Temokake nomer port COM (contone COM49) saka salah sawijining papan radio sampeyan. Sampeyan kudu nggoleki "Port UART JLink CDC" ing Manager Piranti utawa ing aplikasi terminal favorit.
- Sambungake menyang papan radio:
- >>> koneksi = bgapi.SerialConnector('COM49')
- Inisialisasi perpustakaan pybgapi kanggo simpul iki:
- >>> node = bgapi.BGLib(connection,'sl_bt.xapi')
- Bukak komunikasi BGAPI menyang simpul iki:
- >>> node.open()
- Priksa manawa sampeyan bisa komunikasi karo papan, nggunakake printah system_hello (). Sampeyan kudu njaluk respon system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(hasil=0)
- >>> node.bt.system.hello()
- Reset simpul sampeyan nganggo printah ing ngisor iki:
- node.bt.system.reset(0)
- Saiki sampeyan kudu entuk acara system_boot. Kanggo njupuk acara paling anyar, gunakake printah ing ngisor iki:
- evt = node.get_events(max_events=1)
- print (evt)
- [bt_evt_system_boot(mayor=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
Nggawe database GATT
- Aplikasi target Bluetooth - NCP ora kalebu database GATT sing wis dibangun. Ing kene kita bakal mbangun basis data saka kode. Pisanan miwiti sesi kanggo mbangun basis data:
- >>> sesi = node.bt.gattdb.new_session().session
- Tambah layanan anyar kanggo database GATT. Ing kene kita bakal nambah layanan Akses Umum sing diadopsi dening Bluetooth SIG. Iki minangka layanan utami (0x0) tanpa nyetel panji (0x0) lan UUID 16bit (0x1800).
- service = node.bt.gattdb.add_service(sesi, 0, 0, bytes.fromhex(“0018”)).service
- Tambah karakteristik anyar kanggo layanan. Ing kene kita bakal nambahake karakteristik Jeneng Piranti menyang layanan Akses Umum kanthi properti READ (0x2), ora ana syarat keamanan (0x0), ora ana gendera (0x0), UUID 16bit (0x2a00), dawa variabel (0x2), dawa maksimal 20 lan kanthi nilai awal "PyBGAPI
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic(sesi, layanan, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, byte('PyBGAPI Example','utf-8′)).karakteristik
- 3.15 Aktifake layanan anyar:
- >>> node.bt.gattdb.start_service(session,service)
- bt_rsp_gattdb_start_service(hasil=0)
- Aktifake karakteristik anyar:
- >>> node.bt.gattdb.start_characteristic(session, char)
- bt_rsp_gattdb_start_characteristic(hasil=0)
- >>> node.bt.gattdb.start_characteristic(session, char)
- Simpen owah-owahan lan nutup sesi panyuntingan database:
- >>> node.bt.gattdb.commit(sesi)
- bt_rsp_gattdb_commit(hasil=0)
Nyambung menyang Server
- 3.18 Saiki kita duwe jeneng piranti ing database GATT, kita bisa miwiti iklan. Tumpukan bakal kanthi otomatis ngiklanake piranti kanthi jeneng sing ditetepake ing basis data GATT:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(hasil=0)
- Miwiti EFR Connect ing telpon, lan golek iklan piranti minangka "PyBGAPI Example”
- Sampeyan bisa nyambung menyang piranti lan nemokake database GATT sing saiki wis karakteristik Jeneng Piranti
Cathetan: yen sampeyan pengin mantan cepet bangetample tanpa keganggu karo database GATT, sampeyan isih bisa kerlip Bluetooth - NCP Empty example kanggo Papan Panjenengan, kang wis basis data GATT prebuilt dhasar. Ing kasus iki, sampeyan mung kudu nindakake ing sisih host yaiku:
- >>> ngimpor bgapi
- >>> koneksi = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(connection,'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(hasil=0)
Nggawe Aplikasi Klien Bluetooth ing Python
- Nggawe klien luwih rumit tinimbang ngleksanakake server. Mulane kita bakal nulis skrip python. Bukak editor teks favorit lan gawe anyar file, ayo diarani client.py
- Impor ing ngisor iki:
- Kaya ing kasus server, kita bakal nyambung menyang simpul liwat UART. Gunakake nomer port COM papan kapindho ing kene:
- Saka kene, aplikasi kita bakal didorong acara. Saben acara Bluetooth digawe dening tumpukan, kita bakal nangani acara kasebut lan nerusake aplikasi kasebut:
- Ayo nemtokake fungsi pawang acara lan tambahake panangan kanggo acara system_boot, ing ngendi kita bakal miwiti mindhai piranti periferal. Elinga, fungsi iki kudu ditetepake sadurunge loop while (lan sawise definisi variabel simpul).
- Sawise scanner diwiwiti, simpul bakal nampa laporan pindai. Ayo dadi nambah handler acara kanggo laporan scan ing sl_bt_on_event () fungsi. Yen laporan pindai ditemokake kanthi jeneng piranti sing diiklanake "PyBGAPI Example", klien bakal mbukak sambungan menyang piranti kasebut:
- Sawise tekan titik iki, sampeyan kudu mriksa manawa klien sampeyan nemokake server kasebut. Priksa manawa, sampeyan wis miwiti pariwara ing piranti liyane, banjur simpen client.py, lan miwiti saka baris printah. Sampeyan kudu ndeleng kaya iki:
- Klien kudu nemokake layanan lan karakteristik ing server. Ing kene kita bakal nemokake layanan Akses Umum lan karakteristik Jeneng Piranti, lan pungkasane maca nilai karakteristik Jeneng Piranti. Ganti fungsi sl_bt_on_event() saiki nganggo kode ing ngisor iki:
- Simpen client.py lan miwiti saka baris printah. Sampeyan kudu ndeleng kaya iki:
Nambahake Fitur Kontrol Daya LE
Flashing Piranti Target
LE Power Control ora diaktifake ing Ex Bluetoothample proyèk minangka standar. Kanggo nambah fitur iki, komponen piranti lunak Bluetooth> Fitur> PowerControl kudu diinstal.
- Bukak peluncur view saka Simplicity Studio 5.
- Pilih salah siji piranti sampeyan ing tab Debug Adapters. Priksa manawa SDK disenengi v3.2.
- Bukak Example tab Projects & Demos lan golek Bluetooth - NCP Empty example. Pencet [Gawe] kanggo nggawe proyek. (Iki wektu kita ora pengin mbangun database GATT, supaya kita nggunakake NCP Empty, kang wis standar.)
- Bukak tab GATT Configurator, pilih karakteristik Jeneng Piranti, lan nimpa "Silabs Example" nilai awal karo "PyBGAPI Example" (supaya klien bisa ngenali server). Uga nimpa dawa nilai kanthi 15.
- Pencet ctrl-s kanggo nyimpen database.
- Ing Project Configurator bukak tab Komponen Piranti Lunak.
- Temokake Bluetooth > Fitur > komponen piranti lunak PowerControl, banjur klik [Instal]
- Klik ing cogwheel ing jejere komponen PowerControlsoftware kanggo mriksa wates ndhuwur lan ngisor saka sawetara Golden. Setel wates ngisor kanggo 1M
- PHY kanggo -45 (tinimbang -60). Senajan ing laku Nilai iki ora optimal, bakal kasil liyane pangaturan daya Tx, kang apik kanggo tujuan demo.
- Ing SDK versi 3.2.0, solusi cilik kudu ditrapake kanggo nyetel kisaran emas kanthi bener: mbukak sl_bluetooth.c file ditemokaké ing / folder autogen project lan mindhah sl_bt_init_power_control (); telpon fungsi sadurunge sl_bt_init_stack (& config);
- Gawe proyek lan kerlip menyang papan sampeyan.
- Yen loro Papan sampeyan saka jinis padha, kerlip gambar padha kanggo Papan liyane uga. Yen papan liya minangka papan sing beda, baleni langkah ing ndhuwur kanggo papan liya.
Miwiti Server lan Klien
- Saiki maneh, bukak Python bash, sambungake menyang papan pisanan sampeyan, lan miwiti pariwara
- Owahi aplikasi klien supaya ora metu sawise maca jeneng piranti. Temokake baris ing ngisor iki, banjur lebokake ing komentar:
- Simpen lan mbukak aplikasi klien
- py .\client.py
- Selehake loro papan sampeyan adoh, banjur alon-alon pindhah menyang siji liyane. Saiki sampeyan kudu ndeleng manawa tumpukan wiwit nyuda tingkat daya saka 8dBm standar mudhun dadi -3dBm (sing minangka standar Tx minimal):
Dokumen / Sumber Daya
![]() |
SILICON LABS 21Q2 Fitur Bluetooth Lab [pdf] Instruksi Manual 21Q2, Lab Fitur Bluetooth, Lab Fitur Bluetooth 21Q2, Lab Fitur, Lab |