實(shí)驗(yàn)六:基于LiteOS實(shí)現(xiàn)端到端物聯(lián)試驗(yàn)
步驟1 移殖光敏傳感器拍屑,通過(guò)傳感器采集光照亮度
在Keil環(huán)境中右擊IOT-Demo食拜,選擇Manage Project Items...;
在Project Items標(biāo)簽下的Groups中添加Hardware哩簿,并在該group下添加光敏傳感器代碼;
添加光敏傳感器代碼的頭文件路徑;
在main.hUSER CODE BEGIN Incldes/與/USER CODE BEGIN Incldes/之間添加引用定義標(biāo)準(zhǔn)擴(kuò)展整數(shù)類型的頭文件代碼妒穴;
在main.h的/USER CODE BEFIN defines/與/USER CODE BEFIN defines/之間添加全局變量msg_for_BH1750與BH1750_send定義的代碼;
在main.c的USER CODE BEGIN Incldes/與USER CODE BEGIN Incldes/之間添加引用光敏傳感器頭文件的代碼BH1750數(shù)據(jù)的全局變量摊崭,并添加光敏傳感器數(shù)據(jù)上報(bào)是攜帶的messageld的代碼讼油;
在main.c的/USER CODE BEGIN /與/USER CODE BEGIN /之間添加光敏傳感器任務(wù)代碼;定義光敏傳感器任務(wù)名為L(zhǎng)ightSensor_task呢簸,優(yōu)先級(jí)為矮台;通過(guò)改任務(wù),對(duì)光敏傳感器進(jìn)行初始化根时,并打印任務(wù)信息與光敏傳感器數(shù)據(jù)瘦赫;
在main.c的/USER CODE BEGIN 2/與/USER CODE BEGIN 2/之間生成的代碼,添加創(chuàng)建光敏傳感器任務(wù)的代碼蛤迎,并注釋task1與task的代碼确虱;
點(diǎn)擊Rebuild,編譯工程忘苛;
點(diǎn)擊Download蝉娜,下載程序至開(kāi)發(fā)板;
打開(kāi)QCOM串口調(diào)試助手扎唾,根據(jù)對(duì)應(yīng)的串口召川,選擇相應(yīng)的串口號(hào),配置相應(yīng)信息胸遇,按下MCU_RST荧呐,開(kāi)發(fā)板運(yùn)行程序;
步驟2 移植NB入網(wǎng)代碼,通過(guò)NB模組將數(shù)據(jù)上報(bào)至平臺(tái)
登陸OceanConnect平臺(tái)倍阐,參照實(shí)驗(yàn)三的方式注冊(cè)設(shè)備概疆;
打開(kāi)Keil,在Keil中右擊Lot-Demo選擇Manage Project Items...
在Project Items標(biāo)簽下的Application/User中添加Iot-Demo-LiteOS/targets/Src目錄下的at_hal.c文件峰搪;
在Projects Items標(biāo)簽下的Groups中添加at_device岔冀,并在該group下添加基于LitesOS的NB模組代碼,添加Iot-Demo-LiteOS\components\net\at_device\bc95目錄下的bc95.c文件概耻;
在Project Items標(biāo)簽下Groups中添加at_framework使套,并在該group下添加LitsOS AT框架實(shí)現(xiàn)的代碼,添加Iot-Demo-LiteOS\components\net\at_frame目錄下的全部.c文件鞠柄;
在Project Items標(biāo)簽下Groups中添加nb-iot-api侦高,并在該group下添加基于LitsOS的NB-IOT API的代碼,添加Iot-Demo-LiteOS\components\connectivity\nb_iot目錄下的ios_nb_api.c文件厌杜;
完成NB模組與AT框架相關(guān)代碼的添加奉呛,點(diǎn)擊OK;
添加完成后夯尽,在Keil的Project導(dǎo)航欄會(huì)出現(xiàn)相應(yīng)文件瞧壮;
在Option for Target‘Iot-Demo’界面下選擇C/C++,在Define中添加全局宏定義標(biāo)識(shí)符:WITH_AT_FRAMEWORK,USE_NB_NEUL95;
在Incude Paths欄添加相應(yīng)文件的頭文件路徑呐萌;
頭文件路徑分別為:
Iot-Demo-LiteOS\components\connectivity\lwm2m\core\er-coap-13
Iot-Demo-LiteOS\components\net\at_device\nb_bc95
在main.c的/USER CODE BEGIN Include/與/USER CODE BEGIN Include/之間添加調(diào)用AT框架與BC95頭文件的代碼馁痴,并聲明BC95入網(wǎng)的全局變量;
在main.h的/USER CODE BEGIN Private defines/與/USER CODE BEGIN Private defines/之間添加msg_sys_type_net_data定義的代碼肺孤;
在main.c的/USER CODE BEGIN 0/與/USER CODE BEGIN 0/之間添加BC95模組入網(wǎng)連接平臺(tái)發(fā)送數(shù)據(jù)任務(wù)代碼,定義該任務(wù)為data_send_task济欢,優(yōu)先級(jí)為1赠堵,通過(guò)該任務(wù),MCU向BC95發(fā)送ip及port信息和光敏傳感器數(shù)據(jù)并通過(guò)串口打印發(fā)送結(jié)果法褥;
打開(kāi)bc95.h茫叭,在該文件中修改AT_USART_PORT為2;
在main.c的/USER CODE BEGIN 2/與/USER CODE BEGIN 2/之間生成代碼半等,添加創(chuàng)建BC95模組入網(wǎng)連接平臺(tái)發(fā)送數(shù)據(jù)任務(wù)的代碼揍愁;
點(diǎn)擊Rebuild,編譯工程杀饵;
點(diǎn)擊Download莽囤,下載程序至開(kāi)發(fā)板;
打開(kāi)QCOM串口調(diào)試助手切距,根據(jù)對(duì)應(yīng)的串口號(hào)朽缎,配置對(duì)應(yīng)信息,通過(guò)跳線帽將開(kāi)發(fā)板的UART1的RX和TX與CH340的TX和RX連接,將開(kāi)發(fā)板上的UART2的RX和TX與NB-IOT的TX和RX連接话肖,點(diǎn)擊MCU_RST,開(kāi)發(fā)板運(yùn)行程序北秽。此時(shí)在QCOM上可以看到打印任務(wù)的信息
登陸平臺(tái),可以查看到注冊(cè)的設(shè)備處于已綁定狀態(tài)最筒,通過(guò)歷史數(shù)據(jù)可以查看到開(kāi)發(fā)板上報(bào)的數(shù)據(jù)贺氓;
步驟3 編寫(xiě)命令相應(yīng)代碼,通過(guò)平臺(tái)下發(fā)命令開(kāi)關(guān)光敏傳感器上的LED燈
打開(kāi)gpio.c床蜘,在GPIO初始化函數(shù)下添加PIN5的初始化代碼辙培;
打開(kāi)main.h,添加定義LED引腳的代碼悄泥;
打開(kāi)bc95.c虏冻,在該文件中添加接收命令代碼,根據(jù)命令執(zhí)行控制LED燈代碼及命令答復(fù)代碼弹囚;
在bc95.c的nb_cmd_match回調(diào)函數(shù)中厨相,將nb_hdndle_data_ind(buf)改為nb_handle_data_coap(buf);
在main.c中創(chuàng)建的data_send_tsak任務(wù)中添加命令回復(fù)代碼;
點(diǎn)擊Rebuild鸥鹉,編譯工程蛮穿;
點(diǎn)擊Download,下載程序至開(kāi)發(fā)板毁渗;
登陸平臺(tái)践磅,在我的設(shè)備中進(jìn)行命令下發(fā);
點(diǎn)擊我的設(shè)備中的歷史命令灸异,可以看到命令已下發(fā)并執(zhí)行府适,此時(shí)光敏傳感器上的LED燈點(diǎn)亮;
同樣肺樟,選擇value為OFF檐春,即下發(fā)關(guān)燈命令,點(diǎn)擊緩存發(fā)送么伯;在歷史命令中疟暖,可以看到命令已下發(fā)并執(zhí)行,此時(shí)光敏傳感器上的LED燈熄滅田柔;