新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 藍(lán)牙m(xù)esh初嘗試--空氣凈化器的小升級(jí)

藍(lán)牙m(xù)esh初嘗試--空氣凈化器的小升級(jí)

作者: 時(shí)間:2024-01-23 來源:電子芯吧客 收藏

是基于BLE開發(fā)的,所以BLE的SDK包我們也需要,這里我使用的是SDK16

本文引用地址:http://2s4d.com/article/202401/455034.htm



由于Nordic提供的工程是在SES下建立的,所以我預(yù)先在電腦中安裝好了SES,這里不多贅述。下載這兩個(gè)文件之后,我在電腦中新建了一個(gè)文件夾,把這兩個(gè)文件放到了同一目錄下,接著打開了SDK for 的example文件夾,這里面存放著許多例程,這里我基于light-lightness例程來修改,以達(dá)到最終目的。


light-lightness例程實(shí)際上就是控制led亮度的一個(gè)例程,使用的pwm來控制led亮度,這其實(shí)和我的空氣凈化器需要的一路電機(jī)轉(zhuǎn)速控制很是類似,故我在這個(gè)例程上修改,添加其他模型。點(diǎn)開light-lightness文件夾之后,發(fā)現(xiàn)里面還有兩個(gè)文件夾,一個(gè)是server一個(gè)是client,我們使用server來修改,點(diǎn)開之后打開NRF52832的SES工程,如下


觀察左側(cè)的工程樹,我們可以發(fā)現(xiàn)其實(shí)和BLE的工程還是有比較多的類似之處,各個(gè)層級(jí)分層目錄很是明顯,首先我編譯一下工程,發(fā)現(xiàn)沒有錯(cuò)誤沒有警告。接著就可以開始修改例程了,首先我把OLED屏幕以及光線傳感器的代碼移植過來,在工程中新建一個(gè)文件夾放入代碼,并且添加對(duì)應(yīng)的頭文件路徑。




接著修改一下pwm的對(duì)應(yīng)引腳,由于在mesh工程中,pwm使用的是軟件pwm庫,所以pwm的引腳可以任意定義。這里對(duì)應(yīng)我的電路板,修改為第五腳


熟悉Nordic的SDK的同學(xué)應(yīng)該都知道,大部分事情都是在回調(diào)函數(shù)中處理的,對(duì)于light-lightness模型,當(dāng)模型的狀態(tài)更新的時(shí)候,會(huì)調(diào)用set_lightness_cb這個(gè)回調(diào)函數(shù),于是我在回調(diào)函數(shù)中添加了一個(gè)轉(zhuǎn)速的顯示函數(shù),用來在改變轉(zhuǎn)速的時(shí)相應(yīng)的顯示。


編譯工程,然后接上jlink,點(diǎn)擊target工具欄下面的連接之后,依次執(zhí)行擦除和下載指令,程序以及協(xié)議棧就會(huì)被下載到芯片當(dāng)中了。下載完成后控制臺(tái)顯示如下


接著給電路板接上電源,手機(jī)上安裝NRF mesh軟件之后,就可以搜索到我的電路板的信號(hào)了,此時(shí)顯示屏也有了顯示數(shù)據(jù)。


此時(shí)的電路板處在未配網(wǎng)狀態(tài),需要使用手機(jī)先對(duì)其進(jìn)行配置,按照手機(jī)上的提示依次操作即可,配置好之后點(diǎn)開element目錄,發(fā)現(xiàn)其中有很多模型,點(diǎn)擊generic level server模型,綁定app key之后,就可以使用最下方的滑動(dòng)條來控制電機(jī)轉(zhuǎn)速了。



下面我需要添加的是控制負(fù)離子發(fā)生器功能,其需要的控制量是開關(guān)量,所以我選擇添加一個(gè)最基本的模型:generic on-off。在工程中新建一個(gè)文件夾, 添加generic on-off模型的相關(guān)文件,添加好之后如下所示


由于新加入了模型,我們就需要修改一下配置頭文件,在工程樹中找到nrf_mesh_config_app.h文件,修改其中的ACCESS_MODEL_COUNT(模型總數(shù))以及ACCESS_ELEMENT_COUNT(元素總數(shù))以及
ACCESS_SUBSCRIPTION_LIST_COUNT(訂閱列表)


修改好之后就可以在main.c文件中添加generic on-off模型的相關(guān)初始化以及回調(diào)函數(shù)了



由于需要傳輸pm2.5傳感器的數(shù)據(jù),我還需要添加sensor模型,和以上添加generic on-off模型類似,添加sensor模型相關(guān)文件以及相關(guān)初始化以及回調(diào)函數(shù),由于sensor模型的回調(diào)函數(shù)有很多,我用到的只有一個(gè),所有我只貼上用到的那個(gè)回調(diào)函數(shù)的代碼,其余函數(shù)都參考sensor例程編寫,并無改動(dòng)。




由于pm2.5傳感器使用串口發(fā)送數(shù)據(jù),還需要添加串口的相關(guān)代碼,并且在app_config.h函數(shù)中聲明相關(guān)外設(shè)的宏



接著在main.c文件的initialize函數(shù)中添加創(chuàng)建軟件定時(shí)器相關(guān)代碼,在其回調(diào)函數(shù)中周期性更新顯示數(shù)據(jù)以及發(fā)布數(shù)據(jù)



編譯工程并且下載到電路板上,可以看到pm2.5數(shù)據(jù)顯示正常,重新對(duì)電路板進(jìn)行配網(wǎng)之后,可以看到其中有了3個(gè)元素,新添加的generic on-off模型以及sensor模型都可以正常顯示。點(diǎn)擊generic on-off模型,綁定app-key之后,即可控制負(fù)離子發(fā)生器的開啟和關(guān)閉。


為了測試mesh通信是否正常,我制作了一個(gè)小的測試板,將其燒錄light-lightness的client工程以及配置之后,我們需要配置一下兩者的訂閱以及發(fā)布地址。給電路板的light-lightness模型下添加一個(gè)訂閱組地址,以及給測試板的light-lightness模型下添加一個(gè)發(fā)布組地址,注意兩者地址需要相同,接著就可以使用測試板的按鍵來控制空氣凈化器的電機(jī)轉(zhuǎn)速。





關(guān)鍵詞: 藍(lán)牙 無線通信 mesh

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