SILICON LABS 21Q2 Fitur Bluetooth Lab
Panduan Lab Fitur Bluetooth 21Q2
Manual lab ini memandu Anda melalui beberapa fitur Bluetooth SDK baru yang diperkenalkan antara rilis 20Q4 dan 21Q2. Di lab ini kita akan membuat NCP example dan tulis perangkat lunak host dalam bahasa Python. Dengan menggunakan fitur GATT dinamis baru, kami juga akan membangun database GATT dari perangkat lunak host alih-alih menggunakan GATT Configurator. Terakhir, fitur LE Power Control dihadirkan dengan memperluas perangkat lunak host.![]()
Prasyarat
Untuk menyelesaikan lab ini, Anda memerlukan hal-hal berikut:
- Dua Thunderboard BG22 atau dua WSTK dengan papan radio EFR32BG/EFR32MG apa pun atau campurannya
- Kesederhanaan Studio 5 diinstal, dengan Gecko SDK v3.2 termasuk Bluetooth SDKv3.2
- PC tempat Python v3.6 atau lebih baru diinstal
Mem-flash Perangkat Target untuk Fungsionalitas NCP
- Lampirkan dua papan radio Anda dan buka Simplicity Studio 5
- Pilih salah satu papan radio di tab Adaptor Debug
- Setel SDK Pilihan ke v3.2.0 di Atasview tab Peluncur view
- Buka Eksample Proyek & tab Demo
- Temukan demo Bluetooth – NCP baru.
- Klik Jalankan untuk mem-flash gambar target NCP ke papan.

(Catatan: berbeda dengan Bluetooth – NCP Empty, proyek ini tidak menyertakan database GATT bawaan, tetapi mengaktifkan API GATT dinamis, yang merupakan prasyarat untuk bagian berikutnya)
- Ulangi langkah yang sama untuk papan radio lainnya.
Membuat Aplikasi Server Bluetooth dengan Python
Memulai
- Paket pybgapi menyediakan kemungkinan untuk mengeluarkan perintah BGAPI menuju perangkat target dari PC menggunakan bahasa pemrograman Python. Untuk menginstal paket ini, ketik perintah berikut di baris perintah: pip install pybgapi Untuk informasi lebih lanjut tentang paket, kunjungi https://pypi.org/project/pybgapi/
- Temukan definisi BGAPI terbaru file di bawah
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi dan salin ke folder kerja Anda.
- Buka python bash (ketik python di CLI)
- Impor pustaka bgapi dengan perintah berikut: >>> import bgapi
- Temukan nomor port COM (mis. COM49) dari salah satu papan radio Anda. Anda harus mencari "JLink CDC UART Port" di Device Manager atau di aplikasi terminal favorit Anda.

