0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【EsDA應用】藍牙服務端節(jié)點詳解

AGk5_ZLG_zhiyua ? 來源:未知 ? 2023-05-25 00:10 ? 次閱讀
藍牙作為一種近距離無線通信技術,被廣泛使用在汽車,智能家居和醫(yī)療等領域中。本文主要介紹如何通過EsDA開發(fā)套件,快速實現(xiàn)藍牙服務器的相關應用業(yè)務。

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg簡介

前面文章講解了ble_client的相關節(jié)點和業(yè)務處理,有興趣的可以跳轉鏈接【EsDA應用】藍牙客戶端節(jié)點詳解去查看。

本文主要基于MPC_ZC1開發(fā)板以及可將節(jié)點進行拖拽連接的圖形化設計工具AWFlow Designer,著重對UIS8910DM平臺的板載藍牙的配套節(jié)點以及示例進行講解。本文除了對ble_server設備端節(jié)點進行詳細闡述還有以MPC_ZC1開發(fā)板做藍牙服務器的相關應用業(yè)務介紹如:定義支持的服務,發(fā)布服務器以便遠程客戶端可連接,響應讀取和寫入請求等。

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg節(jié)點介紹

因藍牙服務端節(jié)點中的屬性數(shù)量過多,所以本節(jié)只介紹幾個重點屬性,其他的屬性內(nèi)容詳見AWFlow Designer上相關節(jié)點的幫助文檔。

1. 配置節(jié)點1.1 ble_server創(chuàng)建BLE服務端設備,保存用戶傳入的廣播配置。1.1.1 屬性
  • 發(fā)現(xiàn)模式:值為0表示不可發(fā)現(xiàn)模式;值為1表示有限可發(fā)現(xiàn)模式;值為2表示普通可發(fā)現(xiàn)模式。
  • 廣播類型:值為0表示可連接的非定向廣播;值為1表示可連接的定向廣播;值為2表示不可連接的非定向廣播;值為3表示可掃描的非定向廣播。
  • 廣播信道:廣播通道映射在37、38、39通道通信。值為0時表示通道37被使用,值為1時表示通道38被使用,值為2時表示通道39被使用。
  • 廣播的過濾策略:

值為0時表示處理所有設備的掃描和連接請求;

值為1時表示處理所有設備的連接請求和只有白名單上的設備的掃描請求;

值為2時表示處理所有設備的掃描請求和只有白名單上的設備的連接請求;

值為3時表示只處理在白名單上的設備的掃描和連接請求。

smp_pair_mode

io_cap

安全等級

SECURE_CONNECTION_PASSKEY

KEYBOARD_DISP

最高

SECURE_CONNECTION_JUSTWORK

NOIN_NOOUT

次之

LEGACY_PASSKEY

KEYBOARD_DISP

第三

LEGACY_JUSTWORK

NOIN_NOOUT

最低

  • 支持的服務個數(shù):支持提供的服務個數(shù),需要與流圖中添加的服務數(shù)量一致。* 配置節(jié)點無輸入輸出。
2. 服務端節(jié)點2.1 ble_server_service2.1.1 屬性
  • BLE服務端配置節(jié)點:關聯(lián)到的BLE服務端配置節(jié)點。
  • 服務UUID:支持提供服務的UUID。支持2個字節(jié)或16個字節(jié),按照小端模式依次用逗號隔開。
  • 支持服務的特征相關屬性:

特征值的格式

特征聲明的性質

特征值的權限

短UUID

廣播屬性

可讀

修補長度

讀屬性

可寫

寫通知

不帶回復的寫屬性

讀取認證

帶回復的寫屬性

讀取授權

沖突通知

通知屬性

讀取加密

追加寫

指示屬性

讀取認證文件

簽名認證的寫屬性

寫認證

擴展屬性

寫授權

寫加密

寫認證文件

只允許經(jīng)典藍牙訪問

2.1.2 輸入
  • payload:輸入數(shù)據(jù)。傳入特征值數(shù)據(jù),可以使用“fscript”節(jié)點作為前級節(jié)點,設置需要寫入的數(shù)據(jù)。

  • payloadLength:輸入數(shù)據(jù)。傳入特征值數(shù)據(jù)的長度,可以使用“fscript”節(jié)點作為前級節(jié)點,設置需要寫入的數(shù)據(jù)長度,最大不超過255。

2.1.3 輸出本節(jié)點無實質性數(shù)據(jù)輸出,其消費者節(jié)點一般是ble_server_adv節(jié)點。2.2 ble_server_adv

2.2.1 屬性

  • BLE服務端配置節(jié)點:關聯(lián)到的BLE服務端配置節(jié)點。

  • 藍牙本地設備名稱:藍牙服務端本地設備的名稱,代碼里自動將此參數(shù)加入到廣播數(shù)據(jù)包的類型為09的小數(shù)據(jù)包中。

廣播數(shù)據(jù)包最長31個字節(jié),而這31個字節(jié)又被拆分成很多小數(shù)據(jù)包,每個小數(shù)據(jù)包代表一類廣播數(shù)據(jù)。

每個小數(shù)據(jù)包是由:length(數(shù)據(jù)長度)+type(類型)+data(數(shù)據(jù)內(nèi)容)構成的。

  • 需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)長度:表示需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)長度(數(shù)據(jù)內(nèi)容的字節(jié)長度+1)。因為格式是csv,所以多個數(shù)據(jù)包的數(shù)據(jù)長度按順序用逗號來隔開。

  • 需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)類型:表示需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)長度(數(shù)據(jù)內(nèi)容的字節(jié)長度+1)。多個數(shù)據(jù)包的數(shù)據(jù)類型按順序用逗號來隔開。

  • 掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)內(nèi)容:表示掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)內(nèi)容。多個數(shù)據(jù)包的數(shù)據(jù)內(nèi)容按順序用逗號來隔開。

  • 掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)類型:表示掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)類型,多個數(shù)據(jù)包的數(shù)據(jù)類型按順序用逗號來隔開。具體的廣播數(shù)據(jù)包類型詳細信息可在網(wǎng)上進行查閱。

  • 數(shù)據(jù)類型為09表示本地設備名稱即屬性藍牙本地設備名稱,現(xiàn)已被后續(xù)代碼自動處理加入到了廣播數(shù)據(jù)包中。計算長度時需注意,如若廣播數(shù)據(jù)包超過最長31個字節(jié)的內(nèi)容,則截斷。

  • 掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)內(nèi)容:表示掃描響應的每個小數(shù)據(jù)包的數(shù)據(jù)內(nèi)容。多個數(shù)據(jù)包的數(shù)據(jù)內(nèi)容按順序用逗號來隔開。

    如:需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)長度為0x02;需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)類型為:0x01;要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)內(nèi)容為:0x06。那么算上藍牙本地設備名稱:(BLE-ZC1)0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31,

    那么最終的廣播數(shù)據(jù)包為0x08(數(shù)據(jù)長度),0x09(數(shù)據(jù)類型),

    0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31(數(shù)據(jù)內(nèi)容BLE-ZC1),

    0x02(數(shù)據(jù)長度),0x01(數(shù)據(jù)類型),

    0x06(數(shù)據(jù)內(nèi)容),

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

2.2.2 輸入
  • ble_server_adv節(jié)點的輸入并無實際意義的輸入,由ble_server_service節(jié)點作為前級節(jié)點,進入當前節(jié)點的on_data虛函數(shù)中開啟廣播。

    * sink類型節(jié)點無輸出功能

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg??業(yè)務處理

定義支持的服務:由ble_server_service節(jié)點添加服務UUID和特征值UUID以及特征值數(shù)據(jù);發(fā)布服務器,以便遠程客戶端可連接:由ble_server_adv節(jié)點開啟廣播(在一個運行程序中不能多次開啟廣播)后服務端藍牙準備完成,開始等待客戶端藍牙設備連接;以及后續(xù)的響應讀取和寫入請求。實現(xiàn)框圖如下所示。

515a8786-fa4d-11ed-90ce-dac502259ad0.png

1. 資源準備

硬件上依舊如【EsDA應用】藍牙客戶端節(jié)點詳解使用MPC_ZC1開發(fā)板作為服務器去廣播數(shù)據(jù),軟件上使用可拖拽連線的圖形化設計工具AWFlow Designer去設計流圖以及手機app(BLE調試寶)作為客戶端進行藍牙通信。516fda46-fa4d-11ed-90ce-dac502259ad0.png

