SILICON LABS LOGO

SILICON LABS 21Q2 Bluetooth Features Lab

SILICON LABS 21Q2 Bluetooth Features Lab

Bluetooth 21Q2 Features Lab Manual

Kini nga lab manual naggiya kanimo sa pipila sa mga bag-ong Bluetooth SDK nga bahin nga gipaila tali sa 20Q4 ug 21Q2 nga pagpagawas. Niini nga lab maghimo kita ug NCP example ug pagsulat og host software sa Python nga pinulongan. Gamit ang bag-ong dynamic nga feature sa GATT magtukod usab kami sa GATT database gikan sa host software imbes nga gamiton ang GATT Configurator. Sa katapusan ang LE Power Control nga bahin gipresentar pinaagi sa pagpalapad sa host software.SILICON LABS 21Q2 Bluetooth Features Lab 1

Mga kinahanglanon

Aron makompleto kini nga lab, kinahanglan nimo ang mga musunud:

  • Duha ka Thunderboard BG22s o duha ka WSTK nga adunay bisan unsang EFR32BG/EFR32MG radio board o ang pagsagol niini
  • Na-install ang Simplicity Studio 5, nga adunay Gecko SDK v3.2 lakip ang Bluetooth SDKv3.2
  • Usa ka PC diin na-install ang Python v3.6 o sa ulahi

Pag-flash sa Target nga mga Device para sa NCP Functionality

  • Ilakip ang imong duha ka radio board ug ablihi ang Simplicity Studio 5
  • Pagpili og usa sa mga radio board sa Debug Adapters tab
  • I-set ang Preferred SDK sa v3.2.0 sa Overview tab sa Launcher view
  • Ablihi ang Exampang tab nga Mga Proyekto ug Demo
  • Pangitaa ang bag-ong Bluetooth - NCP demo.
  • I-klik ang Run aron i-flash ang target nga imahe sa NCP sa pisara.SILICON LABS 21Q2 Bluetooth Features Lab 2

(Pahinumdom: sukwahi sa Bluetooth - NCP Empty, kini nga proyekto wala maglakip sa usa ka prebuilt GATT database, apan kini adunay dinamikong GATT API, nga usa ka kinahanglanon alang sa sunod nga mga seksyon)

  • Balika ang samang mga lakang alang sa laing radio board.

Paghimo og Bluetooth Server Application sa Python

Pagsugod

  • Ang pybgapi package naghatag ug posibilidad sa pag-isyu sa BGAPI nga mga sugo ngadto sa target device gikan sa PC gamit ang Python programming language. Aron ma-install kini nga package type ang mosunod sa command line: pip install pybgapi Para sa dugang nga impormasyon bahin sa package pagbisita https://pypi.org/project/pybgapi/
  • Pangitaa ang pinakabag-o nga kahulugan sa BGAPI file ubos
  • C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi ug kopyaha kini sa imong working folder.
  • Ablihi ang python bash (type python sa CLI)
  • Import ang bgapi library gamit ang mosunod nga command: >>> import bgapi
  • Pangitaa ang COM port number (eg COM49) sa usa sa imong radio boards. Kinahanglan nimong pangitaon ang "JLink CDC UART Port" sa Device Manager o sa imong paboritong terminal app.SILICON LABS 21Q2 Bluetooth Features Lab 3
  • Sumpaysumpaya ang imong radio board:
    • >>> koneksyon = bgapi.SerialConnector('COM49')
  • Pagsugod sa pybgapi library alang niini nga node:
    • >>> node = bgapi.BGLib(koneksyon,'sl_bt.xapi')
  • Ablihi ang komunikasyon sa BGAPI padulong niini nga node:
    • >>> node.open()
  • Susiha kon makakomunikar ka sa board, gamit ang system_hello() command. Kinahanglan nga makakuha ka usa ka tubag sa system_hello:
    • >>> node.bt.system.hello()
      • bt_rsp_system_hello(resulta=0)
  • I-reset ang imong node gamit ang mosunod nga sugo:
    • node.bt.system.reset(0)
  • Karon kinahanglan ka makakuha usa ka system_boot nga panghitabo. Aron makuha ang pinakabag-o nga panghitabo, gamita ang mosunod nga sugo:
    • evt = node.get_events(max_events=1)
    • print(evt)
      • [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]

