步驟一: 移植光敏傳感器代碼所袁,通過(guò)傳感器采集光照亮度
在Keil5環(huán)境中右擊“IOT-Demo”選擇“Manage Project Items...”誊役;
在“Project Items”在標(biāo)簽下的“Groups”中添加“Hardware”,并在該group下添加光敏傳感器代碼蚕苇;
添加“IOT_Demo-LiteOS\targets\Hareware\BH1750”目錄下的“BH1750.c”文件,點(diǎn)擊OK;
右擊“IOT-Demo”選擇“Option for Target ‘IOT-Demo’”界面下選擇“C/C++”,在“Include Paths”欄添加光敏傳感器代碼的頭文件路徑(“IOT-Demo-LiteOS\targets\Hardware\BH1750”);
在"main.h"/USBR CODE BEGIN Includes/與/USBR CODE END Includes/之間添加引用定義標(biāo)準(zhǔn)擴(kuò)展整數(shù)類(lèi)型的頭文件代碼忱详;
在"main.h"的/USBR CODE BEGIN Private defines/與/USBR CODE END Private defines/之間添加全局變量"msg_for_BH1750"與"BH1750_send"定義的代碼;
在"main.c"的/USBR CODE BEGIN Includes /與/USBR CODE END Includes/之間添加引用光敏傳感器頭文件的代碼與BH1750數(shù)據(jù)的全局變量跺涤,并根據(jù)1.2.1章節(jié)步驟3中設(shè)計(jì)的數(shù)據(jù)碼流匈睁,添加光敏傳感器數(shù)據(jù)上報(bào)攜帶messageld的代碼;
在"main.c"的/USBR CODE BEGIN 0 /與/USBR CODE END 0/之間添加光敏傳感器任務(wù)代碼桶错;定義光敏傳感器任務(wù)名為"LightSensor_task",優(yōu)先級(jí)為0航唆;通過(guò)該任務(wù),對(duì)光敏傳感器進(jìn)行初始化院刁,并打印任務(wù)信息與光敏傳感器數(shù)據(jù)糯钙;
基于步驟3在"main.c"的/USBR CODE BEGIN 2/與/USBR CODE END 2/之間生成地代碼,添加創(chuàng)建光敏傳感器任務(wù)的代碼退腥,并注釋創(chuàng)建task1與task2的代碼任岸;
點(diǎn)擊"Rebuild",編譯工程;
點(diǎn)擊"Download",下載程序至開(kāi)發(fā)板狡刘;
打開(kāi)QCOM串口調(diào)試助手享潜,根據(jù)對(duì)應(yīng)的串口,選擇對(duì)應(yīng)的串口號(hào)嗅蔬,配置相應(yīng)信息剑按,按下"MCU_RST",開(kāi)發(fā)板運(yùn)行程序;
此時(shí)在QCOM上可以看到任務(wù)打印的信息澜术;
步驟二 移植NB入網(wǎng)代碼吕座,通過(guò)NB模組將數(shù)據(jù)上報(bào)至平臺(tái)
登陸OceanConnect平臺(tái),參考實(shí)驗(yàn)三的方法注冊(cè)設(shè)備(設(shè)備名稱(chēng)自定義瘪板,設(shè)備驗(yàn)證碼為NB模組的IMEI號(hào))吴趴;
打開(kāi)Keil,在keil中右擊"IoT-Demo"選擇"Manage Project Items...";
在"Project Items"標(biāo)簽下的"Applicatiao/User"中添加"IoT-Demo-LiteOS\targets\Src"目錄下的"at_hal.c"文件,(注:"at_hal.c"文件包含用于鏈接LiteOS與HAL函數(shù)庫(kù)控制外設(shè)的代碼);
在"Project Items"標(biāo)簽下的"Groups"中添加"at_device"锣枝,并在該group下添加基于LiteOS的NB模組代碼厢拭;
添加"IoT-Demo-LiteOS\components\net\at_device\nb_bc95"目錄下的"bc95.c"文件;
在"Project Items"標(biāo)簽下的"Groups"中添加"at_framework",并在該group下添加基于LiteOS AT框架實(shí)現(xiàn)的代碼撇叁;
添加"IoT-Demo-LiteOS\components\net\at_frame"目錄下全部.c文件;
在"Project Items"標(biāo)簽下的"Groups"中添加"nb-iot_api"供鸠,并在該group下添加基于LiteOS的NB-IoT API的代碼;
添加"IoT-Demo-LiteOS\components\connectivity\nb_iot"目錄下"los_nb_api.c"文件陨闹,;
完成NB模組與AT框架相關(guān)代碼添加楞捂,點(diǎn)擊"OK";
添加完成后,Keil的Project導(dǎo)航欄出現(xiàn)相關(guān)文件趋厉;
點(diǎn)擊工具欄中的"Option for Target 'IoT-Demo' ",選擇"C/C++",在"Define"中添加全局宏觀定義標(biāo)識(shí)符:
在"Include Paths"欄添加相應(yīng)文件的頭文件路徑寨闹;
在"main.c"的/USBR CODE BEGIN Includes/與/USBR CODE END Includes/之間添加調(diào)用AT框架與BC95頭文件的代碼,并聲明BC95入網(wǎng)的全局變量君账;
在"main.h"的/USBR CODE BEGIN Private defines/與/USBR CODE END Private defines/之間添加"msg_sys_type bc95_net_data"定義的代碼繁堡;
在"main.c"的/USBR CODE BEGIN 0 /與/USBR CODE END 0/之間添加BC95模組入網(wǎng)連接平臺(tái)發(fā)送數(shù)據(jù)任務(wù)代碼;定義該任務(wù)名為"data_send_task",優(yōu)先級(jí)為1乡数;通過(guò)該任務(wù)椭蹄,MCU向BC95發(fā)送平臺(tái)ip及port信息和光敏傳感器數(shù)據(jù)并通過(guò)串口打印發(fā)送結(jié)果;
打開(kāi)"bc95.h"在該文件中修改AT_USART_PORT為2净赴;
基于步驟一绳矩,在"main.c"的/USBR CODE BEGIN 2 /與/USBR CODE END 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)的串口写妥,選擇對(duì)應(yīng)的串口號(hào),配置相應(yīng)信息审姓,通過(guò)跳線(xiàn)帽將開(kāi)發(fā)板上的UART1的RX和TX與CH340的TX和RX連接珍特,UART2的RX和TX與NB-IoT的TX和RX連接;按下"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ù)嗜桌;
步驟三 編寫(xiě)命令響應(yīng)代碼,通過(guò)平臺(tái)下發(fā)命令開(kāi)關(guān)光敏傳感器上的LED燈
MCU通過(guò)PA5口控制光敏傳感器上的LED燈辞色;打開(kāi)"gpio.c",在GPIO初始化函數(shù)下添加PIN5的初始化代碼骨宠;
打開(kāi)"main.h",添加定義LED引腳的代碼;
打開(kāi)"bc95.c",在該.c文件中添加收命令代碼层亿,根據(jù)命令執(zhí)行控制LED燈代碼及命令答復(fù)代碼桦卒;
打開(kāi)"bc95.c"的"nb_cmd_match"回調(diào)函數(shù)中,將"nb_handle_data_ind(buf)匿又;";該為"nb_handle_data_coap(buf)方灾;";
在步驟2"main.c"中創(chuàng)建的"data_send_task"任務(wù)中添加命令回復(fù)代碼碌更;
點(diǎn)擊"Rebuild",編譯工程裕偿;
點(diǎn)擊"Download",下載程序至開(kāi)發(fā)板;
登陸平臺(tái)痛单,在“我的設(shè)備”中進(jìn)行命令下發(fā)嘿棘;
選擇"value"為“ON”,即下發(fā)開(kāi)燈命令桦他,點(diǎn)擊“緩存發(fā)送”;
點(diǎn)擊“我的設(shè)備”中“歷史命令”谆棱,可以看見(jiàn)命令已下發(fā)并執(zhí)行快压,此時(shí)光敏傳感器上的LED燈點(diǎn)亮;
同時(shí)垃瞧,選擇"value"為“OFF”蔫劣,即下發(fā)關(guān)燈命令,點(diǎn)擊“緩存發(fā)送”在“歷史命令”中个从,可以看見(jiàn)命令已下發(fā)并執(zhí)行脉幢,此時(shí)光敏傳感器上的LED燈熄滅。