2. 添加節(jié)點并繪制流圖

添加timer,gpio,trigger,fscript,ble_server_service和ble_server_adv節(jié)點到畫布中,如下圖所示。

51bb7db6-fa4d-11ed-90ce-dac502259ad0.png3. 配置節(jié)點

添加多個藍牙服務端的服務和特征值數(shù)據(jù),并開啟藍牙廣播。需注意的是本藍牙模塊在程序運行時不能重復多次開啟藍牙廣播,否則會打開藍牙失敗。

雙擊gpio節(jié)點的前驅timer節(jié)點,打開屬性面板設置定時周期(ms),定時去讀取gpio的引腳電平狀態(tài)。修改完后點擊右上角的完成即可保存屬性配置。

51dc17c4-fa4d-11ed-90ce-dac502259ad0.png

雙擊gpio節(jié)點,配置屬性如下圖所示,根據(jù)需求選擇所需的gpio引腳,本章節(jié)使用的是P4.5,并設置為浮空輸入,用戶可根據(jù)自身需求設置該gpio引腳號。修改完后點擊右上角的完成即可保存屬性配置。

5210eabc-fa4d-11ed-90ce-dac502259ad0.png

雙擊gpio的后繼節(jié)點fscript,功能代碼內(nèi)容的主要目的是讓后續(xù)的trigger節(jié)點只能被觸發(fā)一次,因P4.5的引腳默認是低電平,且trigger節(jié)點被觸發(fā)只能收到msg.trigger_stop屬性消息,所以具體代碼如下。

if (msg.payload == 1) {
  msg.trigger_stop = "reset";
}
雙擊trigger節(jié)點,本節(jié)點主要目的是只一次觸發(fā)多個后繼節(jié)點,所以在此選擇等待被重置模式(Wait_to_be_reset_mode)在trigger被觸發(fā)前,不傳遞任何的消息給后繼節(jié)點。修改完后點擊右上角的完成即可保存屬性配置。

524270f0-fa4d-11ed-90ce-dac502259ad0.png

雙擊第一欄的fscript節(jié)點,本節(jié)點作為ble_server_service節(jié)點的前驅節(jié)點,所以具體內(nèi)容即ble_server_service的輸入組:payload(傳入的特征值數(shù)據(jù)),payloadLength(傳入的特征值數(shù)據(jù)的長度)。修改完后點擊右上角的完成即可保存屬性配置。

msg.payload = "hello";
set(msg.payloadLength, u16("5"));
雙擊第一欄的ble_server_service節(jié)點中的屬性:BLE服務端配置節(jié)點旁的鉛筆圖標,屬性:BLE服務端配置節(jié)點在本流圖中只需要配置一遍即可,后續(xù)不再闡述。需注意的是支持的服務個數(shù)的屬性值必須與本流圖中所添加的服務個數(shù)數(shù)量一致,其他屬性參數(shù)可用demo流圖默認值。修改完后點擊右上角的完成即可保存屬性配置。526dbee0-fa4d-11ed-90ce-dac502259ad0.png

雙擊第一欄的ble_server_service節(jié)點,只需要確定需要添加的服務UUID和特征值UUID,其他參數(shù)視具體情況而定,也可使用默認的參數(shù)值。修改完后點擊右上角的完成即可保存屬性配置。

52931a78-fa4d-11ed-90ce-dac502259ad0.png

雙擊第二欄的fscript節(jié)點,其內(nèi)容與第一欄的fscript節(jié)點大體一致,都是作為ble_server_service節(jié)點的前驅節(jié)點,所以具體內(nèi)容即ble_server_service的輸入組:payload(傳入的特征值數(shù)據(jù)),payloadLength(傳入的特征值數(shù)據(jù)的長度)。修改完后點擊右上角的完成即可保存屬性配置。

msg.payload = "server";
set(msg.payloadLength, u16("6"));
雙擊第二欄的ble_server_service節(jié)點,其屬性與第一欄的ble_server_service節(jié)點大體一致,需要添加的服務UUID和特征值UUID不同,其他參數(shù)視具體情況而定,也可使用默認的參數(shù)值。