Pagtukod sa GATT database

  • Ang Bluetooth - NCP target nga app wala maglakip sa usa ka prebuilt GATT database. Dinhi atong tukuron ang database gikan sa code. Pagsugod sa usa ka sesyon alang sa pagtukod sa database:
    • >>> session = node.bt.gattdb.new_session().session
  • Pagdugang og bag-ong serbisyo sa GATT database. Dinhi among idugang ang serbisyo sa Generic Access nga gisagop sa Bluetooth SIG. Kini usa ka nag-unang serbisyo (0x0) nga walay mga flag set (0x0) ug adunay 16bit UUID (0x1800).
    • serbisyo = node.bt.gattdb.add_service(session, 0, 0, bytes.fromhex(“0018”)).service
  • Pagdugang og bag-ong kinaiya sa serbisyo. Dinhi atong idugang ang kinaiya sa Device Name sa serbisyo sa Generic Access nga adunay READ property (0x2), walay mga kinahanglanon sa seguridad (0x0), walay mga bandila (0x0), 16bit UUID (0x2a00), variable length (0x2), maximum nga gitas-on sa 20 ug nga adunay inisyal nga kantidad sa "PyBGAPI

Example”:

  • >>> char = node.bt.gattdb.add_uuid16_characteristic(session, serbisyo, 2, 0, 0, bytes.fromhex('002a'), 2,
    • 20, bytes('PyBGAPI Example','utf-8′)).kinaiya
    • 3.15 I-aktibo ang bag-ong serbisyo:
  • >>> node.bt.gattdb.start_service(session,service)
    • bt_rsp_gattdb_start_service(resulta=0)
  • I-aktibo ang bag-ong kinaiya:
    • >>> node.bt.gattdb.start_characteristic(session, char)
      • bt_rsp_gattdb_start_characteristic(resulta=0)
  • I-save ang mga pagbag-o ug isira ang sesyon sa pag-edit sa database:
    • >>> node.bt.gattdb.commit(session)
    • bt_rsp_gattdb_commit(resulta=0)

Pagkonektar sa Server

  • 3.18 Karon nga kami adunay ngalan sa aparato sa database sa GATT, mahimo na namon sugdan ang pag-advertise. Awtomatiko nga i-anunsyo sa stack ang aparato gamit ang ngalan nga gipasabut sa database sa GATT:
    • >>> advertiser_set = node.bt.advertiser.create_set().handle
    • >>> node.bt.advertiser.start(advertiser_set, 2, 2)
      • bt_rsp_advertiser_start(resulta=0)
  • Sugdi ang EFR Connect sa imong telepono, ug pangitaa ang advertising sa imong device isip "PyBGAPI Example ”
  • Mahimo nimong ikonektar ang aparato ug madiskubre ang database sa GATT niini nga karon adunay kinaiya sa Device Name

Note: kung gusto nimo ug dali kaayo nga example sa walay pagsamok sa GATT database, mahimo pa nimo i-flash ang Bluetooth - NCP Empty example sa imong board, nga adunay sukaranan nga prebuilt GATT database. Niini nga kaso ang kinahanglan nimong buhaton sa bahin sa host mao ang:

  • >>> import bgapi
  • >>> koneksyon = bgapi.SerialConnector('COM49')
  • >>> node = bgapi.BGLib(koneksyon,'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(resulta=0)

Paghimo og Bluetooth Client Application sa Python

  • Ang paghimo sa usa ka kliyente mas komplikado kaysa sa pagpatuman sa usa ka server. Busa magsulat kami usa ka script sa python. Ablihi ang imong paborito nga text editor ug paghimo og bag-o file, tawgon nato ni nga client.py
  • Import ang mosunod:SILICON LABS 21Q2 Bluetooth Features Lab 4
  • Sama sa kaso sa server, magkonektar kami sa node pinaagi sa UART. Gamita ang COM port number sa imong ikaduhang board dinhi:SILICON LABS 21Q2 Bluetooth Features Lab 5
  • Gikan dinhi, ang among aplikasyon mahimong gimaneho sa panghitabo. Sa matag higayon nga ang usa ka Bluetooth nga panghitabo gihimo pinaagi sa stack, among dumalahon ang panghitabo ug ipadayon ang aplikasyon:SILICON LABS 21Q2 Bluetooth Features Lab 6
  • Atong ipasabot ang function handler sa panghitabo ug idugang ang handler para sa system_boot event, diin magsugod kita sa pag-scan sa mga peripheral device. Timan-i, nga kini nga function kinahanglan ipasabut sa wala pa ang while loop (ug pagkahuman sa kahulugan sa node variable).SILICON LABS 21Q2 Bluetooth Features Lab 7.
  • Kung masugdan na ang scanner, ang node makadawat mga taho sa pag-scan. Magdugang ta ug event handler para sa scan reports sulod sa sl_bt_on_event() function. Kung makit-an ang usa ka report sa pag-scan nga adunay gipahibalo nga ngalan sa aparato nga "PyBGAPI Example", ang kliyente mag-abli og koneksyon ngadto sa maong device: SILICON LABS 21Q2 Bluetooth Features Lab 7
  • Kung nakaabot ka niini nga punto angay nga susihon kung nakit-an sa imong kliyente ang server. Siguroha, nga imong gisugdan ang advertisement sa laing device, unya i-save ang client.py, ug sugdi kini gikan sa command line. Kinahanglan nimong makita ang usa ka butang nga sama niini: SILICON LABS 21Q2 Bluetooth Features Lab 8
  • Kinahanglang madiskubre sa kliyente ang mga serbisyo ug mga kinaiya sa server. Dinhi atong madiskobrehan ang Generic Access nga serbisyo ug ang Device Name nga kinaiya, ug sa katapusan basahon ang bili sa Device Name nga kinaiya. Ilisan ang imong kasamtangang sl_bt_on_event() function sa mosunod nga code:SILICON LABS 21Q2 Bluetooth Features Lab 9 SILICON LABS 21Q2 Bluetooth Features Lab 10
  • I-save ang client.py ug sugdi kini gikan sa command line. Kinahanglan nimong makita ang usa ka butang nga sama niini:SILICON LABS 21Q2 Bluetooth Features Lab 11

Pagdugang LE Power Control Feature

Pag-flash sa Target nga mga Device

Ang LE Power Control wala ma-enable sa Bluetooth example mga proyekto pinaagi sa default. Aron idugang kini nga bahin, ang Bluetooth> Feature> PowerControl software component kinahanglan i-install.

  • Ablihi ang launcher view sa Simplicity Studio 5.
  • Pagpili og usa sa imong mga device sa Debug Adapters tab. Siguroa nga ang gusto nga SDK kay v3.2.
  • Ablihi ang Example Projects & Demos tab ug pangitaa ang Bluetooth - NCP Empty example. Pindota ang [Paghimo] aron mahimo ang proyekto. (Niining higayona dili kami gusto nga magtukod sa database sa GATT, mao nga gigamit namon ang NCP Empty, nga adunay default.)
  • Ablihi ang GATT Configurator tab, pilia ang Device Name nga kinaiya, ug i-overwrite ang "Silabs Example" inisyal nga kantidad nga adunay "PyBGAPI Example” (aron mailhan sa kliyente ang server). I-overwrite usab ang kantidad nga gitas-on sa 15.
  • Pindota ang ctrl-s aron i-save ang database.
  • Sa Project Configurator ablihi ang tab nga Software Components.
  • Pangitaa ang Bluetooth > Feature > PowerControl software component, ug i-klik ang [Install]SILICON LABS 21Q2 Bluetooth Features Lab 12
  • I-klik ang cogwheel sunod sa PowerControlsoftware component aron masusi ang taas ug ubos nga limitasyon sa golden range. Ibutang ang ubos nga limitasyon para sa 1M
    • PHY ngadto sa -45 (imbes -60). Bisan kung sa praktis kini nga kantidad dili kamalaumon, kini moresulta sa daghang mga pag-adjust sa gahum sa Tx, nga maayo alang sa mga katuyoan sa pagpakita.
  • Sa SDK nga bersyon 3.2.0, usa ka gamay nga workaround ang kinahanglan i-apply aron mabutang sa husto ang golden range: ablihi ang sl_bluetooth.c file makita sa /autogen folder sa imong proyekto ug ibalhin ang sl_bt_init_power_control(); function nga tawag sa wala pa sl_bt_init_stack(&config);SILICON LABS 21Q2 Bluetooth Features Lab 13
  • Pagtukod sa proyekto ug i-flash kini sa imong board.
  • Kung ang imong duha ka tabla parehas nga tipo, i-flash ang parehas nga imahe sa pikas nga tabla usab. Kung ang imong ikaduhang board lahi nga board, unya balika ang mga lakang sa ibabaw para sa ikaduhang board.

Pagsugod sa Server ug sa Kliyente

  • Karon pag-usab, ablihi ang Python bash, pagkonektar sa imong unang board, ug pagsugod sa advertisingSILICON LABS 21Q2 Bluetooth Features Lab 14
  • Usba ang imong aplikasyon sa kliyente aron dili kini mogawas pagkahuman mabasa ang ngalan sa aparato. Pangitaa ang mosunod nga mga linya, ug ibutang kini sa usa ka komento:SILICON LABS 21Q2 Bluetooth Features Lab 15
  • I-save ug padagana ang imong aplikasyon sa kliyente
    • py .\client.py
  • Ibutang ang imong duha ka tabla sa layo, dayon hinayhinay nga paduol sila sa usag usa. Karon kinahanglan nimong makita nga ang stack nagsugod sa pagkunhod sa lebel sa gahum niini gikan sa default nga 8dBm hangtod sa -3dBm (nga mao ang labing gamay nga gahum sa Tx pinaagi sa default):SILICON LABS 21Q2 Bluetooth Features Lab 16

Mga Dokumento / Mga Kapanguhaan

SILICON LABS 21Q2 Bluetooth Features Lab [pdf] Manwal sa Instruksyon
21Q2, Bluetooth Features Lab, 21Q2 Bluetooth Features Lab, Features Lab, Lab

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *