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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

藍(lán)牙m(xù)esh互傳及藍(lán)牙單向穿透的功能測(cè)試

全志在線 ? 來(lái)源:全志在線開發(fā)者論壇 ? 2023-12-11 11:34 ? 次閱讀

相較于WiFi技術(shù),低功耗藍(lán)牙BLE技術(shù)具有搜索連接速度快、超低功耗等特點(diǎn),BLE搭配mesh技術(shù)所延伸的藍(lán)牙m(xù)esh技術(shù)因其支持多點(diǎn)對(duì)多點(diǎn)連接、物理覆蓋區(qū)域廣闊,也被廣泛用于智能家居中控、智能安防、智慧樓宇等物聯(lián)網(wǎng)設(shè)備上。

XR806是一款支持BLE 5.0、支持完整低功耗藍(lán)牙服務(wù)GATT、支持SIG mesh完整協(xié)議棧的無(wú)線芯片,同樣適配物聯(lián)網(wǎng)設(shè)備的使用場(chǎng)景需求,在通過(guò)官方文檔的指引下配置好XR806的RTOS環(huán)境后,可按文章介紹步驟進(jìn)行后續(xù)的藍(lán)牙m(xù)esh互傳及藍(lán)牙單向穿透的功能測(cè)試。

藍(lán)牙m(xù)esh互傳

最新的藍(lán)牙m(xù)esh1.1引入了定向轉(zhuǎn)發(fā)路由功能,擴(kuò)大射頻覆蓋范圍,使信號(hào)一級(jí)級(jí)中繼下去,手頭有nRF52840開發(fā)板,不妨和全志XR806進(jìn)行組網(wǎng),測(cè)試兼容性和互操作性,也驗(yàn)證XR806 mesh協(xié)議棧的完成度。先看效果:

c86c4296-95ad-11ee-8b88-92fbcf53809c.gif

nRF52840用Segger Embedded Studio打開工程:

nrf5SDKforMeshv320srcexampleslight_switchserver

同時(shí)燒錄協(xié)議棧和APP;XR806為觀察到現(xiàn)象,將mesh例程的收到mesh opcode的回調(diào)接口加個(gè)指示信號(hào),具體為:

static void gpio_output_init(void)
{
 GPIO_InitParam param;
 param.driving = GPIO_DRIVING_LEVEL_1;
 param.mode = GPIOx_Pn_F1_OUTPUT;
 param.pull = GPIO_PULL_NONE;
 HAL_GPIO_Init(GPIO_OUTPUT_PORT, GPIO_OUTPUT_PIN, ¶m);//PA21
}


/***************Onoff Configuration Declaration*******************/
static void app_onoff_srv_set_cb(const struct bt_mesh_model *model, uint8_t onoff, uint8_t target_onoff, const struct bt_mesh_transition_status *opt)
{
 g_onoff_value = onoff;
 HAL_GPIO_WritePin(GPIO_OUTPUT_PORT, GPIO_OUTPUT_PIN, onoff ? GPIO_PIN_HIGH : GPIO_PIN_LOW);
 printf("[app] onoff set(%d)", onoff);
 if (opt) {
  printf("target onoff(%d), total_steps(%d), steps(%d)",
      target_onoff, opt->total_steps, opt->present_steps);
 }
 printf("
");
}

編譯完后將mesh_demo燒錄進(jìn)XR806中,將XR806的GenericOnOff Server訂閱到publisher的發(fā)布地址,就能實(shí)現(xiàn)同一網(wǎng)絡(luò)(具備同一網(wǎng)絡(luò)密鑰可以正確解析出mesh消息)內(nèi)的消息傳遞。


此時(shí)用nRF Mesh去給nRF52840和XR806分別入網(wǎng)和設(shè)置訂閱地址,本次將他們訂閱到0xC000。

c8a38c24-95ad-11ee-8b88-92fbcf53809c.jpg

由于入網(wǎng)過(guò)程沒(méi)有錄制下來(lái),且XR806無(wú)法退網(wǎng),且入網(wǎng)信息暫時(shí)沒(méi)找到擦除方法,這樣重新燒錄還是保持入網(wǎng)狀態(tài)而無(wú)法回到unprovisioned狀態(tài)。

nRF52840接到JlinkRTT Viewer,XR806接到putty,可以看到XR806的Controller/host協(xié)議棧的版本信息,手機(jī)發(fā)布一條開關(guān)(由GernericOnOff元素統(tǒng)屬)消息,泛洪給兩臺(tái)射頻設(shè)備,可以在各自控制臺(tái)看到都有收到set opcode網(wǎng)絡(luò)消息。

c8b6b538-95ad-11ee-8b88-92fbcf53809c.png

藍(lán)牙穿透(單向)

有時(shí)無(wú)線透?jìng)髟跓o(wú)法布線時(shí)有很方便的效用,不妨試試藍(lán)牙透?jìng)?,效果如下?/p>

