SILICON LABS 21Q2 Bluetooth Features Lab
Bluetooth 21Q2 Xüsusiyyətləri Laboratoriya Təlimatı
Bu laboratoriya təlimatı sizi 20Q4 və 21Q2 buraxılışı arasında təqdim edilmiş bəzi yeni Bluetooth SDK xüsusiyyətləri ilə tanış edir. Bu laboratoriyada biz NCP keçmiş yaradacağıqample və Python dilində host proqram yazın. Yeni dinamik GATT funksiyasından istifadə etməklə biz həmçinin GATT Konfiquratorundan istifadə etmək əvəzinə, əsas proqram təminatından GATT verilənlər bazasını yaradacağıq. Nəhayət, LE Power Control xüsusiyyəti host proqram təminatının genişləndirilməsi ilə təqdim olunur.![]()
İlkin şərtlər
Bu laboratoriyanı başa çatdırmaq üçün sizə aşağıdakılar lazımdır:
- İstənilən EFR22BG/EFR32MG radio lövhəsi və ya bunların qarışığı olan iki Thunderboard BG32 və ya iki WSTK
- Simplicity Studio 5 quraşdırılıb, Gecko SDK v3.2, o cümlədən Bluetooth SDKv3.2
- Python v3.6 və ya daha yenisi quraşdırılmış kompüter
NCP Funksionallığı üçün Hədəf Cihazlarının Yanıb-sönməsi
- İki radio lövhənizi birləşdirin və Simplicity Studio 5-i açın
- Sazlama Adapterləri sekmesinde radio lövhələrindən birini seçin
- Üstünlükdə SDK-nı v3.2.0-a təyin edinview Başlatıcının nişanı view
- Ex açınampLayihələr və Demolar tab
- Yeni Bluetooth - NCP demosunu tapın.
- NCP hədəf şəklini lövhədə yanıb-sönmək üçün Run düyməsini klikləyin.

(Qeyd: Bluetooth – NCP Empty-dən fərqli olaraq, bu layihəyə əvvəlcədən qurulmuş GATT verilənlər bazası daxil deyil, lakin o, dinamik GATT API-ni aktivləşdirir və bu, növbəti bölmələr üçün ilkin şərtdir)
- Digər radio lövhəsi üçün də eyni addımları təkrarlayın.
Python-da Bluetooth Server Proqramının yaradılması
Başlanır
- Pybgapi paketi Python proqramlaşdırma dilindən istifadə edərək kompüterdən hədəf cihaza BGAPI əmrlərini vermək imkanı verir. Bu paketi quraşdırmaq üçün əmr satırına aşağıdakıları yazın: pip install pybgapi Paket haqqında əlavə məlumat üçün ziyarət edin https://pypi.org/project/pybgapi/
- Ən son BGAPI tərifini tapın file altında
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi və onu iş qovluğunuza kopyalayın.
- Python bash açın (CLI-də python yazın)
- Bgapi kitabxanasını aşağıdakı komanda ilə idxal edin: >>> import bgapi
- Radio lövhələrinizdən birinin COM port nömrəsini (məsələn, COM49) tapın. Cihaz menecerində və ya sevimli terminal proqramında “JLink CDC UART Port”u axtarmalısınız.