- Hubungkan ke papan radio Anda:
- >>> koneksi = bgapi.SerialConnector('COM49')
- Inisialisasi perpustakaan pybgapi untuk node ini:
- >>> node = bgapi.BGLib(koneksi,'sl_bt.xapi')
- Buka komunikasi BGAPI menuju node ini:
- >>> simpul.buka()
- Periksa apakah Anda dapat berkomunikasi dengan papan, menggunakan perintah system_hello(). Anda harus mendapatkan respons system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(hasil=0)
- >>> node.bt.system.hello()
- Setel ulang node Anda dengan perintah berikut:
- simpul.bt.sistem.reset(0)
- Sekarang Anda harus mendapatkan acara system_boot. Untuk mengambil acara terbaru, gunakan perintah berikut:
- evt = simpul.get_events(max_events=1)
- cetak (evt)
- [bt_evt_system_boot(mayor=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
Membangun basis data GATT
- Aplikasi target Bluetooth – NCP tidak menyertakan database GATT prebuilt. Di sini kita akan membangun database dari kode. Pertama, mulailah sesi untuk membangun basis data:
- >>> sesi = node.bt.gattdb.new_session().session
- Tambahkan layanan baru ke database GATT. Di sini kami akan menambahkan layanan Akses Generik yang diadopsi oleh Bluetooth SIG. Ini adalah layanan utama (0x0) tanpa set flag (0x0) dan dengan UUID 16bit (0x1800).
- layanan = node.bt.gattdb.add_service(sesi, 0, 0, bytes.fromhex(“0018”)).layanan
- Tambahkan karakteristik baru ke layanan. Di sini kita akan menambahkan karakteristik Device Name ke layanan Generic Access dengan properti READ (0x2), tanpa persyaratan keamanan (0x0), tanpa flag (0x0), UUID 16bit (0x2a00), panjang variabel (0x2), panjang maksimum 20 dan dengan nilai awal “PyBGAPI
Exampsaya”:
- >>> 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 Mengaktifkan layanan baru:
- >>> node.bt.gattdb.start_service(sesi,layanan)
- bt_rsp_gattdb_start_service(hasil=0)
- Aktifkan karakteristik baru:
- >>> node.bt.gattdb.start_characteristic(session, char)
- bt_rsp_gattdb_start_characteristic(hasil=0)
- >>> node.bt.gattdb.start_characteristic(session, char)
- Simpan perubahan dan tutup sesi pengeditan database:
- >>> node.bt.gattdb.commit(sesi)
- bt_rsp_gattdb_commit(hasil=0)
Menghubungkan ke Server
- 3.18 Sekarang kita memiliki nama perangkat di basis data GATT, kita dapat mulai beriklan. Tumpukan akan secara otomatis mengiklankan perangkat dengan nama yang ditentukan dalam database GATT-nya:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(hasil=0)
- Mulai EFR Connect di ponsel Anda, dan temukan iklan perangkat Anda sebagai “PyBGAPI Exampsaya”
- Anda dapat terhubung ke perangkat dan menemukan database GATT-nya yang sekarang memiliki karakteristik Nama Perangkat
Catatan: jika Anda menginginkan mantan yang sangat cepatampfile tanpa repot dengan database GATT, Anda masih dapat mem-flash Bluetooth – NCP Empty example ke papan Anda, yang memiliki basis data GATT bawaan. Dalam hal ini yang harus Anda lakukan di sisi host adalah:
- >>> impor bgapi
- >>> koneksi = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(koneksi,'sl_bt.xapi')
- >>> simpul.buka()
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(hasil=0)
Membuat Aplikasi Klien Bluetooth dengan Python
- Membuat klien lebih rumit daripada mengimplementasikan server. Oleh karena itu kami akan menulis skrip python. Buka editor teks favorit Anda dan buat yang baru file, sebut saja client.py
- Impor berikut ini:

- Sama seperti dalam kasus server, kami akan terhubung ke node melalui UART. Gunakan nomor port COM dari papan kedua Anda di sini:

- Dari sini, aplikasi kita akan digerakkan oleh acara. Setiap kali acara Bluetooth dihasilkan oleh tumpukan, kami akan menangani acara tersebut dan meneruskan aplikasi:

- Mari kita tentukan fungsi event handler dan tambahkan handler untuk event system_boot, di mana kita akan mulai memindai perangkat periferal. Perhatikan, bahwa fungsi ini harus didefinisikan sebelum while loop (dan setelah definisi variabel node).

- Setelah pemindai dimulai, node akan menerima laporan pemindaian. Mari tambahkan event handler untuk laporan pemindaian dalam fungsi sl_bt_on_event() . Jika laporan pemindaian ditemukan dengan nama perangkat yang diiklankan “PyBGAPI Example", klien akan membuka koneksi ke perangkat itu:

- Setelah Anda mencapai titik ini, ada baiknya memeriksa apakah klien Anda menemukan server. Pastikan, Anda telah memulai iklan di perangkat lain, lalu simpan client.py, dan mulai dari baris perintah. Anda akan melihat sesuatu seperti ini:

- Klien harus menemukan layanan dan karakteristik di server. Di sini kita akan menemukan layanan Akses Generik dan karakteristik Nama Perangkat, dan akhirnya membacakan nilai karakteristik Nama Perangkat. Ganti fungsi sl_bt_on_event() Anda saat ini dengan kode berikut:

- Simpan client.py dan mulai dari baris perintah. Anda akan melihat sesuatu seperti ini:

Menambahkan Fitur Kontrol Daya LE
Mem-flash Perangkat Target
LE Power Control tidak diaktifkan di Bluetooth exampfile proyek secara default. Untuk menambahkan fitur ini, komponen perangkat lunak Bluetooth > Feature > Power Control harus diinstal.
- Buka peluncur view Studio Kesederhanaan 5.
- Pilih salah satu perangkat Anda di tab Adaptor Debug. Pastikan SDK pilihan adalah v3.2.
- Buka Eksample tab Projects & Demos dan temukan Bluetooth – NCP Empty example. Tekan [Buat] untuk membuat proyek. (Kali ini kami tidak ingin membangun database GATT, jadi kami menggunakan NCP Empty, yang memiliki default.)
- Buka tab GATT Configurator, pilih karakteristik Device Name, dan timpa file “Silabs Example” nilai awal dengan “PyBGAPI Example” (agar klien mengenali server). Timpa juga panjang nilai dengan 15.
- Tekan ctrl-s untuk menyimpan database.
- Di Project Configurator, buka tab Komponen Perangkat Lunak.
- Temukan Bluetooth > Feature > komponen perangkat lunak PowerControl, dan klik [Install]

- Klik pada roda gigi di sebelah komponen perangkat lunak PowerControl untuk memeriksa batas atas dan bawah rentang emas. Tetapkan batas bawah untuk 1M
- PHY ke -45 (bukan -60). Meskipun dalam praktiknya nilai ini tidak optimal, ini akan menghasilkan lebih banyak penyesuaian daya Tx, yang bagus untuk tujuan demonstrasi.
- Di SDK versi 3.2.0, solusi kecil perlu diterapkan untuk menyetel rentang emas dengan benar: buka sl_bluetooth.c file ditemukan di folder /autogen proyek Anda dan pindahkan sl_bt_init_power_control(); pemanggilan fungsi SEBELUM sl_bt_init_stack(&config);

- Bangun proyek dan flash ke papan Anda.
- Jika kedua papan Anda memiliki jenis yang sama, flash juga gambar yang sama ke papan lainnya. Jika papan kedua Anda adalah papan yang berbeda, ulangi langkah di atas untuk papan kedua.
Memulai Server dan Klien
- Sekarang lagi, buka bash Python, sambungkan ke papan pertama Anda, dan mulailah beriklan

- Ubah aplikasi klien Anda sehingga tidak keluar setelah membacakan nama perangkat. Temukan baris berikut, dan masukkan ke dalam komentar:

- Simpan dan jalankan aplikasi klien Anda
- py .\client.py
- Tempatkan kedua papan Anda jauh, lalu perlahan-lahan dekatkan satu sama lain. Sekarang Anda akan melihat bahwa tumpukan mulai menurunkan level dayanya dari default 8dBm ke -3dBm (yang merupakan daya Tx minimal secara default):

Dokumen / Sumber Daya
![]() |
SILICON LABS 21Q2 Fitur Bluetooth Lab [Bahasa Indonesia:] Panduan Instruksi 21Q2, Lab Fitur Bluetooth, Lab Fitur Bluetooth 21Q2, Lab Fitur, Lab |