服務UUID:

0xf5,0x89,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xfe,0x18,0x00,0x00

特征值UUID:

0xf5,0x89,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xfe,0xff,0x11,0x11

最后雙擊ble_server_adv節(jié)點,自行設置藍牙本地設備名稱,以及需要廣播的每個小數(shù)據(jù)包的數(shù)據(jù)長度,類型,內(nèi)容和掃描的每個小數(shù)據(jù)包的數(shù)據(jù)長度,類型,內(nèi)容。修改完后點擊右上角的完成即可保存屬性配置。

52ac5556-fa4d-11ed-90ce-dac502259ad0.png

4. 下載驗證

下載流圖后可在BLE調試寶點擊藍牙服務選項對流圖提供的service進行訪問,點擊每個service的左側箭頭,展開對各個service提供的特征進行查看,還可對支持操作的特性進行讀寫。

52fbe454-fa4d-11ed-90ce-dac502259ad0.png

每次操作都會有相應的日志信息,注意各服務UUID的聯(lián)系,實時日志如下所示。

533a88e4-fa4d-11ed-90ce-dac502259ad0.png

BLE調試寶向特征值UUID為0x1111fffe寫入12 34 56,作為服務端板子的串口打印可顯示收到的相應數(shù)據(jù)如下。

536b670c-fa4d-11ed-90ce-dac502259ad0.png

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg技術交流長按識別如下二維碼可加入“EsDA嵌入式系統(tǒng)設計自動化交流群”,與志同道合的朋友交流,并有專業(yè)技術人員為您答疑解惑,如有問題可以咨詢小致微信zlgmcu-888。

539e3c54-fa4d-11ed-90ce-dac502259ad0.png


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 致遠電子
    +關注

    關注

    13

    文章

    402

    瀏覽量

    31201

