د سیلیکون لابراتوار 21Q2 بلوتوټ ځانګړتیاوې لابراتوار
د بلوتوټ 21Q2 ځانګړتیاوې لابراتوار لارښود
دا لابراتوار لارښود تاسو ته د بلوتوټ SDK ځینې نوي ب featuresو له لارې پرمخ وړي چې د 20Q4 او 21Q2 خوشې کیدو ترمینځ معرفي شوي. پدې لابراتوار کې به موږ د NCP پخوانی جوړ کړوample او په Python ژبه کې کوربه سافټویر ولیکئ. د نوي متحرک GATT ځانګړتیا په کارولو سره موږ به د GATT ترتیب کونکي کارولو پرځای د کوربه سافټویر څخه د GATT ډیټابیس هم جوړ کړو. په نهایت کې د LE بریښنا کنټرول ځانګړتیا د کوربه سافټویر غزولو سره وړاندې کیږي.
شرطونه
د دې لابراتوار بشپړولو لپاره، تاسو به لاندې ته اړتیا ولرئ:
- دوه تندربورډ BG22s یا دوه WSTKs د هر EFR32BG/EFR32MG راډیو بورډ سره یا د دې ترکیب سره
- د ساده سټوډیو 5 نصب شوی، د بلوتوټ SDKv3.2 په شمول د Gecko SDK v3.2 سره
- یو کمپیوټر چې Python v3.6 یا وروسته نصب شوی وي
د NCP فعالیت لپاره د هدف وسیلو فلش کول
- خپل دوه راډیو بورډونه ضمیمه کړئ او د ساده سټوډیو 5 خلاص کړئ
- د ډیبګ اډاپټر ټب کې د راډیو بورډونو څخه یو غوره کړئ
- غوره شوی SDK په اوور کې v3.2.0 ته تنظیم کړئview د لانچر ټب view
- Ex خلاص کړئampد پروژې او ډیمو ټب
- نوی بلوتوټ ومومئ - NCP ډیمو.
- بورډ ته د NCP هدف عکس فلش کولو لپاره په چلول کلیک وکړئ.
(یادونه: د بلوتوت - NCP خالي په مقابل کې، دا پروژه د مخکې جوړ شوي GATT ډیټابیس نه لري، مګر دا د متحرک GATT API فعال شوی، کوم چې د راتلونکو برخو لپاره یو شرط دی)
- د نورو راډیو بورډ لپاره ورته ګامونه تکرار کړئ.
په Python کې د بلوتوټ سرور غوښتنلیک رامینځته کول
پیل کول
- د pybgapi بسته د Python برنامې ژبې په کارولو سره د PC څخه د هدف وسیلې په لور د 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 ټایپ کړئ)
- د لاندې کمانډ سره د bgapi کتابتون وارد کړئ: >>> bgapi وارد کړئ
- ستاسو د راډیو بورډونو څخه د COM پورټ شمیره (د بیلګې په توګه COM49) ومومئ. تاسو باید د وسیلې مدیر یا ستاسو د غوره ټرمینل ایپ کې "JLink CDC UART پورټ" وګورئ.
- خپل د راډیو بورډ سره وصل کړئ:
- >>> پیوستون = bgapi.SerialConnector('COM49')
- د دې نوډ لپاره د pybgapi کتابتون پیل کړئ:
- >>> نوډ = bgapi.BGLib(کنکشن،'sl_bt.xapi')
- د دې نوډ په لور د BGAPI ارتباط خلاص کړئ:
- >>> node.open()
- وګورئ چې تاسو کولی شئ د بورډ سره اړیکه ونیسئ، د system_hello() کمانډ په کارولو سره. تاسو باید د سیسټم_ هیلو ځواب ترلاسه کړئ:
- >>> node.bt.system.hello()
- bt_rsp_system_hello(نتیجه=0)
- >>> node.bt.system.hello()
- خپل نوډ د لاندې کمانډ سره تنظیم کړئ:
- node.bt.system.reset(0)
- اوس تاسو باید د سیسټم_بوټ پیښه ترلاسه کړئ. د وروستي پیښې ترلاسه کولو لپاره ، لاندې کمانډ وکاروئ:
- 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 ډیټابیس جوړول
- بلوتوث – د NCP هدف ایپ کې د GATT ډیټابیس دمخه جوړ شوی نه دی. دلته به موږ د کوډ څخه ډیټابیس جوړ کړو. لومړی د ډیټابیس جوړولو لپاره ناسته پیل کړئ:
- >>> غونډه = node.bt.gattdb.new_session().session
- د GATT ډیټابیس ته نوی خدمت اضافه کړئ. دلته به موږ د بلوتوټ SIG لخوا منل شوي عمومي لاسرسي خدمت اضافه کړو. دا یو لومړنی خدمت (0x0) دی چې هیڅ بیرغ نلري (0x0) او د 16bit UUID (0x1800) سره.
- خدمت = 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، بایټ ('PyBGAPI Example','utf-8′)) ځانګړنه
- 3.15 نوی خدمت فعال کړئ:
- >>> node.bt.gattdb.start_service(غونډه، خدمت)
- bt_rsp_gattdb_start_service(نتیجه=0)
- نوې ځانګړتیا فعاله کړئ:
- >>> node.bt.gattdb.start_characteristic(غونډه، چار)
- bt_rsp_gattdb_start_ځانګړتیا(نتیجه=0)
- >>> node.bt.gattdb.start_characteristic(غونډه، چار)
- بدلونونه خوندي کړئ او د ډیټابیس ترمیم سیشن بند کړئ:
- >>> node.bt.gattdb.commit(غونډه)
- bt_rsp_gattdb_commit(نتیجه=0)
د سرور سره نښلول
- 3.18 اوس چې موږ د GATT ډیټابیس کې د وسیلې نوم لرو، موږ کولی شو اعلان پیل کړو. سټیک به په اوتومات ډول وسیله د هغه نوم سره اعلان کړي چې د دې GATT ډیټابیس کې تعریف شوي:
- >>> advertiser_set = node.bt.advertiser.create_set().handle
- >>> node.bt.advertiser.start(advertiser_set, 2, 2)
- bt_rsp_advertiser_start(نتیجه=0)
- په خپل تلیفون کې EFR نښلول پیل کړئ، او د خپل وسیله اعلانات د "PyBGAPI Exampلی "
- تاسو کولی شئ وسیله سره وصل شئ او د دې GATT ډیټابیس ومومئ کوم چې اوس د وسیلې نوم ځانګړتیا لري
یادونه: که تاسو ډیر ګړندي سابقه غواړئampد GATT ډیټابیس سره د زحمت پرته ، تاسو لاهم کولی شئ بلوتوټ فلش کړئ - د NCP خالي پخوانیampستاسو بورډ ته لاړ شئ، کوم چې د GATT لومړنی جوړ شوی ډیټابیس لري. په دې حالت کې ټول هغه څه چې تاسو یې باید په کوربه اړخ کې وکړئ دا دي:
- >>> bgapi وارد کړئ
- >>> پیوستون = bgapi.SerialConnector('COM49')
- >>> نوډ = 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)
په Python کې د بلوتوټ پیرودونکي غوښتنلیک رامینځته کول
- د پیرودونکي رامینځته کول د سرور پلي کولو په پرتله خورا پیچلي دي. نو موږ به د پیتون سکریپټ ولیکو. خپل د خوښې متن ایډیټر خلاص کړئ او یو نوی جوړ کړئ file، راځئ چې دې ته client.py ووایو
- لاندې وارد کړئ:
- لکه څنګه چې د سرور په قضیه کې، موږ به د UART له لارې نوډ سره وصل کړو. دلته د خپل دوهم بورډ COM پورټ نمبر وکاروئ:
- له دې ځایه، زموږ غوښتنلیک به د پیښې پرمخ وړل کیږي. هرکله چې د سټیک لخوا د بلوتوټ پیښه رامینځته کیږي ، موږ به پیښه اداره کړو او غوښتنلیک به پرمخ بوځو:
- راځئ چې د پیښې هینډلر فنکشن تعریف کړو او د سیسټم_بوټ پیښې لپاره هینډلر اضافه کړو ، چیرې چې موږ به د پردیو وسیلو سکین کول پیل کړو. په یاد ولرئ چې دا فنکشن باید د وخت لوپ څخه مخکې تعریف شي (او د نوډ متغیر تعریف وروسته).
- یوځل چې سکینر پیل شي، نوډ به د سکین راپورونه ترلاسه کړي. راځئ چې د sl_bt_on_event() فنکشن کې د سکین راپورونو لپاره د پیښې اداره کونکی اضافه کړو. که چیرې د سکین راپور د اعلان شوي وسیلې نوم سره وموندل شي "PyBGAPI Example"، پیرودونکي به د دې وسیلې په لور اړیکه پرانیزي:
- یوځل چې تاسو دې ټکي ته ورسیږئ دا د چیک کولو ارزښت لري که ستاسو پیرودونکي سرور ومومي. ډاډ ترلاسه کړئ چې تاسو په بل وسیله اعلان پیل کړی، بیا client.py خوندي کړئ، او د کمانډ لاین څخه یې پیل کړئ. تاسو باید د دې په څیر یو څه وګورئ:
- پیرودونکي باید په سرور کې خدمات او ځانګړتیاوې ومومي. دلته به موږ د عمومي لاسرسي خدمت او د وسیلې نوم ځانګړتیا ومومئ ، او په پای کې به د وسیلې نوم ځانګړتیا ارزښت ولولئ. خپل اوسنی sl_bt_on_event() فنکشن د لاندې کوډ سره بدل کړئ:
- client.py خوندي کړئ او د کمانډ لاین څخه یې پیل کړئ. تاسو باید د دې په څیر یو څه وګورئ:
د LE بریښنا کنټرول ځانګړتیا اضافه کول
د هدف وسیلو فلش کول
د بلوتوټ ایکس کې د LE بریښنا کنټرول فعال ندیampد ډیفالټ لخوا پروژې. د دې فیچر اضافه کولو لپاره، د بلوتوټ> فیچر> پاور کنټرول سافټویر برخه باید نصب شي.
- لانچر خلاص کړئ view د سادگي سټوډیو 5.
- د ډیبګ اډاپټر ټب کې خپل یو وسیله غوره کړئ. ډاډ ترلاسه کړئ چې غوره SDK v3.2 دی.
- Ex خلاص کړئampد پروژې او ډیمو ټب ومومئ او بلوتوث ومومئ - NCP خالي example. د پروژې د جوړولو لپاره [جوړول] فشار ورکړئ. (دا ځل موږ نه غواړو د GATT ډیټابیس جوړ کړو، نو موږ د NCP خالي کاروو، کوم چې یو ډیفالټ لري.)
- د GATT ترتیب کوونکی ټب پرانیزئ، د وسیلې نوم ځانګړتیا غوره کړئ، او د "Silab Ex" په اړه بیالیکئ.ample" ابتدايي ارزښت د "PyBGAPI Example" (د دې لپاره چې پیرودونکي سرور پیژني). همدارنګه د ارزښت اوږدوالی د 15 سره بیا ولیکئ.
- د ډیټابیس خوندي کولو لپاره ctrl-s فشار ورکړئ.
- د پروژې تنظیم کونکي کې د سافټویر اجزاو ټب خلاص کړئ.
- د بلوتوټ> فیچر> پاور کنټرول سافټویر برخې ومومئ او کلیک وکړئ [نصب]
- د پاورکنټرول سافټویر برخې ته نږدې کوګ ویل باندې کلیک وکړئ ترڅو د سرو زرو پورتنۍ او ښکته حدونه چیک کړئ. د 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
- خپل دوه تختې لرې وساتئ، بیا ورو ورو یو بل ته نږدې کړئ. اوس تاسو باید وګورئ چې سټیک د خپل بریښنا کچه له ډیفالټ 8dBm څخه -3dBm ته کمولو پیل کوي (کوم چې د ډیفالټ لخوا لږترلږه Tx ځواک دی):
اسناد / سرچینې
![]() |
د سیلیکون لابراتوار 21Q2 بلوتوټ ځانګړتیاوې لابراتوار [pdf] د لارښوونې لارښود 21Q2، د بلوتوټ ځانګړتیاوو لابراتوار، د 21Q2 بلوتوټ ځانګړتیاوو لابراتوار، د ځانګړتیاوو لابراتوار، لابراتوار |