SILICON LABS 21Q2 Bluetooth Features Lab
ຄູ່ມືການທົດລອງຄຸນນະສົມບັດ Bluetooth 21Q2
ຄູ່ມືຫ້ອງທົດລອງນີ້ນໍາທ່ານຜ່ານບາງຄຸນສົມບັດ Bluetooth SDK ໃໝ່ທີ່ໄດ້ຖືກນໍາສະເຫນີລະຫວ່າງການປ່ອຍ 20Q4 ແລະ 21Q2. ໃນຫ້ອງທົດລອງນີ້ພວກເຮົາຈະສ້າງ NCP example ແລະຂຽນຊອບແວໂຮດໃນພາສາ Python. ການນໍາໃຊ້ຄຸນສົມບັດ GATT ແບບເຄື່ອນໄຫວໃຫມ່ພວກເຮົາຈະສ້າງຖານຂໍ້ມູນ GATT ຈາກຊອບແວໂຮດແທນທີ່ຈະໃຊ້ GATT Configurator. ສຸດທ້າຍ LE ຄຸນນະສົມບັດການຄວບຄຸມພະລັງງານໄດ້ຖືກນໍາສະເຫນີໂດຍການຂະຫຍາຍຊອບແວໂຮດ.
ເງື່ອນໄຂເບື້ອງຕົ້ນ
ເພື່ອເຮັດສໍາເລັດຫ້ອງທົດລອງນີ້, ທ່ານຈະຕ້ອງການດັ່ງຕໍ່ໄປນີ້:
- ສອງ Thunderboard BG22s ຫຼືສອງ WSTKs ທີ່ມີກະດານວິທະຍຸ EFR32BG/EFR32MG ຫຼືການປະສົມຂອງສິ່ງເຫຼົ່ານີ້.
- Simplicity Studio 5 ຕິດຕັ້ງ, ມີ Gecko SDK v3.2 ລວມທັງ Bluetooth SDKv3.2
- PC ທີ່ຕິດຕັ້ງ Python v3.6 ຫຼືໃໝ່ກວ່ານັ້ນ
ການກະພິບອຸປະກອນເປົ້າໝາຍສຳລັບຟັງຊັນ NCP
- ແນບສອງກະດານວິທະຍຸຂອງເຈົ້າແລະເປີດ Simplicity Studio 5
- ເລືອກຫນຶ່ງໃນກະດານວິທະຍຸຢູ່ໃນແຖບ Debug Adapters
- ຕັ້ງ SDK ທີ່ຕ້ອງການເປັນ v3.2.0 ໃນ Overview ແຖບຂອງ Launcher view
- ເປີດ Example Projects & Demos tab
- ຊອກຫາ Bluetooth ໃໝ່ – NCP demo.
- ກົດແລ່ນເພື່ອກະພິບຮູບພາບເປົ້າໝາຍ NCP ໃສ່ກະດານ.
(ຫມາຍເຫດ: ກົງກັນຂ້າມກັບ Bluetooth – NCP ຫວ່າງເປົ່າ, ໂຄງການນີ້ບໍ່ລວມເອົາຖານຂໍ້ມູນ GATT ທີ່ສ້າງຂຶ້ນກ່ອນ, ແຕ່ມັນມີ GATT API ເຄື່ອນໄຫວ, ເຊິ່ງແມ່ນເງື່ອນໄຂເບື້ອງຕົ້ນສໍາລັບພາກສ່ວນຕໍ່ໄປ)
- ເຮັດຊ້ໍາຂັ້ນຕອນດຽວກັນສໍາລັບກະດານວິທະຍຸອື່ນໆ.
ການສ້າງແອັບພລິເຄຊັນ Bluetooth Server ໃນ Python
ການເລີ່ມຕົ້ນ
- ຊຸດ pybgapi ສະຫນອງຄວາມເປັນໄປໄດ້ໃນການອອກຄໍາສັ່ງ BGAPI ໄປຫາອຸປະກອນເປົ້າຫມາຍດັ່ງກ່າວຈາກ PC ໂດຍໃຊ້ພາສາການຂຽນໂປລແກລມ Python. ການຕິດຕັ້ງແພັກເກັດນີ້ໃຫ້ພິມຕໍ່ໄປນີ້ໃນແຖວຄໍາສັ່ງ: pip ຕິດຕັ້ງ pybgapi ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການໄປຢ້ຽມຢາມແພັກເກັດ https://pypi.org/project/pybgapi/
- ຊອກຫາຄໍານິຍາມ BGAPI ຫຼ້າສຸດ file ພາຍໃຕ້
- C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2.0\protocol\bluetooth\api\sl_bt.xapi ແລະສຳເນົາມັນໃສ່ໂຟນເດີທີ່ເຮັດວຽກຂອງທ່ານ.
- ເປີດ python bash (ພິມ python ໃນ CLI)
- ນໍາເຂົ້າຫ້ອງສະຫມຸດ bgapi ດ້ວຍຄໍາສັ່ງຕໍ່ໄປນີ້: >>> ນໍາເຂົ້າ bgapi
- ຊອກຫາໝາຍເລກຜອດ COM (ເຊັ່ນ: COM49) ຂອງໜຶ່ງໃນກະດານວິທະຍຸຂອງເຈົ້າ. ທ່ານຄວນຊອກຫາ “JLink CDC UART Port” ໃນ Device Manager ຫຼືໃນແອັບ Terminal ທີ່ທ່ານມັກ.
- ເຊື່ອມຕໍ່ກັບກະດານວິທະຍຸຂອງທ່ານ:
- >>> ການເຊື່ອມຕໍ່ = bgapi.SerialConnector('COM49')
- ເລີ່ມຕົ້ນຫ້ອງສະຫມຸດ pybgapi ສໍາລັບ node ນີ້:
- >>> node = bgapi.BGLib(ການເຊື່ອມຕໍ່,'sl_bt.xapi')
- ເປີດການສື່ສານ BGAPI ໄປຫາ node ນີ້:
- >>> node.open()
- ກວດເບິ່ງວ່າທ່ານສາມາດສື່ສານກັບຄະນະໄດ້, ໂດຍໃຊ້ຄໍາສັ່ງ system_hello(). ທ່ານຄວນຈະໄດ້ຮັບການຕອບ system_hello:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(ຜົນໄດ້ຮັບ=0)
- >>> node.bt.system.hello()
- ຣີເຊັດໂນດຂອງທ່ານດ້ວຍຄຳສັ່ງຕໍ່ໄປນີ້:
- node.bt.system.reset(0)
- ໃນປັດຈຸບັນທ່ານຄວນໄດ້ຮັບເຫດການ system_boot. ເພື່ອດຶງເອົາເຫດການຫຼ້າສຸດ, ໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້:
- evt = node.get_events(max_events=1)
- ພິມ(evt)
- [bt_evt_system_boot(major=3, minor=2, patch=0, build=774, bootloader=17563648, hw=1, hash=1181938724)]
ການສ້າງຖານຂໍ້ມູນ GATT
- ແອັບຯເປົ້າໝາຍ Bluetooth – NCP ບໍ່ລວມເອົາຖານຂໍ້ມູນ GATT ທີ່ສ້າງມາກ່ອນ. ໃນທີ່ນີ້ພວກເຮົາຈະສ້າງຖານຂໍ້ມູນຈາກລະຫັດ. ທໍາອິດເລີ່ມຕົ້ນກອງປະຊຸມສໍາລັບການກໍ່ສ້າງຖານຂໍ້ມູນ:
- >>> session = node.bt.gattdb.new_session().session
- ເພີ່ມການບໍລິການໃຫມ່ໃສ່ຖານຂໍ້ມູນ GATT. ໃນທີ່ນີ້ພວກເຮົາຈະເພີ່ມການບໍລິການການເຂົ້າເຖິງທົ່ວໄປທີ່ຮັບຮອງເອົາໂດຍ Bluetooth SIG. ນີ້ແມ່ນການບໍລິການຕົ້ນຕໍ (0x0) ທີ່ບໍ່ມີການຕັ້ງຄ່າ (0x0) ແລະມີ 16bit UUID (0x1800).
- service = node.bt.gattdb.add_service(session, 0, 0, bytes.fromhex(“0018”)).service
- ເພີ່ມລັກສະນະໃຫມ່ໃຫ້ກັບການບໍລິການ. ໃນທີ່ນີ້ພວກເຮົາຈະເພີ່ມລັກສະນະຊື່ອຸປະກອນໃຫ້ກັບບໍລິການການເຂົ້າເຖິງທົ່ວໄປທີ່ມີຄຸນສົມບັດ READ (0x2), ບໍ່ມີຄວາມຕ້ອງການຄວາມປອດໄພ (0x0), ບໍ່ມີທຸງ (0x0), 16bit UUID (0x2a00), ຄວາມຍາວຕົວແປ (0x2), ຄວາມຍາວສູງສຸດຂອງ 20 ແລະ ດ້ວຍຄ່າເບື້ອງຕົ້ນຂອງ “PyBGAPI
Example”:
- >>> char = node.bt.gattdb.add_uuid16_characteristic(session, service, 2, 0, 0, bytes.fromhex('002a'), 2,
- 20, bytes('PyBGAPI Example','utf-8′)).ລັກສະນະ
- 3.15 ເປີດໃຊ້ບໍລິການໃໝ່:
- >>> node.bt.gattdb.start_service(session,service)
- bt_rsp_gattdb_start_service(ຜົນໄດ້ຮັບ=0)
- ເປີດໃຊ້ຄຸນສົມບັດໃໝ່:
- >>> node.bt.gattdb.start_characteristic(session, char)
- bt_rsp_gattdb_start_characteristic(ຜົນໄດ້ຮັບ=0)
- >>> node.bt.gattdb.start_characteristic(session, char)
- ບັນທຶກການປ່ຽນແປງ ແລະປິດເຊດຊັນການແກ້ໄຂຖານຂໍ້ມູນ:
- >>> node.bt.gattdb.commit(session)
- bt_rsp_gattdb_commit(ຜົນໄດ້ຮັບ=0)
ກຳລັງເຊື່ອມຕໍ່ກັບເຊີບເວີ
- 3.18 ໃນປັດຈຸບັນທີ່ພວກເຮົາມີຊື່ອຸປະກອນໃນຖານຂໍ້ມູນ GATT, ພວກເຮົາສາມາດເລີ່ມຕົ້ນການໂຄສະນາ. stack ອັດຕະໂນມັດຈະໂຄສະນາອຸປະກອນທີ່ມີຊື່ທີ່ກໍານົດໄວ້ໃນຖານຂໍ້ມູນ GATT ຂອງຕົນ:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(ຜົນໄດ້ຮັບ=0)
- ເລີ່ມ EFR Connect ໃນໂທລະສັບຂອງທ່ານ, ແລະຊອກຫາການໂຄສະນາອຸປະກອນຂອງທ່ານເປັນ “PyBGAPI Example”
- ທ່ານສາມາດເຊື່ອມຕໍ່ກັບອຸປະກອນແລະຄົ້ນພົບຖານຂໍ້ມູນ GATT ຂອງມັນເຊິ່ງປະຈຸບັນມີລັກສະນະຊື່ອຸປະກອນ
ຫມາຍເຫດ: ຖ້າຫາກວ່າທ່ານຕ້ອງການ ex ໄວຫຼາຍample ໂດຍບໍ່ມີການລົບກວນກັບຖານຂໍ້ມູນ GATT, ທ່ານຍັງສາມາດ flash Bluetooth ໄດ້ - NCP Empty exampໄປທີ່ກະດານຂອງທ່ານ, ເຊິ່ງມີຖານຂໍ້ມູນ GATT ທີ່ສ້າງຂຶ້ນກ່ອນ. ໃນກໍລະນີນີ້ທັງຫມົດທີ່ທ່ານຕ້ອງເຮັດຢູ່ໃນຝ່າຍເຈົ້າພາບແມ່ນ:
- >>> ນໍາເຂົ້າ bgapi
- >>> ການເຊື່ອມຕໍ່ = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(ການເຊື່ອມຕໍ່,'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(ຜົນໄດ້ຮັບ=0)
ການສ້າງແອັບພລິເຄຊັນລູກຄ້າ Bluetooth ໃນ Python
- ການສ້າງລູກຄ້າແມ່ນສັບສົນຫຼາຍກ່ວາການປະຕິບັດເຄື່ອງແມ່ຂ່າຍ. ດັ່ງນັ້ນພວກເຮົາຈະຂຽນ script python. ເປີດຕົວແກ້ໄຂຂໍ້ຄວາມທີ່ທ່ານມັກ ແລະສ້າງອັນໃໝ່ file, ໃຫ້ໂທຫາມັນ client.py
- ນໍາເຂົ້າດັ່ງຕໍ່ໄປນີ້:
- ຄືກັນກັບໃນກໍລະນີຂອງເຄື່ອງແມ່ຂ່າຍ, ພວກເຮົາຈະເຊື່ອມຕໍ່ກັບ node ຜ່ານ UART. ໃຊ້ໝາຍເລກພອດ COM ຂອງກະດານທີສອງຂອງເຈົ້າຢູ່ທີ່ນີ້:
- ຈາກທີ່ນີ້, ຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາຈະຖືກຂັບເຄື່ອນເຫດການ. ເມື່ອໃດກໍ່ຕາມເຫດການ Bluetooth ຖືກສ້າງຂຶ້ນໂດຍ stack, ພວກເຮົາຈະຈັດການເຫດການແລະສົ່ງຕໍ່ແອັບພລິເຄຊັນ:
- ໃຫ້ກໍານົດຟັງຊັນຕົວຈັດການເຫດການແລະເພີ່ມຕົວຈັດການສໍາລັບເຫດການ system_boot, ບ່ອນທີ່ພວກເຮົາຈະເລີ່ມຕົ້ນການສະແກນສໍາລັບອຸປະກອນຕໍ່ຂ້າງ. ໝາຍເຫດ, ຟັງຊັນນີ້ຄວນຈະຖືກກຳນົດກ່ອນ while loop (ແລະຫຼັງຈາກຄຳນິຍາມຂອງຕົວແປຂອງ node).
- ເມື່ອເຄື່ອງສະແກນເລີ່ມຕົ້ນ, node ຈະໄດ້ຮັບລາຍງານການສະແກນ. ໃຫ້ເພີ່ມຕົວຈັດການເຫດການສໍາລັບການສະແກນລາຍງານພາຍໃນຟັງຊັນ sl_bt_on_event(). ຖ້າພົບລາຍງານການສະແກນດ້ວຍຊື່ອຸປະກອນທີ່ໂຄສະນາ “PyBGAPI Example”, ລູກຄ້າຈະເປີດການເຊື່ອມຕໍ່ໄປຫາອຸປະກອນນັ້ນ:
- ເມື່ອທ່ານມາຮອດຈຸດນີ້, ມັນເປັນມູນຄ່າການກວດສອບວ່າລູກຄ້າຂອງທ່ານພົບເຄື່ອງແມ່ຂ່າຍ. ໃຫ້ແນ່ໃຈວ່າ, ວ່າທ່ານໄດ້ເລີ່ມຕົ້ນການໂຄສະນາໃນອຸປະກອນອື່ນ, ຫຼັງຈາກນັ້ນບັນທຶກ client.py, ແລະເລີ່ມຕົ້ນມັນຈາກເສັ້ນຄໍາສັ່ງ. ທ່ານຄວນເບິ່ງບາງສິ່ງບາງຢ່າງເຊັ່ນນີ້:
- ລູກຄ້າຕ້ອງຄົ້ນພົບການບໍລິການ ແລະຄຸນລັກສະນະຕ່າງໆໃນເຊີບເວີ. ໃນທີ່ນີ້ພວກເຮົາຈະຄົ້ນພົບການບໍລິການ Generic Access ແລະລັກສະນະຊື່ອຸປະກອນ, ແລະສຸດທ້າຍໄດ້ອ່ານອອກມູນຄ່າຂອງລັກສະນະຂອງຊື່ອຸປະກອນ. ແທນທີ່ຟັງຊັນ sl_bt_on_event() ປັດຈຸບັນຂອງທ່ານດ້ວຍລະຫັດຕໍ່ໄປນີ້:
- ບັນທຶກ client.py ແລະເລີ່ມຕົ້ນມັນຈາກແຖວຄໍາສັ່ງ. ທ່ານຄວນເບິ່ງບາງສິ່ງບາງຢ່າງເຊັ່ນນີ້:
ເພີ່ມຄຸນສົມບັດການຄວບຄຸມພະລັງງານ LE
ກະພິບອຸປະກອນເປົ້າໝາຍ
LE Power Control ບໍ່ໄດ້ເປີດໃຊ້ໃນ Bluetooth example ໂຄງການໂດຍຄ່າເລີ່ມຕົ້ນ. ເພື່ອເພີ່ມຄຸນສົມບັດນີ້, ຕ້ອງຕິດຕັ້ງ Bluetooth > ຄຸນສົມບັດ > ອົງປະກອບຊອບແວ PowerControl.
- ເປີດ launcher ໄດ້ view ຂອງ Simplicity Studio 5.
- ເລືອກໜຶ່ງໃນອຸປະກອນຂອງທ່ານຢູ່ໃນແຖບ Debug Adapters. ໃຫ້ແນ່ໃຈວ່າ SDK ທີ່ຕ້ອງການແມ່ນ v3.2.
- ເປີດ Example Projects & Demos tab ແລະຊອກຫາ Bluetooth – NCP Empty exampເລ. ກົດ [Create] ເພື່ອສ້າງໂຄງການ. (ເວລານີ້ພວກເຮົາບໍ່ຕ້ອງການສ້າງຖານຂໍ້ມູນ GATT, ດັ່ງນັ້ນພວກເຮົາໃຊ້ NCP Empty, ເຊິ່ງມີຄ່າເລີ່ມຕົ້ນ.)
- ເປີດແຖບ GATT Configurator, ເລືອກລັກສະນະຊື່ອຸປະກອນ, ແລະຂຽນທັບ “Silabs Example” ຄ່າເບື້ອງຕົ້ນກັບ “PyBGAPI Example” (ດັ່ງນັ້ນລູກຄ້າຈະຮັບຮູ້ເຄື່ອງແມ່ຂ່າຍ). ຂຽນທັບຄວາມຍາວຄ່າດ້ວຍ 15.
- ກົດ ctrl-s ເພື່ອບັນທຶກຖານຂໍ້ມູນ.
- ໃນໂປແກມ Configurator ເປີດແຖບອົງປະກອບຊອບແວ.
- ຊອກຫາ Bluetooth > ຄຸນສົມບັດ > ອົງປະກອບຊອບແວ PowerControl, ແລະຄລິກ [ຕິດຕັ້ງ]
- ໃຫ້ຄລິກໃສ່ cogwheel ຖັດຈາກອົງປະກອບ PowerControlsoftware ເພື່ອກວດເບິ່ງຂອບເຂດຈໍາກັດເທິງແລະຕ່ໍາຂອງລະດັບທອງ. ກໍານົດຂອບເຂດຈໍາກັດຕ່ໍາສໍາລັບ 1M
- PHY ຫາ -45 (ແທນ -60). ເຖິງແມ່ນວ່າໃນການປະຕິບັດຄ່ານີ້ແມ່ນບໍ່ເຫມາະສົມ, ມັນຈະສົ່ງຜົນໃຫ້ມີການປັບພະລັງງານ Tx ຫຼາຍຂຶ້ນ, ເຊິ່ງເປັນສິ່ງທີ່ດີສໍາລັບຈຸດປະສົງການສາທິດ.
- ໃນ SDK ເວີຊັ່ນ 3.2.0, ຈໍາເປັນຕ້ອງໄດ້ໃຊ້ວິທີການແກ້ໄຂເລັກນ້ອຍເພື່ອກໍານົດຂອບເຂດທອງໃຫ້ຖືກຕ້ອງ: ເປີດ sl_bluetooth.c file ພົບຢູ່ໃນໂຟນເດີ /autogen ຂອງໂຄງການຂອງທ່ານແລະຍ້າຍ sl_bt_init_power_control(); ເອີ້ນຟັງຊັນກ່ອນ sl_bt_init_stack(&config);
- ສ້າງໂຄງການແລະກະພິບໃສ່ກະດານຂອງທ່ານ.
- ຖ້າສອງກະດານຂອງເຈົ້າເປັນປະເພດດຽວກັນ, ກະພິບຮູບດຽວກັນໄປໃສ່ກະດານອື່ນເຊັ່ນກັນ. ຖ້າກະດານທີສອງຂອງທ່ານແມ່ນກະດານທີ່ແຕກຕ່າງກັນ, ຫຼັງຈາກນັ້ນເຮັດຊ້ໍາຂັ້ນຕອນຂ້າງເທິງສໍາລັບກະດານທີສອງ.
ເລີ່ມຕົ້ນເຄື່ອງແມ່ຂ່າຍແລະລູກຄ້າ
- ໃນປັດຈຸບັນອີກເທື່ອຫນຶ່ງ, ເປີດ Python bash, ເຊື່ອມຕໍ່ກັບກະດານທໍາອິດຂອງທ່ານແລະເລີ່ມຕົ້ນການໂຄສະນາ
- ແກ້ໄຂແອັບພລິເຄຊັນລູກຄ້າຂອງເຈົ້າເພື່ອບໍ່ໃຫ້ມັນອອກໄປຫຼັງຈາກອ່ານຊື່ອຸປະກອນ. ຊອກຫາເສັ້ນຕໍ່ໄປນີ້, ແລະໃສ່ໃນຄໍາເຫັນ:
- ບັນທຶກແລະດໍາເນີນການຄໍາຮ້ອງສະຫມັກລູກຄ້າຂອງທ່ານ
- py .\client.py
- ວາງກະດານສອງອັນຂອງເຈົ້າໄວ້ໄກໆ, ຈາກນັ້ນຄ່ອຍໆເລື່ອນພວກມັນເຂົ້າໃກ້ກັນ. ໃນປັດຈຸບັນທ່ານຄວນເຫັນວ່າ stack ເລີ່ມຫຼຸດລົງລະດັບພະລັງງານຂອງມັນຈາກຄ່າເລີ່ມຕົ້ນ 8dBm ລົງເປັນ -3dBm (ເຊິ່ງເປັນພະລັງງານ Tx ຫນ້ອຍທີ່ສຸດຕາມຄ່າເລີ່ມຕົ້ນ):
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
SILICON LABS 21Q2 Bluetooth Features Lab [pdf] ຄູ່ມືການສອນ 21Q2, ຫ້ອງທົດລອງຄຸນສົມບັດ Bluetooth, ຫ້ອງທົດລອງຄຸນສົມບັດ Bluetooth 21Q2, ຫ້ອງທົດລອງຄຸນສົມບັດ, ຫ້ອງທົດລອງ |