- Radio lövhənizə qoşulun:
- >>> əlaqə = bgapi.SerialConnector('COM49')
- Bu node üçün pybgapi kitabxanasını işə salın:
- >>> node = bgapi.BGLib(bağlantı,'sl_bt.xapi')
- Bu node ilə BGAPI rabitəsini açın:
- >>> node.open()
- system_hello() əmrindən istifadə edərək lövhə ilə əlaqə saxlaya bildiyinizi yoxlayın. Siz system_hello cavabı almalısınız:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(nəticə=0)
- >>> node.bt.system.hello()
- Düyününüzü aşağıdakı əmrlə sıfırlayın:
- node.bt.system.reset(0)
- İndi bir system_boot hadisəsi almalısınız. Ən son hadisəni əldə etmək üçün aşağıdakı əmrdən istifadə edin:
- evt = node.get_events(max_events=1)
- çap (evt)
- [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
GATT məlumat bazasının yaradılması
- Bluetooth – NCP hədəf proqramına əvvəlcədən qurulmuş GATT verilənlər bazası daxil deyil. Burada koddan verilənlər bazası quracağıq. Əvvəlcə verilənlər bazası yaratmaq üçün sessiyaya başlayın:
- >>> sessiya = node.bt.gattdb.new_session().session
- GATT verilənlər bazasına yeni xidmət əlavə edin. Burada biz Bluetooth SIG tərəfindən qəbul edilmiş Ümumi Giriş xidmətini əlavə edəcəyik. Bu, bayraq təyin edilməyən (0x0) və 0 bit UUID (0x16) ilə əsas xidmətdir (0x1800).
- xidmət = node.bt.gattdb.add_service(sessiya, 0, 0, bayt.fromhex(“0018”)).xidmət
- Xidmətə yeni bir xüsusiyyət əlavə edin. Burada biz READ xüsusiyyəti (0x2), təhlükəsizlik tələbləri yoxdur (0x0), bayraqlar yoxdur (0x0), 16 bit UUID (0x2a00), dəyişən uzunluq (0x2), maksimum uzunluq 20 və ilkin dəyəri ilə “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(sessiya, xidmət, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bayt('PyBGAPI Example','utf-8′)).xarakterik
- 3.15 Yeni xidməti aktivləşdirin:
- >>> node.bt.gattdb.start_service(sessiya, xidmət)
- bt_rsp_gattdb_start_service(nəticə=0)
- Yeni xüsusiyyəti aktivləşdirin:
- >>> node.bt.gattdb.start_characteristic(sessiya, char)
- bt_rsp_gattdb_start_xarakteristikası(nəticə=0)
- >>> node.bt.gattdb.start_characteristic(sessiya, char)
- Dəyişiklikləri yadda saxlayın və verilənlər bazası redaktə sessiyasını bağlayın:
- >>> node.bt.gattdb.commit(sessiya)
- bt_rsp_gattdb_commit(nəticə=0)
Serverə qoşulma
- 3.18 Artıq GATT verilənlər bazasında cihazın adı var, biz reklam etməyə başlaya bilərik. Yığın avtomatik olaraq cihazı GATT verilənlər bazasında müəyyən edilmiş adla reklam edəcək:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(reklam verən_dəsti, 2, 2)
- bt_rsp_advertiser_start(nəticə=0)
- Telefonunuzda EFR Connect proqramını işə salın və cihazınızın “PyBGAPI Example ”
- Siz cihaza qoşula və onun indi Cihaz Adı xarakteristikasına malik olan GATT verilənlər bazasını kəşf edə bilərsiniz
Qeyd: çox sürətli keçmiş istəyirsinizsəampGATT verilənlər bazası ilə narahat olmadan siz hələ də Bluetooth – NCP Empty ex-i yandıra bilərsinizampƏsas əvvəlcədən qurulmuş GATT verilənlər bazasına malik olan boardunuza. Bu halda ev sahibi tərəfdə etməli olduğunuz tək şey:
- >>> idxal bgapi
- >>> əlaqə = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(bağlantı,'sl_bt.xapi')
- >>> node.open()
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(reklam verən_dəsti, 2, 2)
- bt_rsp_advertiser_start(nəticə=0)
Python-da Bluetooth Client Proqramının yaradılması
- Müştəri yaratmaq serveri həyata keçirməkdən daha mürəkkəbdir. Buna görə də bir python skripti yazacağıq. Sevimli mətn redaktorunuzu açın və yenisini yaradın file, gəlin onu client.py adlandıraq
- Aşağıdakıları idxal edin:

- Server vəziyyətində olduğu kimi, biz də UART vasitəsilə qovşaqla əlaqə quracağıq. İkinci lövhənizin COM port nömrəsini burada istifadə edin:

- Buradan tətbiqimiz hadisəyə əsaslanacaq. Hər dəfə yığın tərəfindən Bluetooth hadisəsi yaradıldıqda, biz hadisəni idarə edəcəyik və proqramı irəli sürəcəyik:

- Hadisə idarəedici funksiyasını təyin edək və sistem_boot hadisəsi üçün işləyici əlavə edək, burada periferik cihazları skan etməyə başlayacağıq. Qeyd edək ki, bu funksiya while dövrəsindən əvvəl (və node dəyişəninin tərifindən sonra) müəyyən edilməlidir.

- Skaner işə salındıqdan sonra qovşaq skan hesabatlarını qəbul edəcək. sl_bt_on_event() funksiyası daxilində skan hesabatları üçün hadisə idarəedicisini əlavə edək. Reklam edilmiş cihaz adı ilə skan hesabatı tapılarsa, “PyBGAPI Example”, müştəri həmin cihazla əlaqə açacaq:

- Bu nöqtəyə çatdıqdan sonra müştərinizin serveri tapıb tapmadığını yoxlamağa dəyər. Reklamı digər cihazda başlatdığınızdan əmin olun, sonra client.py-ni yadda saxlayın və onu əmr satırından başlayın. Bunun kimi bir şey görməlisiniz:

- Müştəri serverdə xidmətləri və xüsusiyyətləri kəşf etməlidir. Burada biz Ümumi Giriş xidmətini və Cihaz Adı xarakteristikasını kəşf edəcəyik və nəhayət Cihaz Adı xarakteristikasının dəyərini oxuyacağıq. Cari sl_bt_on_event() funksiyanızı aşağıdakı kodla əvəz edin:

- client.py-ni yadda saxla və onu komanda xəttindən başladın. Bunun kimi bir şey görməlisiniz:

LE Güc Nəzarət Xüsusiyyətinin əlavə edilməsi
Hədəf Cihazlarının Yanıb-sönməsi
LE Power Control Bluetooth-da aktiv deyilample layihələri standart olaraq. Bu xüsusiyyəti əlavə etmək üçün Bluetooth > Xüsusiyyət > PowerControl proqram komponenti quraşdırılmalıdır.
- Başlatıcını açın view Simplicity Studio 5.
- Sazlama Adapterləri sekmesinde cihazlarınızdan birini seçin. Tercih edilən SDK-nın v3.2 olduğundan əmin olun.
- Ex açınampLayihələr və Demolar sekmesine keçin və Bluetooth – NCP Empty-i tapınample. Layihə yaratmaq üçün [Yarat] düyməsini basın. (Bu dəfə biz GATT verilənlər bazasını yaratmaq istəmirik, ona görə də standart olan NCP Empty-dən istifadə edirik.)
- GATT Konfiqurator nişanını açın, Cihaz Adı xarakteristikasını seçin və “Silabs Ex”in üzərinə yazın.ample” ilkin dəyərini “PyBGAPI Example” (müştəri serveri tanıması üçün). Həmçinin dəyər uzunluğunu 15 ilə yazın.
- Verilənlər bazasını saxlamaq üçün ctrl-s düyməsini basın.
- Layihə Konfiquratorunda Proqram Komponentləri sekmesini açın.
- Bluetooth > Xüsusiyyət > PowerControl proqram komponentini tapın və [Quraşdır] üzərinə klikləyin

- Qızıl diapazonun yuxarı və aşağı sərhədlərini yoxlamaq üçün PowerControlsoftware komponentinin yanındakı dişli çarxı klikləyin. 1M üçün aşağı həddi təyin edin
- PHY -45 (-60 əvəzinə). Praktikada bu dəyər optimal olmasa da, daha çox Tx güc tənzimləmələri ilə nəticələnəcək, bu, nümayiş məqsədləri üçün yaxşıdır.
- SDK 3.2.0 versiyasında qızıl diapazonu düzgün təyin etmək üçün kiçik bir həll yolu tətbiq edilməlidir: sl_bluetooth.c açın. file layihənizin /autogen qovluğunda tapın və sl_bt_init_power_control(); funksiya çağırışından ƏVVƏL sl_bt_init_stack(&config);

- Layihəni qurun və lövhənizdə flaş edin.
- İki lövhəniz eyni tipdədirsə, eyni şəkli digər lövhəyə də yandırın. İkinci lövhəniz fərqli bir lövhədirsə, yuxarıdakı addımları ikinci lövhə üçün təkrarlayın.
Server və Müştərinin işə salınması
- İndi yenidən Python bash-ı açın, ilk lövhənizə qoşulun və reklam etməyə başlayın

- Müştəri proqramınızı elə dəyişdirin ki, cihazın adını oxuduqdan sonra çıxmasın. Aşağıdakı sətirləri tapın və şərhə yazın:

- Müştəri proqramınızı yadda saxlayın və işə salın
- py .\client.py
- İki lövhənizi uzaqlaşdırın, sonra yavaş-yavaş bir-birinə yaxınlaşdırın. İndi yığının güc səviyyəsini standart 8dBm-dən -3dBm-ə qədər azaltmağa başladığını görməlisiniz (bu, standart olaraq minimum Tx gücüdür):

Sənədlər / Resurslar
![]() |
SILICON LABS 21Q2 Bluetooth Features Lab [pdf] Təlimat kitabçası 21Q2, Bluetooth Xüsusiyyətləri Laboratoriyası, 21Q2 Bluetooth Xüsusiyyətləri Laboratoriyası, Xüsusiyyətlər Laboratoriyası, Laboratoriya |