原文標題:【EsDA應用】藍牙服務端節(jié)點詳解

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EsDA,一站式嵌入式軟件

    EsDA是一套面向工業(yè)智能物聯(lián)領域的嵌入式系統(tǒng)設計自動化工具集,包含實時操作系統(tǒng)AWorksLP、低代碼開發(fā)平臺AWStudio、資源管理平臺AXPI、跨平臺GUI引擎AWTK和云服務平臺ZWS
    的頭像 發(fā)表于 09-15 08:10 ?45次閱讀
    <b class='flag-5'>EsDA</b>,一站式嵌入式軟件

    請問ESP32作為藍牙服務端如何修改MTU?

    我們的工程把esp32當作藍牙服務端讓電腦去連,由于一些老電腦上沒有藍牙,要用外置藍牙驅動,默認MTU只有23,但是說明上驅動是支持最大mtu的,所以有什么辦法可以通過
    發(fā)表于 06-27 07:47

    服務端測試包括什么類型

    服務端測試是確保軟件系統(tǒng)在服務器端正常運行和滿足性能要求的重要環(huán)節(jié)。本文將詳細介紹服務端測試的類型、方法和最佳實踐。 1. 服務端測試的定義 服務端
    的頭像 發(fā)表于 05-30 16:03 ?400次閱讀

    服務端測試是web測試嗎為什么

    服務端測試和Web測試是兩個不同的概念,但它們在軟件開發(fā)和測試過程中是相互關聯(lián)的。本文將詳細解釋這兩個概念以及它們之間的關系。 服務端測試 服務端測試主要關注服務器端的軟件組件,這些組
    的頭像 發(fā)表于 05-30 15:30 ?423次閱讀

    服務端測試和客戶端測試區(qū)別在哪

    服務端測試和客戶端測試是軟件開發(fā)過程中的兩個重要環(huán)節(jié),它們分別針對服務器端和客戶端的軟件進行測試。本文將詳細介紹服務端測試和客戶端測試的區(qū)別,以及它們在軟件開發(fā)中的作用。 一、服務端
    的頭像 發(fā)表于 05-30 15:27 ?1400次閱讀

    服務端的測試主要是測什么內(nèi)容

    服務端測試是軟件開發(fā)過程中的一個重要環(huán)節(jié),主要目的是確保服務端程序的穩(wěn)定性、性能、安全性和可靠性。 功能測試 功能測試是服務端測試的基礎,主要驗證服務端程序是否按照需求實現(xiàn)了所有功能。
    的頭像 發(fā)表于 05-30 15:24 ?2553次閱讀

    TWS 藍牙耳機 ESD EOS保護方案

    TWS 藍牙耳機 ESD EOS保護方案
    的頭像 發(fā)表于 05-17 08:02 ?500次閱讀
    TWS <b class='flag-5'>藍牙</b>耳機 <b class='flag-5'>ESD</b> EOS保護方案

    ESD管 AZ5825-01F型號ESDA05CPX參數(shù)對比

    ESD管 AZ5825-01F型號ESDA05CPX參數(shù)對比
    的頭像 發(fā)表于 05-11 08:03 ?550次閱讀
    <b class='flag-5'>ESD</b>管 AZ5825-01F型號<b class='flag-5'>ESDA</b>05CPX參數(shù)對比

    lwip stm407作為服務端 pc連接不上怎么解決?

    lwip stm407作為服務端 pc連接不上
    發(fā)表于 03-20 06:32

    靜電ESD整改:原因、影響與解決方案詳解?

    靜電ESD整改:原因、影響與解決方案詳解?|深圳比創(chuàng)達電子
    的頭像 發(fā)表于 03-13 10:26 ?656次閱讀
    靜電<b class='flag-5'>ESD</b>整改:原因、影響與解決方案<b class='flag-5'>詳解</b>?

    ?PLC從HTTP服務端獲取JSON文件,解析數(shù)據(jù)到寄存器

    智能網(wǎng)關IGT-DSER集成了多種PLC協(xié)議,方便實現(xiàn)各種PLC與HTTP服務端之間通訊。通過網(wǎng)關的參數(shù)配置軟件綁定JSON文件的字段與PLC寄存器地址,配置URL,即可采用POST命令,將JSON
    發(fā)表于 01-24 09:47

    如何基于EsDA開發(fā)套件快速使用射頻讀卡器模塊

    無線射頻讀寫卡技術在門禁系統(tǒng),電子支付領域和物聯(lián)網(wǎng)等領域中具有越來越廣泛的應用。本文將基于EsDA開發(fā)套件講解如何快速上手并開發(fā)射頻讀卡器模塊的相關業(yè)務,為開發(fā)者大大縮短了學習和開發(fā)時間成本。項目
    的頭像 發(fā)表于 01-11 08:24 ?585次閱讀
    如何基于<b class='flag-5'>EsDA</b>開發(fā)套件快速使用射頻讀卡器模塊

    PLC通過智能網(wǎng)關,與OPCUA服務端通訊,實現(xiàn)標簽數(shù)據(jù)讀寫

    是采用西門子S7-200 SMART通過IGT-DSER智能網(wǎng)關跟OPCUA的服務端之間通訊,以下是相關操作步驟。首先通過參數(shù)設置軟(在附件中)選擇功能與驅動類型,如下圖左邊功能選第三項,右邊的驅動選擇
    發(fā)表于 01-02 16:41

    EsDA 應用】Modbus RTU Master 轉 MQTT

    隨著物聯(lián)網(wǎng)的迅速發(fā)展,越來越多的工業(yè)自動化設備需要上報數(shù)據(jù)到云。本文將基于EsDA開發(fā)套件快速實現(xiàn)將ModbusRTU協(xié)議的數(shù)據(jù)轉換為MQTT格式,實現(xiàn)更靈活的數(shù)據(jù)傳輸和遠程控制。項目簡介在物聯(lián)網(wǎng)
    的頭像 發(fā)表于 11-23 08:24 ?809次閱讀
    【<b class='flag-5'>EsDA</b> 應用】Modbus RTU Master 轉 MQTT

    EsDA 應用】快速實現(xiàn)串口轉HTTP請求

    ,由客戶端發(fā)送請求消息,服務端針對客戶端的請求進行響應回復。本文將基于EsDA開發(fā)平臺,使用EPC6450-AWI開發(fā)板,以及圖形化設計工具AWFlowDesign
    的頭像 發(fā)表于 11-09 08:25 ?702次閱讀
    【<b class='flag-5'>EsDA</b> 應用】快速實現(xiàn)串口轉HTTP請求