c9209958-95ad-11ee-8b88-92fbcf53809c.gif

具體是無(wú)線數(shù)據(jù)->串口數(shù)據(jù),串口數(shù)據(jù)->無(wú)線數(shù)據(jù),目前前者實(shí)現(xiàn)了,后者還有些問(wèn)題未解決,

c8b6b538-95ad-11ee-8b88-92fbcf53809c.png

實(shí)現(xiàn)過(guò)程如下,基于工程:

demo/Bluetooth/peripheral_demo改成peripheral_uart_demo

同時(shí)目錄下文件里工程名也進(jìn)行修改:

peripheral_uart_demo/gcc/defconfig改成peripheral_uart_demo

然后引入串口讀寫?yīng)毩⒔涌诩窗裠emo/at_demo下的serial.c、serial.h、serial_debug.h復(fù)制到剛才peripheral_uart_demo工程下,由于要無(wú)線寫以及串口寫轉(zhuǎn)無(wú)線,所以profile涉及到write_without_rsp和notify,具體配置為:

static struct bt_gatt_attr vnd_attrs[] = {
 /* Vendor Primary Service Declaration */
 BT_GATT_PRIMARY_SERVICE(&vnd_uuid),
 BT_GATT_CHARACTERISTIC(&vnd_enc_uuid.uuid,
         BT_GATT_CHRC_WRITE_WITHOUT_RESP | BT_GATT_CHRC_NOTIFY,
         BT_GATT_PERM_WRITE,
         NULL, write_without_rsp_vnd, &vnd_value),
 BT_GATT_CCC(vnd_ccc_notify_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE),
};

寫回調(diào)接口為:

/**********************vnd_write_cmd_uuid*****************************/
static ssize_t write_without_rsp_vnd(struct bt_conn *conn,
        const struct bt_gatt_attr *attr,
        const void *buf, uint16_t len, uint16_t offset,
        uint8_t flags)
{
 uint8_t *value = attr->user_data;


 /* Write request received. Reject it since this char only accepts
  * Write Commands.
  */
 if (!(flags & BT_GATT_WRITE_FLAG_CMD)) {
  return BT_GATT_ERR(BT_ATT_ERR_WRITE_REQ_REJECTED);
 }


 if (offset + len > sizeof(vnd_value)) {
  return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET);
 }


 memset(value, 0, sizeof(vnd_value));
 memcpy(value + offset, buf, len);
 serial_write(value + offset, len);
 *(value + offset + len) = '?';
 printf("
write_without_rsp_vnd");
 return len;
}

串口轉(zhuǎn)無(wú)線回調(diào)(有問(wèn)題):

static void vnd_notify(void)
{
 static uint8_t vnd[MAX_LONG_DATA];
 uint16_t len=0;
 if (!vnd_notif_enabled)
  return;
 printf("
notify
");
 serial_read(vnd_notify_value,len);
 if(len>MAX_LONG_DATA || len==0)
  return;
 memcpy(vnd, vnd_notify_value, len);
  printf("
vnd_notify
");
 bt_gatt_notify(NULL, &vnd_svc.attrs[1], vnd, sizeof(vnd));
}

然后在bt_app_init函數(shù)里加入透?jìng)骺赨ART1的初始化代碼即可:

 serial_init(SERIAL_UART_ID, 115200, UART_DATA_BITS_8, UART_PARITY_NONE,
  UART_STOP_BITS_1, 0);
 serial_start();

審核編輯:湯梓紅

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

    關(guān)注

    114

    文章

    5723

    瀏覽量

    169076
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2898

    文章

    43779

    瀏覽量

    369060
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5268

    瀏覽量

    202757
  • Mesh
    +關(guān)注

    關(guān)注

    5

    文章

    193

    瀏覽量

    29724
  • 無(wú)線芯片
    +關(guān)注

    關(guān)注

    1

    文章

    77

    瀏覽量

    23861

原文標(biāo)題:物聯(lián)網(wǎng)設(shè)備人柱力,XR806藍(lán)牙m(xù)esh互傳及單向穿透功能測(cè)試

文章出處:【微信號(hào):gh_79acfa3aa3e3,微信公眾號(hào):全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    藍(lán)牙Mesh網(wǎng)絡(luò)是什么?手機(jī)如何接入到藍(lán)牙Mesh網(wǎng)絡(luò)?

    藍(lán)牙Mesh網(wǎng)絡(luò)是什么?藍(lán)牙Mesh網(wǎng)絡(luò)有哪些特性?手機(jī)如何接入到藍(lán)牙Mesh網(wǎng)絡(luò)?
    發(fā)表于 06-26 07:18

    什么是藍(lán)牙mesh?藍(lán)牙mesh有哪些功能?

    請(qǐng)問(wèn)下什么是藍(lán)牙mesh?藍(lán)牙mesh有哪些功能?
    發(fā)表于 06-30 07:08

    【平頭哥藍(lán)牙Mesh網(wǎng)關(guān)開發(fā)套件試用體驗(yàn)】mesh開關(guān)控制mesh燈 + 測(cè)試視頻

    本帖最后由 jf_11671167 于 2021-10-9 16:20 編輯 本文對(duì) PHY6220 藍(lán)牙mesh 開關(guān)、藍(lán)牙mesh燈配置,并用
    發(fā)表于 09-26 23:16

    【平頭哥藍(lán)牙Mesh網(wǎng)關(guān)開發(fā)套件試用體驗(yàn)】手機(jī)控制藍(lán)牙mesh燈 + 測(cè)試視頻

    ; mesh_light_node_demo ,官方 demo 工程創(chuàng)建完成后編譯下載到 PHY6220 開發(fā)板,詳細(xì)步驟參考筆者往期文章:【平頭哥藍(lán)牙Mesh網(wǎng)關(guān)開發(fā)套件試用體驗(yàn)】PHY6220
    發(fā)表于 09-26 23:23

    全志XR806藍(lán)牙mesh互傳功能測(cè)試

    評(píng)測(cè)二 藍(lán)牙mesh互傳 最新的藍(lán)牙mesh1.1引入了定向轉(zhuǎn)發(fā)路由功能,擴(kuò)大射頻覆蓋范圍,使信
    發(fā)表于 12-07 15:49

    藍(lán)牙模塊低功耗藍(lán)牙4.2藍(lán)牙Mesh組網(wǎng)方案

    藍(lán)牙模塊低功耗藍(lán)牙4.2藍(lán)牙Mesh組網(wǎng)方案,本文介紹了能進(jìn)行Mesh組網(wǎng)的藍(lán)牙模塊的一些基本參
    發(fā)表于 09-28 16:41 ?39次下載

    解密:Ble低功耗藍(lán)牙藍(lán)牙mesh網(wǎng)絡(luò)之間的關(guān)系

    能夠接收和利用其廣播的其他設(shè)備數(shù)量沒(méi)有明確的限制。藍(lán)牙Beacon就是藍(lán)牙廣播功能的一個(gè)絕佳案例。?二、藍(lán)牙mesh基于ble低功耗
    的頭像 發(fā)表于 06-12 11:12 ?9601次閱讀

    如何選擇合適的藍(lán)牙mesh開發(fā)套件?

    2017年7月,藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG)正式宣布推出藍(lán)牙mesh規(guī)格,在藍(lán)牙技術(shù)點(diǎn)對(duì)點(diǎn)和廣播功能的基礎(chǔ)上添加了
    的頭像 發(fā)表于 08-10 10:54 ?4374次閱讀

    藍(lán)牙網(wǎng)關(guān)與藍(lán)牙Mesh之間的區(qū)別

    1、藍(lán)牙網(wǎng)關(guān)的定義 藍(lán)牙網(wǎng)關(guān)是一個(gè)集成藍(lán)牙 BLE、WiFi 和以太網(wǎng)的網(wǎng)關(guān)設(shè)備,藍(lán)牙 BLE 與 WiFi之間通過(guò)串口實(shí)現(xiàn)通信,可靈活應(yīng)用于各種物聯(lián)網(wǎng)場(chǎng)景。 2、
    的頭像 發(fā)表于 07-10 14:32 ?3.8w次閱讀

    如何用藍(lán)牙mesh開關(guān)控制藍(lán)牙mesh

    本文對(duì) PHY6220?藍(lán)牙mesh 開關(guān)、藍(lán)牙mesh燈配置,并用藍(lán)牙mesh開關(guān)控制
    的頭像 發(fā)表于 10-09 09:22 ?7571次閱讀

    快速了解最新藍(lán)牙Mesh規(guī)范的新增功能特性

    聯(lián)盟( Bluetooth SIG )最近發(fā)布新的藍(lán)牙 Mesh 規(guī)范, Silicon Labs (亦稱“芯科科技”)亦已借此機(jī)會(huì)提供全系列支持新標(biāo)準(zhǔn)的藍(lán)牙 SoC 和模塊產(chǎn)品陣容。本文將概略介紹
    的頭像 發(fā)表于 10-09 15:45 ?415次閱讀
    快速了解最新<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>Mesh</b>規(guī)范的新增<b class='flag-5'>功能</b>特性

    MesoonRF:藍(lán)牙mesh燈控方案

    目前,藍(lán)牙技術(shù)已經(jīng)被廣泛應(yīng)用于包括消費(fèi)電子、汽車電子、醫(yī)療設(shè)備、智能家居甚至是工業(yè)領(lǐng)域在內(nèi)的所有物聯(lián)網(wǎng)智能產(chǎn)品中。藍(lán)牙Mesh智能燈,只是智能家居設(shè)備的開始,采用藍(lán)牙
    的頭像 發(fā)表于 12-21 11:24 ?648次閱讀

    低功耗藍(lán)牙藍(lán)牙Mesh模塊的區(qū)別與關(guān)系

    低功耗藍(lán)牙模塊和藍(lán)牙Mesh模塊的區(qū)別與關(guān)系 藍(lán)牙Mesh并非無(wú)線通信技術(shù),而是一種網(wǎng)絡(luò)技術(shù)。藍(lán)牙
    的頭像 發(fā)表于 05-30 11:13 ?621次閱讀

    藍(lán)牙MESH是什么?

    藍(lán)牙Mesh是一種基于藍(lán)牙技術(shù)的無(wú)線通信網(wǎng)絡(luò)協(xié)議,專門設(shè)計(jì)用于創(chuàng)建大規(guī)模設(shè)備網(wǎng)絡(luò),特別適用于物聯(lián)網(wǎng)(IoT)應(yīng)用。以下是藍(lán)牙Mesh的一些關(guān)
    的頭像 發(fā)表于 09-14 08:03 ?606次閱讀
    <b class='flag-5'>藍(lán)牙</b><b class='flag-5'>MESH</b>是什么?

    藍(lán)牙網(wǎng)關(guān)和藍(lán)牙mesh網(wǎng)關(guān)區(qū)別

    藍(lán)牙網(wǎng)關(guān)和藍(lán)牙Mesh網(wǎng)關(guān)是兩種不同的技術(shù),它們?cè)谖锫?lián)網(wǎng)(IoT)領(lǐng)域中扮演著重要的角色。 藍(lán)牙網(wǎng)關(guān)和藍(lán)牙
    的頭像 發(fā)表于 10-18 10:33 ?91次閱讀