LOGO SILICON LABS

SILICON LABS 21Q2 Bluetooth Features Lab

SILICON LABS 21Q2 Bluetooth Features Lab

Laboratorní příručka funkcí Bluetooth 21Q2

Tento laboratorní manuál vás provede některými novými funkcemi Bluetooth SDK, které byly představeny mezi vydáním 20Q4 a 21Q2. V této laboratoři vytvoříme NCP example a napsat hostitelský software v jazyce Python. Pomocí nové dynamické funkce GATT také vytvoříme databázi GATT z hostitelského softwaru namísto použití konfigurátoru GATT. Konečně funkce LE Power Control je prezentována rozšířením hostitelského softwaru.Laboratoř funkcí Bluetooth SILICON LABS 21Q2 1

Předpoklady

K dokončení tohoto cvičení budete potřebovat následující:

  • Dva Thunderboard BG22 nebo dva WSTK s libovolnou radiovou deskou EFR32BG/EFR32MG nebo jejich kombinací
  • Nainstalované Simplicity Studio 5 s Gecko SDK v3.2 včetně Bluetooth SDKv3.2
  • Počítač, na kterém je nainstalován Python v3.6 nebo novější

Blikání cílových zařízení pro funkci NCP

  • Připojte své dvě rádiové desky a otevřete Simplicity Studio 5
  • Vyberte jednu z rádiových desek na kartě Debug Adapters
  • Nastavte Preferred SDK na v3.2.0 na Overview kartu Spouštěče view
  • Otevřete Example karta Projekty a ukázky
  • Najděte nové demo Bluetooth – NCP.
  • Kliknutím na Run flashnete cílový obrázek NCP na hrací plochu.Laboratoř funkcí Bluetooth SILICON LABS 21Q2 2

(Poznámka: na rozdíl od Bluetooth – NCP Empty tento projekt neobsahuje předpřipravenou databázi GATT, ale má povolené dynamické GATT API, což je předpoklad pro další části)

  • Opakujte stejné kroky pro další desku rádia.

Vytvoření serverové aplikace Bluetooth v Pythonu

Začínáme

  • Balíček pybgapi poskytuje možnost vydávat příkazy BGAPI směrem k cílovému zařízení z PC pomocí programovacího jazyka Python. Chcete-li nainstalovat tento balíček, zadejte do příkazového řádku následující: pip install pybgapi Další informace o balíčku naleznete na adrese https://pypi.org/project/pybgapi/
  • Vyhledejte nejnovější definici BGAPI file pod
  • C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi a zkopírujte jej do své pracovní složky.
  • Otevřete python bash (zadejte python v CLI)
  • Importujte knihovnu bgapi pomocí následujícího příkazu: >>> import bgapi
  • Najděte číslo COM portu (např. COM49) jedné z vašich rádiových desek. Měli byste hledat „JLink CDC UART Port“ ve Správci zařízení nebo ve své oblíbené terminálové aplikaci.Laboratoř funkcí Bluetooth SILICON LABS 21Q2 3
  • Připojte se k vaší rádiové desce:
    • >>> připojení = bgapi.SerialConnector('COM49')
  • Inicializujte knihovnu pybgapi pro tento uzel:
    • >>> uzel = bgapi.BGLib(spojení,'sl_bt.xapi')
  • Otevřete komunikaci BGAPI směrem k tomuto uzlu:
    • >>> node.open()
  • Zkontrolujte, zda můžete komunikovat s deskou pomocí příkazu system_hello(). Měli byste dostat odpověď system_hello:
    • >>> node.bt.system.hello()
      • bt_rsp_system_hello(výsledek=0)
  • Resetujte svůj uzel pomocí následujícího příkazu:
    • node.bt.system.reset(0)
  • Nyní byste měli získat událost system_boot. Chcete-li načíst nejnovější událost, použijte následující příkaz:
    • evt = node.get_events(max_events=1)
    • tisknout (evt)
      • [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]

