基于Nordic52840構(gòu)建藍(lán)牙m(xù)esh演示demo的記錄

Demo功能

1、基于我司的現(xiàn)場(chǎng)Nordic52840的PCBA構(gòu)建的藍(lán)牙m(xù)esh中所有節(jié)點(diǎn)為同一類型,任一節(jié)點(diǎn)都可以控制網(wǎng)絡(luò)中所有設(shè)備
2、任一節(jié)點(diǎn)的加入及去除不影響整個(gè)網(wǎng)絡(luò)的工作。
3、在節(jié)點(diǎn)中通過一個(gè)節(jié)點(diǎn)publish一個(gè)切換當(dāng)前l(fā)ight狀態(tài)的指令,當(dāng)訂閱的設(shè)備收到此信息后直接trigger一下light的狀態(tài)

需要設(shè)備

1、需要5個(gè)我司的5個(gè)PCBA
2、需要手機(jī)按照mesh的APP后代配網(wǎng)用

實(shí)現(xiàn)方法

基于light_switch的example來實(shí)現(xiàn),在client的demo中移植server部分的功能,并將server中l(wèi)ight中的功能按照新的PCBA重新配置GPIO
同時(shí)需要注意原來demo中關(guān)于GPIO配置驅(qū)動(dòng)有著局限性問題(只能配置為P0,且LED的多個(gè)GPIO需要是連續(xù)的,需要重新修改驅(qū)動(dòng))

具體步驟

(1)移植server部分代碼

/* Generic OnOff server structure definition and initialization */
APP_ONOFF_SERVER_DEF(m_onoff_server_0,
                     APP_CONFIG_FORCE_SEGMENTATION,
                     APP_CONFIG_MIC_SIZE,
                     app_onoff_server_set_cb,
                     app_onoff_server_get_cb)

/* Callback for updating the hardware state */
static void app_onoff_server_set_cb(const app_onoff_server_t * p_server, bool onoff)
{
    /* Resolve the server instance here if required, this example uses only 1 instance. */

    __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Setting GPIO value: %d\n", onoff)

    //hal_led_pin_set(BSP_LED_GREEN, onoff);
    LED_Toggle();
}

/* Callback for reading the hardware state */
static void app_onoff_server_get_cb(const app_onoff_server_t * p_server, bool * p_present_onoff)
{
    /* Resolve the server instance here if required, this example uses only 1 instance. */

    *p_present_onoff = hal_led_pin_get(BSP_LED_GREEN);
}
static void models_init_cb(void)
{
    __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Initializing and adding models\n");

    for (uint32_t i = 0; i < CLIENT_MODEL_INSTANCE_COUNT; ++i)
    {
        m_clients[i].settings.p_callbacks = &client_cbs;
        m_clients[i].settings.timeout = 0;
        m_clients[i].settings.force_segmented = APP_CONFIG_FORCE_SEGMENTATION;
        m_clients[i].settings.transmic_size = APP_CONFIG_MIC_SIZE;

        ERROR_CHECK(generic_onoff_client_init(&m_clients[i], i + 1));
    }
    app_model_init();
}

(2)手機(jī)配置過程

每個(gè)設(shè)備有三個(gè),element包含client和server

image.png

client的配置如下,所有節(jié)點(diǎn)的client的publish的組地址定為0xc000

image.png

server的配置如下,所有節(jié)點(diǎn)的server的訂閱的組地址client的publish地址一致,為0xC000

image.png

(3)功能測(cè)試

實(shí)現(xiàn)了預(yù)想功能,仍一節(jié)點(diǎn)按下按鍵后,剩余所有節(jié)點(diǎn)切換light開發(fā)狀態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容