SILICON LABS 21Q2 Bluetooth အင်္ဂါရပ်များ ဓာတ်ခွဲခန်း
Bluetooth 21Q2 အင်္ဂါရပ်များ ဓာတ်ခွဲခန်းလက်စွဲစာအုပ်
ဤဓာတ်ခွဲခန်းလက်စွဲစာအုပ်သည် 20Q4 နှင့် 21Q2 ထုတ်ဝေမှုကြားတွင် မိတ်ဆက်ခဲ့သည့် Bluetooth SDK အင်္ဂါရပ်အသစ်အချို့ကို လမ်းညွှန်ပေးသည်။ ဤဓာတ်ခွဲခန်းတွင် NCP ဟောင်းကို ဖန်တီးပါမည်။ample နှင့် Python ဘာသာစကားဖြင့် host software ကိုရေးပါ။ ပြောင်းလဲနေသော GATT အင်္ဂါရပ်အသစ်ကို အသုံးပြုခြင်းဖြင့် ကျွန်ုပ်တို့သည် GATT Configurator ကိုအသုံးပြုမည့်အစား GATT ဒေတာဘေ့စ်ကို လက်ခံရယူမည့်ဆော့ဖ်ဝဲလ်မှ တည်ဆောက်မည်ဖြစ်သည်။ နောက်ဆုံးတွင် host software ကိုတိုးချဲ့ခြင်းဖြင့် LE Power Control အင်္ဂါရပ်ကိုတင်ပြသည်။
လိုအပ်ချက်များ
ဤဓာတ်ခွဲခန်းကို ပြီးမြောက်ရန်၊ သင်သည် အောက်ပါအတိုင်း လိုအပ်မည်ဖြစ်သည်။
- မည်သည့် EFR22BG/EFR32MG ရေဒီယိုဘုတ်ပါရှိသော Thunderboard BG32 သို့မဟုတ် WSTK နှစ်ခု သို့မဟုတ် ၎င်းတို့ကို ရောနှောပါ
- Bluetooth SDKv5 အပါအဝင် Gecko SDK v3.2 ဖြင့် Simplicity Studio 3.2 ကို ထည့်သွင်းထားသည်။
- Python v3.6 သို့မဟုတ် နောက်ပိုင်းတွင် ထည့်သွင်းထားသည့် PC တစ်ခု
NCP လုပ်ဆောင်ချက်အတွက် ပစ်မှတ်စက်ပစ္စည်းများကို ဖလက်ရှ်လုပ်ခြင်း။
- သင့်ရေဒီယိုဘုတ်နှစ်ခုကို ပူးတွဲပြီး Simplicity Studio 5 ကိုဖွင့်ပါ။
- Debug Adapters တက်ဘ်ရှိ ရေဒီယိုဘုတ်များထဲမှ တစ်ခုကို ရွေးပါ။
- Over တွင် Preferred SDK ကို v3.2.0 သို့ သတ်မှတ်ပါ။view Launcher ၏ tab view
- Ex ကိုဖွင့်ပါ။ample Projects & Demo တဘ်
- Bluetooth - NCP သရုပ်ပြအသစ်ကို ရှာပါ။
- NCP ပစ်မှတ်ပုံအား ဘုတ်သို့ flash ရန် Run ကိုနှိပ်ပါ။
(မှတ်ချက်- Bluetooth – NCP Empty နှင့် မတူဘဲ၊ ဤပရောဂျက်တွင် ကြိုတင်တည်ဆောက်ထားသည့် GATT ဒေတာဘေ့စ် မပါဝင်သော်လည်း နောက်အပိုင်းများအတွက် လိုအပ်ချက်များဖြစ်သည့် dynamic GATT API ကို ဖွင့်ထားပါသည်)
- အခြားရေဒီယိုဘုတ်အတွက် အလားတူအဆင့်များကို ပြန်လုပ်ပါ။
Python တွင် Bluetooth Server အက်ပ်ကို ဖန်တီးခြင်း။
စတင်အသုံးပြုခြင်း
- pybgapi ပက်ကေ့ဂျ်သည် Python ပရိုဂရမ်းမင်းဘာသာစကားကို အသုံးပြု၍ ပစ်မှတ်စက်ပစ္စည်းဆီသို့ BGAPI ညွှန်ကြားချက်များကို ထုတ်ပေးနိုင်ခြေကို ပံ့ပိုးပေးပါသည်။ ဤပက်ကေ့ဂျ်ကို ထည့်သွင်းရန် အမိန့်စာလိုင်းတွင် အောက်ပါတို့ကို ရိုက်ထည့်ပါ- pip install 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 ကိုဖွင့်ပါ (CLI တွင် python ကိုရိုက်ပါ)
- အောက်ပါ command ဖြင့် bgapi စာကြည့်တိုက်ကို တင်သွင်းပါ- >>> bgapi ကို တင်သွင်းပါ။
- သင့်ရေဒီယိုဘုတ်များထဲမှတစ်ခု၏ COM port နံပါတ် (ဥပမာ COM49) ကိုရှာပါ။ စက်ပစ္စည်းမန်နေဂျာ သို့မဟုတ် သင့်စိတ်ကြိုက် terminal အက်ပ်တွင် “JLink CDC UART Port” ကို ရှာသင့်သည်။
- သင့်ရေဒီယိုဘုတ်သို့ ချိတ်ဆက်ပါ-
- >>> ချိတ်ဆက်မှု = bgapi.SerialConnector('COM49')
- ဤ node အတွက် pybgapi စာကြည့်တိုက်ကို စတင်ပါ။
- >>> node = bgapi.BGLib(ချိတ်ဆက်မှု၊ 'sl_bt.xapi')
- ဤ node သို့ BGAPI ဆက်သွယ်ရေးကိုဖွင့်ပါ-
- >>> node.open()
- system_hello() ညွှန်ကြားချက်ကို အသုံးပြု၍ ဘုတ်အဖွဲ့နှင့် ဆက်သွယ်နိုင်၊ မရှိ စစ်ဆေးပါ။ သင်သည် system_hello တုံ့ပြန်မှုကို ရရှိသင့်သည်-
- >>> node.bt.system.hello()
- bt_rsp_system_hello(ရလဒ်=0)
- >>> node.bt.system.hello()
- အောက်ပါ command ဖြင့် သင့် node ကို ပြန်လည်သတ်မှတ်ပါ။
- node.bt.system.reset(0)
- ယခုသင်သည် system_boot ဖြစ်ရပ်တစ်ခုရသင့်သည်။ နောက်ဆုံးဖြစ်ရပ်ကိုရယူရန်၊ အောက်ပါ command ကိုအသုံးပြုပါ။
- 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)]
GATT ဒေတာဘေ့စကိုတည်ဆောက်ခြင်း။
- Bluetooth - NCP ပစ်မှတ်အက်ပ်တွင် ကြိုတင်တည်ဆောက်ထားသည့် GATT ဒေတာဘေ့စ် မပါဝင်ပါ။ ဤနေရာတွင် ကျွန်ုပ်တို့သည် ကုဒ်မှဒေတာဘေ့စ်ကို တည်ဆောက်ပါမည်။ ဒေတာဘေ့စ်တည်ဆောက်ခြင်းအတွက် ပထမဦးစွာ session တစ်ခုကို စတင်ပါ။
- >>> session = node.bt.gattdb.new_session().session
- GATT ဒေတာဘေ့စ်သို့ ဝန်ဆောင်မှုအသစ်တစ်ခု ထည့်ပါ။ ဤနေရာတွင် Bluetooth SIG မှ လက်ခံကျင့်သုံးသော Generic Access ဝန်ဆောင်မှုကို ပေါင်းထည့်ပါမည်။ ၎င်းသည် အလံများသတ်မှတ်ထားခြင်းမရှိသော (0x0) နှင့် 0bit UUID (0x16) ဖြင့် အဓိကဝန်ဆောင်မှုတစ်ခုဖြစ်သည်။
- ဝန်ဆောင်မှု = node.bt.gattdb.add_service(စက်ရှင်၊ 0၊ 0၊ bytes.fromhex(“0018”)).ဝန်ဆောင်မှု
- ဝန်ဆောင်မှုတွင် လက္ခဏာအသစ်တစ်ခု ထည့်ပါ။ ဤနေရာတွင် ကျွန်ုပ်တို့သည် READ ပိုင်ဆိုင်မှု (0x2)၊ လုံခြုံရေးလိုအပ်ချက်များ (0x0)၊ အလံမရှိသော (0x0)၊ 16bit UUID (0x2a00)၊ ပြောင်းလဲနိုင်သော အလျား (0x2)၊ အမြင့်ဆုံးအရှည် 20 နှင့် ယေဘူယျဝင်ရောက်ခြင်းဝန်ဆောင်မှုတွင် စက်ပစ္စည်းအမည်၏လက္ခဏာကို ပေါင်းထည့်ပါမည်။ “PyBGAPI ၏ ကနဦးတန်ဖိုး
Example":
- >>> char = node.bt.gattdb.add_uuid16_characteristic(စက်ရှင်၊ ဝန်ဆောင်မှု၊ 2၊ 0၊ 0၊ bytes.fromhex('002a'), 2၊
- 20၊ bytes('PyBGAPI Example','utf-8'))) ဝိသေသ
- 3.15 ဝန်ဆောင်မှုအသစ်ကို အသက်သွင်းပါ-
- >>> node.bt.gattdb.start_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().ကိုင်တွယ်
- >>> node.bt.advertiser.start(advertiser_set၊ 2၊ 2)
- bt_rsp_advertiser_start(ရလဒ်=0)
- သင့်ဖုန်းပေါ်တွင် EFR ချိတ်ဆက်မှုကို စတင်ပြီး “PyBGAPI Example”
- သင်သည် စက်ပစ္စည်းသို့ ချိတ်ဆက်နိုင်ပြီး ယခုအခါ စက်ပစ္စည်းအမည်၏ လက္ခဏာများပါရှိသော ၎င်း၏ GATT ဒေတာဘေ့စ်ကို ရှာဖွေတွေ့ရှိနိုင်ပါသည်။
မှတ်ချက်- ရည်းစားဟောင်းလိုချင်ရင်ample GATT ဒေတာဘေ့စ်ကို အနှောက်အယှက်မရှိဘဲ၊ သင်သည် Bluetooth - NCP Empty ex ကို flash နိုင်သည်။ampအခြေခံကြိုတင်တည်ဆောက်ထားသော GATT ဒေတာဘေ့စ်ပါရှိသော သင်၏ဘုတ်အဖွဲ့သို့ သွားပါ။ ဤကိစ္စတွင် အိမ်ရှင်ဘက်မှ သင်လုပ်ဆောင်ရမည့်အရာမှာ-
- >>> bgapi ကိုတင်သွင်းပါ။
- >>> ချိတ်ဆက်မှု = bgapi.SerialConnector('COM49')
- >>> node = bgapi.BGLib(ချိတ်ဆက်မှု၊ 'sl_bt.xapi')
- >>> node.open()
- >>> advertiser_set = node.bt.advertiser.create_set().ကိုင်တွယ်
- >>> node.bt.advertiser.start(advertiser_set၊ 2၊ 2)
- bt_rsp_advertiser_start(ရလဒ်=0)
Python တွင် Bluetooth Client Application တစ်ခုကို ဖန်တီးခြင်း။
- ကလိုင်းယင့်တစ်ခုဖန်တီးခြင်းသည် ဆာဗာကိုအကောင်အထည်ဖော်ခြင်းထက် ပိုမိုရှုပ်ထွေးသည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည် python script ကိုရေးပါမည်။ သင်အကြိုက်ဆုံး စာသားတည်းဖြတ်သူကိုဖွင့်ပြီး အသစ်တစ်ခုဖန်တီးပါ။ fileအဲဒါကို client.py လို့ ခေါ်ရအောင်
- အောက်ပါတို့ကို ထည့်သွင်းပါ-
- ဆာဗာကိစ္စကဲ့သို့ပင်၊ ကျွန်ုပ်တို့သည် UART မှတစ်ဆင့် node သို့ ချိတ်ဆက်ပါမည်။ သင့်ဒုတိယဘုတ်အဖွဲ့၏ COM ပေါက်နံပါတ်ကို ဤနေရာတွင် အသုံးပြုပါ-
- ဤနေရာမှနေ၍ ကျွန်ုပ်တို့၏ လျှောက်လွှာကို ဖြစ်ရပ်မောင်းနှင်ပါမည်။ ဘလူးတုသ်ဖြစ်ရပ်တစ်ခုကို stack မှထုတ်ပေးသည့်အခါတိုင်း၊ ကျွန်ုပ်တို့သည် အဖြစ်အပျက်ကို ကိုင်တွယ်ပြီး အက်ပ်လီကေးရှင်းကို ရှေ့သို့ မောင်းနှင်ပါမည်-
- ဖြစ်ရပ်ကိုင်တွယ်သူ လုပ်ဆောင်ချက်ကို သတ်မှတ်ပြီး system_boot ဖြစ်ရပ်အတွက် လက်ကိုင်တစ်ခုကို ထည့်ကြပါစို့၊၊ ကျွန်ုပ်တို့သည် အရံစက်ပစ္စည်းများအတွက် စကင်န်ဖတ်ပါမည်။ while loop (နှင့် node variable ၏ အဓိပ္ပါယ်ဖွင့်ဆိုချက်ပြီးနောက်) ဤလုပ်ဆောင်ချက်ကို မှတ်သားထားသင့်သည်။
- စကင်နာကို စတင်လိုက်သည်နှင့်၊ node သည် စကင်ဖတ်စစ်ဆေးခြင်းအစီရင်ခံစာများကို လက်ခံရရှိမည်ဖြစ်သည်။ sl_bt_on_event() လုပ်ဆောင်ချက်အတွင်း စကင်န်အစီရင်ခံချက်များအတွက် ဖြစ်ရပ်ကိုင်တွယ်ကိရိယာကို ထည့်ကြပါစို့။ ကြော်ငြာကိရိယာအမည် “PyBGAPI Example”၊ client သည် ထိုစက်ဆီသို့ ချိတ်ဆက်မှုကို ဖွင့်လိမ့်မည်-
- ဤအချက်ကို သင်ရောက်ရှိသည်နှင့်တစ်ပြိုင်နက် သင့်ဖောက်သည်သည် ဆာဗာကို တွေ့ရှိခြင်းရှိ၊မရှိ စစ်ဆေးသင့်ပါသည်။ သင်သည် အခြားစက်ပစ္စည်းပေါ်တွင် ကြော်ငြာကိုစတင်ခဲ့ပြီး၊ ထို့နောက် client.py ကိုသိမ်းဆည်းပြီး ၎င်းကို command line မှစတင်ကြောင်း သေချာပါစေ။ ဤကဲ့သို့သောအရာများကိုသင်မြင်သင့်သည်-
- သုံးစွဲသူသည် ဆာဗာပေါ်တွင် ဝန်ဆောင်မှုများနှင့် လက္ခဏာရပ်များကို ရှာဖွေတွေ့ရှိရပါမည်။ ဤနေရာတွင် Generic Access Service နှင့် Device Name လက္ခဏာကို ရှာဖွေတွေ့ရှိပြီး နောက်ဆုံးတွင် Device Name ၏တန်ဖိုးကိုဖတ်ပါ။ သင့်လက်ရှိ sl_bt_on_event() လုပ်ဆောင်ချက်ကို အောက်ပါကုဒ်ဖြင့် အစားထိုးပါ။
- client.py ကိုသိမ်းပြီး command line မှစတင်ပါ။ ဤကဲ့သို့သောအရာများကိုသင်မြင်သင့်သည်-
LE Power Control Feature ကိုထည့်သွင်းခြင်း။
ပစ်မှတ်ကိရိယာများကို ဖလက်ရှ်လုပ်ခြင်း။
LE Power Control ကို Bluetooth ex တွင် ဖွင့်မထားပါ။ampပုံသေအားဖြင့် ပရောဂျက်များ။ ဤအင်္ဂါရပ်ကိုထည့်သွင်းရန်၊ Bluetooth > လုပ်ဆောင်ချက် > PowerControl ဆော့ဖ်ဝဲအစိတ်အပိုင်းကို ထည့်သွင်းရပါမည်။
- launcher ကိုဖွင့်ပါ။ view Simplicity Studio 5 ၏
- Debug Adapters တက်ဘ်ရှိ သင့်စက်ပစ္စည်းများထဲမှ တစ်ခုကို ရွေးပါ။ နှစ်သက်သော SDK သည် v3.2 ဖြစ်ကြောင်း သေချာပါစေ။
- Ex ကိုဖွင့်ပါ။ample Projects & Demos tab နှင့် Bluetooth – NCP Empty ex ကိုရှာပါ။ampလဲ့ ပရောဂျက်ကိုဖန်တီးရန် [Create] ကိုနှိပ်ပါ။ (ဤတစ်ကြိမ်တွင် ကျွန်ုပ်တို့သည် GATT ဒေတာဘေ့စ်ကို မတည်ဆောက်ချင်တော့ပါ၊ ထို့ကြောင့် မူရင်းတစ်ခုပါရှိသည့် NCP Empty ကို အသုံးပြုပါသည်။)
- GATT Configurator တက်ဘ်ကိုဖွင့်ပါ၊ စက်ပစ္စည်းအမည် လက္ခဏာကိုရွေးချယ်ပြီး “Silabs Ex ကို ထပ်ရေးပါ။ample” “PyBGAPI Example” (ဒါမှ client က server ကိုမှတ်မိပါလိမ့်မယ်)။ တန်ဖိုးအရှည်ကို 15 ဖြင့် ထပ်ရေးပါ။
- ဒေတာဘေ့စ်ကိုသိမ်းဆည်းရန် ctrl-s ကိုနှိပ်ပါ။
- Project Configurator တွင် Software Components tab ကိုဖွင့်ပါ။
- Bluetooth > Feature > PowerControl software အစိတ်အပိုင်းကိုရှာပြီး [Install] ကိုနှိပ်ပါ။
- ရွှေရောင်အပိုင်းအခြား၏ အပေါ်နှင့်အောက် ကန့်သတ်ချက်များကို စစ်ဆေးရန် 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);
- ပရောဂျက်ကိုတည်ဆောက်ပြီး သင့်ဘုတ်တွင် flash လုပ်ပါ။
- သင့်ဘုတ်နှစ်ခုသည် အမျိုးအစားတူပါက တူညီသောပုံကို အခြားဘုတ်သို့ flash လုပ်ပါ။ သင့်ဒုတိယဘုတ်သည် အခြားဘုတ်တစ်ခုဖြစ်ပါက ဒုတိယဘုတ်အတွက် အထက်ပါအဆင့်များကို ပြန်လုပ်ပါ။
Server နှင့် Client ကို စတင်ခြင်း။
- ယခုတစ်ဖန်၊ Python bash ကိုဖွင့်ပါ၊ သင်၏ပထမဆုံးဘုတ်သို့ချိတ်ဆက်ပါ၊ ကြော်ငြာကိုစတင်ပါ။
- စက်ပစ္စည်းအမည်ကို ဖတ်ပြီးနောက် ထွက်မသွားစေရန် သင်၏ client အပလီကေးရှင်းကို ပြင်ဆင်ပါ။ အောက်ပါစာကြောင်းများကို ရှာဖွေပြီး မှတ်ချက်တစ်ခုတွင် ထည့်သွင်းပါ။
- သင်၏ client အပလီကေးရှင်းကို သိမ်းဆည်းပြီး လုပ်ဆောင်ပါ။
- py .\client.py
- မင်းရဲ့ဘုတ်နှစ်ခုကို အဝေးမှာထားပြီး ဖြည်းဖြည်းချင်း ရွှေ့လိုက်ပါ။ ယခု stack သည် မူရင်း 8dBm မှ -3dBm အထိ (ပုံမှန်အားဖြင့် အနည်းဆုံး Tx ပါဝါဖြစ်သည်) သည် ၎င်း၏ ပါဝါအဆင့်ကို ကျဆင်းလာသည်ကို ယခု သင်တွေ့မြင်ရမည်ဖြစ်ပါသည်။
စာရွက်စာတမ်းများ / အရင်းအမြစ်များ
![]() |
SILICON LABS 21Q2 Bluetooth အင်္ဂါရပ်များ ဓာတ်ခွဲခန်း [pdf] ညွှန်ကြားချက်လက်စွဲ 21Q2၊ Bluetooth Features Lab၊ 21Q2 Bluetooth Features Lab၊ Features Lab၊ Lab |