精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

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

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

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

藍牙m(xù)esh互傳

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

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

nRF52840用Segger Embedded Studio打開工程:

nrf5SDKforMeshv320srcexampleslight_switchserver

同時燒錄協(xié)議棧和APP;XR806為觀察到現(xiàn)象,將mesh例程的收到mesh opcode的回調(dià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燒錄進XR806中,將XR806的GenericOnOff Server訂閱到publisher的發(fā)布地址,就能實現(xiàn)同一網(wǎng)絡(luò)(具備同一網(wǎng)絡(luò)密鑰可以正確解析出mesh消息)內(nèi)的消息傳遞。


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

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

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

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

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

藍牙穿透(單向)

有時無線透傳在無法布線時有很方便的效用,不妨試試藍牙透傳,效果如下:

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

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

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

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

demo/Bluetooth/peripheral_demo改成peripheral_uart_demo

同時目錄下文件里工程名也進行修改:

peripheral_uart_demo/gcc/defconfig改成peripheral_uart_demo

然后引入串口讀寫獨立接口即把demo/at_demo下的serial.c、serial.h、serial_debug.h復制到剛才peripheral_uart_demo工程下,由于要無線寫以及串口寫轉(zhuǎn)無線,所以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)無線回調(diào)(有問題):

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ù)里加入透傳口UART1的初始化代碼即可:

 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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 藍牙
    +關(guān)注

    關(guān)注

    114

    文章

    5684

    瀏覽量

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

    關(guān)注

    2894

    文章

    43343

    瀏覽量

    366614
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5256

    瀏覽量

    201754
  • Mesh
    +關(guān)注

    關(guān)注

    5

    文章

    192

    瀏覽量

    29679
  • 無線芯片
    +關(guān)注

    關(guān)注

    1

    文章

    76

    瀏覽量

    23828

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    什么是藍牙mesh藍牙mesh有哪些功能

    請問下什么是藍牙mesh藍牙mesh有哪些功能
    發(fā)表于 06-30 07:08

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

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

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

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

    ESP32-C3藍牙MESH如何與JDY-24M藍牙MESH組網(wǎng)通信?

    想用ESP32-C3同時接入wifi與藍牙mesh(類似藍牙網(wǎng)關(guān)功能),通過藍牙mesh控制JD
    發(fā)表于 02-16 07:53

    全志XR806藍牙mesh互傳功能測試

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

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

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

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

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

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

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

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

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

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

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

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

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

    MesoonRF:藍牙mesh燈控方案

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

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

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

    藍牙MESH是什么?

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