Budování databáze GATT

  • Cílová aplikace Bluetooth – NCP neobsahuje předem vytvořenou databázi GATT. Zde vytvoříme databázi z kódu. Nejprve spusťte relaci pro vytváření databáze:
    • >>> session = node.bt.gattdb.new_session().session
  • Přidejte do databáze GATT novou službu. Zde přidáme službu Generic Access přijatou společností Bluetooth SIG. Toto je primární služba (0x0) bez nastavených příznaků (0x0) a s 16bitovým UUID (0x1800).
    • service = node.bt.gattdb.add_service(session, 0, 0, bytes.fromhex(“0018”)).service
  • Přidejte do služby novou charakteristiku. Zde přidáme charakteristiku Device Name ke službě Generic Access s vlastností READ (0x2), bez bezpečnostních požadavků (0x0), bez příznaků (0x0), 16bit UUID (0x2a00), proměnnou délkou (0x2), maximální délkou 20 a s počáteční hodnotou „PyBGAPI

Example":

  • >>> char = node.bt.gattdb.add_uuid16_characteristic(session, service, 2, 0, 0, bytes.fromhex('002a'), 2,
    • 20, bajtů('PyBGAPI Example','utf-8′)).charakteristický
    • 3.15 Aktivujte novou službu:
  • >>> node.bt.gattdb.start_service(session,service)
    • bt_rsp_gattdb_start_service(výsledek=0)
  • Aktivujte novou charakteristiku:
    • >>> node.bt.gattdb.start_characteristic(session, char)
      • bt_rsp_gattdb_start_characteristic(výsledek=0)
  • Uložte změny a zavřete relaci úprav databáze:
    • >>> node.bt.gattdb.commit(session)
    • bt_rsp_gattdb_commit(výsledek=0)

Připojování k serveru

  • 3.18 Nyní, když máme název zařízení v databázi GATT, můžeme začít inzerovat. Zásobník automaticky propaguje zařízení s názvem definovaným v databázi GATT:
    • >>> inzerent_set = node.bt.advertiser.create_set().handle
    • >>> node.bt.advertiser.start(advertiser_set, 2, 2)
      • bt_rsp_advertiser_start(výsledek=0)
  • Spusťte na svém telefonu EFR Connect a najděte své zařízení inzerující jako „PyBGAPI Example ”
  • Můžete se připojit k zařízení a objevit jeho databázi GATT, která má nyní charakteristiku Název zařízení

Poznámka: pokud chcete velmi rychlé example aniž byste se museli obtěžovat s databází GATT, stále můžete flashovat Bluetooth – NCP Empty example na vaši desku, která má základní předpřipravenou databázi GATT. V tomto případě vše, co musíte udělat na straně hostitele, je:

  • >>> import bgapi
  • >>> připojení = bgapi.SerialConnector('COM49')
  • >>> uzel = bgapi.BGLib(spojení,'sl_bt.xapi')
  • >>> node.open()
  • >>> inzerent_set = node.bt.advertiser.create_set().handle
  • >>> node.bt.advertiser.start(advertiser_set, 2, 2)
    • bt_rsp_advertiser_start(výsledek=0)

Vytvoření klientské aplikace Bluetooth v Pythonu

  • Vytvoření klienta je složitější než implementace serveru. Proto napíšeme python skript. Otevřete svůj oblíbený textový editor a vytvořte nový file, říkejme tomu client.py
  • Importujte následující položky:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 4
  • Stejně jako v případě serveru se k uzlu připojíme přes UART. Zde použijte číslo COM portu vaší druhé desky:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 5
  • Odtud bude naše aplikace řízena událostmi. Kdykoli je zásobníkem vygenerována událost Bluetooth, událost zpracujeme a aplikaci posuneme vpřed:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 6
  • Definujme funkci event handler a přidejme handler pro událost system_boot, kde začneme skenovat periferní zařízení. Všimněte si, že tato funkce by měla být definována před smyčkou while (a po definici proměnné uzlu).SILICON LABS 21Q2 Bluetooth Features Lab 7.
  • Po spuštění skeneru bude uzel přijímat zprávy o skenování. Přidejme obslužnou rutinu události pro zprávy o skenování v rámci funkce sl_bt_on_event(). Pokud je nalezena zpráva o skenování s inzerovaným názvem zařízení „PyBGAPI Example“, klient otevře připojení k tomuto zařízení: Laboratoř funkcí Bluetooth SILICON LABS 21Q2 7
  • Jakmile dosáhnete tohoto bodu, stojí za to zkontrolovat, zda váš klient najde server. Ujistěte se, že jste spustili reklamu na druhém zařízení, poté uložte client.py a spusťte jej z příkazového řádku. Měli byste vidět něco takového: Laboratoř funkcí Bluetooth SILICON LABS 21Q2 8
  • Klient musí objevit služby a vlastnosti na serveru. Zde objevíme službu Generic Access a charakteristiku Device Name a nakonec přečteme hodnotu charakteristiky Device Name. Nahraďte svou aktuální funkci sl_bt_on_event() následujícím kódem:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 9 Laboratoř funkcí Bluetooth SILICON LABS 21Q2 10
  • Uložte client.py a spusťte jej z příkazového řádku. Měli byste vidět něco takového:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 11

Přidání funkce LE Power Control

Bliká cílová zařízení

LE Power Control není povoleno v Bluetooth example projekty ve výchozím nastavení. Chcete-li přidat tuto funkci, musí být nainstalována softwarová komponenta Bluetooth > Funkce > PowerControl.

  • Otevřete spouštěč view z Simplicity Studio 5.
  • Vyberte jedno ze svých zařízení na kartě Debug Adapters. Ujistěte se, že preferovaná sada SDK je v3.2.
  • Otevřete Example Projects & Demos a najděte Bluetooth – NCP Empty example. Stisknutím [Vytvořit] vytvořte projekt. (Tentokrát nechceme budovat databázi GATT, takže použijeme NCP Empty, která má výchozí.)
  • Otevřete záložku GATT Configurator, vyberte charakteristiku Device Name a přepište „Silabs Example“ počáteční hodnota s „PyBGAPI Example“ (aby klient server rozpoznal). Přepište také délku hodnoty 15.
  • Stiskněte ctrl-s pro uložení databáze.
  • V konfigurátoru projektu otevřete kartu Softwarové komponenty.
  • Najděte softwarovou komponentu Bluetooth > Funkce > PowerControl a klikněte na [Instalovat]Laboratoř funkcí Bluetooth SILICON LABS 21Q2 12
  • Kliknutím na ozubené kolečko vedle softwarové komponenty PowerControl zkontrolujte horní a dolní hranici zlatého rozsahu. Nastavte spodní limit pro 1M
    • PHY na -45 (místo -60). I když v praxi tato hodnota není optimální, povede to k většímu nastavení Tx výkonu, což je dobré pro demonstrační účely.
  • Ve verzi SDK 3.2.0 je pro správné nastavení zlatého rozsahu nutné použít malé řešení: otevřete soubor sl_bluetooth.c file najdete ve složce /autogen vašeho projektu a přesuňte sl_bt_init_power_control(); volání funkce PŘED sl_bt_init_stack(&config);Laboratoř funkcí Bluetooth SILICON LABS 21Q2 13
  • Sestavte projekt a flashujte jej na nástěnku.
  • Pokud jsou vaše dvě desky stejného typu, flashujte stejný obrázek také na druhé desce. Pokud je vaše druhá deska jiná deska, opakujte výše uvedené kroky pro druhou desku.

Spuštění serveru a klienta

  • Nyní znovu otevřete bash Pythonu, připojte se ke své první desce a začněte inzerovatLaboratoř funkcí Bluetooth SILICON LABS 21Q2 14
  • Upravte svou klientskou aplikaci tak, aby se po přečtení názvu zařízení neukončila. Najděte následující řádky a vložte je do komentáře:Laboratoř funkcí Bluetooth SILICON LABS 21Q2 15
  • Uložte a spusťte svou klientskou aplikaci
    • py .\client.py
  • Umístěte své dvě desky daleko a pak je pomalu přibližujte k sobě. Nyní byste měli vidět, že zásobník začíná snižovat úroveň výkonu z výchozích 8 dBm až na -3 dBm (což je ve výchozím nastavení minimální výkon Tx):Laboratoř funkcí Bluetooth SILICON LABS 21Q2 16

Dokumenty / zdroje

SILICON LABS 21Q2 Bluetooth Features Lab [pdfNávod k obsluze
21Q2, Laboratoř funkcí Bluetooth, Laboratoř funkcí Bluetooth 21Q2, Laboratoř funkcí, Laboratoř

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *